[jboss-svn-commits] JBL Code SVN: r28945 - in labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR: src/main/java and 6 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Aug 15 15:01:22 EDT 2009
Author: whitingjr
Date: 2009-08-15 15:01:21 -0400 (Sat, 15 Aug 2009)
New Revision: 28945
Added:
labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/log4j.xml
labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java
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/aspects/annotation/STMReadable.java
labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/annotation/STMWriteable.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/java/uk/ac/ncl/sdia/a8905943/model/LeccyCar.java
labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/InjectedSTM.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/TestSTMReadAspect.java
Log:
Updated.
Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/pom.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/pom.xml 2009-08-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/pom.xml 2009-08-15 19:01:21 UTC (rev 28945)
@@ -22,7 +22,7 @@
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.9.0.GA</version>
- <scope>test</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>uk.ac.ncl.sdia.a8905943</groupId>
Added: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/log4j.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/log4j.xml (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/log4j.xml 2009-08-15 19:01:21 UTC (rev 28945)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+ <!--
+ =====================================================================
+ -->
+ <!--
+ -->
+ <!--
+ Log4j Configuration
+ -->
+ <!--
+ -->
+ <!--
+ =====================================================================
+ -->
+
+ <!--
+ $Id: log4j.xml 64096 2007-07-17 14:36:23Z stan.silvert at jboss.com $
+ -->
+
+ <!--
+ | For more configuration information and examples see the Jakarta
+ Log4j | owebsite: http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
+ debug="false">
+
+ <!-- ================================= -->
+ <!-- Preserve messages in a local file -->
+ <!-- ================================= -->
+
+ <!-- ============================== -->
+ <!-- Append messages to the console -->
+ <!-- ============================== -->
+
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out" />
+ <param name="Threshold" value="INFO" />
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
+ </layout>
+ </appender>
+
+ <appender name="FILE" class="org.apache.log4j.FileAppender">
+ <param name="File" value="test.log" />
+ <param name="Append" value="true" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
+ </layout>
+ </appender>
+
+ <category name="org.jboss.aop.instrument">
+ <priority value="TRACE" />
+ </category>
+
+
+ <root>
+ <priority value="DEBUG" />
+ <appender-ref ref="CONSOLE" />
+ </root>
+
+</log4j:configuration>
Added: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/AbstractSTMAspect.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -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()
+ {
+ }
+
+}
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-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -6,16 +6,16 @@
*/
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.isolation.FieldReadParameter;
import uk.ac.ncl.sdia.a8905943.stm.STM;
+import uk.ac.ncl.sdia.a8905943.stm.annotation.InjectedSTM;
-public class STMReadAspect
+public class STMReadAspect extends AbstractSTMAspect
{
+ @InjectedSTM
private STM stm;
private static Logger logger = Logger.getLogger(STMReadAspect.class);
@@ -30,11 +30,8 @@
if (null != this.stm)
{
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);
+ FieldReadParameter fieldRead = new FieldReadParameter(getHandle(invocation, "get"));
+ returnValue = this.stm.read(fieldRead);
}
else
{
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-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -6,18 +6,16 @@
*/
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.isolation.FieldWriteParameter;
import uk.ac.ncl.sdia.a8905943.stm.STM;
+import uk.ac.ncl.sdia.a8905943.stm.annotation.InjectedSTM;
-public class STMWriteAspect
+public class STMWriteAspect extends AbstractSTMAspect
{
+ @InjectedSTM
private STM stm;
private static final Logger logger = Logger.getLogger(STMWriteAspect.class);
@@ -38,11 +36,10 @@
{
logger.debug("stm field has an object and calling method on stm");
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] );
+ 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
{
Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/annotation/STMReadable.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/annotation/STMReadable.java 2009-08-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/annotation/STMReadable.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -7,6 +7,8 @@
package uk.ac.ncl.sdia.a8905943.aspects.annotation;
import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
@@ -16,6 +18,7 @@
* @version $Revision: 1.1 $
*/
@Target ({ElementType.METHOD})
+ at Retention(RetentionPolicy.RUNTIME)
public @interface STMReadable {
}
Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/annotation/STMWriteable.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/annotation/STMWriteable.java 2009-08-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/annotation/STMWriteable.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -7,6 +7,8 @@
package uk.ac.ncl.sdia.a8905943.aspects.annotation;
import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
@@ -18,6 +20,7 @@
* @version $Revision: 1.1 $
*/
@Target({ElementType.METHOD})
+ at Retention(RetentionPolicy.RUNTIME)
public @interface STMWriteable {
}
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-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/Bike.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -8,6 +8,8 @@
import javax.persistence.Id;
+import uk.ac.ncl.sdia.a8905943.aspects.annotation.STMReadable;
+import uk.ac.ncl.sdia.a8905943.aspects.annotation.STMWriteable;
import uk.ac.ncl.sdia.a8905943.stm.annotation.STMEntity;
@STMEntity
@@ -22,11 +24,12 @@
{
this.id = identity;
}
-
+ @STMReadable
public String getName()
{
return name;
}
+ @STMWriteable
public void setName(String name)
{
this.name = name;
Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/LeccyCar.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/LeccyCar.java 2009-08-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/model/LeccyCar.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -32,14 +32,12 @@
{
return id;
}
- public void setId(Long id)
- {
- this.id = id;
- }
+ @STMReadable
public String getName()
{
return name;
}
+ @STMWriteable
public void setName(String name)
{
this.name = name;
Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/InjectedSTM.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/InjectedSTM.java 2009-08-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/java/uk/ac/ncl/sdia/a8905943/stm/annotation/InjectedSTM.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -7,6 +7,8 @@
package uk.ac.ncl.sdia.a8905943.stm.annotation;
import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
@@ -16,6 +18,7 @@
* @version $Revision: 1.1 $
*/
@Target ({ElementType.FIELD})
+ at Retention(RetentionPolicy.RUNTIME)
public @interface InjectedSTM {
}
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-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/main/resources/META-INF/jboss-aop.xml 2009-08-15 19:01:21 UTC (rev 28945)
@@ -1,38 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<aop xmlns="urn:jboss:aop-beans:1.0">
- <aspect name="stmreadaspect" class="uk.ac.ncl.sdia.a8905943.aspects.STMReadAspect"/>
- <aspect name="stmwriteaspect" class="uk.ac.ncl.sdia.a8905943.aspects.STMWriteAspect"/>
- <aspect name="stminjectionaspect" class="uk.ac.ncl.sdia.a8905943.aspects.STMInjectionAspect"/>
+ <aspect name="stmreadaspect" class="uk.ac.ncl.sdia.a8905943.aspects.STMReadAspect" />
+ <aspect name="stmwriteaspect" class="uk.ac.ncl.sdia.a8905943.aspects.STMWriteAspect" />
+ <aspect name="stminjectionaspect"
+ class="uk.ac.ncl.sdia.a8905943.aspects.STMInjectionAspect" />
- <!-- method pointcut -->
- <!-- bind pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.Bike->get*())">
- <advice name="stmread" aspect="stmreadaspect" />
- </bind-->
-
- <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>
-
- <!-- method pointcut -->
- <!-- bind pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.Bike->set*(java.lang.String))">
- <advice name="stmwrite" aspect="stmwriteaspect" />
- </bind-->
-
- <bind pointcut="execution(* uk.ac.ncl.sdia.a8905943.model.*->set*(java.lang.String))">
- <advice name="stmwrite" aspect="stmwriteaspect" />
- </bind>
-
- <!-- field pointcut -->
- <bind pointcut="field(private uk.ac.ncl.sdia.a8905943.stm.STM uk.ac.ncl.sdia.a8905943.aspects.*->stm)">
- <advice name="access" aspect="stminjectionaspect"/>
- </bind>
-
- <!--
+ <!--
+ <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> <bind
+ pointcut="execution(*
+ uk.ac.ncl.sdia.a8905943.model.*->set*(java.lang.String))"> <advice
+ name="stmwrite" aspect="stmwriteaspect" /> </bind>
+ -->
+ <!--
+ field pointcut <bind pointcut="field(private
+ uk.ac.ncl.sdia.a8905943.stm.STM
+ uk.ac.ncl.sdia.a8905943.aspects.*->stm)"> <advice name="access"
+ aspect="stminjectionaspect"/> </bind>
+ -->
+ <!--
this does not work and never will, leave it
- <bind pointcut="execution(* *->@uk.ac.ncl.sdia.a8905943.aspects.field.STMWrite(..))">
- <advice name="stmwrite" aspect="stmwriteaspect" />
- </bind>
-->
-
-
+ <bind
+ pointcut="execution(* *->@uk.ac.ncl.sdia.a8905943.aspects.annotation.STMWriteable(..))">
+ <advice name="stmread" aspect="stmreadaspect" />
+ </bind>
+
+ <bind
+ pointcut="execution(* *->@uk.ac.ncl.sdia.a8905943.aspects.annotation.STMReadable(..))">
+ <advice name="stmwrite" aspect="stmwriteaspect" />
+ </bind>
+
+ <bind
+ pointcut="field(uk.ac.ncl.sdia.a8905943.stm.STM *->@uk.ac.ncl.sdia.a8905943.stm.annotation.InjectedSTM )">
+ <advice name="access" aspect="stminjectionaspect" />
+ </bind>
+
</aop>
Modified: labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMReadAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMReadAspect.java 2009-08-15 19:00:30 UTC (rev 28944)
+++ labs/jbosstm/workspace/whitingjr/trunk/STMAnnotationsJAR/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMReadAspect.java 2009-08-15 19:01:21 UTC (rev 28945)
@@ -8,15 +8,15 @@
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.stm.STM;
public class TestSTMReadAspect
{
-
-
-
/**
* This test checks the read aspect is invoked.
*/
@@ -28,5 +28,12 @@
Assert.assertNotNull(bike);
Assert.assertNotNull(bike.getName()); // read
}
+ @Before
+ public void setUp()
+ {
+ STM stm = new STM("retail");
+ STMFactory.getFactoryInstance().allocate(stm);
+
+ }
}
More information about the jboss-svn-commits
mailing list