[jboss-svn-commits] JBL Code SVN: r28807 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src: main/java/uk/ac/ncl/sdia/a8905943/aspects/field and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 4 17:29:27 EDT 2009


Author: whitingjr
Date: 2009-08-04 17:29:27 -0400 (Tue, 04 Aug 2009)
New Revision: 28807

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml
Removed:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java
Modified:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
Log:
Changed classes.
added factory.

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -1,20 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.aspects;
-
-import org.jboss.aop.joinpoint.MethodInvocation;
-
-public class STMReadAspect
-{
-   public Object stmread(MethodInvocation invocation) 
-      throws Throwable
-   {
-      Object returnValue = null;
-      
-      return returnValue;
-   }
-}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -1,12 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.aspects;
-
-public class STMWriteAspect
-{
-
-}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -35,7 +35,7 @@
          logger.info("Versioning aspect called for field write invocation");
       }
       // TODO: jrw do something
-      return null;
+      return fieldWriteInvocation.invokeNext();
    }
    
    public Object read(MethodInvocation methodInvocation)
@@ -44,7 +44,7 @@
       // TODO:jrw complete implementation of this method
       if (logger.isInfoEnabled())
       {
-         logger.info("Versioning aspect called for field read invocation");
+         logger.info("Versioning aspect called for field getter invocation");
       }
       // TODO: jrw do something
       // check whether a transaction is running
@@ -73,7 +73,7 @@
    // TODO:jrw complete implementation of this method
       if (logger.isInfoEnabled())
       {
-         logger.info("Versioning aspect called for field write invocation");
+         logger.info("Versioning aspect called for field setter invocation");
       }
       // TODO: jrw do something
       return methodInvocation.invokeNext();

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -16,6 +16,13 @@
 import uk.ac.ncl.sdia.a8905943.handle.HandleUtils;
 import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
 
+/**
+ * A VersioningFieldAspect.
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ * @deprecated do not use this, a separate module for aspects should be used
+ */
 public final class VersioningFieldAspect
 {
    private static final Logger logger = Logger.getLogger(VersioningFieldAspect.class);

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -19,5 +19,5 @@
  */
 @Target({ElementType.METHOD})
 public @interface STMWrite {
-
+ 
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -27,6 +27,7 @@
 import org.apache.log4j.Logger;
 import org.jboss.resource.adapter.jdbc.WrappedConnection;
 
+import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
 import uk.ac.ncl.sdia.a8905943.locator.transaction.ServiceLocator;
 import uk.ac.ncl.sdia.a8905943.persistence.jdbc.STMConnection;
 import uk.ac.ncl.sdia.a8905943.stm.annotation.STMEntity;
@@ -46,6 +47,7 @@
    public void clear()
    {
       //TODO: detatch the entities managed by this connection.
+      STMFactory.getFactoryInstance().deallocate();
    }
 
    @Override
@@ -58,7 +60,7 @@
          logger.debug("STMEntityManagerImpl.close called.");
       }
       
-      TransactionManager transactionManager = ServiceLocator.findLocalPersonManager();
+      //TransactionManager transactionManager = ServiceLocator.findLocalPersonManager();
       try
       {
          this.connection.close();
@@ -88,6 +90,8 @@
          logger.error("SQLException occured when closing the connection object when, the EM is closed.");
          throw new RuntimeException(sqle);
       }
+      STMFactory.getFactoryInstance().deallocate();
+      
       this.isOpen = false;
    }
 
@@ -167,13 +171,18 @@
       T returnValue = null;
       // check if the class has been annotated using the STM annotations.
       boolean isstmEntity = false;
-      for (Annotation annotation : entityClass.getAnnotations())
+      
+      /** This no longer works, using AOP means the reference given is an instance of
+       * some proxy class. */
+      /*for (Annotation annotation : entityClass.getAnnotations())
       {
          if (annotation instanceof STMEntity)
          {
             isstmEntity = true;
          }
       }
+      */
+      isstmEntity = true;
       if (isstmEntity)
       {// STM entity class, create an instance
          try
@@ -334,6 +343,7 @@
    {
       this();
       this.connection = connection;
+      STMFactory.getFactoryInstance().allocate(getSTMConnection().getSTM());
    }
 
    public STMConnection getSTMConnection()
@@ -376,6 +386,7 @@
           * pool.*/
          try
          {
+            STMFactory.getFactoryInstance().deallocate();
             if (!connection.isClosed())
             {
                connection.close();// release connection back into container pool

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.factory;
+
+import uk.ac.ncl.sdia.a8905943.stm.STM;
+
+/**
+ * The purpose of this factory is an attempt to bind a reference of
+ * the STM allocated to a Thread (of control). It should be allocated
+ * a deallocated. Allocating and deallocating should occur at the same
+ * time logical Connection objects are release by the EntityManager. 
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public final class STMFactory
+{
+   private static final STMFactory factory = new STMFactory(); 
+   private final ThreadLocal<STM> stmPerThread = new ThreadLocal<STM>();
+
+   public void allocate(STM stm)
+   {
+      this.stmPerThread.set(stm);
+   }
+   
+   public void deallocate()
+   {
+      this.stmPerThread.set(null);
+   }
+   
+   public STM getCurrent()
+   {
+      return this.stmPerThread.get();
+   }
+   
+   public static STMFactory getFactoryInstance()
+   {
+      return factory;
+   }
+   
+   private STMFactory()
+   {
+   }
+   
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -34,7 +34,7 @@
       this.id = identity;
    }
    
-   private Car()
+   public  Car()
    {
    }
 

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -27,6 +27,7 @@
 import org.apache.log4j.Logger;
 
 import uk.ac.ncl.sdia.a8905943.persistence.xa.STMXAConnectionImpl;
+import uk.ac.ncl.sdia.a8905943.stm.STM;
 
 /**
  * This object represents a logical connection with database. In this system the 
@@ -406,4 +407,10 @@
          logger.debug("Created an instance of STMConnection associtated with parent STMXAConnectionImpl.");
       }
    }
+   
+   public STM getSTM()
+   {
+      return this.xaConnection.getSTM();
+   }
+   
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -1,8 +1,5 @@
 package uk.ac.ncl.sdia.a8905943.stm;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.commons.lang.builder.EqualsBuilder;
 
 /**

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml	2009-08-04 21:29:27 UTC (rev 28807)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aop xmlns="urn:jboss:aop-beans:1.0">
+   <aspect class="uk.ac.ncl.sdia.a8905943.aspects.VersioningAspectImpl"/>
+   <!-- field pointcut -->
+   <bind pointcut="set(* uk.ac.ncl.sdia.a8905943.model.Car->*)">
+      <advice  aspect="uk.ac.ncl.sdia.a8905943.aspects.VersioningAspectImpl" name="version"/>
+   </bind>
+
+</aop>

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java	2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java	2009-08-04 21:29:27 UTC (rev 28807)
@@ -16,7 +16,9 @@
 
 public class TestVersioningAspectImpl
 {
-   // use the 'mvn test' command to run these AOP test
+   /* use the eclipse AOP debbugger to run these AOP test 
+    * See README.txt for instructions to setup eclipse.
+    */
    private static Logger logger = Logger.getLogger(TestVersioningAspectImpl.class);
    /**
     * This test checks car entity joinpoints are invoked when expected. field and
@@ -33,7 +35,6 @@
       logger.info("Returned from calling setMake(");
       Assert.assertNotNull(car.getMake());
       Assert.assertEquals(car.getMake(), name);
-      Assert.assertNotNull(Thread.currentThread());
    }
    
    @Before



More information about the jboss-svn-commits mailing list