Class AbstractIndirectionHandler
java.lang.Object
org.kuali.rice.core.framework.persistence.ojb.AbstractIndirectionHandler
- All Implemented Interfaces:
Serializable,org.apache.ojb.broker.core.proxy.IndirectionHandler
- Direct Known Subclasses:
IndirectionHandlerByteBuddyImpl
public abstract class AbstractIndirectionHandler
extends Object
implements org.apache.ojb.broker.core.proxy.IndirectionHandler
Abstract implementation for the indirection handler used by ojb's proxies.
- Version:
- $Id: AbstractIndirectionHandler.java,v 1.1 2007-08-24 22:17:32 ewestfal Exp $
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractIndirectionHandler(org.apache.ojb.broker.PBKey brokerKey, org.apache.ojb.broker.Identity id) Creates a new indirection handler for the indicated object. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddListener(org.apache.ojb.broker.core.proxy.MaterializationListener listener) Adds a materialization listener.protected voidCalls afterMaterialization on all registered listeners in the reverse order of registration.booleanDetermines whether the real subject already has been materialized.protected voidCalls beforeMaterialization on all registered listeners in the reverse order of registration.protected org.kuali.rice.core.framework.persistence.ojb.AbstractIndirectionHandler.TemporaryBrokerWrapperGets the persistence broker used by this indirection handler.org.apache.ojb.broker.PBKeyReturns the key of the persistence broker used by this indirection handler.org.apache.ojb.broker.IdentityReturns the identity of the subject.Returns the proxies real subject.[Copied fromInvocationHandler]:
Processes a method invocation on a proxy instance and returns the result.protected ObjectRetrieves the real subject from the underlying RDBMS.voidremoveListener(org.apache.ojb.broker.core.proxy.MaterializationListener listener) Removes a materialization listener.protected voidsetBrokerKey(org.apache.ojb.broker.PBKey brokerKey) Sets the key of the persistence broker used by this indirection handler.protected voidsetIdentity(org.apache.ojb.broker.Identity identity) Sets the identity of the subject of this indirection handler.voidsetRealSubject(Object object) [olegnitz] This looks stupid, but is really necessary for OTM: the materialization listener replaces the real subject by its clone to ensure transaction isolation.
-
Constructor Details
-
AbstractIndirectionHandler
public AbstractIndirectionHandler(org.apache.ojb.broker.PBKey brokerKey, org.apache.ojb.broker.Identity id) Creates a new indirection handler for the indicated object.- Parameters:
brokerKey- The key of the persistence brokerid- The identity of the subject
-
-
Method Details
-
getIdentity
public org.apache.ojb.broker.Identity getIdentity()Returns the identity of the subject.- Specified by:
getIdentityin interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler- Returns:
- The identity
-
setIdentity
protected void setIdentity(org.apache.ojb.broker.Identity identity) Sets the identity of the subject of this indirection handler.- Parameters:
identity- The identity
-
getBrokerKey
public org.apache.ojb.broker.PBKey getBrokerKey()Returns the key of the persistence broker used by this indirection handler.- Specified by:
getBrokerKeyin interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler- Returns:
- The broker key
-
setBrokerKey
protected void setBrokerKey(org.apache.ojb.broker.PBKey brokerKey) Sets the key of the persistence broker used by this indirection handler.- Parameters:
brokerKey- The broker key
-
addListener
public void addListener(org.apache.ojb.broker.core.proxy.MaterializationListener listener) Adds a materialization listener.- Specified by:
addListenerin interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler- Parameters:
listener- The listener to add
-
removeListener
public void removeListener(org.apache.ojb.broker.core.proxy.MaterializationListener listener) Removes a materialization listener.- Specified by:
removeListenerin interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler- Parameters:
listener- The listener to remove
-
beforeMaterialization
protected void beforeMaterialization()Calls beforeMaterialization on all registered listeners in the reverse order of registration. -
afterMaterialization
protected void afterMaterialization()Calls afterMaterialization on all registered listeners in the reverse order of registration. -
getBroker
protected org.kuali.rice.core.framework.persistence.ojb.AbstractIndirectionHandler.TemporaryBrokerWrapper getBroker() throws org.apache.ojb.broker.PBFactoryExceptionGets the persistence broker used by this indirection handler. If no PBKey is available a runtime exception will be thrown.- Returns:
- a PersistenceBroker
- Throws:
org.apache.ojb.broker.PBFactoryException
-
invoke
[Copied fromInvocationHandler]:
Processes a method invocation on a proxy instance and returns the result. This method will be invoked on an invocation handler when a method is invoked on a proxy instance that it is associated with.- Specified by:
invokein interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler- Parameters:
proxy- The proxy instance that the method was invoked onmethod- TheMethodinstance corresponding to the interface method invoked on the proxy instance. The declaring class of theMethodobject will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.args- An array of objects containing the values of the arguments passed in the method invocation on the proxy instance, ornullif interface method takes no arguments. Arguments of primitive types are wrapped in instances of the appropriate primitive wrapper class, such asjava.lang.Integerorjava.lang.Boolean.- Returns:
- The value to return from the method invocation on the proxy
instance. If the declared return type of the interface method is
a primitive type, then the value returned by this method must be
an instance of the corresponding primitive wrapper class;
otherwise, it must be a type assignable to the declared return
type. If the value returned by this method is
nulland the interface method's return type is primitive, then aNullPointerExceptionwill be thrown by the method invocation on the proxy instance. If the value returned by this method is otherwise not compatible with the interface method's declared return type as described above, aClassCastExceptionwill be thrown by the method invocation on the proxy instance. - Throws:
org.apache.ojb.broker.PersistenceBrokerException- The exception to throw from the method invocation on the proxy instance. The exception's type must be assignable either to any of the exception types declared in thethrowsclause of the interface method or to the unchecked exception typesjava.lang.RuntimeExceptionorjava.lang.Error. If a checked exception is thrown by this method that is not assignable to any of the exception types declared in thethrowsclause of the interface method, then anUndeclaredThrowableExceptioncontaining the exception that was thrown by this method will be thrown by the method invocation on the proxy instance.- See Also:
-
getRealSubject
Returns the proxies real subject. The subject will be materialized if necessary.- Specified by:
getRealSubjectin interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler- Returns:
- The subject
- Throws:
org.apache.ojb.broker.PersistenceBrokerException
-
setRealSubject
[olegnitz] This looks stupid, but is really necessary for OTM: the materialization listener replaces the real subject by its clone to ensure transaction isolation. Is there a better way to do this?- Specified by:
setRealSubjectin interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler
-
materializeSubject
Retrieves the real subject from the underlying RDBMS. Override this method if the object is to be materialized in a specific way.- Returns:
- The real subject of the proxy
- Throws:
org.apache.ojb.broker.PersistenceBrokerException
-
alreadyMaterialized
public boolean alreadyMaterialized()Determines whether the real subject already has been materialized.- Specified by:
alreadyMaterializedin interfaceorg.apache.ojb.broker.core.proxy.IndirectionHandler- Returns:
trueif the real subject has already been loaded
-