if (nested instanceof Map<?, ?>) {
return ((Map<String, Object>) nested).get(((String) key)
.substring(firstDotIndex + 1));
}
}
IPropertyDescriptor propertyDescriptor = componentDescriptor
.getPropertyDescriptor((String) key);
Object actualValue = super.get(key);
if (actualValue == null
&& propertyDescriptor instanceof IReferencePropertyDescriptor<?>) {
IComponentDescriptor<?> referencedDescriptor = ((IReferencePropertyDescriptor<?>) propertyDescriptor)
.getReferencedDescriptor();
QueryComponent referencedQueryComponent = new QueryComponent(
referencedDescriptor, getComponentFactory());
if (ComparableQueryStructure.class
.isAssignableFrom(referencedQueryComponent.getQueryContract())) {
referencedQueryComponent.put(
ComparableQueryStructureDescriptor.COMPARATOR,
ComparableQueryStructureDescriptor.EQ);
}
referencedQueryComponent
.addPropertyChangeListener(new InlinedComponentTracker(
propertyDescriptor.getName()));
put((String) key, referencedQueryComponent);
return referencedQueryComponent;
}
return actualValue;
}