You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2015/03/26 09:44:52 UTC
[08/11] camel git commit: [CAMEL-8547] Usage of camel-xmlbeans
depends on TCCL
[CAMEL-8547] Usage of camel-xmlbeans depends on TCCL
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/611781c0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/611781c0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/611781c0
Branch: refs/heads/camel-2.14.x
Commit: 611781c0a89ec2a9399d2cbd01b3b7c5d211d4a6
Parents: 56fa1bc
Author: James Netherton <jn...@redhat.com>
Authored: Wed Mar 25 16:19:16 2015 +0000
Committer: Willem Jiang <wi...@gmail.com>
Committed: Thu Mar 26 16:43:34 2015 +0800
----------------------------------------------------------------------
.../converter/xmlbeans/XmlBeansConverter.java | 104 ++++++++++++++++---
.../converter/xmlbeans/XmlBeansDataFormat.java | 28 ++++-
.../xmlbeans/XmlBeansConverterTest.java | 18 ++--
3 files changed, 125 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/611781c0/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansConverter.java b/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansConverter.java
index 8068e86..5b1b011 100644
--- a/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansConverter.java
+++ b/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansConverter.java
@@ -45,48 +45,120 @@ public final class XmlBeansConverter {
}
@Converter
- public static XmlObject toXmlObject(File value) throws IOException, XmlException {
- return XmlObject.Factory.parse(value);
+ public static XmlObject toXmlObject(File value, Exchange exchange) throws IOException, XmlException {
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ return XmlObject.Factory.parse(value);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
@Converter
- public static XmlObject toXmlObject(Reader value) throws IOException, XmlException {
- return XmlObject.Factory.parse(value);
+ public static XmlObject toXmlObject(Reader value, Exchange exchange) throws IOException, XmlException {
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ return XmlObject.Factory.parse(value);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
@Converter
- public static XmlObject toXmlObject(Node value) throws IOException, XmlException {
- return XmlObject.Factory.parse(value);
+ public static XmlObject toXmlObject(Node value, Exchange exchange) throws IOException, XmlException {
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ return XmlObject.Factory.parse(value);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
@Converter
- public static XmlObject toXmlObject(InputStream value) throws IOException, XmlException {
- return XmlObject.Factory.parse(value);
+ public static XmlObject toXmlObject(InputStream value, Exchange exchange) throws IOException, XmlException {
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ return XmlObject.Factory.parse(value);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
@Converter
public static XmlObject toXmlObject(String value, Exchange exchange) throws IOException, XmlException {
- return toXmlObject(IOConverter.toInputStream(value, exchange));
+ return toXmlObject(IOConverter.toInputStream(value, exchange), exchange);
}
@Converter
- public static XmlObject toXmlObject(byte[] value) throws IOException, XmlException {
- return toXmlObject(IOConverter.toInputStream(value));
+ public static XmlObject toXmlObject(byte[] value, Exchange exchange) throws IOException, XmlException {
+ return toXmlObject(IOConverter.toInputStream(value), exchange);
}
@Converter
- public static XmlObject toXmlObject(ByteBuffer value) throws IOException, XmlException {
- return toXmlObject(NIOConverter.toInputStream(value));
+ public static XmlObject toXmlObject(ByteBuffer value, Exchange exchange) throws IOException, XmlException {
+ return toXmlObject(NIOConverter.toInputStream(value), exchange);
}
@Converter
- public static XmlObject toXmlObject(XMLStreamReader value) throws IOException, XmlException {
- return XmlObject.Factory.parse(value);
+ public static XmlObject toXmlObject(XMLStreamReader value, Exchange exchange) throws IOException, XmlException {
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ return XmlObject.Factory.parse(value);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
@Converter
public static XmlObject toXmlObject(Source value, Exchange exchange) throws IOException, XmlException, NoTypeConversionAvailableException {
Reader reader = exchange.getContext().getTypeConverter().mandatoryConvertTo(Reader.class, value);
- return XmlObject.Factory.parse(reader);
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ return XmlObject.Factory.parse(reader);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/611781c0/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java b/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
index 6559813..28043b5 100644
--- a/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
+++ b/components/camel-xmlbeans/src/main/java/org/apache/camel/converter/xmlbeans/XmlBeansDataFormat.java
@@ -31,11 +31,35 @@ import org.apache.xmlbeans.XmlObject;
public class XmlBeansDataFormat implements DataFormat {
public void marshal(Exchange exchange, Object body, OutputStream stream) throws Exception {
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
XmlObject object = ExchangeHelper.convertToMandatoryType(exchange, XmlObject.class, body);
- object.save(stream);
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ object.save(stream);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
- return XmlObject.Factory.parse(stream);
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+
+ try {
+ ClassLoader apcl = exchange.getContext().getApplicationContextClassLoader();
+ if (apcl != null) {
+ Thread.currentThread().setContextClassLoader(apcl);
+ }
+ return XmlObject.Factory.parse(stream);
+ } finally {
+ if (tccl != null) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/611781c0/components/camel-xmlbeans/src/test/java/org/apache/camel/converter/xmlbeans/XmlBeansConverterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlbeans/src/test/java/org/apache/camel/converter/xmlbeans/XmlBeansConverterTest.java b/components/camel-xmlbeans/src/test/java/org/apache/camel/converter/xmlbeans/XmlBeansConverterTest.java
index 86aac74..d73a277 100644
--- a/components/camel-xmlbeans/src/test/java/org/apache/camel/converter/xmlbeans/XmlBeansConverterTest.java
+++ b/components/camel-xmlbeans/src/test/java/org/apache/camel/converter/xmlbeans/XmlBeansConverterTest.java
@@ -65,13 +65,15 @@ public class XmlBeansConverterTest extends CamelTestSupport {
@Test
public void toXmlObjectFromFile() throws IOException, XmlException {
- XmlObject result = XmlBeansConverter.toXmlObject(new File("src/test/data/buyStocks.xml"));
+ XmlObject result = XmlBeansConverter.toXmlObject(new File("src/test/data/buyStocks.xml"),
+ new DefaultExchange(new DefaultCamelContext()));
assertBuyStocks(result);
}
@Test
public void toXmlObjectFromReader() throws IOException, XmlException {
- XmlObject result = XmlBeansConverter.toXmlObject(new FileReader("src/test/data/buyStocks.xml"));
+ XmlObject result = XmlBeansConverter.toXmlObject(new FileReader("src/test/data/buyStocks.xml"),
+ new DefaultExchange(new DefaultCamelContext()));
assertBuyStocks(result);
}
@@ -84,13 +86,14 @@ public class XmlBeansConverterTest extends CamelTestSupport {
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(PAYLOAD)));
- XmlObject result = XmlBeansConverter.toXmlObject(document);
+ XmlObject result = XmlBeansConverter.toXmlObject(document, new DefaultExchange(new DefaultCamelContext()));
assertBuyStocks(result);
}
@Test
public void toXmlObjectFromInputStream() throws IOException, XmlException {
- XmlObject result = XmlBeansConverter.toXmlObject(new FileInputStream("src/test/data/buyStocks.xml"));
+ XmlObject result = XmlBeansConverter.toXmlObject(new FileInputStream("src/test/data/buyStocks.xml"),
+ new DefaultExchange(new DefaultCamelContext()));
assertBuyStocks(result);
}
@@ -102,19 +105,20 @@ public class XmlBeansConverterTest extends CamelTestSupport {
@Test
public void toXmlObjectFromByteArray() throws IOException, XmlException {
- XmlObject result = XmlBeansConverter.toXmlObject(PAYLOAD.getBytes());
+ XmlObject result = XmlBeansConverter.toXmlObject(PAYLOAD.getBytes(), new DefaultExchange(new DefaultCamelContext()));
assertBuyStocks(result);
}
@Test
public void toXmlObjectFromByteBuffer() throws IOException, XmlException {
- XmlObject result = XmlBeansConverter.toXmlObject(ByteBuffer.wrap(PAYLOAD.getBytes()));
+ XmlObject result = XmlBeansConverter.toXmlObject(ByteBuffer.wrap(PAYLOAD.getBytes()), new DefaultExchange(new DefaultCamelContext()));
assertBuyStocks(result);
}
@Test
public void toXmlObjectFromXMLStreamReader() throws IOException, XmlException {
- XmlObject result = XmlBeansConverter.toXmlObject(new XMLStreamReader(new ByteArrayInputStream(PAYLOAD.getBytes()), false));
+ XmlObject result = XmlBeansConverter.toXmlObject(new XMLStreamReader(new ByteArrayInputStream(PAYLOAD.getBytes()), false),
+ new DefaultExchange(new DefaultCamelContext()));
assertBuyStocks(result);
}