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