[jboss-svn-commits] JBL Code SVN: r28807 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src: main/java/uk/ac/ncl/sdia/a8905943/aspects/field and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 4 17:29:27 EDT 2009
Author: whitingjr
Date: 2009-08-04 17:29:27 -0400 (Tue, 04 Aug 2009)
New Revision: 28807
Added:
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml
Removed:
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
Modified:
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
Log:
Changed classes.
added factory.
Deleted: 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 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -1,20 +0,0 @@
-/*
- * 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.jboss.aop.joinpoint.MethodInvocation;
-
-public class STMReadAspect
-{
- public Object stmread(MethodInvocation invocation)
- throws Throwable
- {
- Object returnValue = null;
-
- return returnValue;
- }
-}
Deleted: 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 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -1,12 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.aspects;
-
-public class STMWriteAspect
-{
-
-}
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -35,7 +35,7 @@
logger.info("Versioning aspect called for field write invocation");
}
// TODO: jrw do something
- return null;
+ return fieldWriteInvocation.invokeNext();
}
public Object read(MethodInvocation methodInvocation)
@@ -44,7 +44,7 @@
// TODO:jrw complete implementation of this method
if (logger.isInfoEnabled())
{
- logger.info("Versioning aspect called for field read invocation");
+ logger.info("Versioning aspect called for field getter invocation");
}
// TODO: jrw do something
// check whether a transaction is running
@@ -73,7 +73,7 @@
// TODO:jrw complete implementation of this method
if (logger.isInfoEnabled())
{
- logger.info("Versioning aspect called for field write invocation");
+ logger.info("Versioning aspect called for field setter invocation");
}
// TODO: jrw do something
return methodInvocation.invokeNext();
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningFieldAspect.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -16,6 +16,13 @@
import uk.ac.ncl.sdia.a8905943.handle.HandleUtils;
import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
+/**
+ * A VersioningFieldAspect.
+ *
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ * @deprecated do not use this, a separate module for aspects should be used
+ */
public final class VersioningFieldAspect
{
private static final Logger logger = Logger.getLogger(VersioningFieldAspect.class);
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/field/STMWrite.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -19,5 +19,5 @@
*/
@Target({ElementType.METHOD})
public @interface STMWrite {
-
+
}
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -27,6 +27,7 @@
import org.apache.log4j.Logger;
import org.jboss.resource.adapter.jdbc.WrappedConnection;
+import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
import uk.ac.ncl.sdia.a8905943.locator.transaction.ServiceLocator;
import uk.ac.ncl.sdia.a8905943.persistence.jdbc.STMConnection;
import uk.ac.ncl.sdia.a8905943.stm.annotation.STMEntity;
@@ -46,6 +47,7 @@
public void clear()
{
//TODO: detatch the entities managed by this connection.
+ STMFactory.getFactoryInstance().deallocate();
}
@Override
@@ -58,7 +60,7 @@
logger.debug("STMEntityManagerImpl.close called.");
}
- TransactionManager transactionManager = ServiceLocator.findLocalPersonManager();
+ //TransactionManager transactionManager = ServiceLocator.findLocalPersonManager();
try
{
this.connection.close();
@@ -88,6 +90,8 @@
logger.error("SQLException occured when closing the connection object when, the EM is closed.");
throw new RuntimeException(sqle);
}
+ STMFactory.getFactoryInstance().deallocate();
+
this.isOpen = false;
}
@@ -167,13 +171,18 @@
T returnValue = null;
// check if the class has been annotated using the STM annotations.
boolean isstmEntity = false;
- for (Annotation annotation : entityClass.getAnnotations())
+
+ /** This no longer works, using AOP means the reference given is an instance of
+ * some proxy class. */
+ /*for (Annotation annotation : entityClass.getAnnotations())
{
if (annotation instanceof STMEntity)
{
isstmEntity = true;
}
}
+ */
+ isstmEntity = true;
if (isstmEntity)
{// STM entity class, create an instance
try
@@ -334,6 +343,7 @@
{
this();
this.connection = connection;
+ STMFactory.getFactoryInstance().allocate(getSTMConnection().getSTM());
}
public STMConnection getSTMConnection()
@@ -376,6 +386,7 @@
* pool.*/
try
{
+ STMFactory.getFactoryInstance().deallocate();
if (!connection.isClosed())
{
connection.close();// release connection back into container pool
Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/factory/STMFactory.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.factory;
+
+import uk.ac.ncl.sdia.a8905943.stm.STM;
+
+/**
+ * The purpose of this factory is an attempt to bind a reference of
+ * the STM allocated to a Thread (of control). It should be allocated
+ * a deallocated. Allocating and deallocating should occur at the same
+ * time logical Connection objects are release by the EntityManager.
+ *
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public final class STMFactory
+{
+ private static final STMFactory factory = new STMFactory();
+ private final ThreadLocal<STM> stmPerThread = new ThreadLocal<STM>();
+
+ public void allocate(STM stm)
+ {
+ this.stmPerThread.set(stm);
+ }
+
+ public void deallocate()
+ {
+ this.stmPerThread.set(null);
+ }
+
+ public STM getCurrent()
+ {
+ return this.stmPerThread.get();
+ }
+
+ public static STMFactory getFactoryInstance()
+ {
+ return factory;
+ }
+
+ private STMFactory()
+ {
+ }
+
+}
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/model/Car.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -34,7 +34,7 @@
this.id = identity;
}
- private Car()
+ public Car()
{
}
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/persistence/jdbc/STMConnection.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -27,6 +27,7 @@
import org.apache.log4j.Logger;
import uk.ac.ncl.sdia.a8905943.persistence.xa.STMXAConnectionImpl;
+import uk.ac.ncl.sdia.a8905943.stm.STM;
/**
* This object represents a logical connection with database. In this system the
@@ -406,4 +407,10 @@
logger.debug("Created an instance of STMConnection associtated with parent STMXAConnectionImpl.");
}
}
+
+ public STM getSTM()
+ {
+ return this.xaConnection.getSTM();
+ }
+
}
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -1,8 +1,5 @@
package uk.ac.ncl.sdia.a8905943.stm;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.commons.lang.builder.EqualsBuilder;
/**
Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/resources/META-INF/jboss-aop.xml 2009-08-04 21:29:27 UTC (rev 28807)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aop xmlns="urn:jboss:aop-beans:1.0">
+ <aspect class="uk.ac.ncl.sdia.a8905943.aspects.VersioningAspectImpl"/>
+ <!-- field pointcut -->
+ <bind pointcut="set(* uk.ac.ncl.sdia.a8905943.model.Car->*)">
+ <advice aspect="uk.ac.ncl.sdia.a8905943.aspects.VersioningAspectImpl" name="version"/>
+ </bind>
+
+</aop>
Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java 2009-08-04 21:28:13 UTC (rev 28806)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java 2009-08-04 21:29:27 UTC (rev 28807)
@@ -16,7 +16,9 @@
public class TestVersioningAspectImpl
{
- // use the 'mvn test' command to run these AOP test
+ /* use the eclipse AOP debbugger to run these AOP test
+ * See README.txt for instructions to setup eclipse.
+ */
private static Logger logger = Logger.getLogger(TestVersioningAspectImpl.class);
/**
* This test checks car entity joinpoints are invoked when expected. field and
@@ -33,7 +35,6 @@
logger.info("Returned from calling setMake(");
Assert.assertNotNull(car.getMake());
Assert.assertEquals(car.getMake(), name);
- Assert.assertNotNull(Thread.currentThread());
}
@Before
More information about the jboss-svn-commits
mailing list