Juan Hernandez has uploaded a new change for review. Change subject: sdk: Always use UTF-8 for enconding text ......................................................................
sdk: Always use UTF-8 for enconding text Currently there are several places in the SDK where XML documents are converted to text without specifying the character set to use. In this situation the underlying HTTP library will select a character set that may not match the character set declared in the header of the XML document, resulting in incorrectly encoded documents. To solve this issue this patch changes the SDK so that it always specify explicitly the UTF-8 character set, when generating the XML documents and when encoding them. Change-Id: I560e3b96756ec1ffa1bf0169ba116edc18fa9844 Bug-Url: https://bugzilla.redhat.com/1223186 Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com> --- M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/HttpResponseHelper.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/SerializationHelper.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/StringUtils.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java 4 files changed, 13 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-sdk-java refs/changes/41/41141/1 diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/HttpResponseHelper.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/HttpResponseHelper.java index 0dfa2e5..f13a0f0 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/HttpResponseHelper.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/HttpResponseHelper.java @@ -23,7 +23,7 @@ */ public static synchronized String getEntity(HttpEntity entity) throws ParseException, IOException { if (entity != null) { - return EntityUtils.toString(entity); + return EntityUtils.toString(entity, StringUtils.UTF8); } else { return null; } diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/SerializationHelper.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/SerializationHelper.java index 018cd67..dab6912 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/SerializationHelper.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/SerializationHelper.java @@ -220,6 +220,7 @@ if (marshaller == null) { marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + marshaller.setProperty(Marshaller.JAXB_ENCODING, StringUtils.UTF8.toString()); } return marshaller; } diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/StringUtils.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/StringUtils.java index f8b4788..6a5375b 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/StringUtils.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/utils/StringUtils.java @@ -16,8 +16,15 @@ package org.ovirt.engine.sdk.utils; +import java.nio.charset.Charset; + public class StringUtils { /** + * Reference to the UTF-8 charset used to avoid looking it up every time it is needed. + */ + public static final Charset UTF8 = Charset.forName("UTF-8"); + + /** * Removes trailing and leading brackets from the string * * @param txt diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java index 1789412..443155f 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java @@ -30,6 +30,7 @@ import org.ovirt.engine.sdk.exceptions.ServerException; import org.ovirt.engine.sdk.mapping.Mapper; import org.ovirt.engine.sdk.utils.SerializationHelper; +import org.ovirt.engine.sdk.utils.StringUtils; import org.ovirt.engine.sdk.utils.UrlHelper; /** @@ -98,7 +99,7 @@ HttpPut httpput = new HttpPut(this.urlHelper.combine(url)); String xmlReq = SerializationHelper.marshall(from, entity); - HttpEntity httpentity = new StringEntity(xmlReq); + HttpEntity httpentity = new StringEntity(xmlReq, StringUtils.UTF8); httpput.setEntity(httpentity); String xmlRes = this.proxy.execute(httpput, headers, null); @@ -203,7 +204,7 @@ HttpPost httpost = new HttpPost(this.urlHelper.combine(url)); String xmlReq = SerializationHelper.marshall(from, entity); - HttpEntity httpentity = new StringEntity(xmlReq); + HttpEntity httpentity = new StringEntity(xmlReq, StringUtils.UTF8); httpost.setEntity(httpentity); String xmlRes = this.proxy.execute(httpost, headers, null); @@ -300,7 +301,7 @@ if (entity != null && from != null) { String xmlReq = SerializationHelper.marshall(from, entity); - HttpEntity httpentity = new StringEntity(xmlReq); + HttpEntity httpentity = new StringEntity(xmlReq, StringUtils.UTF8); httdelete.setEntity(httpentity); } -- To view, visit https://gerrit.ovirt.org/41141 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I560e3b96756ec1ffa1bf0169ba116edc18fa9844 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine-sdk-java Gerrit-Branch: sdk_3.5 Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches