[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