[jboss-svn-commits] JBL Code SVN: r34764 - in labs/jbossrules/branches/camel_soap_support-lucaz: drools-camel/src/main/java/org/drools/jax/soap and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 17 20:13:10 EDT 2010


Author: lucazamador
Date: 2010-08-17 20:13:08 -0400 (Tue, 17 Aug 2010)
New Revision: 34764

Added:
   labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoapProcessor.java
   labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoapProcessor.java
Removed:
   labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/CommandExecutorSoapImpl.java
Modified:
   labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/PostCxfrs.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/test/resources/org/drools/camel/component/CxfSoapSpring.xml
   labs/jbossrules/branches/camel_soap_support-lucaz/drools-server/src/main/resources/camel-server.xml
Log:
[JBRULES-2664] Soap support in drools-camel
	- soap support done. ready to be merged

Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/PostCxfrs.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/PostCxfrs.java	2010-08-17 18:16:15 UTC (rev 34763)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/camel/component/PostCxfrs.java	2010-08-18 00:13:08 UTC (rev 34764)
@@ -25,10 +25,7 @@
 import javax.ws.rs.core.Response.Status;
 
 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.drools.core.util.StringUtils;
 
 public class PostCxfrs implements Processor {

Deleted: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/CommandExecutorSoapImpl.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/CommandExecutorSoapImpl.java	2010-08-17 18:16:15 UTC (rev 34763)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/CommandExecutorSoapImpl.java	2010-08-18 00:13:08 UTC (rev 34764)
@@ -1,17 +0,0 @@
-package org.drools.jax.soap;
-
-import javax.xml.ws.ServiceMode;
-import javax.xml.ws.WebServiceProvider;
-
-import org.drools.command.Command;
-import org.drools.runtime.CommandExecutor;
-
- at WebServiceProvider
- at ServiceMode
-public class CommandExecutorSoapImpl implements CommandExecutor {
-
-	public <T> T execute(Command<T> command) {
-		throw new UnsupportedOperationException( "This should never be called, as it's handled by camel" );
-	}
-
-    }

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-17 18:16:15 UTC (rev 34763)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoap.java	2010-08-18 00:13:08 UTC (rev 34764)
@@ -38,7 +38,7 @@
 		if (is != null) {
 			SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
 			SOAPBody body = soapMessage.getSOAPPart().getEnvelope().getBody();
-			QName payloadName = new QName("http://soap.jax.drools.org", "execute", "ns1");
+			QName payloadName = new QName("http://soap.jax.drools.org", "executeResponse", "ns1");
 			SOAPBodyElement payload = body.addBodyElement(payloadName);
 			payload.addChildElement("responseType");
 			body.addTextNode(StringUtils.toString( is ));

Added: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoapProcessor.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoapProcessor.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoapProcessor.java	2010-08-18 00:13:08 UTC (rev 34764)
@@ -0,0 +1,36 @@
+package org.drools.jax.soap;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+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.Exchange;
+import org.apache.camel.Processor;
+import org.drools.core.util.StringUtils;
+
+public class PostCxfSoapProcessor implements Processor {
+
+	public void process(Exchange exchange) throws Exception {
+		byte[] body = (byte[]) exchange.getIn().getBody();
+
+		ByteArrayInputStream bais = new ByteArrayInputStream(body);
+
+		SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
+		SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+		QName payloadName = new QName("http://soap.jax.drools.org", "executeResponse", "ns1");
+		SOAPBodyElement payload = soapBody.addBodyElement(payloadName);
+		payload.addChildElement("responseType");
+		soapBody.addTextNode(StringUtils.toString(bais));
+
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		soapMessage.writeTo(baos);
+
+		exchange.getOut().setBody(new String(baos.toByteArray()));
+	}
+
+}


Property changes on: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PostCxfSoapProcessor.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoapProcessor.java
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoapProcessor.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoapProcessor.java	2010-08-18 00:13:08 UTC (rev 34764)
@@ -0,0 +1,26 @@
+package org.drools.jax.soap;
+
+import java.io.InputStream;
+import java.util.Map;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPMessage;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+
+public class PreCxfSoapProcessor implements Processor {
+
+	public void process(Exchange exchange) throws Exception {
+		InputStream is = (InputStream)exchange.getIn().getBody();
+		Map<String, Object> headers = exchange.getIn().getHeaders();
+		MimeHeaders mimeHeaders = new MimeHeaders();
+		for (String header : headers.keySet()) {
+			mimeHeaders.addHeader(header, (String) headers.get(header));
+		}
+		SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(mimeHeaders, is);
+		exchange.getOut().setBody(soapMessage.getSOAPBody().getTextContent());
+	}
+
+}


Property changes on: labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/main/java/org/drools/jax/soap/PreCxfSoapProcessor.java
___________________________________________________________________
Name: svn:eol-style
   + native

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-17 18:16:15 UTC (rev 34763)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-camel/src/test/resources/org/drools/camel/component/CxfSoapSpring.xml	2010-08-18 00:13:08 UTC (rev 34764)
@@ -48,9 +48,7 @@
     </drools:script>
   </drools:ksession>
 
- 
-
-   <cxf:cxfEndpoint id="soapServer"
+  <cxf:cxfEndpoint id="soapServer"
    					address="http://localhost:9002/soap"
    					serviceName="ns:CommandExecutor"
    					endpointName="ns:CommandExecutorPort" 

Modified: labs/jbossrules/branches/camel_soap_support-lucaz/drools-server/src/main/resources/camel-server.xml
===================================================================
--- labs/jbossrules/branches/camel_soap_support-lucaz/drools-server/src/main/resources/camel-server.xml	2010-08-17 18:16:15 UTC (rev 34763)
+++ labs/jbossrules/branches/camel_soap_support-lucaz/drools-server/src/main/resources/camel-server.xml	2010-08-18 00:13:08 UTC (rev 34764)
@@ -70,6 +70,10 @@
       <entry key="defaultOperationName" value="execute"/>
     </cxf:properties>
   </cxf:cxfEndpoint>
+
+  <bean id="preCxfSoapProcessor" class="org.drools.jax.soap.PreCxfSoapProcessor" />
+
+  <bean id="postCxfSoapProcessor" class="org.drools.jax.soap.PostCxfSoapProcessor" />
   
   <!-- Leave this, as it's needed to make Camel "drools" aware -->
   <bean id="droolsPolicy" class="org.drools.camel.component.DroolsPolicy" />  
@@ -92,11 +96,13 @@
 
     <route>
       <from uri="cxf://bean://soapServer"/>
+      <process ref="preCxfSoapProcessor" />
       <policy ref="droolsPolicy">
         <unmarshal ref="xstream" />       
         <to uri="drools:node1/ksession1" />
         <marshal ref="xstream" />
       </policy>
+      <process ref="postCxfSoapProcessor" />
     </route>
         
   </camelContext>



More information about the jboss-svn-commits mailing list