Skip to content

Commit b8ae8a5

Browse files
author
Miel Vander Sande
committed
Added assets to Jetty
1 parent 329ac03 commit b8ae8a5

File tree

5 files changed

+55
-22
lines changed

5 files changed

+55
-22
lines changed

WebContent/WEB-INF/web.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,16 @@
66
<servlet-name>BasicLdfServlet</servlet-name>
77
<servlet-class>org.linkeddatafragments.servlet.LinkedDataFragmentServlet</servlet-class>
88
</servlet>
9+
<servlet>
10+
<servlet-name>AssetServlet</servlet-name>
11+
<servlet-class>org.linkeddatafragments.servlet.AssetServlet</servlet-class>
12+
</servlet>
913
<servlet-mapping>
1014
<servlet-name>BasicLdfServlet</servlet-name>
1115
<url-pattern>/*</url-pattern>
1216
</servlet-mapping>
17+
<servlet-mapping>
18+
<servlet-name>AssetServlet</servlet-name>
19+
<url-pattern>/AssetServlet</url-pattern>
20+
</servlet-mapping>
1321
</web-app>

src/org/linkeddatafragments/servlet/LinkedDataFragmentServlet.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,16 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
155155
response.setCharacterEncoding("utf-8");
156156

157157
if (bestMatch.equals("text/html")) {
158-
new HtmlWriter().write(response.getOutputStream(), dataSources, dataSource, fragment);
158+
String datasetUrl = LinkedDataFragmentRequestBase.extractDatasetURL(request, config);
159+
new HtmlWriter().write(response.getOutputStream(), dataSources, dataSource, fragment, datasetUrl);
159160
return;
160161
}
161162

162163
final Model output = ModelFactory.createDefaultModel();
163164
output.setNsPrefixes(config.getPrefixes());
164-
output.add( fragment.getMetadata() );
165-
output.add( fragment.getTriples() );
166-
output.add( fragment.getControls() );
165+
output.add( fragment.getMetadata().toList() );
166+
output.add( fragment.getTriples().toList() );
167+
output.add( fragment.getControls().toList() );
167168

168169
Lang contentType = RDFLanguages.contentTypeToLang(bestMatch);
169170
RDFDataMgr.write(response.getOutputStream(), output, contentType);

src/org/linkeddatafragments/standalone/JettyServer.java

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,16 @@
55
import org.apache.commons.cli.DefaultParser;
66
import org.apache.commons.cli.HelpFormatter;
77
import org.apache.commons.cli.Options;
8+
import org.eclipse.jetty.server.Handler;
89
import org.eclipse.jetty.server.Server;
10+
import org.eclipse.jetty.server.handler.ContextHandler;
11+
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
12+
import org.eclipse.jetty.server.handler.ResourceHandler;
13+
import org.eclipse.jetty.servlet.DefaultServlet;
14+
import org.eclipse.jetty.servlet.ServletContextHandler;
915
import org.eclipse.jetty.servlet.ServletHandler;
1016
import org.eclipse.jetty.servlet.ServletHolder;
17+
import org.eclipse.jetty.util.resource.Resource;
1118
import org.linkeddatafragments.servlet.LinkedDataFragmentServlet;
1219

1320
/**
@@ -58,23 +65,38 @@ public static void main(String[] args) throws Exception {
5865

5966
// create a new (Jetty) server, and add a servlet handler
6067
Server server = new Server(port);
61-
ServletHandler handler = new ServletHandler();
62-
server.setHandler(handler);
68+
69+
// The filesystem paths we will map
70+
String pwdPath = System.getProperty("user.dir");
71+
String assetsPath = pwdPath + "/assets";
72+
73+
// Setup the basic application "context" for this application at "/"
74+
// This is also known as the handler tree (in jetty speak)
75+
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
76+
context.setResourceBase(pwdPath);
77+
context.setContextPath("/");
78+
server.setHandler(context);
79+
80+
// add a simple Servlet at "/dynamic/*"
81+
ServletHolder holderDynamic = new ServletHolder("dynamic", LinkedDataFragmentServlet.class);
82+
holderDynamic.setInitParameter(LinkedDataFragmentServlet.CFGFILE, config);
83+
context.addServlet(holderDynamic, "/*");
6384

64-
// add the TriplePatternFragmentsServlet to the handler
65-
ServletHolder tpfServletHolder = new ServletHolder(new LinkedDataFragmentServlet());
66-
tpfServletHolder.setInitParameter(LinkedDataFragmentServlet.CFGFILE, config);
67-
handler.addServletWithMapping(tpfServletHolder, "/*");
85+
// add special pathspec of "/home/" content mapped to the homePath
86+
ServletHolder holderHome = new ServletHolder("static-home", DefaultServlet.class);
87+
holderHome.setInitParameter("resourceBase",assetsPath);
88+
holderHome.setInitParameter("dirAllowed","true");
89+
holderHome.setInitParameter("pathInfoOnly","true");
90+
context.addServlet(holderHome,"/assets/*");
91+
92+
// Lastly, the default servlet for root content (always needed, to satisfy servlet spec)
93+
// It is important that this is last.
94+
ServletHolder holderPwd = new ServletHolder("default", DefaultServlet.class);
95+
holderPwd.setInitParameter("dirAllowed","true");
96+
context.addServlet(holderPwd,"/");
97+
6898

69-
// TODO: create a servlet to serve assets
70-
//String assetsPath = System.getProperty("user.dir") + "/assets";
71-
//ServletHolder assetsHolder = new ServletHolder(new DefaultServlet());
72-
//assetsHolder.setInitParameter("resourceBase", assetsPath);
73-
//assetsHolder.setInitParameter("dirAllowed","true");
74-
//assetsHolder.setInitParameter("pathInfoOnly","true");
75-
//handler.addServletWithMapping(assetsHolder,"/assets/*");
7699

77-
78100
// start the server
79101
server.start();
80102
System.out.println("Started server, listening at port " + port);

src/org/linkeddatafragments/views/HtmlWriter.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public HtmlWriter() throws IOException {
3535
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
3636
}
3737

38-
public void write(OutputStream outputStream, HashMap<String, IDataSource> dataSources, IDataSource datasource, LinkedDataFragment fragment) throws IOException, TemplateException{
38+
public void write(OutputStream outputStream, HashMap<String, IDataSource> dataSources, IDataSource datasource, LinkedDataFragment fragment, String datasetUrl) throws IOException, TemplateException{
3939
/* Get the template (uses cache internally) */
4040
Template temp = cfg.getTemplate("index.ftl.html");
4141

