package org.aopalliance.intercept;
Intercepts field access on a target object.
The user should implement the set(FieldAccess)
and get(FieldAccess)
methods to modify the original behavior. E.g. the following class implements a tracing interceptor (traces the accesses to the intercepted field(s)):
class TracingInterceptor implements FieldInterceptor {
Object set(FieldAccess fa) throws Throwable {
System.out.println("field "+fa.getField()+" is set with value "+
fa.getValueToSet());
Object ret=fa.proceed();
System.out.println("field "+fa.getField()+" was set to value "+ret);
return ret;
}
Object get(FieldAccess fa) throws Throwable {
System.out.println("field "+fa.getField()+" is about to be read");
Object ret=fa.proceed();
System.out.println("field "+fa.getField()+" was read; value is "+ret);
return ret;
}
}
/**
* Intercepts field access on a target object.
*
* <p>The user should implement the {@link #set(FieldAccess)} and
* {@link #get(FieldAccess)} methods to modify the original
* behavior. E.g. the following class implements a tracing interceptor
* (traces the accesses to the intercepted field(s)):
*
* <pre class=code>
* class TracingInterceptor implements FieldInterceptor {
*
* Object set(FieldAccess fa) throws Throwable {
* System.out.println("field "+fa.getField()+" is set with value "+
* fa.getValueToSet());
* Object ret=fa.proceed();
* System.out.println("field "+fa.getField()+" was set to value "+ret);
* return ret;
* }
*
* Object get(FieldAccess fa) throws Throwable {
* System.out.println("field "+fa.getField()+" is about to be read");
* Object ret=fa.proceed();
* System.out.println("field "+fa.getField()+" was read; value is "+ret);
* return ret;
* }
* }
* </pre> */
public interface FieldInterceptor extends Interceptor
{
Do the stuff you want to do before and after the
field is getted.
Polite implementations would certainly like to call Joinpoint.proceed()
.
Params: - fieldRead – the joinpoint that corresponds to the field
read
Throws: - Throwable – if the interceptors or the
target-object throws an exception.
Returns: the result of the field read Joinpoint.proceed()
, might be intercepted by the interceptor.
/**
* Do the stuff you want to do before and after the
* field is getted.
*
* <p>Polite implementations would certainly like to call
* {@link Joinpoint#proceed()}.
*
* @param fieldRead the joinpoint that corresponds to the field
* read
* @return the result of the field read {@link
* Joinpoint#proceed()}, might be intercepted by the
* interceptor.
*
* @throws Throwable if the interceptors or the
* target-object throws an exception. */
Object get(FieldAccess fieldRead) throws Throwable;
Do the stuff you want to do before and after the
field is setted.
Polite implementations would certainly like to implement Joinpoint.proceed()
.
Params: - fieldWrite – the joinpoint that corresponds to the field
write
Throws: - Throwable – if the interceptors or the
target-object throws an exception.
Returns: the result of the field set Joinpoint.proceed()
, might be intercepted by the interceptor.
/**
* Do the stuff you want to do before and after the
* field is setted.
*
* <p>Polite implementations would certainly like to implement
* {@link Joinpoint#proceed()}.
*
* @param fieldWrite the joinpoint that corresponds to the field
* write
* @return the result of the field set {@link
* Joinpoint#proceed()}, might be intercepted by the
* interceptor.
*
* @throws Throwable if the interceptors or the
* target-object throws an exception. */
Object set(FieldAccess fieldWrite) throws Throwable;
}