/** * Returns ClassDescriptor for the ObjEntity matching the name. Returns null * if no matching entity exists. * * @since 1.2 */ public ClassDescriptor getClassDescriptor(String entityName) { if (entityName == null) { throw new IllegalArgumentException("Null entityName"); } return getClassDescriptorMap().getDescriptor(entityName); }
@Override public ClassDescriptorMap getClassDescriptorMap() { if (classDescriptorMap == null) { ClassDescriptorMap classDescriptorMap = new ClassDescriptorMap(this); classDescriptorMap.addFactory(new ValueHolderDescriptorFactory( classDescriptorMap)); // 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; } return classDescriptorMap; } }
@Override protected void createToManySetProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); descriptor.addDeclaredProperty(new DataObjectToManyProperty( relationship, targetDescriptor, faultFactory.getSetFault())); }
@Override protected void createToManyCollectionProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); descriptor.addDeclaredProperty(new DataObjectToManyProperty( relationship, targetDescriptor, faultFactory.getCollectionFault())); }
@Override protected void createToManyListProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); descriptor.addDeclaredProperty(new DataObjectToManyProperty( relationship, targetDescriptor, faultFactory.getListFault())); }
@Override protected void createToOneProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); descriptor.addDeclaredProperty(new DataObjectToOneProperty( relationship, targetDescriptor, faultFactory.getToOneFault())); }
@Override protected void createToManyMapProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); Accessor mapKeyAccessor = createMapKeyAccessor(relationship, targetDescriptor); descriptor.addDeclaredProperty(new DataObjectToManyMapProperty( relationship, targetDescriptor, faultFactory.getMapFault(mapKeyAccessor), mapKeyAccessor)); }
protected void indexSubclassDescriptors(PersistentDescriptor descriptor, EntityInheritanceTree inheritanceTree) { if (inheritanceTree != null) { for (EntityInheritanceTree child : inheritanceTree.getChildren()) { ObjEntity childEntity = child.getEntity(); descriptor.addSubclassDescriptor(childEntity.getClassName(), descriptorMap.getDescriptor(childEntity.getName())); indexSubclassDescriptors(descriptor, child); } } }
@Override protected void createToManyCollectionProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); String reverseName = relationship.getReverseRelationshipName(); Accessor accessor = createAccessor(descriptor, relationship.getName(), List.class); descriptor.addDeclaredProperty(new ValueHolderListProperty( descriptor, targetDescriptor, accessor, reverseName)); }
@Override protected void createToManySetProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); String reverseName = relationship.getReverseRelationshipName(); Accessor accessor = createAccessor(descriptor, relationship.getName(), Set.class); descriptor.addDeclaredProperty(new ValueHolderSetProperty( descriptor, targetDescriptor, accessor, reverseName)); }
@Override protected void createToManyListProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); String reverseName = relationship.getReverseRelationshipName(); Accessor accessor = createAccessor(descriptor, relationship.getName(), List.class); descriptor.addDeclaredProperty(new ValueHolderListProperty( descriptor, targetDescriptor, accessor, reverseName)); }
@Override protected void createToOneProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); String reverseName = relationship.getReverseRelationshipName(); Accessor accessor = createAccessor( descriptor, relationship.getName(), ValueHolder.class); PropertyDescriptor property = new ValueHolderProperty( descriptor, targetDescriptor, accessor, reverseName); descriptor.addDeclaredProperty(property); } }
/** * Returns an object that compiles and stores {@link ClassDescriptor} * instances for all entities. * * @since 3.0 */ public ClassDescriptorMap getClassDescriptorMap() { if (classDescriptorMap == null) { synchronized (this) { 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 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; } } } return classDescriptorMap; }
@Override protected void createToManyMapProperty( PersistentDescriptor descriptor, ObjRelationship relationship) { ClassDescriptor targetDescriptor = descriptorMap.getDescriptor(relationship .getTargetEntityName()); String reverseName = relationship.getReverseRelationshipName(); Accessor accessor = createAccessor(descriptor, relationship.getName(), Map.class); Accessor mapKeyAccessor = createMapKeyAccessor(relationship, targetDescriptor); PropertyDescriptor property = new ValueHolderMapProperty( descriptor, targetDescriptor, accessor, reverseName, mapKeyAccessor); descriptor.addDeclaredProperty(property); }
protected ClassDescriptor getDescriptor(ObjEntity entity, Class<?> entityClass) { String superEntityName = entity.getSuperEntityName(); ClassDescriptor superDescriptor = (superEntityName != null) ? descriptorMap.getDescriptor(superEntityName) : null;