|
3 | 3 | import com.google.gson.JsonObject; |
4 | 4 | import com.hp.hpl.jena.rdf.model.Model; |
5 | 5 | import com.hp.hpl.jena.rdf.model.ModelFactory; |
| 6 | +import com.hp.hpl.jena.rdf.model.Statement; |
| 7 | +import com.hp.hpl.jena.rdf.model.StmtIterator; |
| 8 | +import freemarker.template.TemplateException; |
6 | 9 | import java.io.File; |
7 | 10 | import java.io.FileReader; |
8 | 11 | import java.io.IOException; |
9 | 12 | import java.util.ArrayList; |
10 | 13 | import java.util.Collection; |
11 | 14 | import java.util.HashMap; |
12 | 15 | import java.util.Map.Entry; |
| 16 | +import java.util.function.Consumer; |
| 17 | +import java.util.logging.Level; |
| 18 | +import java.util.logging.Logger; |
| 19 | +import javax.servlet.RequestDispatcher; |
13 | 20 | import javax.servlet.ServletConfig; |
14 | 21 | import javax.servlet.ServletException; |
15 | 22 | import javax.servlet.http.HttpServlet; |
|
33 | 40 | import org.linkeddatafragments.fragments.LinkedDataFragmentRequestBase; |
34 | 41 | import org.linkeddatafragments.fragments.tpf.TriplePatternFragmentRequestImpl; |
35 | 42 | import org.linkeddatafragments.util.MIMEParse; |
| 43 | +import org.linkeddatafragments.views.HtmlWriter; |
36 | 44 |
|
37 | 45 | /** |
38 | 46 | * Servlet that responds with a Linked Data Fragment. |
@@ -88,6 +96,7 @@ public void init(ServletConfig servletConfig) throws ServletException { |
88 | 96 | } |
89 | 97 |
|
90 | 98 | // register content types |
| 99 | + MIMEParse.register("text/html"); |
91 | 100 | MIMEParse.register(Lang.TTL.getHeaderString()); |
92 | 101 | MIMEParse.register(Lang.JSONLD.getHeaderString()); |
93 | 102 | MIMEParse.register(Lang.NTRIPLES.getHeaderString()); |
@@ -145,24 +154,30 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro |
145 | 154 | final LinkedDataFragmentRequest ldfRequest = new TriplePatternFragmentRequestImpl( request, config ); |
146 | 155 | final IFragmentRequestProcessor processor = dataSource.getRequestProcessor( ldfRequest ); |
147 | 156 | final LinkedDataFragment fragment = processor.createRequestedFragment(); |
148 | | - |
149 | | - final Model output = ModelFactory.createDefaultModel(); |
150 | | - output.setNsPrefixes(config.getPrefixes()); |
151 | | - output.add( fragment.getMetadata() ); |
152 | | - output.add( fragment.getTriples() ); |
153 | | - output.add( fragment.getControls() ); |
154 | | - |
| 157 | + |
155 | 158 | // do conneg |
156 | 159 | String bestMatch = MIMEParse.bestMatch(request.getHeader("Accept")); |
157 | | - Lang contentType = RDFLanguages.contentTypeToLang(bestMatch); |
158 | 160 |
|
159 | 161 | // serialize the output |
160 | 162 | response.setHeader("Server", "Linked Data Fragments Server"); |
161 | 163 | response.setContentType(bestMatch); |
162 | 164 | response.setCharacterEncoding("utf-8"); |
| 165 | + |
| 166 | + if (bestMatch.equals("text/html")) { |
| 167 | + new HtmlWriter().write(response.getOutputStream(), dataSources, dataSource, fragment); |
| 168 | + return; |
| 169 | + } |
| 170 | + |
| 171 | + final Model output = ModelFactory.createDefaultModel(); |
| 172 | + output.setNsPrefixes(config.getPrefixes()); |
| 173 | + output.add( fragment.getMetadata() ); |
| 174 | + output.add( fragment.getTriples() ); |
| 175 | + output.add( fragment.getControls() ); |
| 176 | + |
| 177 | + Lang contentType = RDFLanguages.contentTypeToLang(bestMatch); |
| 178 | + RDFDataMgr.write(response.getOutputStream(), output, contentType); |
163 | 179 |
|
164 | | - RDFDataMgr.write(response.getOutputStream(), output, contentType); |
165 | | - } catch (IOException | NoRegisteredMimeTypesException e) { |
| 180 | + } catch (IOException | NoRegisteredMimeTypesException | TemplateException e) { |
166 | 181 | throw new ServletException(e); |
167 | 182 | } catch (DataSourceNotFoundException ex) { |
168 | 183 | try { |
|
0 commit comments