You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2017/07/27 17:42:04 UTC
jclouds git commit: JCLOUDS-1325: Ignore Unicode BOM in XML parser
Repository: jclouds
Updated Branches:
refs/heads/master 2487b0c51 -> 78104938e
JCLOUDS-1325: Ignore Unicode BOM in XML parser
This caused failures to parse Azure Queue Storage list requests.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/78104938
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/78104938
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/78104938
Branch: refs/heads/master
Commit: 78104938e59914359c12addacfba10d63c352ffc
Parents: 2487b0c
Author: Andrew Gaul <ga...@apache.org>
Authored: Sun Jul 23 19:08:26 2017 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Jul 27 10:41:45 2017 -0700
----------------------------------------------------------------------
.../java/org/jclouds/http/functions/ParseXMLWithJAXB.java | 3 ++-
core/src/main/java/org/jclouds/xml/internal/JAXBParser.java | 6 +++++-
.../java/org/jclouds/rest/binders/BindToXMLPayloadTest.java | 8 ++++++++
3 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/78104938/core/src/main/java/org/jclouds/http/functions/ParseXMLWithJAXB.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/functions/ParseXMLWithJAXB.java b/core/src/main/java/org/jclouds/http/functions/ParseXMLWithJAXB.java
index 5a94ca0..54f6034 100644
--- a/core/src/main/java/org/jclouds/http/functions/ParseXMLWithJAXB.java
+++ b/core/src/main/java/org/jclouds/http/functions/ParseXMLWithJAXB.java
@@ -82,7 +82,8 @@ public class ParseXMLWithJAXB<T> implements Function<HttpResponse, T> {
public <V> V apply(final InputStream stream, final Class<V> type) throws IOException {
try {
- return xml.fromXML(Strings2.toStringAndClose(stream), type);
+ String str = Strings2.toStringAndClose(stream);
+ return xml.fromXML(str, type);
} finally {
if (stream != null) {
stream.close();
http://git-wip-us.apache.org/repos/asf/jclouds/blob/78104938/core/src/main/java/org/jclouds/xml/internal/JAXBParser.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/xml/internal/JAXBParser.java b/core/src/main/java/org/jclouds/xml/internal/JAXBParser.java
index 3586299..a858492 100644
--- a/core/src/main/java/org/jclouds/xml/internal/JAXBParser.java
+++ b/core/src/main/java/org/jclouds/xml/internal/JAXBParser.java
@@ -70,7 +70,11 @@ public class JAXBParser implements XMLParser {
@SuppressWarnings("unchecked")
@Override
- public <T> T fromXML(final String xml, final Class<T> type) throws IOException {
+ public <T> T fromXML(String xml, final Class<T> type) throws IOException {
+ // ignore byte order mark
+ if (xml.charAt(0) == 0xFEFF) {
+ xml = xml.substring(1);
+ }
try {
StringReader reader = new StringReader(xml);
JAXBContext context = JAXBContext.newInstance(type);
http://git-wip-us.apache.org/repos/asf/jclouds/blob/78104938/core/src/test/java/org/jclouds/rest/binders/BindToXMLPayloadTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/rest/binders/BindToXMLPayloadTest.java b/core/src/test/java/org/jclouds/rest/binders/BindToXMLPayloadTest.java
index 773fd68..b7d45e2 100644
--- a/core/src/test/java/org/jclouds/rest/binders/BindToXMLPayloadTest.java
+++ b/core/src/test/java/org/jclouds/rest/binders/BindToXMLPayloadTest.java
@@ -16,6 +16,7 @@
*/
package org.jclouds.rest.binders;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.testng.Assert.assertEquals;
import javax.xml.bind.annotation.XmlRootElement;
@@ -82,6 +83,13 @@ public class BindToXMLPayloadTest {
request = binder.bindToRequest(request, new Object());
}
+ @Test
+ public void testJAXBParserBOM() throws Exception {
+ String input = "\uFEFF<test><elem>foo</elem></test>";
+ TestJAXBDomain obj = xml.fromXML(input, TestJAXBDomain.class);
+ assertThat(obj.getElem()).isEqualTo("foo");
+ }
+
@XmlRootElement(name = "test")
public static class TestJAXBDomain {
private String elem;