[jboss-svn-commits] JBL Code SVN: r34727 - in labs/jbossrules/branches/camel_soap_support-lucaz: drools-camel/src/main/java/org/drools/jax/soap and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Aug 15 14:40:15 EDT 2010
Author: salaboy21
Date: 2010-08-15 14:40:14 -0400 (Sun, 15 Aug 2010)
New Revision: 34727
Modified:
labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java
labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoap.java
labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoap.java
labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/java/org/drools/camel/component/cxf/CxfSoapTest.java
labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/resources/org/drools/camel/component/CxfSoapSpring.xml
labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
Log:
JBRULES-2664: Soap support in drools-camel
- almost working.. fails in the soap response.
Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java 2010-08-15 03:59:05 UTC (rev 34726)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java 2010-08-15 18:40:14 UTC (rev 34727)
@@ -125,7 +125,7 @@
throw new RuntimeException( "No defined ksession for uri" + de.getEndpointUri() );
}
- ExecutionResults results = exec.execute( (BatchExecutionCommandImpl) cmd );;
+ ExecutionResults results = exec.execute( (BatchExecutionCommandImpl) cmd );
// if ( de.dataFormat != null ) {
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoap.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoap.java 2010-08-15 03:59:05 UTC (rev 34726)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoap.java 2010-08-15 18:40:14 UTC (rev 34727)
@@ -27,6 +27,7 @@
public void process(Exchange exchange) throws Exception {
// TODO: Implement PostCxfSoap processor
System.out.println("PostCxfSoap Processor invoked");
+ System.out.println("Exchange = "+exchange.getIn().getBody());
}
}
\ No newline at end of file
Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoap.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoap.java 2010-08-15 03:59:05 UTC (rev 34726)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoap.java 2010-08-15 18:40:14 UTC (rev 34727)
@@ -19,27 +19,27 @@
*/
package org.drools.jax.soap;
+import javax.xml.soap.SOAPMessage;
import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
import org.apache.camel.Processor;
-import org.apache.camel.component.cxf.CxfConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.cxf.service.model.BindingOperationInfo;
public class PreCxfSoap implements Processor {
+ private static final transient Log LOG = LogFactory.getLog(PreCxfSoap.class);
+
public void process(Exchange exchange) throws Exception {
BindingOperationInfo boi = (BindingOperationInfo)exchange.getProperty(BindingOperationInfo.class.toString());
- if (boi == null) {
- boi = new BindingOperationInfo();
- boi.setProperty(CxfConstants.OPERATION_NAME, "invoke");
+ if (boi != null) {
+ LOG.info("boi.isUnwrapped" + boi.isUnwrapped());
+
}
- exchange.setProperty(BindingOperationInfo.class.toString(), boi);
- exchange.setPattern(ExchangePattern.InOut);
- // is this necesary?
- Message inMessage = exchange.getIn();
- inMessage.setHeader(CxfConstants.OPERATION_NAME, "invoke");
- inMessage.setHeader(Exchange.SOAP_ACTION, "execute");
- inMessage.setHeader(Exchange.ACCEPT_CONTENT_TYPE, "text/plain");
- inMessage.setHeader(Exchange.CONTENT_TYPE, "text/plain");
+
+ SOAPMessage soapMessage = (SOAPMessage)exchange.getIn().getBody();
+
+ exchange.getOut().setBody(soapMessage.getSOAPBody().getTextContent());
+
+
}
}
\ No newline at end of file
Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/java/org/drools/camel/component/cxf/CxfSoapTest.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/java/org/drools/camel/component/cxf/CxfSoapTest.java 2010-08-15 03:59:05 UTC (rev 34726)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/java/org/drools/camel/component/cxf/CxfSoapTest.java 2010-08-15 18:40:14 UTC (rev 34727)
@@ -16,6 +16,14 @@
package org.drools.camel.component.cxf;
+
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import javax.xml.namespace.QName;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPBodyElement;
+import javax.xml.soap.SOAPMessage;
import org.apache.camel.test.CamelSpringTestSupport;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -28,18 +36,40 @@
}
public void test1() throws Exception {
+
+ SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
+
+ SOAPBody body = soapMessage.getSOAPPart().getEnvelope().getBody();
+
+ QName payloadName = new QName("http://localhost:9002/soap", "invoke",
+ "ns1");
+
+ SOAPBodyElement payload = body.addBodyElement(payloadName);
+
+ //SOAPElement message = payload.addChildElement("responseType");
+
+
+
String cmd = "";
cmd += "<batch-execution lookup=\"ksession1\">\n";
- cmd += " <insert out-identifier=\"salaboy\">\n";
+ cmd += " <insert out-identifier=\"salaboy\" disconnected=\"true\">\n";
cmd += " <org.drools.pipeline.camel.Person>\n";
cmd += " <name>salaboy</name>\n";
+ cmd += " <age>27</age>\n";
cmd += " </org.drools.pipeline.camel.Person>\n";
cmd += " </insert>\n";
cmd += " <fire-all-rules/>\n";
cmd += "</batch-execution>\n";
+
+ body.addTextNode(cmd);
+ // message.addTextNode(cmd);
+ OutputStream out = new ByteArrayOutputStream();
+ soapMessage.writeTo(out);
+
+ String s = out.toString();
+ System.out.println("S = "+s);
-
- Object object = this.context.createProducerTemplate().requestBody("direct://http", cmd);
+ Object object = this.context.createProducerTemplate().requestBody("direct://http", soapMessage);
System.out.println( object );
}
Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/resources/org/drools/camel/component/CxfSoapSpring.xml
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/resources/org/drools/camel/component/CxfSoapSpring.xml 2010-08-15 03:59:05 UTC (rev 34726)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/resources/org/drools/camel/component/CxfSoapSpring.xml 2010-08-15 18:40:14 UTC (rev 34727)
@@ -21,7 +21,7 @@
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:drools="http://drools.org/schema/drools-spring"
xsi:schemaLocation="
- http://drools.org/schema/drools-spring http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd
+ http://drools.org/schema/drools-spring /Users/salaboy/Projects/drools/camel_soap_support-lucaz/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/cxfEndpoint.xsd
@@ -29,6 +29,7 @@
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
+
<drools:connection id="connection1" type="local" />
<drools:execution-node id="node1" connection="connection1" />
@@ -56,19 +57,15 @@
</cxf:properties>
</cxf:cxfEndpoint>
- <bean id="droolsPolicy" class="org.drools.camel.component.DroolsPolicy" />
+ <bean id="droolsPolicy" class="org.drools.camel.component.DroolsPolicy" />
+
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
- <route id="x1">
- <from uri="direct://http"/>
- <policy ref="droolsPolicy">
- <to uri="cxf:bean:soapServer"/>
- </policy>
- </route>
+
<route>
- <from uri="cxf:bean:soapServer"/>
+ <from uri="cxf://bean://soapServer"/>
<policy ref="droolsPolicy">
<unmarshal ref="xstream" />
<to uri="drools:node1/ksession1" />
@@ -76,6 +73,13 @@
</policy>
</route>
+ <route id="x1">
+ <from uri="direct://http"/>
+ <policy ref="droolsPolicy">
+ <to uri="cxf://bean://soapServer"/>
+ </policy>
+ </route>
+
</camelContext>
</beans>
Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java 2010-08-15 03:59:05 UTC (rev 34726)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java 2010-08-15 18:40:14 UTC (rev 34727)
@@ -16,7 +16,6 @@
package org.drools.command.runtime.rule;
-import java.io.ObjectStreamException;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -27,6 +26,7 @@
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.common.DefaultFactHandle;
import org.drools.core.util.StringUtils;
import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.reteoo.ReteooWorkingMemory;
@@ -50,34 +50,47 @@
@XmlAttribute(name="return-object")
private boolean returnObject = true;
-
+
@XmlAttribute(name="entry-point")
private String entryPoint;
-
+ @XmlAttribute(name="disconnected")
+ private boolean disconnected = false;
+
public InsertObjectCommand() {
-
+
}
-
+
public InsertObjectCommand(Object object) {
this.object = object;
}
+ public InsertObjectCommand(Object object, boolean disconnected) {
+ this.object = object;
+ this.disconnected = disconnected;
+ }
+
public InsertObjectCommand(Object object, String outIdentifier) {
super();
this.object = object;
this.outIdentifier = outIdentifier;
}
+ public InsertObjectCommand(Object object, String outIdentifier, boolean disconnected) {
+ super();
+ this.object = object;
+ this.outIdentifier = outIdentifier;
+ this.disconnected = disconnected;
+ }
public FactHandle execute(Context context) {
StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
-
+
FactHandle factHandle;
- if ( StringUtils.isEmpty( this.entryPoint ) ) {
+ if ( StringUtils.isEmpty( this.entryPoint ) ) {
factHandle = ksession.insert( object );
} else {
factHandle = ksession.getWorkingMemoryEntryPoint( this.entryPoint ).insert( object );
}
-
+
ReteooWorkingMemory session = ((StatefulKnowledgeSessionImpl)ksession).session;
if ( outIdentifier != null ) {
@@ -88,12 +101,14 @@
session.getExecutionResult().getFactHandles().put( this.outIdentifier,
factHandle );
}
-
+ if ( disconnected ){
+ ((DefaultFactHandle)factHandle).disconnect();
+ }
return factHandle;
}
-
-
+
+
public void setObject(Object object) {
this.object = object;
}
@@ -117,9 +132,15 @@
public void setReturnObject(boolean returnObject) {
this.returnObject = returnObject;
}
-
-
+ public boolean isDisconnected() {
+ return disconnected;
+ }
+
+ public void setDisconnected(boolean disconnected) {
+ this.disconnected = disconnected;
+ }
+
public String getEntryPoint() {
return entryPoint;
}
@@ -131,7 +152,7 @@
public String toString() {
return "session.entryPoints(" + ((this.entryPoint == null ) ? "DEFAULT" : this.entryPoint) + ").insert(" + object + ");";
}
-
+
// private Object readResolve() throws ObjectStreamException {
// this.returnObject = true;
// return this;
Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java 2010-08-15 03:59:05 UTC (rev 34726)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java 2010-08-15 18:40:14 UTC (rev 34727)
@@ -117,7 +117,10 @@
Boolean.toString( cmd.isReturnObject() ) );
writer.addAttribute( "entry-point",
- cmd.getEntryPoint() );
+ cmd.getEntryPoint() );
+
+ writer.addAttribute( "disconnected",
+ Boolean.toString(cmd.isDisconnected()) );
}
writeItem( cmd.getObject(),
@@ -130,6 +133,7 @@
String identifierOut = reader.getAttribute( "out-identifier" );
String returnObject = reader.getAttribute( "return-object" );
String entryPoint = reader.getAttribute( "entry-point" );
+ String disconnected = reader.getAttribute( "disconnected" );
reader.moveDown();
Object object = readItem( reader,
@@ -146,6 +150,10 @@
if ( entryPoint != null ) {
cmd.setEntryPoint( entryPoint );
}
+
+ if ( disconnected != null ){
+ cmd.setDisconnected(Boolean.parseBoolean(disconnected));
+ }
return cmd;
}
More information about the jboss-svn-commits
mailing list