Skip to content

Commit c36ee58

Browse files
author
mielvds
committed
Merge pull request #19 from hartig/GenericServlet
Servlet now completely agnostic of the type of LDFs requested
2 parents ed31cf8 + cc8f8e4 commit c36ee58

File tree

6 files changed

+62
-13
lines changed

6 files changed

+62
-13
lines changed

WebContent/WEB-INF/web.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<servlet>
55
<display-name>BasicLdfServlet</display-name>
66
<servlet-name>BasicLdfServlet</servlet-name>
7-
<servlet-class>org.linkeddatafragments.servlet.TriplePatternFragmentServlet</servlet-class>
7+
<servlet-class>org.linkeddatafragments.servlet.LinkedDataFragmentServlet</servlet-class>
88
</servlet>
99
<servlet-mapping>
1010
<servlet-name>BasicLdfServlet</servlet-name>

src/org/linkeddatafragments/datasource/DataSource.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package org.linkeddatafragments.datasource;
22

3+
import javax.servlet.http.HttpServletRequest;
4+
5+
import org.linkeddatafragments.config.ConfigReader;
6+
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
7+
import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentRequest;
8+
import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentRequestImpl;
9+
310
/**
411
*
512
* @author mielvandersande
@@ -24,6 +31,24 @@ public String getTitle() {
2431
return this.title;
2532
};
2633

34+
/**
35+
* This implementation assumes that the given request is a
36+
* {@link TriplePatternFragmentRequest}.
37+
*
38+
* Data sources for other types of {@link LinkedDataFragmentRequest}s must
39+
* override this method accordingly.
40+
*/
41+
@Override
42+
public IFragmentRequestProcessor getRequestProcessor(
43+
final HttpServletRequest request,
44+
final ConfigReader config )
45+
{
46+
final TriplePatternFragmentRequest r =
47+
new TriplePatternFragmentRequestImpl( request, config );
48+
49+
return getRequestProcessor( r );
50+
}
51+
2752
@Override
2853
public void close() {}
2954
}

src/org/linkeddatafragments/datasource/IDataSource.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import java.io.Closeable;
44

5+
import javax.servlet.http.HttpServletRequest;
6+
7+
import org.linkeddatafragments.config.ConfigReader;
58
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
69

710
/**
@@ -16,6 +19,14 @@ public interface IDataSource extends Closeable {
1619

1720
public String getDescription();
1821

22+
/**
23+
* Returns a data source specific processor for the given request of a
24+
* Linked Data Fragment.
25+
*/
26+
IFragmentRequestProcessor getRequestProcessor(
27+
final HttpServletRequest request,
28+
final ConfigReader config );
29+
1930
/**
2031
* Returns a data source specific processor for the given request of a
2132
* Linked Data Fragment.

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
}

src/org/linkeddatafragments/servlet/TriplePatternFragmentServlet.java renamed to src/org/linkeddatafragments/servlet/LinkedDataFragmentServlet.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
import org.linkeddatafragments.exceptions.DataSourceException;
2929
import org.linkeddatafragments.exceptions.DataSourceNotFoundException;
3030
import org.linkeddatafragments.fragments.LinkedDataFragment;
31-
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
3231
import org.linkeddatafragments.fragments.LinkedDataFragmentRequestBase;
33-
import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentRequestImpl;
3432
import org.linkeddatafragments.util.MIMEParse;
3533

3634
/**
@@ -40,7 +38,7 @@
4038
* @author Bart Hanssens
4139
* @author <a href="http://olafhartig.de">Olaf Hartig</a>
4240
*/
43-
public class TriplePatternFragmentServlet extends HttpServlet {
41+
public class LinkedDataFragmentServlet extends HttpServlet {
4442

4543
private final static long serialVersionUID = 1L;
4644

@@ -51,7 +49,7 @@ public class TriplePatternFragmentServlet extends HttpServlet {
5149
private final HashMap<String, IDataSource> dataSources = new HashMap<>();
5250
private final Collection<String> mimeTypes = new ArrayList<>();
5351

54-
public TriplePatternFragmentServlet() {
52+
public LinkedDataFragmentServlet() {
5553
HdtDataSourceType.register();
5654
JenaTDBDataSourceType.register();
5755
}
@@ -141,8 +139,7 @@ private IDataSource getDataSource(HttpServletRequest request) throws DataSourceN
141139
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
142140
try {
143141
IDataSource dataSource = getDataSource(request);
144-
final LinkedDataFragmentRequest ldfRequest = new TriplePatternFragmentRequestImpl( request, config );
145-
final IFragmentRequestProcessor processor = dataSource.getRequestProcessor( ldfRequest );
142+
final IFragmentRequestProcessor processor = dataSource.getRequestProcessor( request, config );
146143
final LinkedDataFragment fragment = processor.createRequestedFragment();
147144

148145
final Model output = ModelFactory.createDefaultModel();

src/org/linkeddatafragments/standalone/JettyServer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.eclipse.jetty.servlet.ServletHandler;
1111
import org.eclipse.jetty.servlet.ServletHolder;
1212

13-
import org.linkeddatafragments.servlet.TriplePatternFragmentServlet;
13+
import org.linkeddatafragments.servlet.LinkedDataFragmentServlet;
1414

1515
/**
1616
* <p>
@@ -64,8 +64,8 @@ public static void main(String[] args) throws Exception {
6464
server.setHandler(handler);
6565

6666
// add the TriplePatternFragmentsServlet to the handler
67-
ServletHolder tpfServletHolder = new ServletHolder(new TriplePatternFragmentServlet());
68-
tpfServletHolder.setInitParameter(TriplePatternFragmentServlet.CFGFILE, config);
67+
ServletHolder tpfServletHolder = new ServletHolder(new LinkedDataFragmentServlet());
68+
tpfServletHolder.setInitParameter(LinkedDataFragmentServlet.CFGFILE, config);
6969
handler.addServletWithMapping(tpfServletHolder, "/*");
7070

7171
// start the server

0 commit comments

Comments
 (0)