Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbateman2009-08-12 19:45:44 +0000
committercbateman2009-08-12 19:45:44 +0000
commit1cb47a9464f41402386e037b6d1d42a5e6370d04 (patch)
tree9224fb443774da58ed6c3b3a1e102296aa4e5701
parentff24eaeaa42772b5db94d917e98a83d04a8bccd0 (diff)
downloadwebtools.jsf-1cb47a9464f41402386e037b6d1d42a5e6370d04.tar.gz
webtools.jsf-1cb47a9464f41402386e037b6d1d42a5e6370d04.tar.xz
webtools.jsf-1cb47a9464f41402386e037b6d1d42a5e6370d04.zip
Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=286161
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java20
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties1
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java35
3 files changed, 54 insertions, 2 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java
index 7d4d0c8da..bd04d4363 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/Messages.java
@@ -31,6 +31,11 @@ public class Messages extends NLS {
*/
public static String JSFFacetInstallDataModelProvider_INITIAL_VALIDATION_IMPL_TYPE;
+ /**
+ * see messages.properties
+ */
+ public static String JSFFacetInstallDataModelProvider_INVALID_JSF_CONFIG_FILE_NAME;
+
/**
* see messages.properties
@@ -245,8 +250,14 @@ public class Messages extends NLS {
*/
public static String JSFFacet11_presetDescription;
+ /**
+ * see messages.properties
+ */
public static String JSFFacetInstallDelegate_AllowJavascriptDescription;
+ /**
+ * see messages.properties
+ */
public static String JSFFacetInstallDelegate_AutoScrollDescription;
/**
@@ -258,14 +269,23 @@ public class Messages extends NLS {
*/
public static String JSFFacetInstallDelegate_ConfigErr;
+ /**
+ * see messages.properties
+ */
public static String JSFFacetInstallDelegate_MaxFileSizeDescription;
/**
* see messages.properties
*/
public static String JSFFacetInstallDelegate_NonUpdateableWebXML;
+ /**
+ * see messages.properties
+ */
public static String JSFFacetInstallDelegate_PrettyHtmlDescription;
+ /**
+ * see messages.properties
+ */
public static String JSFFacetInstallDelegate_StateSavingMethod;
/**
* see messages.properties
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties
index 8b569fcd4..2019bcf4d 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/messages.properties
@@ -30,6 +30,7 @@ JSFFacetInstallDataModelProvider_ValidateConfigFileEmpty=Specify a valid name an
JSFFacetInstallDataModelProvider_ValidateConfigFileRelative1=Configuration file must be specified relative to the project''s {0} folder
JSFFacetInstallDataModelProvider_ValidateConfigFileRelative2=Configuration file must be located in the project''s {0} folder
JSFFacetInstallDataModelProvider_INITIAL_VALIDATION_IMPL_TYPE=Select an implementation library. If a server supplied library is chosen , the chosen server adapter must be capable of providing the JSF Implementation jars, or the application will not validate or compile.
+JSFFacetInstallDataModelProvider_INVALID_JSF_CONFIG_FILE_NAME=Not a valid JSF configuration file name
JSFFacetInstallDataModelProvider_ValidateConfigFileXML=JSF configuration file must be an XML file
JSFFacetInstallDataModelProvider_ValidateConfigFileSlashes=Configuration file path must not contain "\\"s. Use "/" instead.
JSFLibCfgDialogSettingData_Sticky_Component_Lib_Not_Exist=A sticky component library selection no longer exists.
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
index a1eac2837..9fc0b6dd3 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
@@ -15,6 +15,7 @@ package org.eclipse.jst.jsf.core.internal.project.facet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import java.util.regex.Pattern;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -54,6 +55,9 @@ public class JSFFacetInstallDataModelProvider extends
FacetInstallDataModelProvider implements
IJSFFacetInstallDataModelProperties {
+ private static final String REGEX_FOR_VALID_CONFIG_FILE_NAME = "^(?!.*/{2,}.*$)[-\\w/.]+$"; //$NON-NLS-1$
+ private static final Pattern PATTERN_FOR_VALID_CONFIG_FILE_NAME = Pattern.compile(REGEX_FOR_VALID_CONFIG_FILE_NAME);
+
private final boolean jsfFacetConfigurationEnabled = JsfFacetConfigurationUtil.isJsfFacetConfigurationEnabled();
private LibraryInstallDelegate libraryInstallDelegate = null;
@@ -88,6 +92,7 @@ public class JSFFacetInstallDataModelProvider extends
}
private String errorMessage;
+
public Set getPropertyNames() {
Set names = super.getPropertyNames();
@@ -206,17 +211,23 @@ public class JSFFacetInstallDataModelProvider extends
return createErrorStatus(errorMessage);
}
+ // Configuration path must not contain backslashes.
+ // Must use forward slashes instead.
if (text.lastIndexOf("\\") >= 0){ //$NON-NLS-1$
errorMessage = Messages.JSFFacetInstallDataModelProvider_ValidateConfigFileSlashes;
return createErrorStatus(errorMessage);
}
+ // Configuration file must NOT be absolute path.
+ // It must be specified relative to project.
if (passedPath.getDevice() != null) {
errorMessage = NLS.bind(
Messages.JSFFacetInstallDataModelProvider_ValidateConfigFileRelative1,
getWebContentFolderName());
return createErrorStatus(errorMessage);
}
+
+ // Configuration file must be located in the project's folder
IPath webContentFolder = getWebContentFolder();
IPath setPath = webContentFolder.append(passedPath);
if (!getWebContentFolder().isPrefixOf(setPath)) {
@@ -226,10 +237,30 @@ public class JSFFacetInstallDataModelProvider extends
return createErrorStatus(errorMessage);
}
+ // Check for other general invalid characters
+ if (!isValidConfigFileName(text))
+ {
+ errorMessage = Messages.JSFFacetInstallDataModelProvider_INVALID_JSF_CONFIG_FILE_NAME;
+ return createErrorStatus(errorMessage);
+ }
+
return OK_STATUS;
}
-
-
+
+
+ /**
+ * (This method had been made protected to enable JUnit testing.)
+ *
+ * @param configFileName
+ * @return True if the argument config file name does not have any invalid
+ * characters.
+ */
+ public static boolean isValidConfigFileName (final String configFileName)
+ {
+ return PATTERN_FOR_VALID_CONFIG_FILE_NAME.matcher(configFileName).matches();
+ }
+
+
private IStatus validateClasspath(){
Set jars = new HashSet();
if (doesProjectExist()){

Back to the top