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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 11 17:27:13 EDT 2009


Author: whitingjr
Date: 2009-08-11 17:27:13 -0400 (Tue, 11 Aug 2009)
New Revision: 28906

Modified:
   labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/pom.xml
   labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/Bike.java
   labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/resources/META-INF/jboss-aop.xml
   labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java
Log:
Fixed some strange bug with VerifyError.
Corrected read and write aspect to pass to the STM the hashcode of the field.

Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/pom.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/pom.xml	2009-08-11 18:48:13 UTC (rev 28905)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/pom.xml	2009-08-11 21:27:13 UTC (rev 28906)
@@ -30,7 +30,6 @@
 			<version>0.0.1-SNAPSHOT</version>
 			<scope>provided</scope>
 		</dependency>
-
 	</dependencies>
 
 	<build>
@@ -104,3 +103,4 @@
 
 
 </project>
+

Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java	2009-08-11 18:48:13 UTC (rev 28905)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java	2009-08-11 21:27:13 UTC (rev 28906)
@@ -6,9 +6,12 @@
  */
 package uk.ac.ncl.sdia.a8905943.aspects;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 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.stm.STM;
 
 public class STMReadAspect
@@ -19,21 +22,25 @@
    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)
       {
-         this.stm.begin();
+         logger.debug("stm field has an object and calling method on stm");
+         FieldUtils util = new FieldUtils();
+         Long idValue = util.getValue(util.findIdField(invocation.getTargetObject().getClass()), invocation.getTargetObject());
+         /* generate a hash based on: fqcn + id + property name*/
+         long fieldHandle = new HandleUtils().getHandle(invocation.getTargetObject().getClass(), idValue, StringUtils.lowerCase(StringUtils.removeStart( invocation.getMethod().getName(), "get" ))) ;
+         returnValue = this.stm.read(fieldHandle);
       }
       else
       {
          logger.warn("The aspected object has been invoked without an STM being allocated to thread. Falling back to regular POJO behaviour.");
       }
-      
-      
-      return invocation.invokeNext();
+      return returnValue;
    }
    public STMReadAspect()
    {

Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java	2009-08-11 18:48:13 UTC (rev 28905)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java	2009-08-11 21:27:13 UTC (rev 28906)
@@ -6,9 +6,14 @@
  */
 package uk.ac.ncl.sdia.a8905943.aspects;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.jboss.aop.joinpoint.MethodInvocation;
 
+import bsh.StringUtil;
+
+import uk.ac.ncl.sdia.a8905943.handle.FieldUtils;
+import uk.ac.ncl.sdia.a8905943.handle.HandleUtils;
 import uk.ac.ncl.sdia.a8905943.stm.STM;
 
 public class STMWriteAspect
@@ -17,25 +22,33 @@
    
    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");
-         this.stm.commit();
+         logger.trace("number of arguments ["+invocation.getArguments().length+"]");
+         FieldUtils util = new FieldUtils();
+         Long idValue = util.getValue(util.findIdField(invocation.getTargetObject().getClass()), invocation.getTargetObject());
+         /* generate a hash based on: fqcn + id + property name*/
+         long fieldHandle = new HandleUtils().getHandle(invocation.getTargetObject().getClass(), idValue, StringUtils.lowerCase(StringUtils.removeStart( invocation.getMethod().getName(), "set" ))) ; 
+         returnValue = this.stm.write( fieldHandle ,invocation.getArguments()[0] );
       }
       else
       {
-         logger.debug("stm field in the WriteAspect is null;");
+         logger.debug("stm field in the WriteAspect is null.");
       }
-      
-      Object[] arguments = invocation.getArguments();
-      arguments[0] = "Choppa";
-      invocation.setArguments(arguments);
-      
-      return invocation.invokeNext();
+      return returnValue;
    }
    public STMWriteAspect()
    {

Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/Bike.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/Bike.java	2009-08-11 18:48:13 UTC (rev 28905)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/Bike.java	2009-08-11 21:27:13 UTC (rev 28906)
@@ -8,8 +8,6 @@
 
 import javax.persistence.Id;
 
-import uk.ac.ncl.sdia.a8905943.stm.STM;
-import uk.ac.ncl.sdia.a8905943.stm.annotation.InjectedSTM;
 import uk.ac.ncl.sdia.a8905943.stm.annotation.STMEntity;
 
 @STMEntity

Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/resources/META-INF/jboss-aop.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/resources/META-INF/jboss-aop.xml	2009-08-11 18:48:13 UTC (rev 28905)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/resources/META-INF/jboss-aop.xml	2009-08-11 21:27:13 UTC (rev 28906)
@@ -9,7 +9,7 @@
       <advice name="stmread" aspect="stmreadaspect" />
    </bind-->
    
-   <bind pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.*->get*())">
+   <bind pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.*->get*()) AND !execution(* uk.ac.ncl.sdia.a8905943.model.*->getId())">
       <advice name="stmread" aspect="stmreadaspect" />
    </bind>
    

Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java	2009-08-11 18:48:13 UTC (rev 28905)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java	2009-08-11 21:27:13 UTC (rev 28906)
@@ -1,10 +1,13 @@
 package uk.ac.ncl.sdia.a8905943.aspects;
 import junit.framework.Assert;
 
+import org.junit.Before;
 import org.junit.Test;
 
+import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
 import uk.ac.ncl.sdia.a8905943.model.Bike;
 import uk.ac.ncl.sdia.a8905943.model.LeccyCar;
+import uk.ac.ncl.sdia.a8905943.stm.STM;
 
 /*
  * JBoss, the OpenSource J2EE webOS
@@ -23,12 +26,13 @@
    @Test
    public void testWriteAspectInvoked()
    {
+      String name= "Raleigh";
       Bike bike = new Bike(2l);
       Assert.assertNull(bike.getName());
       /* This next line is expected to hit the aop class and set the value to something else*/
-      bike.setName("Raleigh"); // write
+      bike.setName(name); // write
       Assert.assertNotNull(bike);
-      Assert.assertEquals("Choppa", bike.getName());  // read
+      Assert.assertEquals(name, bike.getName());  // read
    }
    
    @Test
@@ -40,7 +44,15 @@
       String name="Dukes of Hazard";
       car.setName(name);
       Assert.assertNotNull(car.getName());
-      Assert.assertEquals("Choppa", car.getName());
+      Assert.assertEquals(name, car.getName());
       
    }
+   
+   @Before
+   public void setUp()
+   {
+      STM stm = new STM("retail");
+      STMFactory.getFactoryInstance().allocate(stm);
+      
+   }
 }



More information about the jboss-svn-commits mailing list