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");
- }
}