org.apache.cayenne.reflect
Class LazyClassDescriptorDecorator

java.lang.Object
  extended by org.apache.cayenne.reflect.LazyClassDescriptorDecorator
All Implemented Interfaces:
ClassDescriptor

public class LazyClassDescriptorDecorator
extends Object
implements ClassDescriptor

A ClassDescriptor wrapper that compiles decoarated descriptor lazily on first access.

Since:
3.0
Author:
Andrus Adamchik

Field Summary
protected  ClassDescriptor descriptor
           
protected  ClassDescriptorMap descriptorMap
           
protected  String entityName
           
 
Constructor Summary
LazyClassDescriptorDecorator(ClassDescriptorMap descriptorMap, String entityName)
           
 
Method Summary
protected  void checkDescriptorInitialized()
          Checks whether decorated descriptor is initialized, and if not, creates it using parent ClassDescriptorMap.
 Object createObject()
          Creates a new instance of a class described by this object.
 Property getDeclaredProperty(String propertyName)
          Returns a Java Bean property descriptor matching property name or null if no such property is found.
 ClassDescriptor getDescriptor()
          Returns underlying descriptor used to delegate all processing, resolving it if needed.
 ObjEntity getEntity()
          Returns an ObjEntity associated with this descriptor.
 Iterator getIdProperties()
          Returns an iterator over the properties mapped to id columns.
 Class getObjectClass()
          Returns a class mapped by this descriptor.
 Iterator getProperties()
          Deprecated. since 3.0. Use visitProperties(PropertyVisitor) method instead.
 Property getProperty(String propertyName)
          Returns a property descriptor matching property name, or null if no such property is found.
 ClassDescriptor getSubclassDescriptor(Class objectClass)
          Returns the most "specialized" descriptor for a given class.
 ClassDescriptor getSuperclassDescriptor()
          Returns a descriptor of the mapped superclass or null if the descriptor's entity sits at the top of inheritance hierarchy or no inheritance is mapped.
 void injectValueHolders(Object object)
          Prepares object properties for access.
 boolean isFault(Object object)
          Returns true if an object is not fully resolved.
 void shallowMerge(Object from, Object to)
          Merges object properties from one object to another, avoiding traversal of the ArcProperties.
 boolean visitAllProperties(PropertyVisitor visitor)
          Passes the visitor to the properties "visit" method for all properties declared in this descriptor, its super and subdescriptors, terminating properties walkthrough in case one of the properties returns false.
 boolean visitDeclaredProperties(PropertyVisitor visitor)
          Passes the visitor to the properties "visit" method for all properties declared in this descriptor, terminating properties walkthrough in case one of the properties returns false.
 boolean visitProperties(PropertyVisitor visitor)
          Passes the visitor to all properties "visit" method, terminating properties walkthrough in case one of the properties returns false.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

descriptor

protected ClassDescriptor descriptor

descriptorMap

protected ClassDescriptorMap descriptorMap

entityName

protected String entityName
Constructor Detail

LazyClassDescriptorDecorator

public LazyClassDescriptorDecorator(ClassDescriptorMap descriptorMap,
                                    String entityName)
Method Detail

checkDescriptorInitialized

protected void checkDescriptorInitialized()
Checks whether decorated descriptor is initialized, and if not, creates it using parent ClassDescriptorMap.


getDescriptor

public ClassDescriptor getDescriptor()
Returns underlying descriptor used to delegate all processing, resolving it if needed.


createObject

public Object createObject()
Description copied from interface: ClassDescriptor
Creates a new instance of a class described by this object.

Specified by:
createObject in interface ClassDescriptor

getDeclaredProperty

public Property getDeclaredProperty(String propertyName)
Description copied from interface: ClassDescriptor
Returns a Java Bean property descriptor matching property name or null if no such property is found. Lookup DOES NOT including properties from the superclass descriptors. Returned property can be any one of AttributeProperty, ToManyProperty, ToOneProperty.

