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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 21 13:07:05 EDT 2009


Author: whitingjr
Date: 2009-09-21 13:07:04 -0400 (Mon, 21 Sep 2009)
New Revision: 29423

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/impl/STMTransactionImpl.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/STM.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/query/STMQueryImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/transaction/STMTransaction.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerImpl.java
Log:
Added functionality to remove entity from result set.

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-21 16:34:57 UTC (rev 29422)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/entitymanager/STMEntityManagerImpl.java	2009-09-21 17:07:04 UTC (rev 29423)
@@ -33,6 +33,7 @@
 import uk.ac.ncl.sdia.a8905943.stm.field.IdentityFieldWriteParameter;
 import uk.ac.ncl.sdia.a8905943.stm.query.STMQueryImpl;
 
+
 final class STMEntityManagerImpl implements EntityManager
 {
    private PersistenceUnitTransactionType type;
@@ -179,7 +180,7 @@
       Query returnValue = null;
       if (null != qlString)
       {
-         returnValue = new STMQueryImpl(this.xpathContext, qlString);
+         returnValue = new STMQueryImpl(this.xpathContext, qlString, getSTMConnection().getSTM().getDeletedEntityFilter(qlString));
       }
       else
       {
@@ -458,4 +459,6 @@
                "The underlying connection threw a SQLException.");
       }
    }
