430178 : prevent NPE if modulecorenature project has no component file
Signed-off-by: Fred Bricon <fbricon@gmail.com>
diff --git a/org.eclipse.m2e.wtp.jpa/src/org/eclipse/m2e/wtp/jpa/internal/configurators/JpaProjectConfigurator.java b/org.eclipse.m2e.wtp.jpa/src/org/eclipse/m2e/wtp/jpa/internal/configurators/JpaProjectConfigurator.java
index 0fea7e1..0e96188 100644
--- a/org.eclipse.m2e.wtp.jpa/src/org/eclipse/m2e/wtp/jpa/internal/configurators/JpaProjectConfigurator.java
+++ b/org.eclipse.m2e.wtp.jpa/src/org/eclipse/m2e/wtp/jpa/internal/configurators/JpaProjectConfigurator.java
@@ -53,7 +53,9 @@
import org.eclipse.m2e.wtp.jpa.PlatformIdentifierManager;
import org.eclipse.m2e.wtp.jpa.internal.MavenJpaActivator;
import org.eclipse.m2e.wtp.jpa.internal.util.JptUtils;
+import org.eclipse.wst.common.componentcore.ModuleCoreNature;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties;
+import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
@@ -145,9 +147,8 @@
Set<Action> actions = new LinkedHashSet<Action>();
installJavaFacet(actions, facetedProject.getProject(), facetedProject);
actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.INSTALL,
- version,
- dataModel));
-
+ version,
+ dataModel));
facetedProject.modify(actions, monitor);
}
@@ -191,6 +192,12 @@
if (!enabled || !project.hasNature(JavaCore.NATURE_ID) || JpaFacet.isInstalled(project)) {
return false;
}
+ // Bug 430178 : If imported project has modulecore nature without the component file,
+ // Dali's ModuleResourceLocator#getRootFolder will NPE (ex: it.cosenonjaviste:jsf2-spring4-jpa2-archetype:1.0.3)
+ if (project.hasNature(IModuleConstants.MODULE_NATURE_ID) && !ModuleCoreNature.componentResourceExists(project)) {
+ return false;
+ }
+
return true;
}
@@ -221,34 +228,38 @@
}
private void installJavaFacet(Set<Action> actions, IProject project, IFacetedProject facetedProject) {
- IProjectFacetVersion javaFv = JavaFacet.FACET.getVersion(JavaFacetUtil.getCompilerLevel(project));
- if(!facetedProject.hasProjectFacet(JavaFacet.FACET)) {
- actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.INSTALL, javaFv, null));
- } else if(!facetedProject.hasProjectFacet(javaFv)) {
- actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.VERSION_CHANGE, javaFv, null));
- }
+ IProjectFacetVersion javaFv = JavaFacet.FACET.getVersion(JavaFacetUtil.getCompilerLevel(project));
+ if(!facetedProject.hasProjectFacet(JavaFacet.FACET)) {
+ actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.INSTALL, javaFv, null));
+ } else if(!facetedProject.hasProjectFacet(javaFv)) {
+ actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.VERSION_CHANGE, javaFv, null));
+ }
}
protected void addFoldersToClean(ResourceCleaner fileCleaner, IMavenProjectFacade facade) {
- for (IPath p : facade.getCompileSourceLocations()) {
- if (p != null) {
- fileCleaner.addFiles(p.append("META-INF/persistence.xml")); //$NON-NLS-1$
- fileCleaner.addFiles(p.append("META-INF/orm.xml")); //$NON-NLS-1$
+ for (IPath p : facade.getCompileSourceLocations()) {
+ if (p != null) {
+ fileCleaner.addFiles(p.append("META-INF/persistence.xml")); //$NON-NLS-1$
+ fileCleaner.addFiles(p.append("META-INF/orm.xml")); //$NON-NLS-1$
fileCleaner.addFolder(p);
- }
- }
- for (IPath p : facade.getResourceLocations()) {
- if (p != null) {
- fileCleaner.addFiles(p.append("META-INF/persistence.xml")); //$NON-NLS-1$
- fileCleaner.addFiles(p.append("META-INF/orm.xml")); //$NON-NLS-1$
- fileCleaner.addFolder(p);
- }
- }
- for (IPath p : facade.getTestCompileSourceLocations()) {
- if (p != null) fileCleaner.addFolder(p);
- }
- for (IPath p : facade.getTestResourceLocations()) {
- if (p != null) fileCleaner.addFolder(p);
- }
+ }
+ }
+ for (IPath p : facade.getResourceLocations()) {
+ if (p != null) {
+ fileCleaner.addFiles(p.append("META-INF/persistence.xml")); //$NON-NLS-1$
+ fileCleaner.addFiles(p.append("META-INF/orm.xml")); //$NON-NLS-1$
+ fileCleaner.addFolder(p);
+ }
+ }
+ for (IPath p : facade.getTestCompileSourceLocations()) {
+ if (p != null) {
+ fileCleaner.addFolder(p);
+ }
+ }
+ for (IPath p : facade.getTestResourceLocations()) {
+ if (p != null) {
+ fileCleaner.addFolder(p);
+ }
+ }
}
}