*
* @since 3.0
*/
public ClassDescriptorMap getClassDescriptorMap() {
if (classDescriptorMap == null) {
ClassDescriptorMap classDescriptorMap = new ClassDescriptorMap(this);
FaultFactory faultFactory = new SingletonFaultFactory();
// add factories in reverse of the desired chain order
classDescriptorMap.addFactory(new ValueHolderDescriptorFactory(
classDescriptorMap));
classDescriptorMap.addFactory(new EnhancedPojoDescriptorFactory(
classDescriptorMap,
faultFactory));
classDescriptorMap.addFactory(new DataObjectDescriptorFactory(
classDescriptorMap,
faultFactory));
// since ClassDescriptorMap is not synchronized, we need to prefill it with
// entity proxies here.
for (DataMap map : maps) {
for (String entityName : map.getObjEntityMap().keySet()) {
classDescriptorMap.getDescriptor(entityName);
}
}
this.classDescriptorMap = classDescriptorMap;
}