[jboss-svn-commits] JBL Code SVN: r29029 - labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Aug 23 15:00:50 EDT 2009


Author: whitingjr
Date: 2009-08-23 15:00:49 -0400 (Sun, 23 Aug 2009)
New Revision: 29029

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMInjectionAspect.java
   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
Log:
Relocated aspect classes.

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java	2009-08-23 19:00:49 UTC (rev 29029)
@@ -0,0 +1,38 @@
+/*
+ * 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.apache.commons.lang.StringUtils;
+import org.jboss.aop.joinpoint.MethodInvocation;
+
+import uk.ac.ncl.sdia.a8905943.handle.FieldUtils;
+import uk.ac.ncl.sdia.a8905943.handle.HandleUtils;
+import uk.ac.ncl.sdia.a8905943.handle.exception.FieldNotFoundException;
+
+/**
+ * This class makes some common functionality available.
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractSTMAspect
+{
+
+   protected long getHandle(MethodInvocation invocation, String operation)
+      throws FieldNotFoundException
+   {
+      long returnValue = 0;
+      FieldUtils util = new FieldUtils();
+      Long idValue = util.getValue(util.findIdField(invocation.getTargetObject().getClass()), invocation.getTargetObject());
+      returnValue = new HandleUtils().getHandle(invocation.getTargetObject().getClass(), idValue, StringUtils.lowerCase(StringUtils.removeStart( invocation.getMethod().getName(), operation ))) ;
+      return returnValue;
+   }
+   AbstractSTMAspect()
+   {
+   }
+   
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMInjectionAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMInjectionAspect.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMInjectionAspect.java	2009-08-23 19:00:49 UTC (rev 29029)
@@ -0,0 +1,43 @@
+/*
+ * 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.apache.log4j.Logger;
+import org.jboss.aop.joinpoint.FieldReadInvocation;
+import org.jboss.aop.joinpoint.FieldWriteInvocation;
+
+import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
+import uk.ac.ncl.sdia.a8905943.stm.STM;
+
+/**
+ * This object injects a reference to the STM system.
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public class STMInjectionAspect
+{
+   private static final Logger logger = Logger.getLogger(STMInjectionAspect.class);
+   public Object access(FieldReadInvocation invocation)
+      throws Throwable
+   {
+      logger.debug("accessing the STM field");
+      return STMFactory.getFactoryInstance().getCurrent();
+   }
+   
+   public Object access(FieldWriteInvocation invocation)
+      throws Throwable
+   {
+      throw new RuntimeException( "Setting an @Injected variable is not allowed.");
+   }
+
+   public STMInjectionAspect()
+   {
+
+   }
+}
+

Added: 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	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java	2009-08-23 19:00:49 UTC (rev 29029)
@@ -0,0 +1,43 @@
+/*
+ * 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.apache.log4j.Logger;
+import org.jboss.aop.joinpoint.MethodInvocation;
+
+import uk.ac.ncl.sdia.a8905943.stm.STM;
+import uk.ac.ncl.sdia.a8905943.stm.annotation.InjectedSTM;
+import uk.ac.ncl.sdia.a8905943.stm.field.FieldReadParameter;
+
+public class STMReadAspect extends AbstractSTMAspect
+{
+   @InjectedSTM 
+   private STM stm;
+   
+   private static Logger logger = Logger.getLogger(STMReadAspect.class);
+   public Object stmread(MethodInvocation invocation) 
+      throws Throwable
+   {
+      Object returnValue = null;
+      if (logger.isDebugEnabled())
+      {
+         logger.debug("STMReadAspect has been invoked. Will access the stm field next");
+      }
+      if (null != this.stm)
+      {
+         logger.debug("stm field has an object and calling method on stm");
+         FieldReadParameter fieldRead = new FieldReadParameter(getHandle(invocation, "get"));
+         returnValue = this.stm.read(fieldRead);
+      }
+      else
+      {
+         logger.warn("The aspected object has been invoked without an STM being allocated to thread. Falling back to regular POJO behaviour.");
+      }
+      return returnValue;
+   }
+}
+

Added: 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	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java	2009-08-23 19:00:49 UTC (rev 29029)
@@ -0,0 +1,54 @@
+/*
+ * 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.apache.log4j.Logger;
+import org.jboss.aop.joinpoint.MethodInvocation;
+
+import uk.ac.ncl.sdia.a8905943.stm.STM;
+import uk.ac.ncl.sdia.a8905943.stm.annotation.InjectedSTM;
+import uk.ac.ncl.sdia.a8905943.stm.field.FieldWriteParameter;
+
+public class STMWriteAspect extends AbstractSTMAspect
+{
+   @InjectedSTM
+   private STM stm;
+   
+   private static final Logger logger = Logger.getLogger(STMWriteAspect.class);
+   
+   /**
+    *  
+    * @param invocation
+    * @return The value return from STM indicating successful 
+    * writing of the object
+    * @throws Throwable
+    */
+   public Object stmwrite(MethodInvocation invocation) 
+      throws Throwable
+   {
+      Boolean returnValue = Boolean.FALSE;
+      logger.info("Write of aspected field ["+invocation.getActualMethod().getName()+"]");
+      if (null != this.stm)
+      {
+         logger.debug("stm field has an object and calling method on stm");
+         logger.trace("number of arguments ["+invocation.getArguments().length+"]");
+         FieldWriteParameter write = new FieldWriteParameter(getHandle(invocation, "set"), invocation.getArguments()[0]);
+//         write.setHandle(getHandle(invocation, "set"));
+//         write.setNewObject(invocation.getArguments()[0]); // this ain't pretty;
+         returnValue = this.stm.write(  write );
+      }
+      else
+      {
+         logger.debug("stm field in the WriteAspect is null.");
+      }
+      return returnValue;
+   }
+   public STMWriteAspect()
+   {
+   }
+}
+



More information about the jboss-svn-commits mailing list