[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