+   
+   
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/STMTransactionImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/STMTransactionImpl.java	2009-09-21 16:34:57 UTC (rev 29422)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/STMTransactionImpl.java	2009-09-21 17:07:04 UTC (rev 29423)
@@ -9,7 +9,6 @@
 import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;

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-21 16:34:57 UTC (rev 29422)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-09-21 17:07:04 UTC (rev 29423)
@@ -7,6 +7,7 @@
 
 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.object.TransactedObjectReference;
 
 /**
@@ -84,6 +85,7 @@
       }
       if (null == fieldWrite.getNewObject() && fieldWrite.isIdentityField())
       {// this is an entity being removed from the persistency system
+         IdentityFieldWriteParameter identityWrite = (IdentityFieldWriteParameter)fieldWrite;
          Set<Long> removedEntityIdentities = null;
          if (fieldWrite.getWrittenIdentityFields().containsKey(fieldWrite.getClass().getName()))
          {// previous removal
@@ -92,7 +94,8 @@
          else
          {// first removal for entity type
             removedEntityIdentities = new HashSet<Long>();
-            fieldWrite.getWrittenIdentityFields().put(fieldWrite.getClass().getName(), removedEntityIdentities);
+            removedEntityIdentities.add(fieldWrite.getIdentity() );
+            fieldWrite.getWrittenIdentityFields().put(identityWrite.getType().getName(), removedEntityIdentities);
          }
          removedEntityIdentities.add(fieldWrite.getIdentity());
       }

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-09-21 16:34:57 UTC (rev 29422)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/STM.java	2009-09-21 17:07:04 UTC (rev 29423)
@@ -2,16 +2,19 @@
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentMap;
 
 import javax.transaction.Status;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.log4j.Logger;
 
 import uk.ac.ncl.sdia.a8905943.factory.TransactionFactory;
 import uk.ac.ncl.sdia.a8905943.impl.STMTransactionImpl;
 import uk.ac.ncl.sdia.a8905943.isolation.factory.IsolationFactory;
+import uk.ac.ncl.sdia.a8905943.persistence.jdbc.STMConnection;
 import uk.ac.ncl.sdia.a8905943.stm.exception.IsolationLevelNotConfiguredException;
 import uk.ac.ncl.sdia.a8905943.stm.field.FieldReadParameter;
 import uk.ac.ncl.sdia.a8905943.stm.field.FieldWriteParameter;
@@ -20,6 +23,8 @@
 import uk.ac.ncl.sdia.a8905943.stm.transaction.PrepareParameter;
 import uk.ac.ncl.sdia.a8905943.stm.transaction.STMTransaction;
 import uk.ac.ncl.sdia.a8905943.stm.transaction.TransactionManager;
+import uk.ac.ncl.sdia.a8905943.stm.query.filter.DeletedEntityFilter;
+import uk.ac.ncl.sdia.a8905943.stm.query.filter.Filter;
 
 /**
  * This object is a proxy to the transactional memory system. It provides a
@@ -244,4 +249,27 @@
    {
       return this.transactedFieldMemory;
    }
+   
+   public Filter getDeletedEntityFilter(String queryExpression)
+   {
+      Filter returnValue = null;
+      returnValue = new  DeletedEntityFilter(this.getDeletedEntityIdentities(queryExpression));
+      
+      return returnValue;
+   }
+   
+   private Set<Long> getDeletedEntityIdentities(String text)
+   {
+      Set<Long> returnValue = null;
+      STMTransaction transaction = TransactionFactory.getFactory().getCurrentTransaction(false);
+      for (String key: transaction.getDeletedEntities().keySet())
+      {
+         if (StringUtils.contains(text, key))
+         {// found the identities
+            returnValue = transaction.getDeletedEntities().get(key);
+            break;
+         }
+      }
+      return returnValue;
+   }
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/query/STMQueryImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/query/STMQueryImpl.java	2009-09-21 16:34:57 UTC (rev 29422)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/query/STMQueryImpl.java	2009-09-21 17:07:04 UTC (rev 29423)
@@ -22,10 +22,8 @@
 
 package uk.ac.ncl.sdia.a8905943.stm.query;
 
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
 
 import javax.persistence.FlushModeType;
@@ -38,23 +36,27 @@
 import org.apache.commons.jxpath.JXPathContext;
 
 import uk.ac.ncl.sdia.a8905943.stm.activation.STMDisabled;
+import uk.ac.ncl.sdia.a8905943.stm.query.filter.Filter;
 
 public class STMQueryImpl implements Query {
 
 	private final String query;
-	private final JXPathContext xpathContext ;
+	private final JXPathContext xpathContext;
+	private final Filter filter; 
 	
-	
 	@Override
 	public int executeUpdate() {
 		// FIXME executeUpdate
 		return 0;
 	}
 
-	@Override
+	@SuppressWarnings("unchecked")
+   @Override
 	@STMDisabled
 	public List getResultList() {
-		return IteratorUtils.toList(this.xpathContext.iterate(this.query));
+	   List returnValue = IteratorUtils.toList(this.xpathContext.iterate(this.query));
+	   this.filter.filter (returnValue);
+		return returnValue;
 	}
 
 	/**
@@ -146,9 +148,10 @@
 		return null;
 	}
 
-	public STMQueryImpl(JXPathContext context, String expression)
+	public STMQueryImpl(JXPathContext context, String expression, Filter resultFilter)
 	{
 		this.xpathContext= context; 
 		this.query = expression;
+		this.filter = resultFilter;
 	}
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/transaction/STMTransaction.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/transaction/STMTransaction.java	2009-09-21 16:34:57 UTC (rev 29422)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/transaction/STMTransaction.java	2009-09-21 17:07:04 UTC (rev 29423)
@@ -7,6 +7,7 @@
 package uk.ac.ncl.sdia.a8905943.stm.transaction;
 
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 
 import uk.ac.ncl.sdia.a8905943.isolation.Isolation;
@@ -33,6 +34,7 @@
    public Object load(LoadEntityParameter load);
    public Map<Long, TransactedObjectReference> getDeferredWrites();
    public Map<Long, TransactedObjectReference> getDeferredReads();
+   public Map<String, Set<Long>> getDeletedEntities();
    public void setStatus(int status);
    public Long getVersion();
    public CountDownLatch getPhaseTwoTerminated();

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerImpl.java	2009-09-21 16:34:57 UTC (rev 29422)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerImpl.java	2009-09-21 17:07:04 UTC (rev 29423)
@@ -164,6 +164,7 @@
       LeccyCar car = new LeccyCar(carId);
       List<Object> carList = new ArrayList<Object>();
       carList.add(car);
+      carList.add(new LeccyCar(new Long(5)));
       modelStore.put(car.getClass().getName(), carList);
       
       this.entityManager.remove(car);
@@ -171,7 +172,7 @@
       Assert.assertNotNull(query);
       List resultSet = query.getResultList();
       Assert.assertNotNull(resultSet);
-      Assert.assertEquals(0, resultSet.size());
+      Assert.assertEquals(1, resultSet.size());
 	}
 
 	@Override



More information about the jboss-svn-commits mailing list