You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/08/19 20:49:25 UTC
svn commit: r432857 -
/incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java
Author: gnodet
Date: Sat Aug 19 11:49:24 2006
New Revision: 432857
URL: http://svn.apache.org/viewvc?rev=432857&view=rev
Log:
Do not use woodstox stax reader on dom, but use our own implementation to avoid a NPE (the location is used by jaxb2).
Use the SU classloader when processing an exchange so that the JAXB2 context can find the needed classes.
Modified:
incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java
Modified: incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java?rev=432857&r1=432856&r2=432857&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java (original)
+++ incubator/servicemix/trunk/servicemix-jsr181/src/main/java/org/apache/servicemix/jsr181/Jsr181ExchangeProcessor.java Sat Aug 19 11:49:24 2006
@@ -16,7 +16,6 @@
*/
package org.apache.servicemix.jsr181;
-import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Iterator;
@@ -28,15 +27,14 @@
import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
-import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
import org.apache.servicemix.common.ExchangeProcessor;
+import org.apache.servicemix.common.xbean.XBeanServiceUnit;
+import org.apache.servicemix.jbi.jaxp.StAXSourceTransformer;
import org.apache.servicemix.jbi.jaxp.StringSource;
import org.apache.servicemix.jsr181.xfire.JbiTransport;
import org.codehaus.xfire.MessageContext;
@@ -53,12 +51,25 @@
protected DeliveryChannel channel;
protected Jsr181Endpoint endpoint;
+ protected StAXSourceTransformer transformer;
public Jsr181ExchangeProcessor(Jsr181Endpoint endpoint) {
this.endpoint = endpoint;
+ this.transformer = new StAXSourceTransformer();
}
public void process(MessageExchange exchange) throws Exception {
+ ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
+ try {
+ ClassLoader classLoader = ((XBeanServiceUnit) endpoint.getServiceUnit()).getConfigurationClassLoader();
+ Thread.currentThread().setContextClassLoader(classLoader);
+ doProcess(exchange);
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCl);
+ }
+ }
+
+ protected void doProcess(MessageExchange exchange) throws Exception {
if (exchange.getStatus() == ExchangeStatus.DONE) {
return;
} else if (exchange.getStatus() == ExchangeStatus.ERROR) {
@@ -125,14 +136,7 @@
}
protected XMLStreamReader getXMLStreamReader(Source source) throws TransformerException, XMLStreamException {
- try {
- return XMLInputFactory.newInstance().createXMLStreamReader(source);
- } catch (Exception e) {
- // ignore, as this method is not mandatory in stax
- }
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- TransformerFactory.newInstance().newTransformer().transform(source, new StreamResult(buffer));
- return XMLInputFactory.newInstance().createXMLStreamReader(new ByteArrayInputStream(buffer.toByteArray()));
+ return transformer.toXMLStreamReader(source);
}
protected boolean isInAndOut(MessageExchange exchange) {