[jboss-cvs] JBossAS SVN: r58598 - trunk/testsuite/src/resources/cluster/http

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Nov 18 06:51:01 EST 2006


Author: bstansberry at jboss.com
Date: 2006-11-18 06:51:00 -0500 (Sat, 18 Nov 2006)
New Revision: 58598

Added:
   trunk/testsuite/src/resources/cluster/http/pojocache-aop.xml
Log:
Add file for aspectizing test classes

Added: trunk/testsuite/src/resources/cluster/http/pojocache-aop.xml
===================================================================
--- trunk/testsuite/src/resources/cluster/http/pojocache-aop.xml	2006-11-18 11:50:44 UTC (rev 58597)
+++ trunk/testsuite/src/resources/cluster/http/pojocache-aop.xml	2006-11-18 11:51:00 UTC (rev 58598)
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    This is the PojoCache configuration file that specifies:
+      1. Interceptor stack for API
+      2. Annotation binding for POJO (via "prepare" element)
+
+    Basically, this is a variant of jboss-aop.xml. Note that
+    except for the customization of interceptor stack, you should
+    not need to modify this file.
+
+    To run PojoCache, you will need to define a system property:
+    jboss.aop.path that contains the path to this file such that JBoss Aop
+    can locate it.
+-->
+<aop>
+
+   <!--
+   This defines the PojoCache 2.0 interceptor stack. Unless necessary, don't modify the stack here!
+   -->
+
+   <!-- 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 of interceptor chain -->
+   <interceptor name="Start" class="org.jboss.cache.pojo.interceptors.PojoBeginInterceptor"
+                scope="PER_INSTANCE">
+      <!-- If set to true, will also replicate final field. -->
+         <attribute name="ReplicateFinalField">true</attribute>
+    </interceptor>
+
+   <!-- 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. You will need to set PojoFailedTxMockupInterceptor.setRollback(true)
+      to activate it.
+    -->
+   <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 used to check recursive field interception. -->
+   <interceptor name="ReentrantToString" class="org.jboss.cache.pojo.interceptors.MethodReentrancyStopperInterceptor"
+                scope="PER_INSTANCE">
+               <attribute name="MethodName">toString</attribute>
+   </interceptor>
+
+   <interceptor name="ReentrantHashCode" class="org.jboss.cache.pojo.interceptors.MethodReentrancyStopperInterceptor"
+                scope="PER_INSTANCE">
+               <attribute name="MethodName">hashCode</attribute>
+   </interceptor>
+
+   <!-- Whether to allow non-serializable pojo. Default is false. -->
+   <interceptor name="MarshallNonSerializable"
+                class="org.jboss.cache.pojo.interceptors.CheckNonSerializableInterceptor"
+                scope="PER_INSTANCE">
+         <attribute name="marshallNonSerializable">false</attribute>
+                </interceptor>
+
+   <!-- This defines the stack macro -->
+   <stack name="Attach">
+      <interceptor-ref name="Start"/>
+      <interceptor-ref name="CheckId"/>
+      <interceptor-ref name="MarshallNonSerializable"/>
+      <interceptor-ref name="Tx"/>
+      <!-- NOTE: You can comment this out during production although leaving it here is OK. -->
+      <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"/>
+      <!-- NOTE: You can comment this out during production although leaving it here is OK. -->
+      <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>
+
+   <!--
+      The following section should be READ-ONLY!! It defines the annotation binding to the stack.
+   -->
+
+   <!-- This binds the jointpoint to specific in-memory operations. Currently in PojoUtil. -->
+   <bind pointcut="execution(*
+      @org.jboss.cache.pojo.annotation.Reentrant->toString())">
+      <interceptor-ref name="ReentrantToString"/>
+   </bind>
+
+   <bind pointcut="execution(*
+      @org.jboss.cache.pojo.annotation.Reentrant->hashCode())">
+      <interceptor-ref name="ReentrantHashCode"/>
+   </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>
+
+
+   <!--
+      Following is declaration for JDK50 annotation. You use the specific annotation on your
+      POJO such that it can be instrumented. Idea is user will then need only to annotate like:
+        @org.jboss.cache.pojo.annotation.PojoCacheable
+      in his POJO. There will be no need of jboss-aop.xml from user's side.
+   -->
+
+   <!-- 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>
+
+</aop>




More information about the jboss-cvs-commits mailing list