diff --git a/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java b/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java --- a/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java +++ b/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java @@ -128,6 +128,11 @@ && platform.isToolSupported("defaultPersistenceProviderJavaEE5"); // NOI18N } + public boolean isServerInstanceSet() { + return getPlatform() != null; + } + + private J2eePlatform getPlatform() { try { String instance = provider.getServerInstanceID(); diff --git a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarJPAModuleInfo.java b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarJPAModuleInfo.java --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarJPAModuleInfo.java +++ b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarJPAModuleInfo.java @@ -41,6 +41,7 @@ package org.netbeans.modules.j2ee.ejbjarproject; +import org.netbeans.modules.j2ee.common.J2eeProjectCapabilities; import org.netbeans.modules.j2ee.persistence.spi.moduleinfo.JPAModuleInfo; /** @@ -64,4 +65,10 @@ return project.getEjbModule().getModuleVersion(); } + @Override + public boolean isServerInstanceSet() { + return J2eeProjectCapabilities.forProject(project).isServerInstanceSet(); + } + + } diff --git a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/spi/moduleinfo/JPAModuleInfo.java b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/spi/moduleinfo/JPAModuleInfo.java --- a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/spi/moduleinfo/JPAModuleInfo.java +++ b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/spi/moduleinfo/JPAModuleInfo.java @@ -69,5 +69,7 @@ * @return the version number of the module. */ String getVersion(); + + boolean isServerInstanceSet(); } diff --git a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/Util.java b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/Util.java --- a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/Util.java +++ b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/Util.java @@ -226,6 +226,18 @@ return Util.isSupportedJavaEEVersion(project) && providerSupplier != null && providerSupplier.supportsDefaultProvider(); } + /** Returns true if the project represents a Java EE project (not Java SE), which does + * not have a server instance set. This could be e.g. a Maven project without a server set, + * or Ant project with broken server reference. + */ + public static boolean isServerInstanceMissing(Project project) { + JPAModuleInfo moduleInfo = project.getLookup().lookup(JPAModuleInfo.class); + if (moduleInfo == null) { + return false; + } + return !moduleInfo.isServerInstanceSet(); + } + public static Provider getDefaultProvider(Project project) { PersistenceProviderSupplier providerSupplier = project.getLookup().lookup(PersistenceProviderSupplier.class); return (providerSupplier != null && providerSupplier.supportsDefaultProvider()) ? providerSupplier.getSupportedProviders().get(0) : null; diff --git a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/unit/PersistenceUnitWizardPanelJdbc.java b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/unit/PersistenceUnitWizardPanelJdbc.java --- a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/unit/PersistenceUnitWizardPanelJdbc.java +++ b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/unit/PersistenceUnitWizardPanelJdbc.java @@ -61,6 +61,7 @@ import org.netbeans.modules.j2ee.persistence.provider.ProviderUtil; import org.netbeans.modules.j2ee.persistence.util.PersistenceProviderComboboxHelper; import org.netbeans.modules.j2ee.persistence.util.SourceLevelChecker; +import org.netbeans.modules.j2ee.persistence.wizard.Util; import org.netbeans.modules.j2ee.persistence.wizard.unit.PersistenceUnitWizardPanel.TableGeneration; import org.openide.util.ImageUtilities; import org.openide.util.NbBundle; @@ -210,6 +211,11 @@ } } } + if (warning == null) { + if (Util.isServerInstanceMissing(project)) { + warning = "You should set the server!"; + } + } ImageIcon icon = null; if(warning != null){ icon = ImageUtilities.loadImageIcon("org/netbeans/modules/j2ee/persistence/ui/resources/warning.gif", false); //NOI18N diff --git a/maven.j2ee/src/org/netbeans/modules/maven/j2ee/JPAStuffImpl.java b/maven.j2ee/src/org/netbeans/modules/maven/j2ee/JPAStuffImpl.java --- a/maven.j2ee/src/org/netbeans/modules/maven/j2ee/JPAStuffImpl.java +++ b/maven.j2ee/src/org/netbeans/modules/maven/j2ee/JPAStuffImpl.java @@ -47,8 +47,11 @@ import org.netbeans.modules.maven.j2ee.ejb.*; import org.netbeans.api.project.Project; import org.netbeans.modules.j2ee.common.DatasourceUIHelper; +import org.netbeans.modules.j2ee.common.J2eeProjectCapabilities; import org.netbeans.modules.j2ee.deployment.common.api.ConfigurationException; import org.netbeans.modules.j2ee.deployment.common.api.Datasource; +import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment; +import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider; import org.netbeans.modules.j2ee.persistence.spi.datasource.JPADataSource; import org.netbeans.modules.j2ee.persistence.spi.datasource.JPADataSourcePopulator; @@ -130,6 +133,21 @@ return null; } + @Override + public boolean isServerInstanceSet() { + return J2eeProjectCapabilities.forProject(project).isServerInstanceSet(); +// J2eeModuleProvider; prvd = project.getLookup().lookup(J2eeModuleProvider.class); +// if (prvd == null) { +// return false; +// } +// try { +// return Deployment.getDefault(). +// getServerInstance(prvd.getServerInstanceID()).getJ2eePlatform() != null; +// } catch (InstanceRemovedException e) { +// return false; +// } + } + /** * Provides JPADataSource interface for Datasources. diff --git a/web.project/src/org/netbeans/modules/web/project/WebJPAModuleInfo.java b/web.project/src/org/netbeans/modules/web/project/WebJPAModuleInfo.java --- a/web.project/src/org/netbeans/modules/web/project/WebJPAModuleInfo.java +++ b/web.project/src/org/netbeans/modules/web/project/WebJPAModuleInfo.java @@ -41,6 +41,7 @@ package org.netbeans.modules.web.project; +import org.netbeans.modules.j2ee.common.J2eeProjectCapabilities; import org.netbeans.modules.j2ee.persistence.spi.moduleinfo.JPAModuleInfo; import org.netbeans.modules.j2ee.persistence.spi.moduleinfo.JPAModuleInfo.ModuleType; @@ -67,4 +68,10 @@ return project.getWebModule().getModuleVersion(); } + @Override + public boolean isServerInstanceSet() { + return J2eeProjectCapabilities.forProject(project).isServerInstanceSet(); + } + + }