You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2013/07/07 18:47:42 UTC
svn commit: r1500477 - in /commons/proper/configuration/trunk/src:
main/java/org/apache/commons/configuration/
test/java/org/apache/commons/configuration/
Author: oheger
Date: Sun Jul 7 16:47:42 2013
New Revision: 1500477
URL: http://svn.apache.org/r1500477
Log:
The methods for escaping values of ListDelimiterHandler now expects a ValueTransformer.
When escaping single values, AbstractListDelimiterHandler already invokes the
transformer.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractListDelimiterHandler.java
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DisabledListDelimiterHandler.java
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/ListDelimiterHandler.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDisabledListDelimiterHandler.java
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractListDelimiterHandler.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractListDelimiterHandler.java?rev=1500477&r1=1500476&r2=1500477&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractListDelimiterHandler.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/AbstractListDelimiterHandler.java Sun Jul 7 16:47:42 2013
@@ -79,16 +79,16 @@ public abstract class AbstractListDelimi
/**
* {@inheritDoc} This implementation checks whether the object to be escaped
- * is a string. If yes, it delegates to {@link #escapeString(String)}. In
- * all other cases the object is returned unchanged.
+ * is a string. If yes, it delegates to {@link #escapeString(String)},
+ * otherwise no escaping is performed. Eventually, the passed in transformer
+ * is invoked so that additional encoding can be performed.
*/
- public Object escape(Object value)
+ public Object escape(Object value, ValueTransformer transformer)
{
- if (value instanceof String)
- {
- return escapeString((String) value);
- }
- return value;
+ Object escValue =
+ (value instanceof String) ? escapeString((String) value)
+ : value;
+ return transformer.transformValue(escValue);
}
/**
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DisabledListDelimiterHandler.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DisabledListDelimiterHandler.java?rev=1500477&r1=1500476&r2=1500477&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DisabledListDelimiterHandler.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/DisabledListDelimiterHandler.java Sun Jul 7 16:47:42 2013
@@ -47,7 +47,7 @@ public class DisabledListDelimiterHandle
* {@inheritDoc} This implementation always throws an
* {@code UnsupportedOperationException} exception.
*/
- public Object escapeList(List<?> values)
+ public Object escapeList(List<?> values, ValueTransformer transformer)
{
throw new UnsupportedOperationException(
"Escaping lists is not supported!");
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/ListDelimiterHandler.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/ListDelimiterHandler.java?rev=1500477&r1=1500476&r2=1500477&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/ListDelimiterHandler.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/ListDelimiterHandler.java Sun Jul 7 16:47:42 2013
@@ -55,6 +55,20 @@ import java.util.List;
public interface ListDelimiterHandler
{
/**
+ * A specialized {@code ValueTransformer} implementation which does no
+ * transformation. The {@code transformValue()} method just returns the
+ * passed in object without changes. This instance can be used by
+ * configurations which do not require additional encoding.
+ */
+ ValueTransformer NOOP_TRANSFORMER = new ValueTransformer()
+ {
+ public Object transformValue(Object value)
+ {
+ return value;
+ }
+ };
+
+ /**
* Parses the specified value for list delimiters and splits it if
* necessary. The passed in object can be either a single value or a complex
* one, e.g. a collection, an array, or an {@code Iterable}. It is the
@@ -90,9 +104,11 @@ public interface ListDelimiterHandler
* escape them accordingly.
*
* @param value the value to be escaped
+ * @param transformer a {@code ValueTransformer} for an additional encoding
+ * (must not be <b>null</b>)
* @return the escaped value
*/
- Object escape(Object value);
+ Object escape(Object value, ValueTransformer transformer);
/**
* Escapes all values in the given list and concatenates them to a single
@@ -103,7 +119,9 @@ public interface ListDelimiterHandler
*
* @param values the list with all the values to be converted to a single
* value
+ * @param transformer a {@code ValueTransformer} for an additional encoding
+ * (must not be <b>null</b>)
* @return the resulting escaped value
*/
- Object escapeList(List<?> values);
+ Object escapeList(List<?> values, ValueTransformer transformer);
}
Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDisabledListDelimiterHandler.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDisabledListDelimiterHandler.java?rev=1500477&r1=1500476&r2=1500477&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDisabledListDelimiterHandler.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDisabledListDelimiterHandler.java Sun Jul 7 16:47:42 2013
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertFal
import java.util.Arrays;
import java.util.Iterator;
+import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
@@ -119,7 +120,23 @@ public class TestDisabledListDelimiterHa
public void testEscapeStringValue()
{
assertEquals("Wrong escaped string", STR_VALUE,
- handler.escape(STR_VALUE));
+ handler.escape(STR_VALUE, ListDelimiterHandler.NOOP_TRANSFORMER));
+ }
+
+ /**
+ * Tests whether the transformer is correctly invoked when escaping a
+ * string.
+ */
+ @Test
+ public void testEscapeStringValueTransformer()
+ {
+ ValueTransformer trans = EasyMock.createMock(ValueTransformer.class);
+ String testStr = "Some other string";
+ EasyMock.expect(trans.transformValue(testStr)).andReturn(STR_VALUE);
+ EasyMock.replay(trans);
+ assertEquals("Wrong escaped string", STR_VALUE,
+ handler.escape(testStr, trans));
+ EasyMock.verify(trans);
}
/**
@@ -130,7 +147,24 @@ public class TestDisabledListDelimiterHa
public void testEscapeNonStringValue()
{
Object value = 42;
- assertEquals("Wrong escaped object", value, handler.escape(value));
+ assertEquals("Wrong escaped object", value,
+ handler.escape(value, ListDelimiterHandler.NOOP_TRANSFORMER));
+ }
+
+ /**
+ * Tests whether the transformer is correctly called when escaping a non
+ * string value.
+ */
+ @Test
+ public void testEscapeNonStringValueTransformer()
+ {
+ ValueTransformer trans = EasyMock.createMock(ValueTransformer.class);
+ Object value = 42;
+ EasyMock.expect(trans.transformValue(value)).andReturn(STR_VALUE);
+ EasyMock.replay(trans);
+ assertEquals("Wrong escaped object", STR_VALUE,
+ handler.escape(value, trans));
+ EasyMock.verify(trans);
}
/**
@@ -139,6 +173,7 @@ public class TestDisabledListDelimiterHa
@Test(expected = UnsupportedOperationException.class)
public void testEscapeList()
{
- handler.escapeList(Arrays.asList(VALUES));
+ handler.escapeList(Arrays.asList(VALUES),
+ ListDelimiterHandler.NOOP_TRANSFORMER);
}
}