[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