
|
If you were logged in you would be able to see more operations.
|
|
When a CloseableIterator obtained from Repository.getStatements is immediately closed, a NullPointerException is thrown, as demonstrated by the following unit test:
public void testAlpha2() throws SailInitializationException {
MemoryStore memoryStore = new MemoryStore();
Repository repository = new Repository(memoryStore);
repository.initialize();
CloseableIterator i = repository.getStatements(null, null, null);
i.close();
}
This gives the following stacktrace:
java.lang.NullPointerException
at org.openrdf.sesame.sail.query.ConstructQuery$ConstructQueryIterator.close(ConstructQuery.java:255)
at org.openrdf.util.iterator.Iterators.closeCloseable(Iterators.java:61)
at org.openrdf.util.iterator.FilterIterator.close(FilterIterator.java:107)
at org.openrdf.util.iterator.LockingIterator.close(LockingIterator.java:51)
at org.openrdf.sesame.query.GraphQuery$TupleConvertingIterator.close(GraphQuery.java:194)
at org.openrdf.sesame.repository.RStatementIterator.close(RStatementIterator.java:47)
at org.semanticdesktop.aperture.rdf.sesame.TestAlpha2.testAlpha2(TestAlpha2.java:19)
at ... (junit framework)
When i.hasNext() is invoked before i.close(), everything works fine.
The reason for this behaviour is probably the lazy initialization inside org.openrdf.sesame.sail.query.ConstructQuery.ConstructQueryIterator, which never takes place, resulting in an invocation on an internal queue which has not yet been created.
|
|
Cleaned up all classes implementing the CloseableIterator interface, fixing several potential issues.
|
|