You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2012/02/02 03:12:31 UTC
[7/9] git commit: WICKET-4356 StringValueConversionException should
not be thrown when requesting a conversion on StringValue with a default
value
WICKET-4356
StringValueConversionException should not be thrown when requesting a conversion on StringValue with a default value
Improve the signature of to(Class) so the user don't need to cast.
Add toOptional(Class).
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2f57d707
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2f57d707
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2f57d707
Branch: refs/heads/sandbox/feedback
Commit: 2f57d707bf86f512d16a3c1c4e2d34a3e544b915
Parents: 818620b
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Feb 1 10:37:37 2012 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Feb 1 10:37:37 2012 +0200
----------------------------------------------------------------------
.../org/apache/wicket/util/string/StringValue.java | 31 ++++++++++----
.../apache/wicket/util/string/StringValueTest.java | 29 ++++++++++++++
2 files changed, 51 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/2f57d707/wicket-util/src/main/java/org/apache/wicket/util/string/StringValue.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/string/StringValue.java b/wicket-util/src/main/java/org/apache/wicket/util/string/StringValue.java
index bbad52b..c483e8e 100755
--- a/wicket-util/src/main/java/org/apache/wicket/util/string/StringValue.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/string/StringValue.java
@@ -308,46 +308,46 @@ public class StringValue implements IClusterable
* @return The converted value
* @throws StringValueConversionException
*/
- public final Object to(final Class<?> type) throws StringValueConversionException
+ public final <T> T to(final Class<T> type) throws StringValueConversionException
{
if (type == String.class)
{
- return toString();
+ return (T) toString();
}
if ((type == Integer.TYPE) || (type == Integer.class))
{
- return toInteger();
+ return (T) toInteger();
}
if ((type == Long.TYPE) || (type == Long.class))
{
- return toLongObject();
+ return (T) toLongObject();
}
if ((type == Boolean.TYPE) || (type == Boolean.class))
{
- return toBooleanObject();
+ return (T) toBooleanObject();
}
if ((type == Double.TYPE) || (type == Double.class))
{
- return toDoubleObject();
+ return (T) toDoubleObject();
}
if ((type == Character.TYPE) || (type == Character.class))
{
- return toCharacter();
+ return (T) toCharacter();
}
if (type == Time.class)
{
- return toTime();
+ return (T) toTime();
}
if (type == Duration.class)
{
- return toDuration();
+ return (T) toDuration();
}
throw new StringValueConversionException("Cannot convert '" + toString() + "'to type " +
@@ -355,6 +355,19 @@ public class StringValue implements IClusterable
}
/**
+ * Converts this StringValue to a given type or {@code null} if the value is empty.
+ *
+ * @param type
+ * The type to convert to
+ * @return The converted value
+ * @throws StringValueConversionException
+ */
+ public final <T> T toOptional(final Class<T> type) throws StringValueConversionException
+ {
+ return Strings.isEmpty(text) ? null : to(type);
+ }
+
+ /**
* Convert this text to a boolean.
*
* @return This string value as a boolean
http://git-wip-us.apache.org/repos/asf/wicket/blob/2f57d707/wicket-util/src/test/java/org/apache/wicket/util/string/StringValueTest.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/test/java/org/apache/wicket/util/string/StringValueTest.java b/wicket-util/src/test/java/org/apache/wicket/util/string/StringValueTest.java
index 0b3d4f5..9e7a8bd 100644
--- a/wicket-util/src/test/java/org/apache/wicket/util/string/StringValueTest.java
+++ b/wicket-util/src/test/java/org/apache/wicket/util/string/StringValueTest.java
@@ -80,4 +80,33 @@ public class StringValueTest extends Assert
assertEquals("unknown", sv.toString("def"));
}
+
+ @Test
+ public void toType()
+ {
+ StringValue sv = new StringValue("4");
+
+ assertEquals(Long.valueOf(4), sv.to(Long.class));
+ assertEquals(Integer.valueOf(4), sv.to(Integer.class));
+ assertEquals(Double.valueOf(4), sv.to(Double.class));
+ assertEquals(Character.valueOf('4'), sv.to(Character.class));
+ assertEquals("4", sv.to(String.class));
+
+ try
+ {
+ sv.to(String[].class);
+ fail("Should not be able to convert to unsupported type!");
+ } catch (StringValueConversionException svcx)
+ {
+ assertTrue(true);
+ }
+
+ sv = new StringValue(null);
+ assertNull(sv.toOptional(String.class));
+ assertNull(sv.toOptional(String[].class));
+
+ sv = new StringValue("");
+ assertNull(sv.toOptional(String.class));
+ assertNull(sv.toOptional(String[].class));
+ }
}