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);
+			}
+			}
 		  }
 }