Updated Branches: refs/heads/master c3863fc19 -> 87ae870fe
WICKET-4755 cast if possible Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/87ae870f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/87ae870f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/87ae870f Branch: refs/heads/master Commit: 87ae870fe7c96d8a4292ae5b86933cde7bf3d325 Parents: 0a558da Author: svenmeier <[email protected]> Authored: Thu Sep 20 17:16:08 2012 +0200 Committer: svenmeier <[email protected]> Committed: Thu Sep 20 17:16:08 2012 +0200 ---------------------------------------------------------------------- .../java/org/apache/wicket/ConverterLocator.java | 9 ++++++--- .../org/apache/wicket/ConverterLocatorTest.java | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/87ae870f/wicket-core/src/main/java/org/apache/wicket/ConverterLocator.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ConverterLocator.java b/wicket-core/src/main/java/org/apache/wicket/ConverterLocator.java index 437ed8c..e2d9cc6 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ConverterLocator.java +++ b/wicket-core/src/main/java/org/apache/wicket/ConverterLocator.java @@ -105,16 +105,19 @@ public class ConverterLocator implements IConverterLocator { return converted; } - else + + if (theType.isInstance(value)) { - throw new ConversionException("Could not convert value: " + value + - " to type: " + theType.getName() + ". Could not find compatible converter.").setSourceValue(value); + return theType.cast(value); } } catch (Exception e) { throw new ConversionException(e.getMessage(), e).setSourceValue(value); } + + throw new ConversionException("Could not convert value: " + value + " to type: " + + theType.getName() + ". Could not find compatible converter.").setSourceValue(value); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/87ae870f/wicket-core/src/test/java/org/apache/wicket/ConverterLocatorTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/ConverterLocatorTest.java b/wicket-core/src/test/java/org/apache/wicket/ConverterLocatorTest.java index 34fcc04..b1d0d60 100644 --- a/wicket-core/src/test/java/org/apache/wicket/ConverterLocatorTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/ConverterLocatorTest.java @@ -16,6 +16,7 @@ */ package org.apache.wicket; +import java.io.Serializable; import java.util.Locale; import org.junit.Assert; @@ -31,17 +32,29 @@ public final class ConverterLocatorTest extends Assert /** Dutch locale for localized testing. */ private static final Locale DUTCH_LOCALE = new Locale("nl", "NL"); + private final IConverterLocator locator = new ConverterLocator(); + /** * Test generalized conversion */ @Test public void test() { - final IConverterLocator locator = new ConverterLocator(); assertNotNull(locator.getConverter(Integer.class)); assertNotNull(locator.getConverter(Double.class)); // default converter assertNotNull(locator.getConverter(String.class).convertToObject("", Locale.US)); } + + /** + * WICKET-4755 + */ + @Test + public void isInstance() + { + assertEquals("test", + locator.getConverter(Serializable.class).convertToObject("test", Locale.US)); + assertEquals("test", locator.getConverter(Object.class).convertToObject("test", Locale.US)); + } } \ No newline at end of file
