Skip to content

Commit f9d50e3

Browse files
author
Miel Vander Sande
committed
Added default mimeType
1 parent e138cc3 commit f9d50e3

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

src/org/linkeddatafragments/servlet/TriplePatternFragmentServlet.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.linkeddatafragments.datasource.tdb.JenaTDBDataSourceType;
2828
import org.linkeddatafragments.exceptions.DataSourceException;
2929
import org.linkeddatafragments.exceptions.DataSourceNotFoundException;
30+
import org.linkeddatafragments.exceptions.NoRegisteredMimeTypesException;
3031
import org.linkeddatafragments.fragments.LinkedDataFragment;
3132
import org.linkeddatafragments.fragments.LinkedDataFragmentRequest;
3233
import org.linkeddatafragments.fragments.LinkedDataFragmentRequestBase;
@@ -87,10 +88,10 @@ public void init(ServletConfig servletConfig) throws ServletException {
8788
}
8889

8990
// register content types
90-
mimeTypes.add(Lang.TTL.getHeaderString());
91-
mimeTypes.add(Lang.JSONLD.getHeaderString());
92-
mimeTypes.add(Lang.NTRIPLES.getHeaderString());
93-
mimeTypes.add(Lang.RDFXML.getHeaderString());
91+
MIMEParse.register(Lang.TTL.getHeaderString());
92+
MIMEParse.register(Lang.JSONLD.getHeaderString());
93+
MIMEParse.register(Lang.NTRIPLES.getHeaderString());
94+
MIMEParse.register(Lang.RDFXML.getHeaderString());
9495
} catch (IOException | DataSourceException e) {
9596
throw new ServletException(e);
9697
}
@@ -152,7 +153,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
152153
output.add( fragment.getControls() );
153154

154155
// do conneg
155-
String bestMatch = MIMEParse.bestMatch(mimeTypes, request.getHeader("Accept"));
156+
String bestMatch = MIMEParse.bestMatch(request.getHeader("Accept"));
156157
Lang contentType = RDFLanguages.contentTypeToLang(bestMatch);
157158

158159
// serialize the output
@@ -161,7 +162,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
161162
response.setCharacterEncoding("utf-8");
162163

163164
RDFDataMgr.write(response.getOutputStream(), output, contentType);
164-
} catch (IOException e) {
165+
} catch (IOException | NoRegisteredMimeTypesException e) {
165166
throw new ServletException(e);
166167
} catch (DataSourceNotFoundException ex) {
167168
try {

src/org/linkeddatafragments/util/MIMEParse.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.linkeddatafragments.util;
22

3+
import org.linkeddatafragments.exceptions.NoRegisteredMimeTypesException;
4+
import java.util.ArrayList;
35
import java.util.Collection;
46
import java.util.Collections;
57
import java.util.HashMap;
@@ -24,10 +26,21 @@
2426
* http://code.google.com/p/mimeparse/
2527
*
2628
* Ported by Tom Zellman <[email protected]>.
29+
* Extended by Miel Vander Sande <[email protected]>
2730
*
2831
*/
2932
public final class MIMEParse
3033
{
34+
private final static List<String> mimeTypes = new ArrayList<>();
35+
36+
/**
37+
* Register mimeType in collection
38+
* @param mimeType
39+
*/
40+
public static void register(String mimeType) {
41+
mimeTypes.add(mimeType);
42+
}
43+
3144

3245
/**
3346
* Parse results container
@@ -233,8 +246,11 @@ public static float quality(String mimeType, String ranges)
233246
* @param header
234247
* @return
235248
*/
236-
public static String bestMatch(Collection<String> supported, String header)
249+
public static String bestMatch(List<String> supported, String header) throws NoRegisteredMimeTypesException
237250
{
251+
if (supported.isEmpty())
252+
throw new NoRegisteredMimeTypesException();
253+
238254
List<ParseResults> parseResults = new LinkedList<ParseResults>();
239255
List<FitnessAndQuality> weightedMatches = new LinkedList<FitnessAndQuality>();
240256
for (String r : StringUtils.split(header, ','))
@@ -251,8 +267,12 @@ public static String bestMatch(Collection<String> supported, String header)
251267

252268
FitnessAndQuality lastOne = weightedMatches
253269
.get(weightedMatches.size() - 1);
254-
return NumberUtils.compare(lastOne.quality, 0) != 0 ? lastOne.mimeType
255-
: "";
270+
return NumberUtils.compare(lastOne.quality, 0) != 0 ? lastOne.mimeType : supported.get(0);
271+
}
272+
273+
public static String bestMatch(String header) throws NoRegisteredMimeTypesException
274+
{
275+
return bestMatch(mimeTypes, header);
256276
}
257277

258278
// hidden

0 commit comments

Comments
 (0)