Bug 553789: Fix NPE when 'Hide Nested Projects' is enabled

Change-Id: I159875ff247b8ba95a71f28bb3cea1e6a0842bb3
Signed-off-by: Fred Bricon <fbricon@gmail.com>
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java
index 5a9ca9b..f19bdc5 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java
@@ -183,7 +183,8 @@
     try {
       resource.setHidden(true);
     } catch(Exception ex) {
-      log.error("Failed to hide resource; " + resource.getLocation().toOSString(), ex);
+      log.error("Failed to hide resource: "
+          + (resource.getLocation() == null ? resource.getName() : resource.getLocation().toOSString()), ex);
     }
   }
 
@@ -200,11 +201,15 @@
 
     if(existingProjects != null) {
       for(IProject project : existingProjects) {
-        projectFileMap.put(project.getLocation().toFile(), project);
+        if(project.getLocation() != null) {
+          projectFileMap.put(project.getLocation().toFile(), project);
+        }
       }
     }
     for(IProject project : projects) {
-      projectFileMap.put(project.getLocation().toFile(), project);
+      if(project.getLocation() != null) {
+        projectFileMap.put(project.getLocation().toFile(), project);
+      }
     }
 
     if(monitor == null) {
@@ -217,6 +222,9 @@
       if(monitor.isCanceled()) {
         return;
       }
+      if(project.getLocation() == null) {
+        continue;
+      }
       File projectFile = project.getLocation().toFile();
       IProject physicalParentProject = projectFileMap.get(projectFile.getParentFile());
       if(physicalParentProject == null) {