Merge pull request #447 from steveblackmon/STREAMS-602
Resolve canonical class ancestor properties when path is set
diff --git a/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java b/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java
index 28be242..02ca82a 100644
--- a/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java
+++ b/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java
@@ -165,10 +165,10 @@
try {
pojoMap.putAll(mapper.convertValue(streamsConfiguration, Map.class));
- pojoMap.putAll(mapper.readValue(rootConfig.resolve().root().render(ConfigRenderOptions.concise()), Map.class));
+ pojoMap.putAll(mapper.readValue(subConfig.resolve().root().render(ConfigRenderOptions.concise()), Map.class));
} catch (Exception e) {
e.printStackTrace();
- LOGGER.warn("Could not parse:", rootConfig);
+ LOGGER.warn("Could not parse:", subConfig);
}
Field[] fields = configClass.getDeclaredFields();
@@ -178,9 +178,17 @@
if( type != String.class && !ClassUtils.isPrimitiveOrWrapper(type) ) {
ComponentConfigurator configurator = new ComponentConfigurator(type);
try {
- Serializable fieldValue = configurator.detectConfiguration(subConfig, field.getName());
- if (fieldValue != null) {
- pojoMap.put(field.getName(), fieldValue);
+ Serializable rootValue = configurator.detectConfiguration(rootConfig, field.getName());
+ if (rootValue != null) {
+ pojoMap.put(field.getName(), rootValue);
+ }
+ } catch( Exception e ) {
+ // we swallow any parsing problems that happen at this level
+ }
+ try {
+ Serializable pathValue = configurator.detectConfiguration(subConfig, field.getName());
+ if (pathValue != null) {
+ pojoMap.put(field.getName(), pathValue);
}
} catch( Exception e ) {
// we swallow any parsing problems that happen at this level