From 210d3f409d57f83a644b69000ae8399d5c0dc07b Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Wed, 16 Apr 2014 02:18:15 +0100 Subject: [PATCH] Bug 429369: fallback to relaxed (unchecked values) Map conversion with warning --- .../converters/composite/MapConverter.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/converters/composite/MapConverter.java b/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/converters/composite/MapConverter.java index 277f267..c343004 100644 --- a/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/converters/composite/MapConverter.java +++ b/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/converters/composite/MapConverter.java @@ -26,6 +26,7 @@ import org.codehaus.plexus.component.configurator.converters.ParameterizedConfig import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup; import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator; import org.codehaus.plexus.configuration.PlexusConfiguration; +import org.eclipse.sisu.inject.Logs; public class MapConverter extends AbstractConfigurationConverter @@ -72,9 +73,23 @@ public class MapConverter final ConfigurationConverter converter = lookup.lookupConverterForType( elementType ); for ( int i = 0, size = configuration.getChildCount(); i < size; i++ ) { + Object elementValue; final PlexusConfiguration element = configuration.getChild( i ); - map.put( element.getName(), converter.fromConfiguration( lookup, element, elementType, enclosingType, - loader, evaluator, listener ) ); + try + { + elementValue = converter.fromConfiguration( lookup, element, elementType, enclosingType, // + loader, evaluator, listener ); + } + // TEMP: remove when http://jira.codehaus.org/browse/MSHADE-168 is fixed + catch ( final ComponentConfigurationException e ) + { + elementValue = fromExpression( element, evaluator ); + + Logs.warn( "Map in " + enclosingType + " declares value type as: {} but saw: {} at runtime", + elementType, null != elementValue ? elementValue.getClass() : null ); + } + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + map.put( element.getName(), elementValue ); } return map; } -- 1.9.0