From 9e12f2e0aa07e7fb09bcd6f5a22a000911d5ab27 Mon Sep 17 00:00:00 2001 From: Andrey Bratus Date: Mon, 26 Sep 2016 18:03:16 +0200 Subject: [PATCH] fix encoding parsing in transformer client --- .../transformer/BatchRefineTransformer.java | 11 ++++++----- .../batchrefine/transformer/TestSupport.java | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/clients/clients-transformer/src/main/java/eu/spaziodati/batchrefine/transformer/BatchRefineTransformer.java b/clients/clients-transformer/src/main/java/eu/spaziodati/batchrefine/transformer/BatchRefineTransformer.java index 544d409..7a6cf2e 100644 --- a/clients/clients-transformer/src/main/java/eu/spaziodati/batchrefine/transformer/BatchRefineTransformer.java +++ b/clients/clients-transformer/src/main/java/eu/spaziodati/batchrefine/transformer/BatchRefineTransformer.java @@ -1,13 +1,10 @@ package eu.spaziodati.batchrefine.transformer; import com.google.refine.util.ParsingUtilities; - - import eu.fusepool.p3.accept.util.AcceptPreference; import eu.fusepool.p3.transformer.HttpRequestEntity; import eu.fusepool.p3.transformer.Transformer; import eu.fusepool.p3.transformer.commons.Entity; - import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.http.HttpEntity; @@ -18,13 +15,13 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.log4j.Logger; +import org.eclipse.jetty.http.MimeTypes; import org.json.JSONArray; import org.json.JSONObject; import javax.activation.MimeType; import javax.activation.MimeTypeParseException; import javax.servlet.http.HttpServletRequest; - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -115,7 +112,11 @@ protected JSONArray fetchTransform(HttpRequestEntity request) + transformURI + "."); } - String encoding = request.getRequest().getCharacterEncoding(); + String encoding = null; + if (responseEntity.getContentType() != null) { + encoding = MimeTypes.getCharsetFromContentType(responseEntity.getContentType().getValue()); + } + String transform = IOUtils.toString(responseEntity.getContent(), encoding == null ? "UTF-8" : encoding); diff --git a/clients/clients-transformer/src/test/java/eu/spaziodati/batchrefine/transformer/TestSupport.java b/clients/clients-transformer/src/test/java/eu/spaziodati/batchrefine/transformer/TestSupport.java index c15de41..853b2f1 100644 --- a/clients/clients-transformer/src/test/java/eu/spaziodati/batchrefine/transformer/TestSupport.java +++ b/clients/clients-transformer/src/test/java/eu/spaziodati/batchrefine/transformer/TestSupport.java @@ -4,6 +4,7 @@ import eu.fusepool.p3.transformer.Transformer; import eu.fusepool.p3.transformer.server.TransformerServer; import eu.spaziodati.batchrefine.java.EngineTest; +import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerList; @@ -52,6 +53,9 @@ private int startTransformServer() throws Exception { Server fileServer = new Server(port); ResourceHandler handler = new ResourceHandler(); + MimeTypes mimeTypes = handler.getMimeTypes(); + mimeTypes.addMimeMapping("json", "application/json; charset=UTF-8"); + handler.setDirectoriesListed(true); handler.setBaseResource(JarResource.newResource(transforms));