[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