[jboss-svn-commits] JBL Code SVN: r29439 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943: isolation and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Sep 23 06:04:10 EDT 2009


Author: whitingjr
Date: 2009-09-23 06:04:10 -0400 (Wed, 23 Sep 2009)
New Revision: 29439

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveIdentityAction.java
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/isolation/RepeatableReadIsolationImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/IdentityFieldWriteParameter.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveAction.java
Log:
Added funtionality to remove delete identity fields

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-09-23 09:10:57 UTC (rev 29438)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java	2009-09-23 10:04:10 UTC (rev 29439)
@@ -38,6 +38,7 @@
 import uk.ac.ncl.sdia.a8905943.stm.field.AddAction;
 import uk.ac.ncl.sdia.a8905943.stm.field.IdentityFieldWriteParameter;
 import uk.ac.ncl.sdia.a8905943.stm.field.RemoveAction;
+import uk.ac.ncl.sdia.a8905943.stm.field.RemoveIdentityAction;
 import uk.ac.ncl.sdia.a8905943.stm.query.STMQueryImpl;
 import uk.ac.ncl.sdia.a8905943.stm.query.filter.Filter;
 import uk.ac.ncl.sdia.a8905943.stm.query.filter.NoOpFilter;
@@ -462,8 +463,8 @@
          Field identityField = fieldUtils.findIdField(entity.getClass());
          Long identity = fieldUtils.getValue(identityField, entity);
          long fieldStoreHandle = new HandleUtils().getHandle(entity.getClass(), identity, identityField.getName());
-         
-         IdentityFieldWriteParameter write = new IdentityFieldWriteParameter(fieldStoreHandle, nullref, identity, entity.getClass(), new RemoveAction());
+          
+         IdentityFieldWriteParameter write = new IdentityFieldWriteParameter(fieldStoreHandle, nullref, identity, entity.getClass(), new RemoveIdentityAction());
          this.getSTMConnection().getSTM().write(write);
       }
       catch (FieldNotFoundException fnfe)

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-09-23 09:10:57 UTC (rev 29438)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-09-23 10:04:10 UTC (rev 29439)
@@ -1,14 +1,10 @@
 package uk.ac.ncl.sdia.a8905943.isolation;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import org.apache.log4j.Logger;
 
 import uk.ac.ncl.sdia.a8905943.stm.field.AddAction;
 import uk.ac.ncl.sdia.a8905943.stm.field.FieldReadParameter;
 import uk.ac.ncl.sdia.a8905943.stm.field.FieldWriteParameter;
-import uk.ac.ncl.sdia.a8905943.stm.field.IdentityFieldWriteParameter;
 import uk.ac.ncl.sdia.a8905943.stm.field.ReplaceAction;
 import uk.ac.ncl.sdia.a8905943.stm.object.TransactedObjectReference;
 
@@ -74,7 +70,6 @@
    public Boolean write(FieldWriteParameter fieldWrite)
    {
       Boolean returnValue = null;
-      TransactedObjectReference fieldReference = null;
       if (null == fieldWrite.getAction())
       {// the annotation could not determine if data existed already
          if (fieldWrite.getWrites().containsKey(fieldWrite.getHandle()))
@@ -99,7 +94,7 @@
          fieldWrite.getWrites().put(fieldWrite.getHandle(), fieldReference);
       }
       */
-      
+      /*
       if ( fieldWrite.isIdentityField())
       {
          if (null == fieldWrite.getNewObject() )
@@ -123,7 +118,7 @@
             
          }
       }
-      
+      */
       returnValue = Boolean.TRUE;
    
       return returnValue;

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/IdentityFieldWriteParameter.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/IdentityFieldWriteParameter.java	2009-09-23 09:10:57 UTC (rev 29438)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/IdentityFieldWriteParameter.java	2009-09-23 10:04:10 UTC (rev 29439)
@@ -51,9 +51,4 @@
       this.type = type;
    }
 
