Author: chris.laprun(a)jboss.com
Date: 2009-01-19 09:48:36 -0500 (Mon, 19 Jan 2009)
New Revision: 12553
Modified:
modules/common/trunk/common/src/main/java/org/jboss/portal/common/util/ParameterValidation.java
modules/common/trunk/common/src/test/java/org/jboss/portal/test/common/util/ParameterValidationTestCase.java
Log:
- Renamed sanitize to sanitizeFromPattern.
- Added sanitizeFromValues and added test case.
Modified:
modules/common/trunk/common/src/main/java/org/jboss/portal/common/util/ParameterValidation.java
===================================================================
---
modules/common/trunk/common/src/main/java/org/jboss/portal/common/util/ParameterValidation.java 2009-01-19
14:16:43 UTC (rev 12552)
+++
modules/common/trunk/common/src/main/java/org/jboss/portal/common/util/ParameterValidation.java 2009-01-19
14:48:36 UTC (rev 12553)
@@ -22,6 +22,8 @@
******************************************************************************/
package org.jboss.portal.common.util;
+import java.util.Arrays;
+import java.util.List;
import java.util.regex.Pattern;
/**
@@ -95,7 +97,7 @@
* @param defaultValue default value to use if the specified value does not conform to
the specified format
* @return the specified value if it conforms to the expected format, the given
default value otherwise.
*/
- public static String sanitize(String value, Pattern regex, String defaultValue)
+ public static String sanitizeFromPattern(String value, Pattern regex, String
defaultValue)
{
throwIllegalArgExceptionIfNull(regex, "expected value format");
@@ -108,4 +110,28 @@
return value;
}
}
+
+ /**
+ * Checks if a given value matches one of the possible values. If yes, returns it as
is. Otherwise, returns the
+ * default value.
+ *
+ * @param value value to sanitize if needed, <code>null</code> is
considered as not matching
+ * @param possibleValues possible values
+ * @param defaultValue default value to use if the specified value does not conform
to the specified format
+ * @return the specified value if it conforms to the expected format, the given
default value otherwise.
+ */
+ public static String sanitizeFromValues(String value, String[] possibleValues, String
defaultValue)
+ {
+ throwIllegalArgExceptionIfNullOrEmpty(possibleValues, "possible
values");
+
+ List<String> values = Arrays.asList(possibleValues);
+ if (!values.contains(value))
+ {
+ return defaultValue;
+ }
+ else
+ {
+ return value;
+ }
+ }
}
Modified:
modules/common/trunk/common/src/test/java/org/jboss/portal/test/common/util/ParameterValidationTestCase.java
===================================================================
---
modules/common/trunk/common/src/test/java/org/jboss/portal/test/common/util/ParameterValidationTestCase.java 2009-01-19
14:16:43 UTC (rev 12552)
+++
modules/common/trunk/common/src/test/java/org/jboss/portal/test/common/util/ParameterValidationTestCase.java 2009-01-19
14:48:36 UTC (rev 12553)
@@ -33,11 +33,11 @@
*/
public class ParameterValidationTestCase extends TestCase
{
- public void testNullPattern()
+ public void testSanitizeFromPatternNullPattern()
{
try
{
- ParameterValidation.sanitize("foo", null, null);
+ ParameterValidation.sanitizeFromValues("foo", null, null);
fail("Should have thrown an IAE on null Pattern");
}
catch (IllegalArgumentException e)
@@ -46,38 +46,73 @@
}
}
- public void testNullValue()
+ public void testSanitizeFromPatternNullValue()
{
String defaultValue = "default";
- assertEquals(defaultValue, ParameterValidation.sanitize(null,
Pattern.compile(""), defaultValue));
+ assertEquals(defaultValue, ParameterValidation.sanitizeFromPattern(null,
Pattern.compile(""), defaultValue));
}
- public void testNullDefault()
+ public void testSanitizeFromPatternNullDefault()
{
- assertNull(ParameterValidation.sanitize(null, Pattern.compile(""),
null));
+ assertNull(ParameterValidation.sanitizeFromPattern(null,
Pattern.compile(""), null));
}
- public void testCSSDistance()
+ public void testSanitizeFromPatternCSSDistance()
{
String defaultValue = "300px";
assertEquals(defaultValue,
-
ParameterValidation.sanitize("0%20;%20background-image:%20url(http:/...;,
+
ParameterValidation.sanitizeFromPattern("0%20;%20background-image:%2...;,
ParameterValidation.CSS_DISTANCE, defaultValue));
- assertEquals(defaultValue, ParameterValidation.sanitize(defaultValue,
ParameterValidation.CSS_DISTANCE, null));
+ assertEquals(defaultValue, ParameterValidation.sanitizeFromPattern(defaultValue,
ParameterValidation.CSS_DISTANCE, null));
String value = "0";
- assertEquals(value, ParameterValidation.sanitize(value,
ParameterValidation.CSS_DISTANCE, null));
+ assertEquals(value, ParameterValidation.sanitizeFromPattern(value,
ParameterValidation.CSS_DISTANCE, null));
value = "10%";
- assertEquals(value, ParameterValidation.sanitize(value,
ParameterValidation.CSS_DISTANCE, null));
+ assertEquals(value, ParameterValidation.sanitizeFromPattern(value,
ParameterValidation.CSS_DISTANCE, null));
value = "10 %";
- assertEquals(value, ParameterValidation.sanitize(value,
ParameterValidation.CSS_DISTANCE, null));
+ assertEquals(value, ParameterValidation.sanitizeFromPattern(value,
ParameterValidation.CSS_DISTANCE, null));
value = "100 \n\tin";
- assertEquals(value, ParameterValidation.sanitize(value,
ParameterValidation.CSS_DISTANCE, null));
+ assertEquals(value, ParameterValidation.sanitizeFromPattern(value,
ParameterValidation.CSS_DISTANCE, null));
- assertEquals(defaultValue, ParameterValidation.sanitize("",
ParameterValidation.CSS_DISTANCE, defaultValue));
+ assertEquals(defaultValue, ParameterValidation.sanitizeFromPattern("",
ParameterValidation.CSS_DISTANCE, defaultValue));
}
+
+ public void testSanitizeFromValuesNullValue()
+ {
+ String defaultValue = "default";
+ assertEquals(defaultValue, ParameterValidation.sanitizeFromValues(null, new
String[]{""}, defaultValue));
+ }
+
+ public void testSanitizeFromValuesNullValues()
+ {
+ try
+ {
+ ParameterValidation.sanitizeFromValues("foo", null, null);
+ fail("Should have thrown an IAE on null values");
+ }
+ catch (Exception e)
+ {
+ // expected
+ }
+ }
+
+ public void testSanitizeFromValuesNullDefault()
+ {
+ assertNull(ParameterValidation.sanitizeFromValues("foo", new
String[]{"bar"}, null));
+ }
+
+ public void testSanitizeFromValues()
+ {
+ String defaultValue = "foo";
+ String[] possible = new String[]{"windowremove",
"windowmove"};
+
+ assertEquals(defaultValue,
ParameterValidation.sanitizeFromValues("%3Cblink%3EH4XOR3D%3C/blink%3E",
possible, defaultValue));
+
+ assertEquals("windowmove",
ParameterValidation.sanitizeFromValues("windowmove", possible, defaultValue));
+ assertEquals("windowremove",
ParameterValidation.sanitizeFromValues("windowremove", possible,
defaultValue));
+ }
}