Couple bugs in Delta
--------------------

                 Key: JENA-59
                 URL: https://issues.apache.org/jira/browse/JENA-59
             Project: Jena
          Issue Type: Bug
          Components: Jena
            Reporter: Andy Seaborne
            Assignee: christopher james dollin


Transferred from 
http://sourceforge.net/tracker/?func=detail&aid=3284907&group_id=40417&atid=537167

re: com.hp.hpl.jena.graph.compose.Delta
- Delta remove() should not modify base graph.
- Delta.performAdd(t) and performDelete(t) should not fill up L and R with 
redundant statements because graphBaseSize() will return the wrong answer.

Here are fixed versions of these methods (sorry I don't have a patch file; I 
don't know which directory to checkout and checking out everything takes too 
long and I'm still waiting for Ctrl-C to finish)

@Override public void performAdd(Triple t) {
if (!base.contains(t))
L.add(t);
R.delete(t);
}
@Override public void performDelete(Triple t) {
L.delete(t);
if (base.contains(t))
R.add(t);
}

public class RemoveAppendsToDeletionsIterator extends TrackingTripleIterator {
public RemoveAppendsToDeletionsIterator(Iterator<Triple> it) { super(it); }
@Override
public void remove() {
if (null == current)
throw new IllegalStateException();
getDeletions().add(current);
current = null;
}
}
@Override
public ExtendedIterator<Triple> graphBaseFind(TripleMatch tm) {
return new 
RemoveAppendsToDeletionsIterator(base.find(tm)).filterDrop(ifIn(GraphUtil.findAll(R))).andThen(L.find(tm));
}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to