52 lines
2.8 KiB
Diff
52 lines
2.8 KiB
Diff
From 210d3f409d57f83a644b69000ae8399d5c0dc07b Mon Sep 17 00:00:00 2001
|
|
From: Stuart McCulloch <mcculls@gmail.com>
|
|
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
|
|
|