-   @Override
-   public void processIdentityField()
-   {// custom processing for 
-      
-   }
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveAction.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveAction.java	2009-09-23 09:10:57 UTC (rev 29438)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveAction.java	2009-09-23 10:04:10 UTC (rev 29439)
@@ -22,9 +22,6 @@
 
 package uk.ac.ncl.sdia.a8905943.stm.field;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import uk.ac.ncl.sdia.a8905943.stm.object.TransactedObjectReference;
 
 public class RemoveAction implements Action
@@ -33,25 +30,18 @@
    @Override
    public void execute(FieldWriteParameter parameter)
    {
-      TransactedObjectReference fieldReference =  parameter.getWrites().get(parameter.getHandle());
-      fieldReference.setValue(parameter.getNewObject());
-      //TODO: change the collection of deleted entity ids
-      if (parameter.isIdentityField())
+      TransactedObjectReference fieldReference =  null;
+      if (parameter.getWrites().containsKey(parameter.getHandle()))
+      {// this entity has been either created or deleted during this transaction
+         fieldReference =  parameter.getWrites().get(parameter.getHandle());
+         fieldReference.setValue(parameter.getNewObject());
+      }
+      else
       {
-         IdentityFieldWriteParameter identityWrite = (IdentityFieldWriteParameter)parameter;
-         Set<Long> removedEntityIdentities = null;
-         if (parameter.getWrittenIdentityFields().containsKey(parameter.getClass().getName()))
-         {// previous removal
-            removedEntityIdentities = parameter.getWrittenIdentityFields().get(parameter.getClass().getName());
-         }
-         else
-         {// first removal for entity type
-            removedEntityIdentities = new HashSet<Long>(); 
-            removedEntityIdentities.add(parameter.getIdentity() );
-            parameter.getWrittenIdentityFields().put(identityWrite.getType().getName(), removedEntityIdentities);
-         }
-         removedEntityIdentities.add(parameter.getIdentity());
+         fieldReference = new TransactedObjectReference(parameter.getHandle(), parameter.getNewObject(), parameter.getVersion());
+         parameter.getWrites().put(parameter.getIdentity(), fieldReference);
       }
+      
    }
 
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveIdentityAction.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveIdentityAction.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/field/RemoveIdentityAction.java	2009-09-23 10:04:10 UTC (rev 29439)
@@ -0,0 +1,56 @@
+ /*
+  * JBoss, Home of Professional Open Source
+  * Copyright 2005, JBoss Inc., and individual contributors as indicated
+  * by the @authors tag. See the copyright.txt in the distribution for a
+  * full listing of individual contributors.
+  *
+  * This is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU Lesser General Public License as
+  * published by the Free Software Foundation; either version 2.1 of
+  * the License, or (at your option) any later version.
+  *
+  * This software is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this software; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  */
+
+package uk.ac.ncl.sdia.a8905943.stm.field;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class RemoveIdentityAction extends RemoveAction
+{
+
+   /**
+    * The behaviour here is to modify the record of deleted entities using the unique
+    * identity. Add to the data structure which stores the identities. 
+    */
+   @Override
+   public void execute(FieldWriteParameter parameter)
+   {
+      super.execute(parameter);
+      IdentityFieldWriteParameter identityWrite = (IdentityFieldWriteParameter)parameter;
+      Set<Long> removedEntityIdentities = null;
+      if (parameter.getWrittenIdentityFields().containsKey(parameter.getClass().getName()))
+      {// previous removal of entity type
+         removedEntityIdentities = parameter.getWrittenIdentityFields().get(parameter.getClass().getName());
+         
+      }
+      else
+      {// first removal for entity type
+         removedEntityIdentities = new HashSet<Long>(); 
+         parameter.getWrittenIdentityFields().put(identityWrite.getType().getName(), removedEntityIdentities);
+      }
+      if (!removedEntityIdentities.contains(parameter.getIdentity()))
+      {// this entity has not been removed beforehand
+         removedEntityIdentities.add(parameter.getIdentity());
+      }// else, ignore because the entity has been marked as removed already
+   }
+}



More information about the jboss-svn-commits mailing list