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

Reply via email to