Skip to content

Commit cc8f8e4

Browse files
author
Olaf Hartig
committed
small performance improvement in 'TriplePatternFragmentImpl' -- it is better to simply return an empty StmtIterator instead of repeatedly creating an empty Jena Model and asking it for a StmtIterator
1 parent d70cbf2 commit cc8f8e4

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/org/linkeddatafragments/fragments/tpf/TriplePatternFragmentImpl.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package org.linkeddatafragments.fragments.tpf;
22

3+
import java.util.NoSuchElementException;
4+
35
import org.linkeddatafragments.fragments.LinkedDataFragmentBase;
46
import org.linkeddatafragments.util.CommonResources;
57

68
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
79
import com.hp.hpl.jena.rdf.model.Literal;
810
import com.hp.hpl.jena.rdf.model.Model;
9-
import com.hp.hpl.jena.rdf.model.ModelFactory;
1011
import com.hp.hpl.jena.rdf.model.Resource;
12+
import com.hp.hpl.jena.rdf.model.Statement;
1113
import com.hp.hpl.jena.rdf.model.StmtIterator;
14+
import com.hp.hpl.jena.util.iterator.NiceIterator;
1215

1316
/**
1417
* Implementation of {@link TriplePatternFragment}.
@@ -52,13 +55,16 @@ public TriplePatternFragmentImpl( Model triples,
5255
final long pageNumber,
5356
final boolean isLastPage ) {
5457
super( fragmentURL, datasetURL, pageNumber, isLastPage );
55-
this.triples = triples == null ? ModelFactory.createDefaultModel() : triples;
58+
this.triples = triples;
5659
this.totalSize = totalSize < 0 ? 0 : totalSize;
5760
}
5861

5962
@Override
6063
public StmtIterator getTriples() {
61-
return triples.listStatements();
64+
if ( triples != null )
65+
return triples.listStatements();
66+
else
67+
return emptyStmtIterator;
6268
}
6369

6470
@Override
@@ -119,4 +125,14 @@ public String getTemplate() {
119125
TriplePatternFragmentRequest.PARAMETERNAME_OBJ + "}";
120126
}
121127

128+
129+
public static final StmtIterator emptyStmtIterator = new EmptyStmtIterator();
130+
131+
public static class EmptyStmtIterator
132+
extends NiceIterator<Statement>
133+
implements StmtIterator
134+
{
135+
public Statement nextStatement() { throw new NoSuchElementException(); }
136+
}
137+
122138
}

0 commit comments

Comments
 (0)