[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