You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2011/11/02 00:09:47 UTC
svn commit: r1196359 - in /tapestry/tapestry5/trunk/tapestry-ioc/src:
main/java/org/apache/tapestry5/ioc/internal/services/
main/java/org/apache/tapestry5/ioc/internal/util/
main/java/org/apache/tapestry5/ioc/services/
test/java/org/apache/tapestry5/io...
Author: hlship
Date: Tue Nov 1 23:09:47 2011
New Revision: 1196359
URL: http://svn.apache.org/viewvc?rev=1196359&view=rev
Log:
TAP5-1739: Change TypeCoercer to use PlasticUtils.toWrapperType()
Modified:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java?rev=1196359&r1=1196358&r2=1196359&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java Tue Nov 1 23:09:47 2011
@@ -23,6 +23,7 @@ import org.apache.tapestry5.ioc.services
import org.apache.tapestry5.ioc.services.TypeCoercer;
import org.apache.tapestry5.ioc.util.AvailableValues;
import org.apache.tapestry5.ioc.util.UnknownValueException;
+import org.apache.tapestry5.plastic.PlasticUtils;
import org.apache.tapestry5.util.StringToEnumCoercion;
import java.util.*;
@@ -56,7 +57,7 @@ public class TypeCoercerImpl implements
Object coerce(Object input)
{
- Class sourceType = input != null ? input.getClass() : void.class;
+ Class sourceType = input != null ? input.getClass() : Void.class;
if (type.isAssignableFrom(sourceType))
return input;
@@ -131,7 +132,16 @@ public class TypeCoercerImpl implements
public Object coerce(Object input, Class targetType)
{
assert targetType != null;
- Class effectiveTargetType = InternalUtils.getWrapperType(targetType);
+ // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
+ // for null). Plastic treats Void as the wrapper for void.
+ /*
+if (type == void.class)
+{
+ return type;
+}
+ */
+
+ Class effectiveTargetType = PlasticUtils.toWrapperType(targetType);
if (effectiveTargetType.isInstance(input))
return input;
@@ -144,8 +154,26 @@ public class TypeCoercerImpl implements
{
assert sourceType != null;
assert targetType != null;
- Class effectiveSourceType = InternalUtils.getWrapperType(sourceType);
- Class effectiveTargetType = InternalUtils.getWrapperType(targetType);
+ // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
+ // for null). Plastic treats Void as the wrapper for void.
+ /*
+if (type == void.class)
+{
+ return type;
+}
+ */
+
+ Class effectiveSourceType = PlasticUtils.toWrapperType(sourceType);
+ // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
+ // for null). Plastic treats Void as the wrapper for void.
+ /*
+if (type == void.class)
+{
+ return type;
+}
+ */
+
+ Class effectiveTargetType = PlasticUtils.toWrapperType(targetType);
if (effectiveTargetType.isAssignableFrom(effectiveSourceType))
return NO_COERCION;
@@ -158,8 +186,26 @@ public class TypeCoercerImpl implements
{
assert sourceType != null;
assert targetType != null;
- Class effectiveTargetType = InternalUtils.getWrapperType(targetType);
- Class effectiveSourceType = InternalUtils.getWrapperType(sourceType);
+ // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
+ // for null). Plastic treats Void as the wrapper for void.
+ /*
+if (type == void.class)
+{
+ return type;
+}
+ */
+
+ Class effectiveTargetType = PlasticUtils.toWrapperType(targetType);
+ // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
+ // for null). Plastic treats Void as the wrapper for void.
+ /*
+if (type == void.class)
+{
+ return type;
+}
+ */
+
+ Class effectiveSourceType = PlasticUtils.toWrapperType(sourceType);
// Is a coercion even necessary? Not if the target type is assignable from the
// input value.
@@ -167,7 +213,7 @@ public class TypeCoercerImpl implements
if (effectiveTargetType.isAssignableFrom(effectiveSourceType))
return "";
- return getTargetCoercion(targetType).explain(sourceType);
+ return getTargetCoercion(effectiveTargetType).explain(effectiveSourceType);
}
private synchronized TargetCoercion getTargetCoercion(Class targetType)
@@ -225,7 +271,7 @@ public class TypeCoercerImpl implements
@SuppressWarnings("unchecked")
private Coercion findOrCreateCoercion(Class sourceType, Class targetType)
{
- if (sourceType == void.class)
+ if (sourceType == Void.class)
return searchForNullCoercion(targetType);
// These are instance variables because this method may be called concurrently.
@@ -279,7 +325,7 @@ public class TypeCoercerImpl implements
*/
private Coercion searchForNullCoercion(Class targetType)
{
- List<CoercionTuple> tuples = getTuples(void.class, targetType);
+ List<CoercionTuple> tuples = getTuples(Void.class, targetType);
for (CoercionTuple tuple : tuples)
{
@@ -336,7 +382,7 @@ public class TypeCoercerImpl implements
// Don't pull in Object -> type coercions when doing
// a search from null.
- if (sourceType == void.class)
+ if (sourceType == Void.class)
return;
}
}
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java?rev=1196359&r1=1196358&r2=1196359&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java Tue Nov 1 23:09:47 2011
@@ -1552,17 +1552,4 @@ public class InternalUtils
});
}
- public static Class getWrapperType(Class type)
- {
- // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
- // for null). Plastic treats Void as the wrapper for void.
-
- if (type == void.class)
- {
- return type;
- }
-
- return PlasticUtils.toWrapperType(type);
- }
-
}
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java?rev=1196359&r1=1196358&r2=1196359&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java Tue Nov 1 23:09:47 2011
@@ -14,7 +14,6 @@
package org.apache.tapestry5.ioc.services;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
import org.apache.tapestry5.plastic.PlasticUtils;
/**
@@ -64,7 +63,7 @@ public final class CoercionTuple<S, T>
private String convert(Class type)
{
- if (void.class.equals(type))
+ if (Void.class.equals(type))
return "null";
String name = PlasticUtils.toTypeName(type);
@@ -116,8 +115,26 @@ public final class CoercionTuple<S, T>
assert targetType != null;
assert coercion != null;
- this.sourceType = InternalUtils.getWrapperType(sourceType);
- this.targetType = InternalUtils.getWrapperType(targetType);
+ // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
+ // for null). Plastic treats Void as the wrapper for void.
+ /*
+if (type == void.class)
+{
+ return type;
+}
+ */
+
+ this.sourceType = PlasticUtils.toWrapperType(sourceType);
+ // This is needed by TypeCoercer, which has its own rules about how to handler void.class (as a stand-in
+ // for null). Plastic treats Void as the wrapper for void.
+ /*
+if (type == void.class)
+{
+ return type;
+}
+ */
+
+ this.targetType = PlasticUtils.toWrapperType(targetType);
this.coercion = wrap ? new CoercionWrapper<S, T>(coercion) : coercion;
}
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java?rev=1196359&r1=1196358&r2=1196359&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java Tue Nov 1 23:09:47 2011
@@ -17,7 +17,6 @@ package org.apache.tapestry5.ioc.interna
import org.apache.tapestry5.ioc.*;
import org.apache.tapestry5.ioc.def.*;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFactory;
import org.slf4j.Logger;
import org.testng.annotations.Test;
@@ -55,7 +54,7 @@ public class ModuleImplTest extends IOCI
{
InternalRegistry registry = mockInternalRegistry();
ServiceDef serviceDef = mockServiceDef();
- DecoratorDef2 def1 =newMock(DecoratorDef2.class);
+ DecoratorDef2 def1 = newMock(DecoratorDef2.class);
DecoratorDef def2 = newMock(DecoratorDef2.class);
Set<DecoratorDef> rawDefs = newMock(Set.class);
Logger logger = mockLogger();
@@ -92,12 +91,12 @@ public class ModuleImplTest extends IOCI
{
InternalRegistry registry = mockInternalRegistry();
ServiceDef serviceDef = mockServiceDef();
- DecoratorDef2 def1 =newMock(DecoratorDef2.class);
+ DecoratorDef2 def1 = newMock(DecoratorDef2.class);
DecoratorDef def2 = newMock(DecoratorDef2.class);
Set<DecoratorDef> rawDefs = newMock(Set.class);
- Set<Class> def1Markers = CollectionFactory.newSet((Class)BlueMarker.class);
- Set<Class> serviceDefMarkers =CollectionFactory.newSet((Class)RedMarker.class);
- Set<Class> allMarkers = CollectionFactory.newSet((Class)BlueMarker.class, (Class)BlueMarker.class);
+ Set<Class> def1Markers = CollectionFactory.newSet((Class) BlueMarker.class);
+ Set<Class> serviceDefMarkers = CollectionFactory.newSet((Class) RedMarker.class);
+ Set<Class> allMarkers = CollectionFactory.newSet((Class) BlueMarker.class, (Class) BlueMarker.class);
Logger logger = mockLogger();
ModuleDef moduleDef = mockModuleDef();
@@ -177,9 +176,9 @@ public class ModuleImplTest extends IOCI
AdvisorDef2 def1 = mockAdvisorDef2();
AdvisorDef2 def2 = mockAdvisorDef2();
Set<AdvisorDef> rawDefs = newMock(Set.class);
- Set<Class> def1Markers = CollectionFactory.newSet((Class)BlueMarker.class);
- Set<Class> serviceDefMarkers =CollectionFactory.newSet((Class)RedMarker.class);
- Set<Class> allMarkers = CollectionFactory.newSet((Class)BlueMarker.class, (Class)BlueMarker.class);
+ Set<Class> def1Markers = CollectionFactory.newSet((Class) BlueMarker.class);
+ Set<Class> serviceDefMarkers = CollectionFactory.newSet((Class) RedMarker.class);
+ Set<Class> allMarkers = CollectionFactory.newSet((Class) BlueMarker.class, (Class) BlueMarker.class);
Logger logger = mockLogger();
ModuleDef2 moduleDef = mockModuleDef2();
@@ -221,9 +220,9 @@ public class ModuleImplTest extends IOCI
AdvisorDef2 def1 = mockAdvisorDef2();
AdvisorDef2 def2 = mockAdvisorDef2();
Set<AdvisorDef> rawDefs = newMock(Set.class);
- Set<Class> def1Markers = CollectionFactory.newSet((Class)BlueMarker.class);
- Set<Class> serviceDefMarkers =CollectionFactory.newSet((Class)BlueMarker.class);
- Set<Class> allMarkers = CollectionFactory.newSet((Class)BlueMarker.class);
+ Set<Class> def1Markers = CollectionFactory.newSet((Class) BlueMarker.class);
+ Set<Class> serviceDefMarkers = CollectionFactory.newSet((Class) BlueMarker.class);
+ Set<Class> allMarkers = CollectionFactory.newSet((Class) BlueMarker.class);
Logger logger = mockLogger();
ModuleDef2 moduleDef = mockModuleDef2();
@@ -258,7 +257,7 @@ public class ModuleImplTest extends IOCI
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings("unchecked")
@Test
public void no_advisor_def_when_service_interface_is_default_and_no_markers()
{
@@ -340,8 +339,7 @@ public class ModuleImplTest extends IOCI
{
foe.foe();
unreachable();
- }
- catch (RuntimeException ex)
+ } catch (RuntimeException ex)
{
// The details are checked elsewhere.
}