Author: reto
Date: Mon Mar 22 11:34:43 2010
New Revision: 926040

URL: http://svn.apache.org/viewvc?rev=926040&view=rev
Log:
CLEREZZA-166: no longer caching iterator but locking on indicidual operations

Added:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockingIterator.java
      - copied, changed from r924844, 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/PreReadingIterator.java
Removed:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/PreReadingIterator.java
Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.integrationtest.web/pom-run.xml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockableMGraphWrapper.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.integrationtest.web/pom-run.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.integrationtest.web/pom-run.xml?rev=926040&r1=926039&r2=926040&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.integrationtest.web/pom-run.xml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.integrationtest.web/pom-run.xml
 Mon Mar 22 11:34:43 2010
@@ -26,7 +26,6 @@
                <dependency>
                        
<artifactId>org.apache.clerezza.integrationtest.web</artifactId>
                        <groupId>org.apache.clerezza</groupId>
-                       <version>0.3-incubating-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.clerezza.ext</groupId>
@@ -42,9 +41,8 @@
                        <version>3.1.0</version>
                </dependency>
                <dependency>
-                       <groupId>org.apache.commons</groupId>
-                       
<artifactId>com.springsource.org.apache.commons.codec</artifactId>
-                       <version>1.3.0</version>
+                       <groupId>commons-codec</groupId>
+                       <artifactId>commons-codec</artifactId>
                </dependency>
                <!-- web cosole and deps -->
                <dependency>
@@ -98,3 +96,5 @@
                </dependency>
        </dependencies>
 </project>
+
+

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockableMGraphWrapper.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockableMGraphWrapper.java?rev=926040&r1=926039&r2=926040&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockableMGraphWrapper.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockableMGraphWrapper.java
 Mon Mar 22 11:34:43 2010
@@ -66,7 +66,7 @@ class LockableMGraphWrapper implements L
        public Iterator<Triple> filter(NonLiteral subject, UriRef predicate, 
Resource object) {
                readLock.lock();
                try {
-                       return new PreReadingIterator(wrapped.filter(subject, 
predicate, object), this);
+                       return new LockingIterator(wrapped.filter(subject, 
predicate, object), lock);
                } finally {
                        readLock.unlock();
                }
@@ -93,6 +93,7 @@ class LockableMGraphWrapper implements L
        }
 
        @Override
+       @SuppressWarnings("element-type-mismatch")
        public boolean contains(Object o) {
                readLock.lock();
                try {
@@ -106,7 +107,7 @@ class LockableMGraphWrapper implements L
        public Iterator<Triple> iterator() {
                readLock.lock();
                try {
-                       return new PreReadingIterator(wrapped.iterator(), this);
+                       return new LockingIterator(wrapped.iterator(), lock);
                } finally {
                        readLock.unlock();
                }

Copied: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockingIterator.java
 (from r924844, 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/PreReadingIterator.java)
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockingIterator.java?p2=incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockingIterator.java&p1=incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/PreReadingIterator.java&r1=924844&r2=926040&rev=926040&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/PreReadingIterator.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/LockingIterator.java
 Mon Mar 22 11:34:43 2010
@@ -18,50 +18,56 @@
  */
 package org.apache.clerezza.rdf.core.access;
 
-import java.util.ArrayList;
 import java.util.Iterator;
-import java.util.List;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
 import org.apache.clerezza.rdf.core.Triple;
-import org.apache.clerezza.rdf.core.TripleCollection;
 
 /**
  * Wrapps an iterator<Triple> reading all elements to a cache on construction
  * and returning them from that cache.
  * @author reto
  */
-class PreReadingIterator implements Iterator<Triple> {
+class LockingIterator implements Iterator<Triple> {
 
        private Iterator<Triple> base;
-       private final TripleCollection tc;
-       private Triple lastReturned;
+       private Lock readLock;
+       private Lock writeLock;
 
-       public PreReadingIterator(Iterator<Triple> iterator, TripleCollection 
tc) {
-               List<Triple> data = new ArrayList<Triple>();
-               while (iterator.hasNext()) {
-                       data.add(iterator.next());
-               }
-               base = data.iterator();
-               this.tc = tc;
+       public LockingIterator(Iterator<Triple> iterator, ReadWriteLock lock) {
+               base = iterator;
+               readLock = lock.readLock();
+               writeLock = lock.writeLock();
        }
 
        @Override
        public boolean hasNext() {
-               return base.hasNext();
+               readLock.lock();
+               try {
+                       return base.hasNext();
+               } finally {
+                       readLock.unlock();
+               }
        }
 
        @Override
        public Triple next() {
-               lastReturned =  base.next();
-               return lastReturned;
+               readLock.lock();
+               try {
+                       return base.next();
+               } finally {
+                       readLock.unlock();
+               }
        }
 
        @Override
        public void remove() {
-               if (lastReturned == null) {
-                       throw new IllegalStateException();
+               writeLock.lock();
+               try {
+                       base.remove();
+               } finally {
+                       writeLock.unlock();
                }
-               tc.remove(lastReturned);
-               lastReturned = null;
        }
 
 }


Reply via email to