[jboss-svn-commits] JBL Code SVN: r37442 - in labs/jbosstm/workspace/mlittle/STM-Arjuna/src: main/java/org/jboss/stm/annotations and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 26 09:24:52 EDT 2011
Author: mark.little at jboss.com
Date: 2011-08-26 09:24:52 -0400 (Fri, 26 Aug 2011)
New Revision: 37442
Modified:
labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/RecoverableContainer.java
labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/annotations/State.java
labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/proxy/LockManagerProxy.java
labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/reflect/InvocationHandler.java
labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/BasicContainerUnitTest.java
labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/internal/proxy/LockManagerProxyUnitTest.java
Log:
Changed default behaviour to save state unless marked as NotState.
Modified: labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/RecoverableContainer.java
===================================================================
--- labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/RecoverableContainer.java 2011-08-26 12:51:36 UTC (rev 37441)
+++ labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/RecoverableContainer.java 2011-08-26 13:24:52 UTC (rev 37442)
@@ -124,6 +124,11 @@
}
/**
+ * Should the following methods all be protected/package scope, i.e., not for applications
+ * to view and/or call?
+ */
+
+ /**
* Given a Uid, return the proxy for that instance.
*
* @param reference
Modified: labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/annotations/State.java
===================================================================
--- labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/annotations/State.java 2011-08-26 12:51:36 UTC (rev 37441)
+++ labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/annotations/State.java 2011-08-26 13:24:52 UTC (rev 37442)
@@ -29,6 +29,8 @@
* @author marklittle
*/
+//default to saving all state?
+
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD })
public @interface State
Modified: labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/proxy/LockManagerProxy.java
===================================================================
--- labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/proxy/LockManagerProxy.java 2011-08-26 12:51:36 UTC (rev 37441)
+++ labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/proxy/LockManagerProxy.java 2011-08-26 13:24:52 UTC (rev 37442)
@@ -28,7 +28,7 @@
import org.jboss.stm.InvalidAnnotationException;
import org.jboss.stm.RecoverableContainer;
-import org.jboss.stm.annotations.State;
+import org.jboss.stm.annotations.NotState;
import org.jboss.stm.annotations.RestoreState;
import org.jboss.stm.annotations.SaveState;
import org.jboss.stm.annotations.Transactional;
@@ -114,10 +114,12 @@
{
for (Field afield : fields)
{
- // ignore if not flagged with @State
-
- if (afield.isAnnotationPresent(State.class))
+ // ignore if flagged with @NotState
+
+ if (!afield.isAnnotationPresent(NotState.class) && (!THIS_NAME.equals(afield.getName())))
+ {
_fields.add(afield);
+ }
}
}
catch (final Throwable ex)
@@ -130,25 +132,20 @@
{
Field afield = _fields.get(i);
- // ignore if not flagged with @State
-
- if (afield.isAnnotationPresent(State.class))
- {
- afield.setAccessible(true);
+ afield.setAccessible(true);
- /*
- * TODO check that the user hasn't marked statics, finals etc.
- */
+ /*
+ * TODO check that the user hasn't marked statics, finals etc.
+ */
- if (afield.getType().isPrimitive())
- {
- res = packPrimitive(afield, os);
- }
- else
- res = packObjectType(afield, os);
+ if (afield.getType().isPrimitive())
+ {
+ res = packPrimitive(afield, os);
+ }
+ else
+ res = packObjectType(afield, os);
- afield.setAccessible(false);
- }
+ afield.setAccessible(false);
}
}
@@ -189,10 +186,12 @@
{
for (Field afield : fields)
{
- // ignore if not flagged with @State
+ // ignore if flagged with @NotState
- if (afield.isAnnotationPresent(State.class))
+ if (!afield.isAnnotationPresent(NotState.class) && (!THIS_NAME.equals(afield.getName())))
+ {
_fields.add(afield);
+ }
}
}
catch (final Throwable ex)
@@ -575,4 +574,6 @@
private RecoverableContainer<T> _container = null;
private ArrayList<Field> _fields = null;
+
+ private static final String THIS_NAME = "this$0"; // stop us trying to pack this!
}
Modified: labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/reflect/InvocationHandler.java
===================================================================
--- labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/reflect/InvocationHandler.java 2011-08-26 12:51:36 UTC (rev 37441)
+++ labs/jbosstm/workspace/mlittle/STM-Arjuna/src/main/java/org/jboss/stm/internal/reflect/InvocationHandler.java 2011-08-26 13:24:52 UTC (rev 37442)
@@ -141,7 +141,7 @@
}
public Object invoke (Object proxy, java.lang.reflect.Method method, Object[] args) throws Throwable
- {
+ {
/*
* Do nothing currently if not inside of a transaction and
* not asked to create transactions for this type of object.
@@ -191,8 +191,12 @@
}
}
+ /*
+ * Should we catch common methods, like equals, and call Object... automatically?
+ */
+
if (theMethod == null)
- throw new LockException("Could not locate method");
+ throw new LockException("Could not locate method "+method);
if (theMethod.isAnnotationPresent(ReadLock.class))
lockType = LockMode.READ;
Modified: labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/BasicContainerUnitTest.java
===================================================================
--- labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/BasicContainerUnitTest.java 2011-08-26 12:51:36 UTC (rev 37441)
+++ labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/BasicContainerUnitTest.java 2011-08-26 13:24:52 UTC (rev 37442)
@@ -22,6 +22,7 @@
package org.jboss.stm;
+import org.jboss.stm.annotations.NotState;
import org.jboss.stm.annotations.TransactionFree;
import org.jboss.stm.annotations.Transactional;
import org.jboss.stm.annotations.ReadLock;
@@ -104,10 +105,9 @@
}
@State
- @SuppressWarnings(value={"unused"})
private int _isState;
- @SuppressWarnings(value={"unused"})
+ @NotState
private int _isNotState;
}
Modified: labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/internal/proxy/LockManagerProxyUnitTest.java
===================================================================
--- labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/internal/proxy/LockManagerProxyUnitTest.java 2011-08-26 12:51:36 UTC (rev 37441)
+++ labs/jbosstm/workspace/mlittle/STM-Arjuna/src/test/java/org/jboss/stm/internal/proxy/LockManagerProxyUnitTest.java 2011-08-26 13:24:52 UTC (rev 37442)
@@ -22,6 +22,7 @@
package org.jboss.stm.internal.proxy;
+import org.jboss.stm.annotations.NotState;
import org.jboss.stm.annotations.State;
import com.arjuna.ats.arjuna.AtomicAction;
@@ -58,6 +59,7 @@
@State
public int _isState;
+ @NotState
public int _isNotState;
}
@@ -83,6 +85,7 @@
@State
public Double _isState;
+ @NotState
public Integer _isNotState;
@State
More information about the jboss-svn-commits
mailing list