You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jo...@apache.org on 2011/09/09 18:50:29 UTC

svn commit: r1167289 - in /tapestry/tapestry5/trunk/tapestry-ioc/src: main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java

Author: joshcanfield
Date: Fri Sep  9 16:50:29 2011
New Revision: 1167289

URL: http://svn.apache.org/viewvc?rev=1167289&view=rev
Log:
TAP5-1621 - TypeCoercer change: replaced Long -> Boolean with Number -> Boolean. Added Object -> Boolean

Modified:
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java?rev=1167289&r1=1167288&r2=1167289&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java Fri Sep  9 16:50:29 2011
@@ -149,6 +149,7 @@ public final class TapestryIOCModule
      * Contributes a set of standard type coercions to the {@link TypeCoercer} service:
      * <ul>
      * <li>Object to String</li>
+     * <li>Object to Boolean</li>
      * <li>String to Double</li>
      * <li>String to BigDecimal</li>
      * <li>BigDecimal to Double</li>
@@ -164,7 +165,7 @@ public final class TapestryIOCModule
      * <li>Float to Double</li>
      * <li>Long to Double</li>
      * <li>String to Boolean ("false" is always false, other non-blank strings are true)</li>
-     * <li>Long to Boolean (true if long value is non zero)</li>
+     * <li>Number to Boolean (true if number value is non zero)</li>
      * <li>Null to Boolean (always false)</li>
      * <li>Collection to Boolean (false if empty)</li>
      * <li>Object[] to List</li>
@@ -190,6 +191,14 @@ public final class TapestryIOCModule
             }
         });
 
+        add(configuration, Object.class, Boolean.class, new Coercion<Object, Boolean>()
+        {
+            public Boolean coerce(Object input)
+            {
+                return input != null;
+            }
+        });
+
         add(configuration, String.class, Double.class, new Coercion<String, Double>()
         {
             public Double coerce(String input)
@@ -296,11 +305,11 @@ public final class TapestryIOCModule
             }
         });
 
-        add(configuration, Long.class, Boolean.class, new Coercion<Long, Boolean>()
+        add(configuration, Number.class, Boolean.class, new Coercion<Number, Boolean>()
         {
-            public Boolean coerce(Long input)
+            public Boolean coerce(Number input)
             {
-                return !input.equals(0L);
+                return input.byteValue() != 0;
             }
         });
 

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java?rev=1167289&r1=1167288&r2=1167289&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java Fri Sep  9 16:50:29 2011
@@ -306,7 +306,7 @@ public class TypeCoercerImplTest extends
                         {StringBuffer.class, Integer.class, "Object --> String, String --> Long, Long --> Integer"},
                         {void.class, Map.class, "null --> null"},
                         {void.class, Boolean.class, "null --> Boolean"},
-                        {Object[].class, Boolean.class, "Object[] --> java.util.List, java.util.Collection --> Boolean"},
+                        {Object[].class, Boolean.class, "Object --> Boolean"},
                         {String[].class, List.class, "Object[] --> java.util.List"},
                         {Float.class, Double.class, "Float --> Double"},
                         {Double.class, BigDecimal.class, "Object --> String, String --> java.math.BigDecimal"},};
@@ -318,9 +318,9 @@ public class TypeCoercerImplTest extends
         Object input = 51;
 
         Object[] result = coercer.coerce(input, Object[].class);
+        Object[] expected = {input};
 
-        assertArraysEqual(result, new Object[]
-                {input});
+        assertArraysEqual(result, expected);
     }
 
     @Test
@@ -333,26 +333,4 @@ public class TypeCoercerImplTest extends
         assertArraysEqual(result, input.toArray());
     }
 
-    /**
-     * TAP5-1141
-     */
-    @Test
-    public void object_whose_toString_returns_null_to_boolean()
-    {
-        Object idiot = new Object()
-        {
-            public String toString()
-            {
-                return null;
-            }
-        };
-
-        // To be honest, the proper result here is up for grabs. The object is not null, so you'd kind of think that the
-        // result should be true ... but the rules are to look for a known coercion, and it finds Object --> String,
-        // String --> Boolean. Converting a null String is the same as an empty String : false.
-
-        assertFalse(coercer.coerce(idiot, Boolean.class));
-
-        assertEquals(coercer.explain(idiot.getClass(), Boolean.class), "Object --> String, String --> Boolean");
-    }
 }