diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultMasterConverter.java b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultMasterConverter.java index 4fbaaf49a..0039e0f76 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultMasterConverter.java +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/DefaultMasterConverter.java @@ -106,7 +106,20 @@ public class DefaultMasterConverter getLogger().debug( message ); } - return converter.convert( destination, original, context ); + final Object object = converter.convert( destination, original, context ); + if( destination.isInstance( object ) ) + { + return object; + } + else + { + final String message = + REZ.getString( "bad-return-type.error", + name, + object, + destination.getName() ); + throw new ConverterException( message ); + } } catch( final TypeException te ) { diff --git a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/Resources.properties b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/Resources.properties index f2cc4eeaf..7848babff 100644 --- a/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/Resources.properties +++ b/proposal/myrmidon/src/java/org/apache/myrmidon/components/converter/Resources.properties @@ -4,3 +4,4 @@ found-converter.notice=Found Converter: {0}. no-converter-factory.error=Unable to retrieve Converter factory from TypeManager. no-converter.error=Unable to find converter for {0} to {1} conversion. bad-typemanager.error=Badly configured TypeManager missing converter definition. +bad-return-type.error=The TypeManager for {0} returned "{1}" which is not of the expected type {2}.