Skip to content

Commit ac7c78c

Browse files
author
Miel Vander Sande
committed
Send 404 when datasource is not found
1 parent eadf5ed commit ac7c78c

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.linkeddatafragments.exceptions;
2+
3+
import org.linkeddatafragments.datasource.IDataSource;
4+
5+
/**
6+
*
7+
* @author mielvandersande
8+
*/
9+
public class DataSourceNotFoundException extends Exception {
10+
private static final long serialVersionUID = 1L;
11+
12+
public DataSourceNotFoundException(Throwable cause) {
13+
super(cause.getMessage());
14+
}
15+
16+
public DataSourceNotFoundException(String dataSourceName) {
17+
super("Data source " + dataSourceName + " not found.");
18+
}
19+
}

src/org/linkeddatafragments/servlet/TriplePatternFragmentServlet.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import java.util.Collection;
1919
import java.util.HashMap;
2020
import java.util.Map.Entry;
21+
import java.util.logging.Level;
22+
import java.util.logging.Logger;
2123
import java.util.regex.Matcher;
2224
import java.util.regex.Pattern;
2325
import javax.servlet.ServletConfig;
@@ -37,6 +39,7 @@
3739
import org.linkeddatafragments.datasource.JenaTDBDataSourceType;
3840
import org.linkeddatafragments.datasource.TriplePatternFragment;
3941
import org.linkeddatafragments.exceptions.DataSourceException;
42+
import org.linkeddatafragments.exceptions.DataSourceNotFoundException;
4043
import org.linkeddatafragments.util.CommonResources;
4144
import org.linkeddatafragments.util.MIMEParse;
4245

@@ -118,7 +121,7 @@ public void init(ServletConfig servletConfig) throws ServletException {
118121
* @return
119122
* @throws IOException
120123
*/
121-
private IDataSource getDataSource(HttpServletRequest request) throws IOException {
124+
private IDataSource getDataSource(HttpServletRequest request) throws DataSourceNotFoundException {
122125
String contextPath = request.getContextPath();
123126
String requestURI = request.getRequestURI();
124127

@@ -133,7 +136,7 @@ private IDataSource getDataSource(HttpServletRequest request) throws IOException
133136
String dataSourceName = path.substring(1);
134137
IDataSource dataSource = dataSources.get(dataSourceName);
135138
if (dataSource == null) {
136-
throw new IOException("Data source not found.");
139+
throw new DataSourceNotFoundException(dataSourceName);
137140
}
138141
return dataSource;
139142
}
@@ -299,8 +302,15 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
299302

300303
RDFDataMgr.write(response.getOutputStream(), output, contentType);
301304
} catch (IOException | URISyntaxException e) {
302-
e.printStackTrace();
303305
throw new ServletException(e);
306+
} catch (DataSourceNotFoundException ex) {
307+
try {
308+
response.setStatus(404);
309+
response.getOutputStream().println(ex.getMessage());
310+
response.getOutputStream().close();
311+
} catch (IOException ex1) {
312+
throw new ServletException(ex1);
313+
}
304314
}
305315
}
306316

0 commit comments

Comments
 (0)