@Override
public Optional<Map<String, Object>> mapAttribute(Object value) {
- if (value == null)
+ if (value == null){
return Optional.absent();
+ }
Util.checkType(value, CompositeDataSupport.class);
Map<String, Object> retVal = Maps.newHashMap();
for (String jmxName : jmxToJavaNameMapping.keySet()) {
- String innerAttrJmxName = jmxName;
- Object innerValue = compositeData.get(innerAttrJmxName);
-
- AttributeMappingStrategy<?, ? extends OpenType<?>> attributeMappingStrategy = innerStrategies
- .get(innerAttrJmxName);
- Optional<?> mapAttribute = attributeMappingStrategy.mapAttribute(innerValue);
- if (mapAttribute.isPresent())
- retVal.put(jmxToJavaNameMapping.get(innerAttrJmxName), mapAttribute.get());
+ Optional<?> mapped = mapInnerAttribute(compositeData, jmxName, expectedType.getDescription(jmxName));
+ if(mapped.isPresent()){
+ retVal.put(jmxToJavaNameMapping.get(jmxName), mapped.get());
+ }
}
return Optional.of(retVal);
}
+ protected Optional<?> mapInnerAttribute(CompositeDataSupport compositeData, String jmxName, String description) {
+ Object innerValue = compositeData.get(jmxName);
+
+ AttributeMappingStrategy<?, ? extends OpenType<?>> attributeMappingStrategy = innerStrategies
+ .get(jmxName);
+ return attributeMappingStrategy.mapAttribute(innerValue);
+ }
+
}