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

Reply via email to