Author: reto Date: Thu Mar 18 14:38:15 2010 New Revision: 924835 URL: http://svn.apache.org/viewvc?rev=924835&view=rev Log: using less memory by not caching iterator unless hwen triple removed
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java?rev=924835&r1=924834&r2=924835&view=diff ============================================================================== --- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java (original) +++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java Thu Mar 18 14:38:15 2010 @@ -67,32 +67,47 @@ public class JenaGraphAdaptor extends Ab final ExtendedIterator jenaIter = jenaGraph.find(tria2JenaUtil.convert2JenaNode(subject), tria2JenaUtil.convert2JenaNode(predicate), tria2JenaUtil.convert2JenaNode(object)); - ArrayList<Triple> data = new ArrayList<Triple>(); - while (jenaIter.hasNext()) { - data.add(jena2TriaUtil.convertTriple( - (com.hp.hpl.jena.graph.Triple)jenaIter.next())); - } - final Iterator<Triple> base = data.iterator(); return new Iterator<Triple>() { - Triple lastReturned = null; + private Triple lastReturned = null; + private Iterator<Triple> precached = null; @Override public boolean hasNext() { - return base.hasNext(); + if (precached != null) { + return precached.hasNext(); + } else { + return jenaIter.hasNext(); + } } @Override public Triple next() { - lastReturned = base.next(); + if (precached != null) { + lastReturned = precached.next(); + } else { + lastReturned = jena2TriaUtil.convertTriple( + (com.hp.hpl.jena.graph.Triple)jenaIter.next()); + } return lastReturned; } @Override public void remove() { - JenaGraphAdaptor.this.performRemove(lastReturned); + final Triple deleting = lastReturned; + if (precached == null) { + final ArrayList<Triple> data = new ArrayList<Triple>(); + while (hasNext()) { + data.add(next()); + } + precached = data.iterator(); + } + //jenaIter.remove(); + //JenaGraphAdaptor.this.performRemove(lastReturned); + jenaGraph.delete(tria2JenaUtil.convertTriple(deleting)); } }; + } @Override