[jboss-svn-commits] JBL Code SVN: r32943 - in labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product: samples/quickstarts/helloworld_camel and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue May 18 18:00:46 EDT 2010
Author: dward
Date: 2010-05-18 18:00:46 -0400 (Tue, 18 May 2010)
New Revision: 32943
Modified:
labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/JBossESBProcessor.java
labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/ServiceProcessor.java
labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/jboss-esb.xml
labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/src/org/jboss/soa/esb/samples/quickstart/helloworld_camel/HelloWorldRouteBuilder.java
Log:
getting closer to synchronicity
Modified: labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/JBossESBProcessor.java
===================================================================
--- labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/JBossESBProcessor.java 2010-05-18 19:19:41 UTC (rev 32942)
+++ labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/JBossESBProcessor.java 2010-05-18 22:00:46 UTC (rev 32943)
@@ -19,12 +19,20 @@
*/
package org.jboss.soa.esb.camel;
+import java.io.Serializable;
+import java.net.URI;
import java.util.Map;
+import java.util.Map.Entry;
+import org.apache.camel.Exchange;
import org.apache.camel.Processor;
+import org.jboss.soa.esb.addressing.Call;
+import org.jboss.soa.esb.addressing.eprs.InVMEpr;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.Properties;
import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.message.format.MessageType;
+import org.jboss.soa.esb.util.Util;
/**
* JBossESBProcessor.
@@ -34,19 +42,37 @@
public abstract class JBossESBProcessor implements Processor
{
- protected Message convert(org.apache.camel.Message camelMessage)
+ protected Message convertCamelToESB(Exchange exchange, org.apache.camel.Message camelMessage) throws Exception
{
- Message esbMessage = MessageFactory.getInstance().getMessage();
+ Message esbMessage;
+ Serializable serial = camelMessage.getHeader(Message.class.getName(), Serializable.class);
+ if (serial != null)
+ {
+ esbMessage = Util.deserialize(serial);
+ }
+ else
+ {
+ esbMessage = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML);
+ // maintain message id (both JBossESB and Camel use UUID.randomUUID(), so we can just reuse)
+ esbMessage.getHeader().getCall().setMessageID(new URI(camelMessage.getMessageId()));
+ }
- // camel headers --> esb properties
+ // maintain correlation
+ setRelatesTo(exchange, esbMessage);
+
+ // update esb properties from camel headers
Properties properties = esbMessage.getProperties();
Map<String,Object> headers = camelMessage.getHeaders();
- for (String name : headers.keySet())
+ for (Entry<String, Object> entry : headers.entrySet())
{
- properties.setProperty(name, headers.get(name));
+ String key = entry.getKey();
+ if (!key.equals(Message.class.getName()))
+ {
+ properties.setProperty(key, entry.getValue());
+ }
}
- // body
+ // update esb body from camel body
String body = camelMessage.getBody(String.class);
if (body != null)
{
@@ -56,18 +82,26 @@
return esbMessage;
}
- protected org.apache.camel.Message convert(Message esbMessage)
+ protected org.apache.camel.Message convertESBToCamel(Exchange exchange, Message esbMessage) throws Exception
{
org.apache.camel.Message camelMessage = new org.apache.camel.impl.DefaultMessage();
- // esb properties --> camel headers
+ camelMessage.setHeader(Message.class.getName(), Util.serialize(esbMessage));
+
+ // maintain message id (both JBossESB and Camel use UUID.randomUUID(), so we can just reuse)
+ camelMessage.setMessageId(esbMessage.getHeader().getCall().getMessageID().toString());
+
+ // maintain correlation
+ setRelatesTo(exchange, esbMessage);
+
+ // set camel headers from esb properties
Properties properties = esbMessage.getProperties();
for (String name : properties.getNames())
{
camelMessage.setHeader(name, properties.getProperty(name));
}
- // body
+ // set camel body from esb body
Object body = esbMessage.getBody().get();
if (body != null)
{
@@ -77,4 +111,15 @@
return camelMessage;
}
+ private void setRelatesTo(Exchange exchange, Message esbMessage) throws Exception
+ {
+ Call call = esbMessage.getHeader().getCall();
+ URI relatesTo = call.getRelatesTo();
+ if (relatesTo == null)
+ {
+ relatesTo = new URI(InVMEpr.INVM_PROTOCOL, "correlationID", exchange.getExchangeId());
+ call.setRelatesTo(relatesTo);
+ }
+ }
+
}
Modified: labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/ServiceProcessor.java
===================================================================
--- labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/ServiceProcessor.java 2010-05-18 19:19:41 UTC (rev 32942)
+++ labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/rosetta/src/org/jboss/soa/esb/camel/ServiceProcessor.java 2010-05-18 22:00:46 UTC (rev 32943)
@@ -45,17 +45,18 @@
public void process(Exchange exchange) throws Exception
{
- Message in = convert(exchange.getIn());
+ org.apache.camel.Message camelMessageIn = exchange.getIn();
+ Message esbMessageIn = convertCamelToESB(exchange, camelMessageIn);
ServiceInvoker invoker = new ServiceInvoker(service);
if (async)
{
- invoker.deliverAsync(in);
- exchange.setOut(convert(in));
+ invoker.deliverAsync(esbMessageIn);
}
else
{
- Message out = invoker.deliverSync(in, timeout);
- exchange.setOut(convert(out));
+ Message esbMessageOut = invoker.deliverSync(esbMessageIn, timeout);
+ org.apache.camel.Message camelMessageOut = convertESBToCamel(exchange, esbMessageOut);
+ exchange.setOut(camelMessageOut);
}
}
Modified: labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/jboss-esb.xml 2010-05-18 19:19:41 UTC (rev 32942)
+++ labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/jboss-esb.xml 2010-05-18 22:00:46 UTC (rev 32943)
@@ -10,7 +10,10 @@
<services>
<service category="helloworld_camel" name="service1" description="Hello World" invmScope="GLOBAL">
<actions mep="OneWay">
- <action name="action1" class="org.jboss.soa.esb.actions.SystemPrintln"/>
+ <action name="action1" class="org.jboss.soa.esb.actions.SystemPrintln">
+ <property name="message" value="JBossESB Message"/>
+ <property name="printfull" value="true"/>
+ </action>
</actions>
</service>
</services>
Modified: labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/src/org/jboss/soa/esb/samples/quickstart/helloworld_camel/HelloWorldRouteBuilder.java
===================================================================
--- labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/src/org/jboss/soa/esb/samples/quickstart/helloworld_camel/HelloWorldRouteBuilder.java 2010-05-18 19:19:41 UTC (rev 32942)
+++ labs/jbossesb/workspace/dward/JBESB_4_8_Camel/product/samples/quickstarts/helloworld_camel/src/org/jboss/soa/esb/samples/quickstart/helloworld_camel/HelloWorldRouteBuilder.java 2010-05-18 22:00:46 UTC (rev 32943)
@@ -31,23 +31,17 @@
public class HelloWorldRouteBuilder extends RouteBuilder
{
- private final String fromUri;
- private final String toUri;
+ // quickstart setup
+ private static final File DIR = new File(System.getProperty("java.io.tmpdir"), "helloworld_camel");
+ static { DIR.mkdirs(); DIR.deleteOnExit(); }
- public HelloWorldRouteBuilder()
- {
- super();
-
- File fromDir = new File(System.getProperty("java.io.tmpdir"), "helloworld_camel");
- fromDir.mkdirs();
- fromUri = "file://" + fromDir.getAbsolutePath() + "?delete=true";
-
- toUri = "jbossesb://service?category=helloworld_camel&name=service1";
- }
-
public void configure() throws Exception
{
- from(fromUri).to(toUri);
+ // Camel Java DSL
+ from(DIR.toURI() + "?delete=true")
+ .to("log://CAMEL_BEFORE_JBOSSESB?showAll=true&multiline=true")
+ .to("jbossesb://service?category=helloworld_camel&name=service1&async=true")
+ .to("log://CAMEL_AFTER_JBOSSESB?showAll=true&multiline=true");
}
}
More information about the jboss-svn-commits
mailing list