Index: framework/src/java/org/apache/hivemind/service/impl/BuilderPropertyFacet.java =================================================================== RCS file: /home/cvspublic/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderPropertyFacet.java,v retrieving revision 1.12 diff -u -r1.12 BuilderPropertyFacet.java --- framework/src/java/org/apache/hivemind/service/impl/BuilderPropertyFacet.java 29 Apr 2005 07:40:55 -0000 1.12 +++ framework/src/java/org/apache/hivemind/service/impl/BuilderPropertyFacet.java 18 May 2005 22:43:38 -0000 @@ -66,20 +66,13 @@ public boolean isAssignableToType(ServiceImplementationFactoryParameters factoryParameters, Class targetType) { - try - { - // TODO should Translator declare an analoguous isAssignableToType method? - Object facetValue = getFacetValue(factoryParameters, targetType); + // TODO should Translator declare an analoguous isAssignableToType method? + Object facetValue = getFacetValue(factoryParameters, targetType); - if (facetValue == null) - return !targetType.isPrimitive(); + if (facetValue == null) + return !targetType.isPrimitive(); - return ConstructorUtils.isCompatible(targetType, facetValue.getClass()); - } - catch (ApplicationRuntimeException e) - { - return false; - } + return ConstructorUtils.isCompatible(targetType, facetValue.getClass()); } /** @since 1.1 */ Index: framework/src/test/org/apache/hivemind/service/impl/TestBuilderPropertyFacet.java =================================================================== RCS file: /home/cvspublic/jakarta-hivemind/framework/src/test/org/apache/hivemind/service/impl/TestBuilderPropertyFacet.java,v retrieving revision 1.1 diff -u -r1.1 TestBuilderPropertyFacet.java --- framework/src/test/org/apache/hivemind/service/impl/TestBuilderPropertyFacet.java 27 Apr 2005 12:23:46 -0000 1.1 +++ framework/src/test/org/apache/hivemind/service/impl/TestBuilderPropertyFacet.java 18 May 2005 22:43:38 -0000 @@ -14,6 +14,7 @@ package org.apache.hivemind.service.impl; +import org.apache.hivemind.ApplicationRuntimeException; import org.apache.hivemind.ServiceImplementationFactoryParameters; import org.apache.hivemind.internal.Module; import org.apache.hivemind.schema.Translator; @@ -55,4 +56,43 @@ verifyControls(); } + + public void testAssignableFromBadValue() + { + MockControl moduleControl = newControl(Module.class); + Module module = (Module) moduleControl.getMock(); + + MockControl translatorControl = newControl(Translator.class); + Translator translator = (Translator) translatorControl.getMock(); + + MockControl paramsControl = newControl(ServiceImplementationFactoryParameters.class); + ServiceImplementationFactoryParameters params = (ServiceImplementationFactoryParameters) paramsControl + .getMock(); + + BuilderPropertyFacet facet = new BuilderPropertyFacet(); + + facet.setTranslator("foo"); + facet.setValue("bar"); + + params.getInvokingModule(); + paramsControl.setDefaultReturnValue(module); + + module.getTranslator("foo"); + moduleControl.setDefaultReturnValue(translator); + + translator.translate(module, Object.class, "bar", null); + translatorControl.setThrowable(new ApplicationRuntimeException("bad translate parameter")); + + replayControls(); + + try { + facet.isAssignableToType(params, Object.class); + unreachable(); + } + catch (ApplicationRuntimeException e) { + assertEquals("bad translate parameter", e.getMessage()); + } + + verifyControls(); + } }