You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2014/05/13 06:33:50 UTC
svn commit: r1594122 - in /stanbol/branches/release-0.12:
commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/
enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/writers/
integration-tests/src/test/java/org/apache/s...
Author: rwesten
Date: Tue May 13 04:33:49 2014
New Revision: 1594122
URL: http://svn.apache.org/r1594122
Log:
fix for STANBOL-1339: charset is now appended to the Content-Type header when serializing RDF; STANBOL-1340: application/ld+json is now used as Content-Type for JSON-LD serialied RDF data; also updated integration tests to test both changes
Modified:
stanbol/branches/release-0.12/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java
stanbol/branches/release-0.12/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/writers/ContentItemWriter.java
stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/commons/httpqueryheaders/it/HttpQueryHeaderPostTest.java
stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java
Modified: stanbol/branches/release-0.12/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java
URL: http://svn.apache.org/viewvc/stanbol/branches/release-0.12/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java?rev=1594122&r1=1594121&r2=1594122&view=diff
==============================================================================
--- stanbol/branches/release-0.12/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java (original)
+++ stanbol/branches/release-0.12/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java Tue May 13 04:33:49 2014
@@ -16,6 +16,7 @@
*/
package org.apache.stanbol.commons.web.base.writers;
+import static javax.ws.rs.core.HttpHeaders.CONTENT_TYPE;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
import static javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM;
import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
@@ -30,6 +31,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import java.nio.charset.Charset;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -37,6 +39,7 @@ import java.util.Set;
import javax.servlet.ServletContext;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
@@ -52,6 +55,13 @@ import org.slf4j.LoggerFactory;
// @Produces({TEXT_PLAIN, N3, N_TRIPLE, RDF_XML, TURTLE, X_TURTLE, RDF_JSON, APPLICATION_JSON})
public class GraphWriter implements MessageBodyWriter<TripleCollection> {
+ /**
+ * The media type for JSON-LD (<code>application/ld+json</code>)
+ */
+ private static String APPLICATION_LD_JSON = "application/ld+json";
+
+ private static final Charset UTF8 = Charset.forName("UTF-8");
+
private final Logger log = LoggerFactory.getLogger(GraphWriter.class);
public static final Set<String> supportedMediaTypes;
static {
@@ -65,6 +75,7 @@ public class GraphWriter implements Mess
types.add(RDF_JSON);
types.add(APPLICATION_JSON);
types.add(APPLICATION_OCTET_STREAM);
+ types.add(APPLICATION_LD_JSON);
supportedMediaTypes = Collections.unmodifiableSet(types);
}
@@ -98,15 +109,15 @@ public class GraphWriter implements Mess
MultivaluedMap<String,Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
- long start = System.currentTimeMillis();
String mediaTypeString = mediaType.getType() + '/' + mediaType.getSubtype();
if (mediaType.isWildcardType() || TEXT_PLAIN.equals(mediaTypeString)
|| APPLICATION_OCTET_STREAM.equals(mediaTypeString)) {
- httpHeaders.putSingle("Content-Type", APPLICATION_JSON);
- getSerializer().serialize(entityStream, t, APPLICATION_JSON);
- } else {
- getSerializer().serialize(entityStream, t, mediaTypeString);
+ mediaTypeString = APPLICATION_LD_JSON;
}
+ httpHeaders.putSingle(CONTENT_TYPE, mediaTypeString + ";charset=" + UTF8.name());
+
+ long start = System.currentTimeMillis();
+ getSerializer().serialize(entityStream, t, mediaTypeString);
log.debug("Serialized {} in {}ms", t.size(), System.currentTimeMillis() - start);
}
}
Modified: stanbol/branches/release-0.12/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/writers/ContentItemWriter.java
URL: http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/writers/ContentItemWriter.java?rev=1594122&r1=1594121&r2=1594122&view=diff
==============================================================================
--- stanbol/branches/release-0.12/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/writers/ContentItemWriter.java (original)
+++ stanbol/branches/release-0.12/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/writers/ContentItemWriter.java Tue May 13 04:33:49 2014
@@ -16,7 +16,6 @@
*/
package org.apache.stanbol.enhancer.jersey.writers;
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE;
import static javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM_TYPE;
import static javax.ws.rs.core.MediaType.MULTIPART_FORM_DATA_TYPE;
import static javax.ws.rs.core.MediaType.TEXT_PLAIN_TYPE;
@@ -89,10 +88,15 @@ public class ContentItemWriter implement
private static final MediaType MULTIPART = MediaType.valueOf(MULTIPART_FORM_DATA_TYPE.getType()+"/*");
private static final String CONTENT_ITEM_BOUNDARY = "contentItem";
private static final Charset UTF8 = Charset.forName("UTF-8");
+ /**
+ * The media type for JSON-LD (<code>application/ld+json</code>)
+ */
+ private static String APPLICATION_LD_JSON = "application/ld+json";
+ private static MediaType APPLICATION_LD_JSON_TYPE = MediaType.valueOf(APPLICATION_LD_JSON);
private static final MediaType DEFAULT_RDF_FORMAT = new MediaType(
- APPLICATION_JSON_TYPE.getType(),
- APPLICATION_JSON_TYPE.getSubtype(),
- Collections.singletonMap("charset", UTF8.toString()));
+ APPLICATION_LD_JSON_TYPE.getType(),
+ APPLICATION_LD_JSON_TYPE.getSubtype(),
+ Collections.singletonMap("charset", UTF8.name()));
private Serializer __serializer;
@@ -156,17 +160,19 @@ public class ContentItemWriter implement
if(!MULTIPART.isCompatible(mediaType)){ //two possible cases
if(!omitMetadata){ // (1) just return the RDF data
//(1.a) Backward support for default dataType if no Accept header is set
+ StringBuilder ctb = new StringBuilder();
if (mediaType.isWildcardType() ||
TEXT_PLAIN_TYPE.isCompatible(mediaType) ||
APPLICATION_OCTET_STREAM_TYPE.isCompatible(mediaType)) {
- mediaType = new MediaType(APPLICATION_JSON_TYPE.getType(),
- APPLICATION_JSON_TYPE.getSubtype(),
- //Clerezza serialisers are hard coded to use UTF-8
- Collections.singletonMap("charset", UTF8.toString()));
- httpHeaders.putSingle("Content-Type", mediaType.toString());
+ ctb.append(APPLICATION_LD_JSON);
+ } else {
+ ctb.append(mediaType.getType()).append('/').append(mediaType.getSubtype());
}
+ ctb.append(";charset=").append(UTF8.name());
+ String contentType = ctb.toString();
+ httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, contentType);
try {
- getSerializer().serialize(entityStream, ci.getMetadata(), mediaType.toString());
+ getSerializer().serialize(entityStream, ci.getMetadata(), contentType);
} catch (UnsupportedSerializationFormatException e) {
throw new WebApplicationException(
Response.status(Response.Status.NOT_ACCEPTABLE)
Modified: stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/commons/httpqueryheaders/it/HttpQueryHeaderPostTest.java
URL: http://svn.apache.org/viewvc/stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/commons/httpqueryheaders/it/HttpQueryHeaderPostTest.java?rev=1594122&r1=1594121&r2=1594122&view=diff
==============================================================================
--- stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/commons/httpqueryheaders/it/HttpQueryHeaderPostTest.java (original)
+++ stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/commons/httpqueryheaders/it/HttpQueryHeaderPostTest.java Tue May 13 04:33:49 2014
@@ -68,7 +68,7 @@ public class HttpQueryHeaderPostTest ext
)
.assertStatus(200)
//check for JSON-LD (the default content type
- .assertContentType("application/json")
+ .assertContentType("application/ld+json")
.assertContentRegexp("entity-reference\": \"http://dbpedia.org/resource/London\"",
"creator\": \"org.apache.stanbol.enhancer.engines.langdetect.LanguageDetectionEnhancementEngine\"",
"creator\": \"org.apache.stanbol.enhancer.engines.entitytagging.impl.NamedEntityTaggingEngine\"");
Modified: stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java
URL: http://svn.apache.org/viewvc/stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java?rev=1594122&r1=1594121&r2=1594122&view=diff
==============================================================================
--- stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java (original)
+++ stanbol/branches/release-0.12/integration-tests/src/test/java/org/apache/stanbol/enhancer/it/DefaultChainTest.java Tue May 13 04:33:49 2014
@@ -16,6 +16,8 @@
*/
package org.apache.stanbol.enhancer.it;
+import java.nio.charset.Charset;
+
import org.apache.stanbol.commons.testing.http.RequestDocumentor;
import org.junit.Test;
import org.slf4j.Logger;
@@ -26,6 +28,8 @@ public class DefaultChainTest extends En
private final Logger log = LoggerFactory.getLogger(DefaultChainTest.class);
+ protected final static Charset UTF8 = Charset.forName("UTF-8");
+
private final RequestDocumentor documentor = new RequestDocumentor(getClass().getName());
/**
* Contains values grouped by three elements: Accept header,
@@ -71,6 +75,7 @@ public class DefaultChainTest extends En
.withContent("The Stanbol enhancer can detect famous cities such as Paris and people such as Bob Marley.")
)
.assertStatus(200)
+ .assertCharset(UTF8.name())
.assertContentRegexp(
//check execution metadata
"http://stanbol.apache.org/ontology/enhancer/executionmetadata#executionPart",
@@ -109,6 +114,7 @@ public class DefaultChainTest extends En
.withContent("The Stanbol enhancer can detect famous cities such as Paris and people such as Bob Marley.")
)
.assertStatus(200)
+ .assertCharset(UTF8.name())
.assertContentRegexp(
"<http://fise.iks-project.eu/ontology/extracted-from> <"+uri+"> ."
);
@@ -123,6 +129,7 @@ public class DefaultChainTest extends En
.withContent("Nothing")
)
.assertStatus(200)
+ .assertCharset(UTF8.name())
.assertContentType(ACCEPT_FORMAT_TEST_DATA[i+1])
.assertContentRegexp(ACCEPT_FORMAT_TEST_DATA[i+2])
.generateDocumentation(documentor,