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 2011/09/30 06:21:23 UTC
svn commit: r1177503 - in /incubator/stanbol/trunk:
commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/processor/
commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/
enhancer/jersey/src/main/java/org/apache/stanb...
Author: rwesten
Date: Fri Sep 30 04:21:23 2011
New Revision: 1177503
URL: http://svn.apache.org/viewvc?rev=1177503&view=rev
Log:
Several Fixes related to STANBOL-329 (wrong Character encoding)
Corrected Bugs:
* FreeMakerViewProcessor: Added DefaultEncoding and OutputEncoding to the default configuration. Both is set to "urn-8"
* The OutputStreamWriter used to write the data generated by FreeMaker to the OutputStream of the HTTP response now uses "utf-8" instead of the platform default as charset.
* JsonLdSerializerProvider: Similar to the FreeMakerViewProcessor this Provider also was not defining "utf-8" as charset on the OutputStreamWriter and used therefore the Plattform specific encoding.
Improvements:
* All MessageBodyWriter of the "commons.web.base", "enhancer.jersey" and "entityhub.jersey" do no longer use the "@Produces" annotation but manually check the MediaType in the isWriteable(..) method. This is a requirement to allow the definition of the charset parameter in the "Content-Type" header of the response. Jersey does not support parameters to this header field and would therefore not match Content-Types that include the charset parameter with types defined by the "@Produces" header.
* All **Resource classes of the Entityhub now define the charset parameter in responses. For the Enhancer this changes are still commented. This is mainly to allow testing if the definition of the charset is a requirement. Because of JERSEY-318 the definition of the "Content-Type" parameter including the charset parameter must be done by manually setting the this header. The build in methods for setting the MediaType can not be used.
Still present potential issues:
* It need to be tested if the setting of the charset parameter for the "Content-Type" header of reposes is a requirement. To test the difference the charset parameter is currently used for the Entityhub and not used for the Enhancer.
* MessageBodyWriter need to get the charset parameter from the "Content-Type" header and use it to serialize responses. This is already done for XML and JSON responses, but not for all Clerezza based serializers because the interface of Clerezza does not support the definition of a charset.
* The changes mentioned here are only applied to the Entityhub, Enhancer and the common.web.* modules. Similar changes would be also needed for the other modules that define web interfaces
best
Rupert
Modified:
incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/processor/FreemarkerViewProcessor.java
incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java
incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JenaModelWriter.java
incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JsonLdSerializerProvider.java
incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/ResultSetWriter.java
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnginesRootResource.java
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/JettisonWriter.java
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/QueryResultListWriter.java
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/RepresentationWriter.java
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/SignWriter.java
Modified: incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/processor/FreemarkerViewProcessor.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/processor/FreemarkerViewProcessor.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/processor/FreemarkerViewProcessor.java (original)
+++ incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/processor/FreemarkerViewProcessor.java Fri Sep 30 04:21:23 2011
@@ -148,6 +148,8 @@ public class FreemarkerViewProcessor imp
// don't cache for more that 2s
config.setTemplateUpdateDelay(2);
+ config.setDefaultEncoding("utf-8");
+ config.setOutputEncoding("utf-8");
log.info("Assigned default freemarker configuration");
}
@@ -212,7 +214,7 @@ public class FreemarkerViewProcessor imp
// override custom variables if any
vars.putAll(getVariablesForTemplate(vars));
- final OutputStreamWriter writer = new OutputStreamWriter(out);
+ final OutputStreamWriter writer = new OutputStreamWriter(out,"utf-8");
try {
template.process(vars, writer);
} catch (Throwable t) {
Modified: incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java (original)
+++ incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/GraphWriter.java Fri Sep 30 04:21:23 2011
@@ -29,6 +29,9 @@ import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import javax.servlet.ServletContext;
import javax.ws.rs.Produces;
@@ -41,12 +44,26 @@ import javax.ws.rs.ext.Provider;
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.serializedform.Serializer;
+import org.apache.clerezza.rdf.core.serializedform.SupportedFormat;
import org.apache.stanbol.commons.web.base.ContextHelper;
@Provider
-@Produces({TEXT_PLAIN, N3, N_TRIPLE, RDF_XML, TURTLE, X_TURTLE, RDF_JSON, APPLICATION_JSON})
+//@Produces({TEXT_PLAIN, N3, N_TRIPLE, RDF_XML, TURTLE, X_TURTLE, RDF_JSON, APPLICATION_JSON})
public class GraphWriter implements MessageBodyWriter<TripleCollection> {
+ public static final Set<String> supportedMediaTypes;
+ static {
+ Set<String> types = new HashSet<String>();
+ types.add(TEXT_PLAIN);
+ types.add(N3);
+ types.add(N_TRIPLE);
+ types.add(RDF_XML);
+ types.add(TURTLE);
+ types.add(X_TURTLE);
+ types.add(RDF_JSON);
+ types.add(APPLICATION_JSON);
+ supportedMediaTypes = Collections.unmodifiableSet(types);
+ }
@Context
protected ServletContext servletContext;
@@ -57,7 +74,8 @@ public class GraphWriter implements Mess
public boolean isWriteable(Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
- return TripleCollection.class.isAssignableFrom(type);
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ return TripleCollection.class.isAssignableFrom(type) && supportedMediaTypes.contains(mediaTypeString);
}
public long getSize(TripleCollection t, Class<?> type, Type genericType,
@@ -70,11 +88,11 @@ public class GraphWriter implements Mess
MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException,
WebApplicationException {
-
- if (mediaType == null || mediaType.isWildcardType() || TEXT_PLAIN.equals(mediaType.toString())) {
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ if (mediaType.isWildcardType() || TEXT_PLAIN.equals(mediaTypeString)) {
getSerializer().serialize(entityStream, t, APPLICATION_JSON);
} else {
- getSerializer().serialize(entityStream, t, mediaType.toString());
+ getSerializer().serialize(entityStream, t, mediaTypeString);
}
}
}
Modified: incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JenaModelWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JenaModelWriter.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JenaModelWriter.java (original)
+++ incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JenaModelWriter.java Fri Sep 30 04:21:23 2011
@@ -20,6 +20,9 @@ import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
@@ -41,11 +44,17 @@ import com.hp.hpl.jena.rdf.model.Model;
@Provider
-@Produces({"application/rdf+xml", "application/xml", "text/xml"})
-
+//@Produces({"application/rdf+xml", "application/xml", "text/xml"})
public class JenaModelWriter implements MessageBodyWriter<Model> {
-
+ public static final Set<String> supportedMediaTypes;
+ static {
+ Set<String> types = new HashSet<String>();
+ types.add("application/rdf+xml");
+ types.add("application/xml");
+ types.add("text/xml");
+ supportedMediaTypes = Collections.unmodifiableSet(types);
+ }
public static final String ENCODING = "UTF-8";
@@ -55,24 +64,27 @@ public class JenaModelWriter implements
}
public boolean isWriteable(Class<?> arg0, Type arg1, Annotation[] arg2,
- MediaType arg3) {
-
- return Model.class.isAssignableFrom(arg0);
+ MediaType mediaType) {
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ return Model.class.isAssignableFrom(arg0) && supportedMediaTypes.contains(mediaTypeString);
}
public void writeTo(Model model, Class<?> arg1, Type arg2,
- Annotation[] arg3, MediaType arg4,
+ Annotation[] arg3, MediaType mediaType,
MultivaluedMap<String, Object> arg5, OutputStream outputStream)
throws IOException, WebApplicationException {
Document doc = null;
-
+ String encoding = mediaType.getParameters().get("charset");
+ if(encoding == null){
+ encoding = ENCODING;
+ }
try {
doc = new JenaModelTransformer().toDocument(model);
DOMSource domSource = new DOMSource(doc);
StreamResult streamResult = new StreamResult(outputStream);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
- serializer.setOutputProperty(OutputKeys.ENCODING,ENCODING);
+ serializer.setOutputProperty(OutputKeys.ENCODING,encoding);
serializer.setOutputProperty(OutputKeys.INDENT,"yes");
serializer.transform(domSource, streamResult);
} catch(TransformerException te) {
Modified: incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JsonLdSerializerProvider.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JsonLdSerializerProvider.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JsonLdSerializerProvider.java (original)
+++ incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/JsonLdSerializerProvider.java Fri Sep 30 04:21:23 2011
@@ -113,7 +113,7 @@ public class JsonLdSerializerProvider im
}
try {
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(serializedGraph));
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(serializedGraph,"utf-8"));
jsonLd.setUseTypeCoercion(this.useTypeCoercion);
writer.write(jsonLd.toString(this.indentation));
writer.flush();
Modified: incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/ResultSetWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/ResultSetWriter.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/ResultSetWriter.java (original)
+++ incubator/stanbol/trunk/commons/web/base/src/main/java/org/apache/stanbol/commons/web/base/writers/ResultSetWriter.java Fri Sep 30 04:21:23 2011
@@ -16,10 +16,22 @@
*/
package org.apache.stanbol.commons.web.base.writers;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.N3;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.N_TRIPLE;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.RDF_JSON;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.RDF_XML;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.TURTLE;
+import static org.apache.clerezza.rdf.core.serializedform.SupportedFormat.X_TURTLE;
+
import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
@@ -44,8 +56,16 @@ import org.w3c.dom.Document;
* quite a lot of Clerezza dependencies that we don't really need.
*/
@Provider
-@Produces({"application/sparql-results+xml", "application/xml", "text/xml"})
+//@Produces({"application/sparql-results+xml", "application/xml", "text/xml"})
public class ResultSetWriter implements MessageBodyWriter<ResultSet> {
+ public static final Set<String> supportedMediaTypes;
+ static {
+ Set<String> types = new HashSet<String>();
+ types.add("application/sparql-results+xml");
+ types.add("application/xml");
+ types.add("text/xml");
+ supportedMediaTypes = Collections.unmodifiableSet(types);
+ }
public static final String ENCODING = "UTF-8";
@@ -57,7 +77,8 @@ public class ResultSetWriter implements
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return ResultSet.class.isAssignableFrom(type);
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ return ResultSet.class.isAssignableFrom(type) && supportedMediaTypes.contains(mediaTypeString);
}
@Override
@@ -65,14 +86,17 @@ public class ResultSetWriter implements
Annotation[] annotations, MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
throws IOException, WebApplicationException {
-
+ String encoding = mediaType.getParameters().get("charset");
+ if(encoding == null){
+ encoding = ENCODING;
+ }
try {
Document doc = new ResultSetToXml().toDocument(resultSet);
DOMSource domSource = new DOMSource(doc);
StreamResult streamResult = new StreamResult(entityStream);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
- serializer.setOutputProperty(OutputKeys.ENCODING,ENCODING);
+ serializer.setOutputProperty(OutputKeys.ENCODING,encoding);
serializer.setOutputProperty(OutputKeys.INDENT,"yes");
serializer.transform(domSource, streamResult);
} catch(TransformerException te) {
Modified: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java (original)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java Fri Sep 30 04:21:23 2011
@@ -25,6 +25,7 @@ import static org.apache.stanbol.enhance
import static org.apache.stanbol.enhancer.servicesapi.rdf.Properties.GEO_LONG;
import static org.apache.stanbol.enhancer.servicesapi.rdf.Properties.NIE_PLAINTEXTCONTENT;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
@@ -41,6 +42,7 @@ import java.util.TreeMap;
import javax.servlet.ServletContext;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
@@ -67,6 +69,7 @@ import org.apache.clerezza.rdf.core.spar
import org.apache.clerezza.rdf.core.sparql.query.SelectQuery;
import org.apache.clerezza.rdf.utils.GraphNode;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
import org.apache.stanbol.enhancer.servicesapi.ContentItem;
import org.apache.stanbol.enhancer.servicesapi.rdf.Properties;
@@ -513,13 +516,17 @@ public class ContentItemResource extends
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
serializer.serialize(out, g, SupportedFormat.RDF_JSON);
- return out.toString("utf-8");
+
+ String rdfString = out.toString("utf-8");
+ return rdfString;
}
@GET
@Produces(TEXT_HTML)
public Response get() {
- return Response.ok(new Viewable("index", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("index", this),TEXT_HTML).build();
+// return Response.ok(new Viewable("index", this))
+// .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
}
Modified: incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnginesRootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnginesRootResource.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnginesRootResource.java (original)
+++ incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/EnginesRootResource.java Fri Sep 30 04:21:23 2011
@@ -98,7 +98,9 @@ public class EnginesRootResource extends
@GET
@Produces(TEXT_HTML)
public Response get() {
- return Response.ok(new Viewable("index", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("index", this),TEXT_HTML).build();
+// return Response.ok(new Viewable("index", this))
+// .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
public List<EnhancementEngine> getActiveEngines() {
@@ -185,19 +187,27 @@ public class EnginesRootResource extends
tcManager, serializer, servletContext);
contentItemResource.setRdfSerializationFormat(format);
Viewable ajaxView = new Viewable("/ajax/contentitem", contentItemResource);
- return Response.ok(ajaxView).type(TEXT_HTML).build();
+ return Response.ok(ajaxView,TEXT_HTML).build();
+// return Response.ok(ajaxView)
+// .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=UTF-8").build();
}
if (format != null) {
// force mimetype from form params
- return Response.ok(graph, format).build();
+ return Response.ok(graph,format).build();
+// return Response.ok(graph)
+// .header(HttpHeaders.CONTENT_TYPE, format+"; charset=UTF-8").build();
}
if (headers.getAcceptableMediaTypes().contains(APPLICATION_JSON_TYPE)) {
// force RDF JSON media type (TODO: move this logic
- return Response.ok(graph, RDF_JSON).build();
+ return Response.ok(graph,RDF_JSON).build();
+// return Response.ok(graph)
+// .header(HttpHeaders.CONTENT_TYPE, RDF_JSON+"; charset=UTF-8").build();
} else if (headers.getAcceptableMediaTypes().isEmpty()) {
// use RDF/XML as default format to keep compat with OpenCalais
// clients
- return Response.ok(graph, RDF_XML).build();
+ return Response.ok(graph,RDF_XML).build();
+// return Response.ok(graph)
+// .header(HttpHeaders.CONTENT_TYPE, RDF_XML+"; charset=UTF-8").build();
}
// traditional response lookup
Modified: incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java (original)
+++ incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java Fri Sep 30 04:21:23 2011
@@ -112,7 +112,8 @@ public class EntityhubRootResource exten
@GET
@Produces(TEXT_HTML)
public Response get() {
- return Response.ok(new Viewable("index", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("index", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
@GET
@@ -127,7 +128,8 @@ public class EntityhubRootResource exten
APPLICATION_JSON_TYPE);
if(acceptedMediaType.isCompatible(TEXT_HTML_TYPE) && symbolId == null){
//return HTML docu
- return Response.ok(new Viewable("entity", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("entity", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
if (symbolId == null || symbolId.isEmpty()) {
// TODO: how to parse an error message
@@ -143,7 +145,8 @@ public class EntityhubRootResource exten
if (entity == null) {
throw new WebApplicationException(NOT_FOUND);
} else {
- return Response.ok(entity, acceptedMediaType).build();
+ return Response.ok(entity)
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
}
@@ -162,7 +165,8 @@ public class EntityhubRootResource exten
APPLICATION_JSON_TYPE);
if(acceptedMediaType.isCompatible(TEXT_HTML_TYPE) && reference == null){
//return docu
- return Response.ok(new Viewable("lookup", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("lookup", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
if (reference == null || reference.isEmpty()) {
// TODO: how to parse an error message
@@ -179,7 +183,8 @@ public class EntityhubRootResource exten
return Response.status(Status.NOT_FOUND).entity("No symbol found for '" + reference + "'.")
.header(HttpHeaders.ACCEPT, acceptedMediaType).build();
} else {
- return Response.ok(entity, acceptedMediaType).build();
+ return Response.ok(entity)
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
}
}
@@ -243,7 +248,8 @@ public class EntityhubRootResource exten
"parsed id "+id+" is not managed by the Entityhub")
.header(HttpHeaders.ACCEPT, accepted).build();
} else {
- return Response.ok(entity,accepted).build();
+ return Response.ok(entity)
+ .header(HttpHeaders.CONTENT_TYPE, accepted+"; charset=utf-8").build();
}
}
/**
@@ -334,7 +340,8 @@ public class EntityhubRootResource exten
} else {
//return Response.noContent().build();
//As alternative return the modified entity
- return Response.ok(entity, accepted).build();
+ return Response.ok(entity)
+ .header(HttpHeaders.CONTENT_TYPE, accepted+"; charset=utf-8").build();
}
// if (updated.size() == 1){
@@ -386,7 +393,8 @@ public class EntityhubRootResource exten
if(name == null || name.isEmpty()){
if(acceptedMediaType.isCompatible(TEXT_HTML_TYPE)){
//return HTML docu
- return Response.ok(new Viewable("find", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("find", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST)
.entity("The name must not be null nor empty for find requests. Missing parameter name.\n")
@@ -423,7 +431,8 @@ public class EntityhubRootResource exten
@GET
@Path("/query")
public Response getQueryDocumentation(){
- return Response.ok(new Viewable("query", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("query", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
/**
* Allows to parse any kind of {@link FieldQuery} in its JSON Representation.
@@ -461,7 +470,8 @@ public class EntityhubRootResource exten
private Response executeQuery(FieldQuery query, MediaType acceptedMediaType) throws WebApplicationException {
Entityhub entityhub = ContextHelper.getServiceFromContext(Entityhub.class, context);
try {
- return Response.ok(entityhub.find(query), acceptedMediaType).build();
+ return Response.ok(entityhub.find(query))
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
} catch (EntityhubException e) {
log.error("Exception while performing the FieldQuery on the EntityHub", e);
log.error("Query:\n" + query);
@@ -489,7 +499,8 @@ public class EntityhubRootResource exten
if (reference == null || reference.isEmpty()) {
//if HTML -> print the docu of the restfull service
if(TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
- return Response.ok(new Viewable("mapping", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("mapping", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST).entity("The mapping id (URI) is missing.\n").header(
HttpHeaders.ACCEPT, acceptedMediaType).build();
@@ -507,7 +518,8 @@ public class EntityhubRootResource exten
return Response.status(Status.NOT_FOUND).entity("No mapping found for '" + reference + "'.\n")
.header(HttpHeaders.ACCEPT, acceptedMediaType).build();
} else {
- return Response.ok(mapping, acceptedMediaType).build();
+ return Response.ok(mapping)
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
}
// see NOTE to RESTful Service Documentation in the header
@@ -515,7 +527,8 @@ public class EntityhubRootResource exten
// @Path("/entity")
// @Produces(MediaType.TEXT_HTML)
// public Response getEntityMappingPage() {
-// return Response.ok(new Viewable("entity", this), TEXT_HTML).build();
+// return Response.ok(new Viewable("entity", this))
+// .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
// }
@GET
@@ -534,7 +547,8 @@ public class EntityhubRootResource exten
if (entity == null || entity.isEmpty()) {
//if HTML -> print the docu of the restfull service
if(TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
- return Response.ok(new Viewable("mapping_entity", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("mapping_entity", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST).entity("No entity given. Missing parameter id.\n")
.header(HttpHeaders.ACCEPT, acceptedMediaType).build();
@@ -552,7 +566,8 @@ public class EntityhubRootResource exten
return Response.status(Status.NOT_FOUND).entity("No mapping found for entity '" + entity + "'.\n")
.header(HttpHeaders.ACCEPT, acceptedMediaType).build();
} else {
- return Response.ok(mapping, acceptedMediaType).build();
+ return Response.ok(mapping)
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
}
// see NOTE to RESTful Service Documentation in the header
@@ -560,7 +575,8 @@ public class EntityhubRootResource exten
// @Path("mapping/symbol")
// @Produces(MediaType.TEXT_HTML)
// public Response getSymbolMappingPage() {
-// return Response.ok(new Viewable("symbol", this), TEXT_HTML).build();
+// return Response.ok(new Viewable("symbol", this))
+// .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
// }
@GET
@@ -579,7 +595,8 @@ public class EntityhubRootResource exten
if (symbol == null || symbol.isEmpty()) {
//if HTML -> print the docu of the restfull service
if(TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
- return Response.ok(new Viewable("mapping_symbol", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("mapping_symbol", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST).entity("No symbol given. Missing parameter id.\n")
.header(HttpHeaders.ACCEPT, acceptedMediaType).build();
@@ -600,7 +617,8 @@ public class EntityhubRootResource exten
// For now use a pseudo QueryResultList
QueryResultList<Entity> mappingResultList = new QueryResultListImpl<Entity>(null,
mappings, Entity.class);
- return Response.ok(mappingResultList, acceptedMediaType).build();
+ return Response.ok(mappingResultList)
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
}
}
Modified: incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java (original)
+++ incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java Fri Sep 30 04:21:23 2011
@@ -143,7 +143,8 @@ public class ReferencedSiteRootResource
@GET
@Produces(value=MediaType.TEXT_HTML)
public Response getHtmlInfo(){
- return Response.ok(new Viewable("index", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("index", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
/**
* Provides metadata about this referenced site as representation
@@ -156,7 +157,8 @@ public class ReferencedSiteRootResource
public Response getInfo(@Context HttpHeaders headers,
@Context UriInfo uriInfo) {
MediaType acceptedMediaType = JerseyUtils.getAcceptableMediaType(headers, REPRESENTATION_SUPPORTED_MEDIA_TYPES,MediaType.APPLICATION_JSON_TYPE);
- return Response.ok(site2Representation(uriInfo.getAbsolutePath().toString()), acceptedMediaType).build();
+ return Response.ok(site2Representation(uriInfo.getAbsolutePath().toString()))
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
@GET
@Path(value=ReferencedSiteRootResource.LICENSE_PATH+"/{name}")
@@ -179,7 +181,8 @@ public class ReferencedSiteRootResource
count++;
}
if(Integer.toString(count).equals(numberString)){
- return Response.ok(license2Representation(uriInfo.getAbsolutePath().toString(),license),acceptedMediaType).build();
+ return Response.ok(license2Representation(uriInfo.getAbsolutePath().toString(),license))
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
}
}
@@ -214,7 +217,8 @@ public class ReferencedSiteRootResource
supported, MediaType.APPLICATION_JSON_TYPE);
if (id == null || id.isEmpty()) {
if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
- return Response.ok(new Viewable("entity", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("entity", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST)
.entity("No or empty ID was parsed. Missing parameter id.\n")
@@ -231,7 +235,8 @@ public class ReferencedSiteRootResource
throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR);
}
if (entity != null) {
- return Response.ok(entity, acceptedMediaType).build();
+ return Response.ok(entity)
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
} else {
// TODO: How to parse an ErrorMessage?
// create an Response with the the Error?
@@ -272,7 +277,8 @@ public class ReferencedSiteRootResource
headers, supported, MediaType.APPLICATION_JSON_TYPE);
if(name == null || name.isEmpty()){
if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
- return Response.ok(new Viewable("find", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("find", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST)
.entity("The name must not be null nor empty for find requests. Missing parameter name.\n")
@@ -317,7 +323,8 @@ public class ReferencedSiteRootResource
@Path("/query")
@Produces(TEXT_HTML)
public Response getQueryDocumentation(){
- return Response.ok(new Viewable("query", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("query", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
/**
@@ -332,7 +339,8 @@ public class ReferencedSiteRootResource
*/
private Response executeQuery(FieldQuery query, MediaType mediaType) throws WebApplicationException {
try {
- return Response.ok(site.find(query), mediaType).build();
+ return Response.ok(site.find(query))
+ .header(HttpHeaders.CONTENT_TYPE, mediaType+"; charset=utf-8").build();
} catch (ReferencedSiteException e) {
log.error("ReferencedSiteException while accessing Site " +
site.getConfiguration().getName() + " (id="
Modified: incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java (original)
+++ incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java Fri Sep 30 04:21:23 2011
@@ -93,7 +93,8 @@ public class SiteManagerRootResource ext
@GET
@Produces(MediaType.TEXT_HTML)
public Response getSitesPage() {
- return Response.ok(new Viewable("index", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("index", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
// removed to allow request with Accept headers other than text/html to return
@@ -102,7 +103,8 @@ public class SiteManagerRootResource ext
// @Path("/referenced")
// @Produces(MediaType.TEXT_HTML)
// public Response getReferencedSitesPage() {
-// return Response.ok(new Viewable("referenced", this), TEXT_HTML).build();
+// return Response.ok(new Viewable("referenced", this))
+// .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
// }
/**
@@ -119,7 +121,8 @@ public class SiteManagerRootResource ext
Arrays.asList(MediaType.APPLICATION_JSON,MediaType.TEXT_HTML) ,
MediaType.APPLICATION_JSON_TYPE);
if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptable)){
- return Response.ok(new Viewable("referenced", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("referenced", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
JSONArray referencedSites = new JSONArray();
ReferencedSiteManager referencedSiteManager = ContextHelper.getServiceFromContext(
@@ -127,7 +130,8 @@ public class SiteManagerRootResource ext
for (String site : referencedSiteManager.getReferencedSiteIds()) {
referencedSites.put(String.format("%sentityhub/site/%s/", uriInfo.getBaseUri(), site));
}
- return Response.ok(referencedSites,acceptable).build();
+ return Response.ok(referencedSites)
+ .header(HttpHeaders.CONTENT_TYPE, acceptable+"; charset=utf-8").build();
}
}
@@ -152,7 +156,8 @@ public class SiteManagerRootResource ext
headers, supported, MediaType.APPLICATION_JSON_TYPE);
if (id == null || id.isEmpty()) {
if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
- return Response.ok(new Viewable("entity", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("entity", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST)
.entity("No or empty ID was parsed. Missing parameter id.\n")
@@ -169,7 +174,8 @@ public class SiteManagerRootResource ext
// throw new WebApplicationException(e, Response.Status.INTERNAL_SERVER_ERROR);
// }
if (sign != null) {
- return Response.ok(sign, acceptedMediaType).build();
+ return Response.ok(sign)
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
} else {
// TODO: How to parse an ErrorMessage?
// create an Response with the the Error?
@@ -184,7 +190,8 @@ public class SiteManagerRootResource ext
// @Path("/find")
// @Produces(MediaType.TEXT_HTML)
// public Response getFindPage() {
-// return Response.ok(new Viewable("find", this), TEXT_HTML).build();
+// return Response.ok(new Viewable("find", this))
+// .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
// }
@GET
@@ -215,7 +222,8 @@ public class SiteManagerRootResource ext
headers, supported, MediaType.APPLICATION_JSON_TYPE);
if(name == null || name.isEmpty()){
if(MediaType.TEXT_HTML_TYPE.isCompatible(acceptedMediaType)){
- return Response.ok(new Viewable("find", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("find", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
} else {
return Response.status(Status.BAD_REQUEST)
.entity("The name must not be null nor empty for find requests. Missing parameter name.\n")
@@ -234,12 +242,14 @@ public class SiteManagerRootResource ext
ReferencedSiteManager.class, context);
FieldQuery query = JerseyUtils.createFieldQueryForFindRequest(name, field, language,
limit == null || limit < 1 ? DEFAULT_FIND_RESULT_LIMIT : limit, offset);
- return Response.ok(referencedSiteManager.find(query), acceptedMediaType).build();
+ return Response.ok(referencedSiteManager.find(query))
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
@GET
@Path("/query")
public Response getQueryDocumentation(){
- return Response.ok(new Viewable("query", this), TEXT_HTML).build();
+ return Response.ok(new Viewable("query", this))
+ .header(HttpHeaders.CONTENT_TYPE, TEXT_HTML+"; charset=utf-8").build();
}
/**
* Allows to parse any kind of {@link FieldQuery} in its JSON Representation.
@@ -276,7 +286,8 @@ public class SiteManagerRootResource ext
.header(HttpHeaders.ACCEPT, acceptedMediaType).build();
}
} else {
- return Response.ok(referencedSiteManager.find(query), acceptedMediaType).build();
+ return Response.ok(referencedSiteManager.find(query))
+ .header(HttpHeaders.CONTENT_TYPE, acceptedMediaType+"; charset=utf-8").build();
}
}
Modified: incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/JettisonWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/JettisonWriter.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/JettisonWriter.java (original)
+++ incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/JettisonWriter.java Fri Sep 30 04:21:23 2011
@@ -22,6 +22,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
@@ -31,6 +32,8 @@ import org.codehaus.jettison.json.JSONOb
public class JettisonWriter implements MessageBodyWriter<Object> {
+ public static final String DEFAULT_ENCODING = "UTF-8";
+
@Override
public long getSize(Object result, Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
@@ -48,7 +51,11 @@ public class JettisonWriter implements M
Annotation[] annotations, MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
throws IOException, WebApplicationException {
- entityStream.write(value.toString().getBytes("UTF-8"));
+ String encoding = mediaType.getParameters().get("charset");
+ if(encoding == null){
+ encoding = DEFAULT_ENCODING;
+ }
+ entityStream.write(value.toString().getBytes(encoding));
}
}
Modified: incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/QueryResultListWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/QueryResultListWriter.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/QueryResultListWriter.java (original)
+++ incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/QueryResultListWriter.java Fri Sep 30 04:21:23 2011
@@ -29,6 +29,9 @@ import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import javax.servlet.ServletContext;
import javax.ws.rs.Produces;
@@ -51,14 +54,30 @@ import org.codehaus.jettison.json.JSONOb
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import scala.actors.threadpool.Arrays;
+
/**
* TODO: Replace with Serializer infrastructure similar to {@link Serializer}
*/
@Provider
-@Produces({APPLICATION_JSON, N3, N_TRIPLE, RDF_XML, TURTLE, X_TURTLE, RDF_JSON})
+//@Produces({APPLICATION_JSON, N3, N_TRIPLE, RDF_XML, TURTLE, X_TURTLE, RDF_JSON})
public class QueryResultListWriter implements MessageBodyWriter<QueryResultList<?>> {
+ protected static final Set<String> produces;
+ static {
+ Set<String> p = new HashSet<String>();
+ p.add(APPLICATION_JSON);
+ p.add(N3);
+ p.add(N_TRIPLE);
+ p.add(RDF_XML);
+ p.add(TURTLE);
+ p.add(X_TURTLE);
+ p.add(RDF_JSON);
+ produces = Collections.unmodifiableSet(p);
+ }
+ public static final String DEFAULT_ENCODING = "UTF-8";
+
@SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(QueryResultListWriter.class);
@@ -76,24 +95,31 @@ public class QueryResultListWriter imple
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return QueryResultList.class.isAssignableFrom(type);
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ return QueryResultList.class.isAssignableFrom(type) &&
+ produces.contains(mediaTypeString);
+
}
@Override
public void writeTo(QueryResultList<?> resultList, Class<?> doNotUse, Type genericType,
Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
-// Class<?> genericClass = (Class<?>) genericType;
- if (APPLICATION_JSON.equals(mediaType.toString())) {
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ String encoding = mediaType.getParameters().get("charset");
+ if(encoding == null){
+ encoding = DEFAULT_ENCODING;
+ }
+ if (APPLICATION_JSON.equals(mediaTypeString)) {
try {
- IOUtils.write(QueryResultsToJSON.toJSON(resultList).toString(4), entityStream,"UTF-8");
+ IOUtils.write(QueryResultsToJSON.toJSON(resultList).toString(4), entityStream,encoding);
} catch (JSONException e) {
throw new WebApplicationException(e, INTERNAL_SERVER_ERROR);
}
} else { //RDF
MGraph resultGraph = QueryResultsToRDF.toRDF(resultList);
addFieldQuery(resultList.getQuery(),resultGraph);
- getSerializer().serialize(entityStream, resultGraph, mediaType.toString());
+ getSerializer().serialize(entityStream, resultGraph, mediaTypeString);
}
}
private void addFieldQuery(FieldQuery query, MGraph resultGraph) {
Modified: incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/RepresentationWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/RepresentationWriter.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/RepresentationWriter.java (original)
+++ incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/RepresentationWriter.java Fri Sep 30 04:21:23 2011
@@ -42,9 +42,9 @@ import org.apache.stanbol.entityhub.serv
import org.codehaus.jettison.json.JSONException;
@Provider
-@Produces( {MediaType.APPLICATION_JSON, SupportedFormat.N3, SupportedFormat.N_TRIPLE,
- SupportedFormat.RDF_XML, SupportedFormat.TURTLE, SupportedFormat.X_TURTLE,
- SupportedFormat.RDF_JSON})
+//@Produces( {MediaType.APPLICATION_JSON, SupportedFormat.N3, SupportedFormat.N_TRIPLE,
+// SupportedFormat.RDF_XML, SupportedFormat.TURTLE, SupportedFormat.X_TURTLE,
+// SupportedFormat.RDF_JSON})
public class RepresentationWriter implements MessageBodyWriter<Representation> {
public static final Set<String> supportedMediaTypes;
@@ -59,6 +59,7 @@ public class RepresentationWriter implem
types.add(SupportedFormat.X_TURTLE);
supportedMediaTypes = Collections.unmodifiableSet(types);
}
+ public static final String DEFAULT_ENCODING = "UTF-8";
@Context
protected ServletContext servletContext;
@@ -73,7 +74,8 @@ public class RepresentationWriter implem
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return Representation.class.isAssignableFrom(type) && supportedMediaTypes.contains(mediaType.toString());
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ return Representation.class.isAssignableFrom(type) && supportedMediaTypes.contains(mediaTypeString);
}
@Override
@@ -84,15 +86,20 @@ public class RepresentationWriter implem
MediaType mediaType,
MultivaluedMap<String,Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
- if (mediaType == null || MediaType.APPLICATION_JSON.equals(mediaType.toString())) {
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ String encoding = mediaType.getParameters().get("charset");
+ if(encoding == null){
+ encoding = DEFAULT_ENCODING;
+ }
+ if (MediaType.APPLICATION_JSON.equals(mediaTypeString)) {
try {
- IOUtils.write(EntityToJSON.toJSON(rep).toString(4), entityStream);
+ IOUtils.write(EntityToJSON.toJSON(rep).toString(4), entityStream,encoding);
} catch (JSONException e) {
throw new WebApplicationException(e, Status.INTERNAL_SERVER_ERROR);
}
} else { // RDF
Serializer ser = ContextHelper.getServiceFromContext(Serializer.class, servletContext);
- ser.serialize(entityStream, EntityToRDF.toRDF(rep), mediaType.toString());
+ ser.serialize(entityStream, EntityToRDF.toRDF(rep), mediaTypeString);
}
}
Modified: incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/SignWriter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/SignWriter.java?rev=1177503&r1=1177502&r2=1177503&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/SignWriter.java (original)
+++ incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/writers/SignWriter.java Fri Sep 30 04:21:23 2011
@@ -49,9 +49,9 @@ import org.codehaus.jettison.json.JSONEx
*
*/
@Provider
-@Produces( {MediaType.APPLICATION_JSON, SupportedFormat.N3, SupportedFormat.N_TRIPLE,
- SupportedFormat.RDF_XML, SupportedFormat.TURTLE, SupportedFormat.X_TURTLE,
- SupportedFormat.RDF_JSON})
+//@Produces( {MediaType.APPLICATION_JSON, SupportedFormat.N3, SupportedFormat.N_TRIPLE,
+// SupportedFormat.RDF_XML, SupportedFormat.TURTLE, SupportedFormat.X_TURTLE,
+// SupportedFormat.RDF_JSON})
public class SignWriter implements MessageBodyWriter<Entity> {
public static final Set<String> supportedMediaTypes;
@@ -66,6 +66,7 @@ public class SignWriter implements Messa
types.add(SupportedFormat.X_TURTLE);
supportedMediaTypes = Collections.unmodifiableSet(types);
}
+ public static final String DEFAULT_ENCODING = "UTF-8";
@Context
protected ServletContext servletContext;
@@ -85,7 +86,8 @@ public class SignWriter implements Messa
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return Entity.class.isAssignableFrom(type) && supportedMediaTypes.contains(mediaType.toString());
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ return Entity.class.isAssignableFrom(type) && supportedMediaTypes.contains(mediaTypeString);
}
@Override
@@ -96,14 +98,19 @@ public class SignWriter implements Messa
MediaType mediaType,
MultivaluedMap<String,Object> httpHeaders,
OutputStream entityStream) throws IOException, WebApplicationException {
- if (mediaType == null || MediaType.APPLICATION_JSON.equals(mediaType.toString())) {
+ String mediaTypeString = mediaType.getType()+'/'+mediaType.getSubtype();
+ String encoding = mediaType.getParameters().get("charset");
+ if(encoding == null){
+ encoding = DEFAULT_ENCODING;
+ }
+ if (MediaType.APPLICATION_JSON.equals(mediaTypeString)) {
try {
- IOUtils.write(EntityToJSON.toJSON(sign).toString(4), entityStream);
+ IOUtils.write(EntityToJSON.toJSON(sign).toString(4), entityStream,encoding);
} catch (JSONException e) {
throw new WebApplicationException(e, Status.INTERNAL_SERVER_ERROR);
}
} else { // RDF
- getSerializer().serialize(entityStream, EntityToRDF.toRDF(sign), mediaType.toString());
+ getSerializer().serialize(entityStream, EntityToRDF.toRDF(sign), mediaTypeString);
}
}