[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