Specified by:
getDeclaredProperty in interface ClassDescriptor

getEntity

public ObjEntity getEntity()
Description copied from interface: ClassDescriptor
Returns an ObjEntity associated with this descriptor.

Specified by:
getEntity in interface ClassDescriptor

getObjectClass

public Class getObjectClass()
Description copied from interface: ClassDescriptor
Returns a class mapped by this descriptor.

Specified by:
getObjectClass in interface ClassDescriptor

getProperties

public Iterator getProperties()
Deprecated. since 3.0. Use visitProperties(PropertyVisitor) method instead.

Description copied from interface: ClassDescriptor
Returns an Iterator over descriptor properties.

Specified by:
getProperties in interface ClassDescriptor

getIdProperties

public Iterator getIdProperties()
Description copied from interface: ClassDescriptor
Returns an iterator over the properties mapped to id columns.

Specified by:
getIdProperties in interface ClassDescriptor

getProperty

public Property getProperty(String propertyName)
Description copied from interface: ClassDescriptor
Returns a property descriptor matching property name, or null if no such property is found. Lookup includes properties from this descriptor and all its superclass decsriptors. Returned property can be any one of AttributeProperty, ToManyProperty, ToOneProperty.

Specified by:
getProperty in interface ClassDescriptor

getSubclassDescriptor

public ClassDescriptor getSubclassDescriptor(Class objectClass)
Description copied from interface: ClassDescriptor
Returns the most "specialized" descriptor for a given class. This method assumes that the following is true:
 this.getObjectClass().isAssignableFrom(objectClass)
 

Specified by:
getSubclassDescriptor in interface ClassDescriptor

getSuperclassDescriptor

public ClassDescriptor getSuperclassDescriptor()
Description copied from interface: ClassDescriptor
Returns a descriptor of the mapped superclass or null if the descriptor's entity sits at the top of inheritance hierarchy or no inheritance is mapped.

Specified by:
getSuperclassDescriptor in interface ClassDescriptor

injectValueHolders

public void injectValueHolders(Object object)
                        throws PropertyException
Description copied from interface: ClassDescriptor
Prepares object properties for access. This may include injection of value holders into the object and such.

Specified by:
injectValueHolders in interface ClassDescriptor
Throws:
PropertyException

isFault

public boolean isFault(Object object)
Description copied from interface: ClassDescriptor
Returns true if an object is not fully resolved.

Specified by:
isFault in interface ClassDescriptor

shallowMerge

public void shallowMerge(Object from,
                         Object to)
                  throws PropertyException
Description copied from interface: ClassDescriptor
Merges object properties from one object to another, avoiding traversal of the ArcProperties.

Specified by:
shallowMerge in interface ClassDescriptor
Throws:
PropertyException

visitDeclaredProperties

public boolean visitDeclaredProperties(PropertyVisitor visitor)
Description copied from interface: ClassDescriptor
Passes the visitor to the properties "visit" method for all properties declared in this descriptor, terminating properties walkthrough in case one of the properties returns false. Returns true if all visited properties returned true, false - if one property returned false.

Specified by:
visitDeclaredProperties in interface ClassDescriptor

visitProperties

public boolean visitProperties(PropertyVisitor visitor)
Description copied from interface: ClassDescriptor
Passes the visitor to all properties "visit" method, terminating properties walkthrough in case one of the properties returns false. Returns true if all visited properties returned true, false - if one property returned false.

Specified by:
visitProperties in interface ClassDescriptor

visitAllProperties

public boolean visitAllProperties(PropertyVisitor visitor)
Description copied from interface: ClassDescriptor
Passes the visitor to the properties "visit" method for all properties declared in this descriptor, its super and subdescriptors, terminating properties walkthrough in case one of the properties returns false. Returns true if all visited properties returned true, false - if one property returned false.

Specified by:
visitAllProperties in interface ClassDescriptor


Copyright © 2001-2007 Apache Cayenne. All Rights Reserved.