Package org.apache.cayenne.reflect
Class BaseToManyProperty
- java.lang.Object
-
- org.apache.cayenne.reflect.BaseProperty
-
- org.apache.cayenne.reflect.BaseArcProperty
-
- org.apache.cayenne.reflect.BaseToManyProperty
-
- All Implemented Interfaces:
ArcProperty,PropertyDescriptor,ToManyProperty
public abstract class BaseToManyProperty extends BaseArcProperty implements ToManyProperty
A generic superclass of CollectionProperty implementations.- Since:
- 1.2
-
-
Field Summary
-
Fields inherited from class org.apache.cayenne.reflect.BaseArcProperty
complimentaryReverseArcName, relationship, reverseDbPath, targetDescriptor
-
Fields inherited from class org.apache.cayenne.reflect.BaseProperty
accessor, owner
-
-
Constructor Summary
Constructors Constructor Description BaseToManyProperty(ClassDescriptor owner, ClassDescriptor targetDescriptor, Accessor accessor, String reverseName)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddTarget(Object source, Object target, boolean setReverse)voidaddTargetDirectly(Object source, Object target)Adds value to collection, without triggering changing events This method is mostly for internal useprotected abstract ValueHoldercreateCollectionValueHolder(Object object)Creates a Collection for an object.protected ValueHolderensureCollectionValueHolderSet(Object object)Checks that an object's List field described by this property is set, injecting a List if needed.voidinjectValueHolder(Object object)Injects a List in the object if it hasn't been done yet.ObjectreadProperty(Object object)Returns a property value, inflating unresolved object if need.voidremoveTarget(Object source, Object target, boolean setReverse)voidremoveTargetDirectly(Object source, Object target)Removes value from collection, without triggering changing events This method is mostly for internal usebooleanvisit(PropertyVisitor visitor)A visitor accept method.voidwritePropertyDirectly(Object object, Object oldValue, Object newValue)Wraps list in a value holder that performs lazy faulting.-
Methods inherited from class org.apache.cayenne.reflect.BaseArcProperty
getComplimentaryReverseArc, getComplimentaryReverseDbRelationshipPath, getRelationship, getTargetDescriptor, isFault, setReverse
-
Methods inherited from class org.apache.cayenne.reflect.BaseProperty
getName, readPropertyDirectly, toString, writeProperty
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.cayenne.reflect.ArcProperty
getComplimentaryReverseArc, getComplimentaryReverseDbRelationshipPath, getRelationship, getTargetDescriptor, invalidate, isFault
-
Methods inherited from interface org.apache.cayenne.reflect.PropertyDescriptor
getName, readPropertyDirectly, writeProperty
-
-
-
-
Constructor Detail
-
BaseToManyProperty
public BaseToManyProperty(ClassDescriptor owner, ClassDescriptor targetDescriptor, Accessor accessor, String reverseName)
-
-
Method Detail
-
readProperty
public Object readProperty(Object object) throws PropertyException
Description copied from interface:PropertyDescriptorReturns a property value, inflating unresolved object if need.- Specified by:
readPropertyin interfacePropertyDescriptor- Overrides:
readPropertyin classBaseProperty- Throws:
PropertyException
-
writePropertyDirectly
public void writePropertyDirectly(Object object, Object oldValue, Object newValue) throws PropertyException
Wraps list in a value holder that performs lazy faulting.- Specified by:
writePropertyDirectlyin interfacePropertyDescriptor- Overrides:
writePropertyDirectlyin classBaseProperty- Throws:
PropertyException
-
addTarget
public void addTarget(Object source, Object target, boolean setReverse)
- Specified by:
addTargetin interfaceToManyProperty
-
addTargetDirectly
public void addTargetDirectly(Object source, Object target) throws PropertyException
Description copied from interface:ToManyPropertyAdds value to collection, without triggering changing events This method is mostly for internal use- Specified by:
addTargetDirectlyin interfaceToManyProperty- Throws:
PropertyException
-
removeTargetDirectly
public void removeTargetDirectly(Object source, Object target) throws PropertyException
Description copied from interface:ToManyPropertyRemoves value from collection, without triggering changing events This method is mostly for internal use- Specified by:
removeTargetDirectlyin interfaceToManyProperty- Throws:
PropertyException
-
removeTarget
public void removeTarget(Object source, Object target, boolean setReverse)
- Specified by:
removeTargetin interfaceToManyProperty
-
visit
public boolean visit(PropertyVisitor visitor)
Description copied from interface:PropertyDescriptorA visitor accept method.- Specified by:
visitin interfacePropertyDescriptor- Specified by:
visitin classBaseArcProperty- Returns:
- a status returned by the corresponding callback method of the visitor. It serves as an indication of whether peer properties processing is still needed.
-
injectValueHolder
public void injectValueHolder(Object object) throws PropertyException
Injects a List in the object if it hasn't been done yet.- Specified by:
injectValueHolderin interfacePropertyDescriptor- Overrides:
injectValueHolderin classBaseProperty- Throws:
PropertyException
-
ensureCollectionValueHolderSet
protected ValueHolder ensureCollectionValueHolderSet(Object object) throws PropertyException
Checks that an object's List field described by this property is set, injecting a List if needed.- Throws:
PropertyException
-
createCollectionValueHolder
protected abstract ValueHolder createCollectionValueHolder(Object object) throws PropertyException
Creates a Collection for an object.- Throws:
PropertyException
-
-