Bug 290962 - NPE if faces-config.xml is in wrong folder
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java
index a7c0b3b..29bbe12 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/AppConfigValidator.java
@@ -42,6 +42,7 @@
 import org.eclipse.wst.validation.AbstractValidator;
 import org.eclipse.wst.validation.ValidationResult;
 import org.eclipse.wst.validation.ValidationState;
+import org.eclipse.wst.validation.internal.core.Message;
 import org.eclipse.wst.validation.internal.core.ValidationException;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -163,27 +164,34 @@
 
     private void validateFile(final IFile file, final IReporter reporter)
     {
-        FacesConfigArtifactEdit  facesConfigEdit = null;
-
-        try
+        FacesConfigArtifactEdit facesConfigEdit = null;
+        //Bug 290962 - NPE if faces-config.xml is in wrong folder
+        final IPath path = JSFAppConfigUtils.getWebContentFolderRelativePath(file);
+        if (path == null)
         {
-            final IPath path = JSFAppConfigUtils.getWebContentFolderRelativePath(file);
-            facesConfigEdit = FacesConfigArtifactEdit.
-                getFacesConfigArtifactEditForRead(file.getProject(), path.toString());
-
-            if (facesConfigEdit != null
-                    && facesConfigEdit.getFacesConfig()!=null)
-            {
-                final String version = validateVersioning(file, facesConfigEdit, reporter);
-                validateModel(file, facesConfigEdit,reporter, version);
-            }
+        	reporter.addMessage(this, new Message(JSFCorePlugin.getDefault().getBundle().getSymbolicName(), IMessage.NORMAL_SEVERITY, Messages.CONFIG_FILE_NOT_UNDER_WEBCONTENT_FOLDER));
         }
-        finally
+        else
         {
-            if (facesConfigEdit != null)
-            {
-                facesConfigEdit.dispose();
-            }
+	        try
+	        {
+	            facesConfigEdit = FacesConfigArtifactEdit.
+	                getFacesConfigArtifactEditForRead(file.getProject(), path.toString());
+	
+	            if (facesConfigEdit != null
+	                    && facesConfigEdit.getFacesConfig()!=null)
+	            {
+	                final String version = validateVersioning(file, facesConfigEdit, reporter);
+	                validateModel(file, facesConfigEdit,reporter, version);
+	            }
+	        }
+	        finally
+	        {
+	            if (facesConfigEdit != null)
+	            {
+	                facesConfigEdit.dispose();
+	            }
+	        }
         }
     }
 
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/Messages.java
index fb62b62..b0535a9 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/Messages.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/Messages.java
@@ -107,4 +107,9 @@
      * see messages.properties
      */
     public static String LOCALE_FORMAT_NOT_VALID_ID;
+
+    /**
+     * see messages.properties
+     */
+    public static String CONFIG_FILE_NOT_UNDER_WEBCONTENT_FOLDER;
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/messages.properties
index 37da684..b910ba6 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/messages.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/appconfig/messages.properties
@@ -25,3 +25,4 @@
 APP_CONFIG_IS_OLDER_THAN_JSF_VERSION_ID=Faces {0} application configuration being used in Faces {1} project.  Not all Faces {1} features will be available"
 LOCALE_FORMAT_NOT_VALID_ID=Locale format must be of the form lang_[_country[_variant]] like en or en_US or ja_JP_SJIS
 AppConfigValidationUtil_0=extend
+CONFIG_FILE_NOT_UNDER_WEBCONTENT_FOLDER=JSF configuration file is not under this project's web content folder. Please check project setup.
\ No newline at end of file