You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/08/05 17:00:52 UTC

svn commit: r801249 - in /camel/trunk/camel-core/src/main/java/org/apache/camel: Exchange.java Message.java impl/DefaultExchange.java impl/DefaultMessage.java impl/MessageSupport.java

Author: davsclaus
Date: Wed Aug  5 15:00:52 2009
New Revision: 801249

URL: http://svn.apache.org/viewvc?rev=801249&view=rev
Log:
A little optimization to avoid copying if not needed.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java?rev=801249&r1=801248&r2=801249&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java Wed Aug  5 15:00:52 2009
@@ -170,6 +170,13 @@
     Map<String, Object> getProperties();
 
     /**
+     * Returns whether any properties has been set
+     *
+     * @return <tt>true</tt> if any properties has been set
+     */
+    boolean hasProperties();
+
+    /**
      * Returns the inbound request message
      *
      * @return the message

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java?rev=801249&r1=801248&r2=801249&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java Wed Aug  5 15:00:52 2009
@@ -107,6 +107,13 @@
     void setHeaders(Map<String, Object> headers);
 
     /**
+     * Returns whether has any headers has been set.
+     *
+     * @return <tt>true</tt> if any headers has been set
+     */
+    boolean hasHeaders();
+
+    /**
      * Returns the body of the message as a POJO
      * <p/>
      * The body can be <tt>null</tt> if no body is set

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java?rev=801249&r1=801248&r2=801249&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java Wed Aug  5 15:00:52 2009
@@ -84,7 +84,9 @@
     public Exchange copy() {
         DefaultExchange exchange = new DefaultExchange(this);
 
-        exchange.setProperties(safeCopy(getProperties()));
+        if (exchange.hasProperties()) {
+            exchange.setProperties(getProperties());
+        }
         safeCopy(exchange.getIn(), getIn());
         if (hasOut()) {
             safeCopy(exchange.getOut(), getOut());
@@ -99,13 +101,6 @@
         }
     }
 
-    private static Map<String, Object> safeCopy(Map<String, Object> properties) {
-        if (properties == null) {
-            return null;
-        }
-        return new ConcurrentHashMap<String, Object>(properties);
-    }
-
     public CamelContext getContext() {
         return context;
     }
@@ -152,6 +147,10 @@
         return properties;
     }
 
+    public boolean hasProperties() {
+        return properties != null && !properties.isEmpty();
+    }
+
     public void setProperties(Map<String, Object> properties) {
         this.properties = properties;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java?rev=801249&r1=801248&r2=801249&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java Wed Aug  5 15:00:52 2009
@@ -101,6 +101,10 @@
         this.headers = headers;
     }
 
+    public boolean hasHeaders() {
+        return headers != null && !headers.isEmpty();
+    }
+
     public DefaultMessage newInstance() {
         return new DefaultMessage();
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java?rev=801249&r1=801248&r2=801249&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java Wed Aug  5 15:00:52 2009
@@ -131,8 +131,12 @@
     public void copyFrom(Message that) {
         setMessageId(that.getMessageId());
         setBody(that.getBody());
-        getHeaders().putAll(that.getHeaders());
-        getAttachments().putAll(that.getAttachments());
+        if (that.hasHeaders()) {
+            getHeaders().putAll(that.getHeaders());
+        }
+        if (that.hasAttachments()) {
+            getAttachments().putAll(that.getAttachments());
+        }
     }
 
     public Exchange getExchange() {