Define the behavior for Proxy Indirection.
Proxy Indirection uses the Proxy and InvocationHandler features
of JDK 1.3 to provide "transparent indirection" for 1:1 relationships. In order to use Proxy
Indirection:
toString is called on the proxy the real object data is retrieved from the database.
org.eclipse.persistence.internal.indirection.ProxyIndirectionHandler
| Modifier and Type | Field and Description |
|---|---|
| private final Class |
| Access | Constructor and Description |
|---|---|
| public | |
| public |
| Modifier and Type | Method and Description |
|---|---|
| public Object | backupCloneAttribute(Object attributeValue, Object clone, Object backup, UnitOfWorkImpl unitOfWork)
Overrides org. |
| public Object | cloneAttribute(Object attributeValue, Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession, boolean
indicates that we are building the clone
directly from a row as opposed to building the original from the
row, putting it in the shared cache, and then cloning the original. buildDirectlyFromRow)Overrides org. |
| public AbstractRecord | extractReferenceRow(Object referenceObject)
Overrides org. |
| public void | fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session)
Overrides org. |
| public Object | getOriginalIndirectionObject(Object unitOfWorkIndirectionObject, AbstractSession session)
Overrides org. |
| public Object | getRealAttributeValueFromObject(Object obj, Object object)
Overrides org. |
| public static Object | getValueFromProxy(Object value)
INTERNAL: Given a proxy object, trigger the indirection and return the actual object represented by the proxy. |
| public boolean | |
| public void | initialize()
Overrides org. |
| public boolean | isAttributeValueFullyBuilt(Object attributeValue)
Overrides org. |
| public boolean | isValidType(Class<?> attributeType)
INTERNAL: Verify that a class type is valid to use for the proxy. |
| public void | iterateOnAttributeValue(DescriptorIterator iterator, Object attributeValue)
Overrides org. |
| public void | mergeRemoteValueHolder(Object clientSideDomainObject, Object serverSideDomainObject, MergeManager mergeManager)
Overrides org. |
| public Object | nullValueFromRow()
Overrides org. |
| public boolean | objectIsEasilyInstantiated(Object object)
Overrides org. |
| public boolean | objectIsInstantiated(Object object)
Overrides org. |
| public void | reset(Object target)
Overrides org. |
| public void | setRealAttributeValueInObject(Object target, Object attributeValue)
Overrides org. |
| public Object | validateAttributeOfInstantiatedObject(Object attributeValue)
INTERNAL:
Verify that the value of the attribute within an instantiated object is of the appropriate type for
the indirection policy.
|
| public void | validateDeclaredAttributeType(Class<?> attributeType, IntegrityChecker checker)
Overrides org. |
| public void | validateGetMethodReturnType(Class<?> returnType, IntegrityChecker checker)
Overrides org. |
| public void | validateSetMethodParameterType(Class<?> parameterType, IntegrityChecker checker)
Overrides org. |
| public Object | valueFromBatchQuery(ReadQuery batchQuery, AbstractRecord row, ObjectLevelReadQuery originalQuery, CacheKey parentCacheKey)
Overrides org. |
| public Object | valueFromMethod(Object object, AbstractRecord row, AbstractSession session)
Overrides org. |
| public Object | valueFromQuery(ReadQuery query, AbstractRecord row, AbstractSession session)
Overrides org. |
| public Object | valueFromRow(Object object)
Overrides org. |
| targetInterfaces | back to summary |
|---|---|
| private final Class<?>[] targetInterfaces | |
| ProxyIndirectionPolicy | back to summary |
|---|---|
| public ProxyIndirectionPolicy(Class<?>[] targetInterfaces) | |
| ProxyIndirectionPolicy | back to summary |
|---|---|
| public ProxyIndirectionPolicy() | |
| backupCloneAttribute | back to summary |
|---|---|
| public Object backupCloneAttribute(Object attributeValue, Object clone, Object backup, UnitOfWorkImpl unitOfWork) Overrides org. INTERNAL: Return a backup clone of the attribute.
| |
| cloneAttribute | back to summary |
|---|---|
| public Object cloneAttribute(Object attributeValue, Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession, boolean buildDirectlyFromRow) Overrides org. INTERNAL: Return a clone of the attribute.
| |
| extractReferenceRow | back to summary |
|---|---|
| public AbstractRecord extractReferenceRow(Object referenceObject) Overrides org. INTERNAL: Return the reference row for the reference object. This allows the new row to be built without instantiating the reference object. Return null if the object has already been instantiated.
| |
| fixObjectReferences | back to summary |
|---|---|
| public void fixObjectReferences(Object object, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, DistributedSession session) Overrides org. INTERNAL: An object has been serialized from the server to the client. Replace the transient attributes of the remote value holders with client-side objects.
| |
| getOriginalIndirectionObject | back to summary |
|---|---|
| public Object getOriginalIndirectionObject(Object unitOfWorkIndirectionObject, AbstractSession session) Overrides org. INTERNAL: Return the original indirection object for a unit of work indirection object.
| |
| getRealAttributeValueFromObject | back to summary |
|---|---|
| public Object getRealAttributeValueFromObject(Object obj, Object object) Overrides org. INTERNAL: Return the "real" attribute value, as opposed to any wrapper. This will trigger the wrapper to instantiate the value.
| |
| getValueFromProxy | back to summary |
|---|---|
| public static Object getValueFromProxy(Object value) INTERNAL: Given a proxy object, trigger the indirection and return the actual object represented by the proxy. | |
| hasTargetInterfaces | back to summary |
|---|---|
| public boolean hasTargetInterfaces() INTERNAL: Return if targetInterfaces is not empty. | |
| initialize | back to summary |
|---|---|
| public void initialize() Overrides org. INTERNAL: Nothing required.
| |
| isAttributeValueFullyBuilt | back to summary |
|---|---|
| public boolean isAttributeValueFullyBuilt(Object attributeValue) Overrides org. INTERNAL: The method validateAttributeOfInstantiatedObject(Object attributeValue) fixes the value of the attributeValue in cases where it is null and indirection requires that it contain some specific data structure. Return whether this will happen. This method is used to help determine if indirection has been triggered
| |
| isValidType | back to summary |
|---|---|
| public boolean isValidType(Class<?> attributeType) INTERNAL:
Verify that a class type is valid to use for the proxy. The class must be one of the
interfaces in | |
| iterateOnAttributeValue | back to summary |
|---|---|
| public void iterateOnAttributeValue(DescriptorIterator iterator, Object attributeValue) Overrides org. INTERNAL: Iterate over the specified attribute value.
| |
| mergeRemoteValueHolder | back to summary |
|---|---|
| public void mergeRemoteValueHolder(Object clientSideDomainObject, Object serverSideDomainObject, MergeManager mergeManager) Overrides org. INTERNAL: Replace the client value holder with the server value holder after copying some of the settings from the client value holder.
| |
| nullValueFromRow | back to summary |
|---|---|
| public Object nullValueFromRow() Overrides org. INTERNAL: Return the null value of the appropriate attribute. That is, the field from the database is NULL, return what should be placed in the object's attribute as a result.
| |
| objectIsEasilyInstantiated | back to summary |
|---|---|
| public boolean objectIsEasilyInstantiated(Object object) Overrides org. INTERNAL: Return whether the specified object can be instantiated without database access.
| |
| objectIsInstantiated | back to summary |
|---|---|
| public boolean objectIsInstantiated(Object object) Overrides org. INTERNAL: Return whether the specified object is instantiated.
| |
| reset | back to summary |
|---|---|
| public void reset(Object target) Overrides org. Reset the wrapper used to store the value.
| |
| setRealAttributeValueInObject | back to summary |
|---|---|
| public void setRealAttributeValueInObject(Object target, Object attributeValue) Overrides org. INTERNAL: Set the "real" value of the attribute to attributeValue.
| |
| validateAttributeOfInstantiatedObject | back to summary |
|---|---|
| public Object validateAttributeOfInstantiatedObject(Object attributeValue) INTERNAL: Verify that the value of the attribute within an instantiated object is of the appropriate type for the indirection policy. In this case, the attribute must non-null and implement some public interface.
| |
| validateDeclaredAttributeType | back to summary |
|---|---|
| public void validateDeclaredAttributeType(Class<?> attributeType, IntegrityChecker checker) throws DescriptorException Overrides org. INTERNAL: Verify that attribute type is correct for the indirection policy. If it is incorrect, add an exception to the integrity checker. In this case, the attribute type must be contained in targetInterfaces.
| |
| validateGetMethodReturnType | back to summary |
|---|---|
| public void validateGetMethodReturnType(Class<?> returnType, IntegrityChecker checker) throws DescriptorException Overrides org. INTERNAL: Verify that the return type of the attribute's get method is correct for the indirection policy. If it is incorrect, add an exception to the integrity checker. In this case, the return type must be a public interface.
| |
| validateSetMethodParameterType | back to summary |
|---|---|
| public void validateSetMethodParameterType(Class<?> parameterType, IntegrityChecker checker) throws DescriptorException Overrides org. INTERNAL: Verify that the parameter type of the attribute's set method is correct for the indirection policy. If it is incorrect, add an exception to the integrity checker. In this case, the parameter type must be a public interface.
| |
| valueFromBatchQuery | back to summary |
|---|---|
| public Object valueFromBatchQuery(ReadQuery batchQuery, AbstractRecord row, ObjectLevelReadQuery originalQuery, CacheKey parentCacheKey) Overrides org. INTERNAL: Return the value to be stored in the object's attribute. This value is determined by the batch query. * NOTE: Currently not supported anyway.
| |
| valueFromMethod | back to summary |
|---|---|
| public Object valueFromMethod(Object object, AbstractRecord row, AbstractSession session) Overrides org. INTERNAL: Return the value to be stored in the object's attribute. This value is determined by invoking the appropriate method on the object and passing it the row and session.
| |
| valueFromQuery | back to summary |
|---|---|
| public Object valueFromQuery(ReadQuery query, AbstractRecord row, AbstractSession session) Overrides org. INTERNAL: Return the value to be stored in the object's attribute. This will be a proxy object.
| |
| valueFromRow | back to summary |
|---|---|
| public Object valueFromRow(Object object) Overrides org. INTERNAL: Return the value to be stored in the object's attribute. This will be a proxy object.
| |