[jboss-svn-commits] JBL Code SVN: r31749 - labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 19 13:54:10 EST 2010
Author: baunax
Date: 2010-02-19 13:54:10 -0500 (Fri, 19 Feb 2010)
New Revision: 31749
Modified:
labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsXStreamDataFormat.java
Log:
build the instance in a thread safe way
Modified: labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsXStreamDataFormat.java
===================================================================
--- labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsXStreamDataFormat.java 2010-02-19 18:49:38 UTC (rev 31748)
+++ labs/jbossrules/branches/drools_server_camel_lucaz_baunax/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsXStreamDataFormat.java 2010-02-19 18:54:10 UTC (rev 31749)
@@ -19,26 +19,19 @@
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.Reader;
-import java.io.StringReader;
-import javax.xml.parsers.DocumentBuilderFactory;
-
import org.apache.camel.Exchange;
import org.apache.camel.spi.DataFormat;
import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.impl.StatelessKnowledgeSessionImpl;
-import org.drools.io.Resource;
import org.drools.reteoo.ReteooRuleBase;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.help.BatchExecutionHelper;
import org.drools.runtime.pipeline.PipelineContext;
import org.drools.runtime.pipeline.impl.ServiceManagerPipelineContextImpl;
-import org.drools.runtime.pipeline.impl.XStreamFromXmlVsmTransformer;
import org.drools.runtime.pipeline.impl.XStreamResolverStrategy;
import org.drools.vsm.ServiceManager;
import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomReader;
@@ -49,7 +42,7 @@
*/
public class DroolsXStreamDataFormat implements DataFormat {
private XStreamResolverStrategy xstreamStrategy = null;
- private final XStreamFromXmlVsmTransformer transformer;
+// private final XStreamFromXmlVsmTransformer transformer;
private String charset;
public DroolsXStreamDataFormat() {
@@ -58,7 +51,7 @@
return BatchExecutionHelper.newXStreamMarshaller();
}
};
- this.transformer = new XStreamFromXmlVsmTransformer(xstreamStrategy);
+ //this.transformer = new XStreamFromXmlVsmTransformer(xstreamStrategy);
}
public void marshal(Exchange exchange, Object graph, OutputStream stream)
@@ -69,12 +62,12 @@
xstream.setClassLoader(context.getClassLoader());
String result = null;
- try {
+// try {
result = xstream.toXML(exchange.getIn().getBody());
- } catch (Exception e) {
- // handleException(this, object, e);
- e.printStackTrace();
- }
+// } catch (Exception e) {
+// handleException(this, object, e);
+// e.printStackTrace();
+// }
byte[] bytes;
if (charset != null) {
@@ -95,64 +88,69 @@
// exchange.setProperty("drools-context",this.transformer.getContext()
// );
- PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
- Document d = exchange.getIn().getBody(Document.class);
- String name = d.getDocumentElement().getAttribute("lookup");
- XStream xstream = this.xstreamStrategy.lookup(name);
- if (xstream == null) {
- throw new IllegalArgumentException(
- "Unable to lookup XStream parser using name '" + name + "'");
- }
- ServiceManagerPipelineContextImpl vsmContext =
- (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
- ServiceManager sm = vsmContext.getServiceManager();
- CommandExecutor executor = sm.lookup(name);
- if (executor == null) {
- throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
- }
- vsmContext.setCommandExecutor(executor);
- ClassLoader cl = null;
- if (executor instanceof StatefulKnowledgeSessionImpl) {
- cl = ((ReteooRuleBase) ((StatefulKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
- xstream.setClassLoader(cl);
- } else if (executor instanceof StatelessKnowledgeSessionImpl) {
- cl = ((ReteooRuleBase) ((StatelessKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
- } else {
- throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
- }
- xstream.setClassLoader(cl);
- vsmContext.setClassLoader(cl);
- Object payload = xstream.unmarshal(new DomReader(d));
+ try {
+ PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
+ Document d = exchange.getIn().getBody(Document.class);
+ String name = d.getDocumentElement().getAttribute("lookup");
+ XStream xstream = this.xstreamStrategy.lookup(name);
+ if (xstream == null) {
+ throw new IllegalArgumentException(
+ "Unable to lookup XStream parser using name '" + name + "'");
+ }
+ ServiceManagerPipelineContextImpl vsmContext =
+ (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
+ ServiceManager sm = vsmContext.getServiceManager();
+ CommandExecutor executor = sm.lookup(name);
+ if (executor == null) {
+ throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
+ }
+ vsmContext.setCommandExecutor(executor);
+ ClassLoader cl = null;
+ if (executor instanceof StatefulKnowledgeSessionImpl) {
+ cl = ((ReteooRuleBase) ((StatefulKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
+ xstream.setClassLoader(cl);
+ } else if (executor instanceof StatelessKnowledgeSessionImpl) {
+ cl = ((ReteooRuleBase) ((StatelessKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
+ } else {
+ throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
+ }
+ xstream.setClassLoader(cl);
+ vsmContext.setClassLoader(cl);
+ Object payload = xstream.unmarshal(new DomReader(d));
- context.getProperties().put("xstream-instance", xstream);
- exchange.setProperty("drools-context", context);
- return payload;
+ context.getProperties().put("xstream-instance", xstream);
+ exchange.setProperty("drools-context", context);
+ return payload;
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw e;
+ }
}
- private Document processTranslate(Object object) {
- // Create a DOM builder and parse the fragment
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- Document d = null;
- try {
- d = factory.newDocumentBuilder().parse((InputSource) null);
- } catch (Exception e) {
- }
- try {
- if (object instanceof String) {
- d = factory.newDocumentBuilder().parse(new InputSource(new StringReader((String) object)));
- } else if (object instanceof Reader) {
- d = factory.newDocumentBuilder().parse(new InputSource((Reader) object));
- } else if (object instanceof InputStream) {
- d = factory.newDocumentBuilder().parse((InputStream) object);
- } else if (object instanceof Resource) {
- d = factory.newDocumentBuilder().parse(new InputSource(((Resource) object).getReader()));
- } else {
- throw new IllegalArgumentException("signal object must be instance of InputStream or Resource");
- }
- } catch (Exception e) {
- // handleException(this, object, e);
- e.printStackTrace();
- }
- return d;
- }
+// private Document processTranslate(Object object) {
+// // Create a DOM builder and parse the fragment
+// DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+// Document d = null;
+// try {
+// d = factory.newDocumentBuilder().parse((InputSource) null);
+// } catch (Exception e) {
+// }
+// try {
+// if (object instanceof String) {
+// d = factory.newDocumentBuilder().parse(new InputSource(new StringReader((String) object)));
+// } else if (object instanceof Reader) {
+// d = factory.newDocumentBuilder().parse(new InputSource((Reader) object));
+// } else if (object instanceof InputStream) {
+// d = factory.newDocumentBuilder().parse((InputStream) object);
+// } else if (object instanceof Resource) {
+// d = factory.newDocumentBuilder().parse(new InputSource(((Resource) object).getReader()));
+// } else {
+// throw new IllegalArgumentException("signal object must be instance of InputStream or Resource");
+// }
+// } catch (Exception e) {
+// // handleException(this, object, e);
+// e.printStackTrace();
+// }
+// return d;
+// }
}
More information about the jboss-svn-commits
mailing list