[jboss-cvs] JBossCache/src-50/resources ...
Ben Wang
bwang at jboss.com
Mon Aug 21 01:06:36 EDT 2006
User: bwang
Date: 06/08/21 01:06:36
Added: src-50/resources jboss-aop.xml
Log:
moved from src
Revision Changes Path
1.1 date: 2006/08/21 05:06:36; author: bwang; state: Exp;JBossCache/src-50/resources/jboss-aop.xml
Index: jboss-aop.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<aop>
<!-- This is declaration file for JDK50 annotation.
Idea is user will then need only to annotate like:
@org.jboss.cache.aop.annotation.PojoCacheable
in his POJO. There will be no need of jboss-aop.xml from user's side.
For example, see either Address or Person.
-->
<!-- PojoCache 2.0 -->
<!-- If a POJO has PojoCachable annotation, it will be asepctized. -->
<prepare expr="field(* @org.jboss.cache.pojo.annotation.PojoCacheable->*)" />
<!--
Supports inheritance and polymorphism. It can either be a concrete class
or an interface. All sub-classes or interface implementors will be instrumeneted.
-->
<prepare expr="field(* $instanceof{@org.jboss.cache.pojo.annotation.InstanceOfPojoCacheable}->*)" />
<!-- PojoCache 1.4. Is deprecated. Will be removed in 2.1 release -->
<!-- This is declaration file for annotation. We are using JDK1.4 now,
so an annotationc pre-compiler is needed for JBossAop.
See build.xml target annoc for details.
Idea is user will then need only to annotate like:
@@org.jboss.cache.aop.AopMarker
in his POJO. There will be no need of jboss-aop.xml from user's side.
Only extra step is annotation compiling. And in JDK1.5, this step
will not be needed since the implicit annotation support.
For example, see either Address or Person.
-->
<!-- If a POJO has AopMarker annotation, it will be asepctized. -->
<prepare expr="field(* @org.jboss.cache.aop.AopMarker->*)" />
<!--
Supports inheritance and polymorphism. It can either be a concrete class
or an interface. All sub-classes or intrface implementors will be instrumeneted.
-->
<prepare expr="field(* $instanceof{@org.jboss.cache.aop.InstanceOfAopMarker}->*)" />
<!-- This is declaration file for JDK50 annotation.
Idea is user will then need only to annotate like:
@org.jboss.cache.aop.annotation.PojoCacheable
in his POJO. There will be no need of jboss-aop.xml from user's side.
For example, see either Address or Person.
-->
<!-- If a POJO has PojoCachable annotation, it will be asepctized. -->
<prepare expr="field(* @org.jboss.cache.aop.annotation.PojoCacheable->*)" />
<!--
Supports inheritance and polymorphism. It can either be a concrete class
or an interface. All sub-classes or interface implementors will be instrumeneted.
-->
<prepare expr="field(* $instanceof{@org.jboss.cache.aop.annotation.InstanceOfPojoCacheable}->*)" />
<!-- PojoCache 2.0 style -->
<!-- If a POJO has PojoCachable annotation, it will be asepctized. -->
<prepare expr="field(* @org.jboss.cache.pojo.annotation.PojoCacheable->*)" />
<!--
Supports inheritance and polymorphism. It can either be a concrete class
or an interface. All sub-classes or interface implementors will be instrumeneted.
-->
<prepare expr="field(* $instanceof{@org.jboss.cache.pojo.annotation.InstanceOfPojoCacheable}->*)" />
<!-- Observer and Observable to monitor field modification -->
<bind pointcut="
set(* $instanceof{@org.jboss.cache.pojo.annotation.InstanceOfPojoCacheable}->*) OR
set(* @org.jboss.cache.pojo.annotation.PojoCacheable->*)
">
<interceptor class="org.jboss.cache.pojo.observable.SubjectInterceptor"/>
</bind>
<introduction class="$instanceof{@org.jboss.cache.pojo.annotation.InstanceOfPojoCacheable}">
<mixin>
<interfaces>org.jboss.cache.pojo.observable.Subject</interfaces>
<class>org.jboss.cache.pojo.observable.SubjectImpl</class>
<construction>new org.jboss.cache.pojo.observable.SubjectImpl(this)</construction>
</mixin>
</introduction>
<introduction class="@org.jboss.cache.pojo.annotation.PojoCacheable">
<mixin>
<interfaces>org.jboss.cache.pojo.observable.Subject</interfaces>
<class>org.jboss.cache.pojo.observable.SubjectImpl</class>
<construction>new org.jboss.cache.pojo.observable.SubjectImpl(this)</construction>
</mixin>
</introduction>
<!--
This defines the PojoCache 2.0 interceptor stack.
-->
<!-- Check id range validity -->
<interceptor name="CheckId" class="org.jboss.cache.pojo.interceptors.CheckIdInterceptor" scope="PER_INSTANCE"/>
<!-- Track Tx undo operation -->
<interceptor name="Undo" class="org.jboss.cache.pojo.interceptors.PojoTxUndoInterceptor" scope="PER_INSTANCE"/>
<!-- Begining -->
<interceptor name="Start" class="org.jboss.cache.pojo.interceptors.PojoBeginInterceptor" scope="PER_INSTANCE"/>
<!-- Check if we need a local tx for batch processing -->
<interceptor name="Tx" class="org.jboss.cache.pojo.interceptors.PojoTxInterceptor" scope="PER_INSTANCE"/>
<!-- Mockup failed tx for testing -->
<interceptor name="MockupTx" class="org.jboss.cache.pojo.interceptors.PojoFailedTxMockupInterceptor" scope="PER_INSTANCE"/>
<!-- Perform parent level node locking -->
<interceptor name="TxLock" class="org.jboss.cache.pojo.interceptors.PojoTxLockInterceptor" scope="PER_INSTANCE"/>
<!-- Interceptor to perform Pojo level rollback -->
<interceptor name="TxUndo" class="org.jboss.cache.pojo.interceptors.PojoTxUndoSynchronizationInterceptor"
scope="PER_INSTANCE"/>
<!-- Interceptor to perform Pojo level rollback -->
<interceptor name="Reentrant" class="org.jboss.cache.pojo.interceptors.MethodReentrancyStopperInterceptor"
scope="PER_INSTANCE"/>
<!-- Whether to allow non-serializable pojo -->
<interceptor name="MarshallNonSerializable" class="org.jboss.cache.pojo.interceptors.CheckNonSerializableInterceptor"
scope="PER_INSTANCE">
<attribute name="marshallNonSerializable">false</attribute>
</interceptor>
<stack name="Attach">
<interceptor-ref name="Start"/>
<interceptor-ref name="CheckId"/>
<interceptor-ref name="MarshallNonSerializable"/>
<interceptor-ref name="Tx"/>
<interceptor-ref name="MockupTx"/>
<interceptor-ref name="TxLock"/>
<interceptor-ref name="TxUndo"/>
</stack>
<stack name="Detach">
<interceptor-ref name="Start"/>
<interceptor-ref name="CheckId"/>
<interceptor-ref name="Tx"/>
<interceptor-ref name="MockupTx"/>
<interceptor-ref name="TxLock"/>
<interceptor-ref name="TxUndo"/>
</stack>
<stack name="Find">
<interceptor-ref name="Start"/>
<interceptor-ref name="CheckId"/>
</stack>
<!-- This bind the jointpoint to specific in-memory operations. Currently in PojoUtil. -->
<bind pointcut="execution(*
@org.jboss.cache.pojo.annotation.Reentrant->toString())">
<interceptor-ref name="Reentrant"/>
</bind>
<bind pointcut="execution(*
org.jboss.cache.pojo.PojoUtil->@org.jboss.cache.pojo.annotation.TxUndo(..))">
<interceptor-ref name="Undo"/>
</bind>
<bind pointcut="execution(* org.jboss.cache.pojo.impl.PojoCacheImpl->@org.jboss.cache.pojo.annotation.Attach(..))">
<stack-ref name="Attach"/>
</bind>
<bind pointcut="execution(* org.jboss.cache.pojo.impl.PojoCacheImpl->@org.jboss.cache.pojo.annotation.Detach(..))">
<stack-ref name="Detach"/>
</bind>
<bind pointcut="execution(* org.jboss.cache.pojo.impl.PojoCacheImpl->@org.jboss.cache.pojo.annotation.Find(..))">
<stack-ref name="Find"/>
</bind>
</aop>
More information about the jboss-cvs-commits
mailing list