diff options
author | cbateman | 2009-08-12 19:45:44 +0000 |
---|---|---|
committer | cbateman | 2009-08-12 19:45:44 +0000 |
commit | 1cb47a9464f41402386e037b6d1d42a5e6370d04 (patch) | |
tree | 9224fb443774da58ed6c3b3a1e102296aa4e5701 | |
parent | ff24eaeaa42772b5db94d917e98a83d04a8bccd0 (diff) | |
download | webtools.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
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()){ |