@@ -45,8 +45,10 @@ public void write(OutputStream outputStream, HashMap<String, IDataSource> dataSo
4545
data.put("datasources", dataSources);
4646
data.put("content", "");
4747
data.put("date", new Date());
48-
4948

49+
50+
data.put("datasourceUrl", datasetUrl);
51+
data.put("datasource", datasource);
5052
data.put("controls", fragment.getControls());
5153
data.put("metadata", fragment.getMetadata());
5254
data.put("triples", fragment.getTriples());

views/base.ftl.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<head>
55
<meta charset="utf-8">
66
<title>${ (title || header)!"Linked Data Fragments Server" }</title>
7-
<link rel="stylesheet" href="${ assetsPath }style" />
7+
<link rel="stylesheet" href="${ assetsPath }style.css" />
88
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:700italic,400,700|Droid+Sans+Mono" type="text/css" />
99
<meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1">
1010
</head>
@@ -18,7 +18,7 @@ <h1><a href="/">
1818
</#attempt>
1919
</a></h1>
2020
<figure class="logo">
21-
<a href="http://linkeddatafragments.org/"><img src="/logo" alt="Linked Data Fragments" /></a>
21+
<a href="http://linkeddatafragments.org/"><img src="${ assetsPath }logo.svg" alt="Linked Data Fragments" /></a>
2222
</figure>
2323
</header>
2424
<main>

0 commit comments

Comments
 (0)