[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