[jboss-svn-commits] JBL Code SVN: r35843 - labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/camel.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Nov 2 12:20:02 EDT 2010
Author: tfennelly
Date: 2010-11-02 12:20:01 -0400 (Tue, 02 Nov 2010)
New Revision: 35843
Modified:
labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/camel/CamelMessageComposer.java
Log:
https://jira.jboss.org/browse/JBESB-3511
JBESB camel integration issue with JPA URI
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/camel/CamelMessageComposer.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/camel/CamelMessageComposer.java 2010-11-02 16:14:28 UTC (rev 35842)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/camel/CamelMessageComposer.java 2010-11-02 16:20:01 UTC (rev 35843)
@@ -21,13 +21,17 @@
import static org.jboss.soa.esb.message.MessagePayloadProxy.NullPayloadHandling.NONE;
+import java.io.Serializable;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.HashSet;
import java.util.Map.Entry;
+import java.util.Set;
import org.apache.camel.Exchange;
import org.apache.camel.impl.DefaultMessage;
import org.apache.camel.impl.MessageSupport;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.addressing.Call;
import org.jboss.soa.esb.addressing.eprs.InVMEpr;
import org.jboss.soa.esb.helpers.ConfigTree;
@@ -44,8 +48,11 @@
*/
public class CamelMessageComposer<T extends org.apache.camel.Message> extends AbstractMessageComposer<T> {
+ private static final Logger logger = Logger.getLogger(CamelMessageComposer.class);
+
private ConfigTree config = null;
private MessagePayloadProxy payloadProxy = null;
+ private Set<String> mapHeaders;
@Override
public ConfigTree getConfiguration() {
@@ -58,6 +65,16 @@
payloadProxy = new MessagePayloadProxy(config);
payloadProxy.setNullGetPayloadHandling(NONE);
payloadProxy.setNullSetPayloadHandling(NONE);
+
+ String mapHeaderConfig = config.getAttribute("mapHeaders");
+ if(mapHeaderConfig != null) {
+ String[] mapHeadersArray = mapHeaderConfig.split(",");
+
+ mapHeaders = new HashSet<String>();
+ for(int i = 0; i < mapHeadersArray.length; i++) {
+ mapHeaders.add(mapHeadersArray[i].trim());
+ }
+ }
}
@Override
@@ -81,16 +98,38 @@
setRelatesTo(camelMessageIn.getExchange(), esbMessageIn);
// update esb properties from camel headers
+ mapHeaders(esbMessageIn, camelMessageIn);
+
+ // set esb body (payload) from camel body
+ getPayloadProxy().setPayload(esbMessageIn, camelMessageIn.getBody(String.class));
+ }
+
+ /**
+ * Map the Camel Headers to the ESB Message Properties.
+ * <p/>
+ * Override to modify mapping behavior.
+ * @param esbMessageIn ESB message.
+ * @param camelMessageIn Camel message.
+ */
+ protected void mapHeaders(Message esbMessageIn, T camelMessageIn) {
Properties properties = esbMessageIn.getProperties();
for (Entry<String, Object> entry : camelMessageIn.getHeaders().entrySet()) {
+ String name = entry.getKey();
+
+ if(mapHeaders != null && !mapHeaders.contains(name)) {
+ // skip header mapping...
+ continue;
+ }
+
Object value = entry.getValue();
- if (value != null) {
- properties.setProperty(entry.getKey(), value);
+ if (value instanceof Serializable) {
+ properties.setProperty(name, value);
+ } else {
+ if(value != null && logger.isDebugEnabled()) {
+ logger.debug("Camel header '" + name + "' is not Serializable (type " + value.getClass().getName() + "). Cannot map to ESB Properties. Ignoring.");
+ }
}
}
-
- // set esb body (payload) from camel body
- getPayloadProxy().setPayload(esbMessageIn, camelMessageIn.getBody(String.class));
}
@SuppressWarnings("unchecked")
More information about the jboss-svn-commits
mailing list