Author: hlship Date: Thu Aug 11 18:23:02 2011 New Revision: 1156714 URL: http://svn.apache.org/viewvc?rev=1156714&view=rev Log: TAP5-1535: When there's a type mismatch between a container component at the field with @InjectComponent, the type of the containing component should be part of the exception message
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java?rev=1156714&r1=1156713&r2=1156714&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java Thu Aug 11 18:23:02 2011 @@ -58,12 +58,11 @@ public class InjectContainerWorker imple private ComputedValue<FieldConduit<Object>> createFieldValueConduitProvider(PlasticField field) { - final String fieldName = field.getName(); final String fieldTypeName = field.getTypeName(); - return new ComputedValue<FieldConduit<Object>> () + return new ComputedValue<FieldConduit<Object>>() { public FieldConduit<Object> get(InstanceContext context) { @@ -79,9 +78,9 @@ public class InjectContainerWorker imple if (!fieldType.isInstance(container)) { String message = String.format( - "Component %s is not assignable to field %s.%s (of type %s).", container - .getComponentResources().getCompleteId(), resources.getComponentModel() - .getComponentClassName(), fieldName, fieldTypeName); + "Component %s (type %s) is not assignable to field %s.%s (of type %s).", container + .getComponentResources().getCompleteId(), container.getClass().getName(), resources.getComponentModel() + .getComponentClassName(), fieldName, fieldTypeName); throw new RuntimeException(message); } Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java?rev=1156714&r1=1156713&r2=1156714&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java Thu Aug 11 18:23:02 2011 @@ -140,7 +140,7 @@ public class CoreBehaviorsTests extends // And exception message: - assertTextPresent("Component InjectContainerMismatch is not assignable to field org.apache.tapestry5.corelib.mixins.RenderDisabled.field (of type org.apache.tapestry5.Field)."); + assertTextPresent("Component InjectContainerMismatch (type org.apache.tapestry5.integration.app1.pages.InjectContainerMismatch) is not assignable to field org.apache.tapestry5.corelib.mixins.RenderDisabled.field (of type org.apache.tapestry5.Field)."); } @Test