BTW the comment for this commit was wrong (IDE fart) - its actually a
number of optimisations to avoid calculating message IDs / exchange
IDs until the last possible moment and to remove unnecessary coping of
exchanges

On 08/04/2008, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Author: jstrachan
>  Date: Tue Apr  8 10:12:38 2008
>  New Revision: 646003
>
>  URL: http://svn.apache.org/viewvc?rev=646003&view=rev
>  Log:
>  use getter rather than field to allow customization by derived classes
>
>  Modified:
>     
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelTemplate.java
>     
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
>     
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
>     
> activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
>
>  Modified: 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelTemplate.java
>  URL: 
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelTemplate.java?rev=646003&r1=646002&r2=646003&view=diff
>  
> ==============================================================================
>  --- 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelTemplate.java
>  (original)
>  +++ 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelTemplate.java
>  Tue Apr  8 10:12:38 2008
>  @@ -103,7 +103,8 @@
>       * @param exchange the exchange to send
>       */
>      public E send(Endpoint<E> endpoint, E exchange) {
>  -        E convertedExchange = endpoint.createExchange(exchange);
>  +        //E convertedExchange = endpoint.createExchange(exchange);
>  +        E convertedExchange = exchange;
>          producerCache.send(endpoint, convertedExchange);
>          return convertedExchange;
>      }
>
>  Modified: 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
>  URL: 
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java?rev=646003&r1=646002&r2=646003&view=diff
>  
> ==============================================================================
>  --- 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
>  (original)
>  +++ 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
>  Tue Apr  8 10:12:38 2008
>  @@ -40,7 +40,7 @@
>      private Message out;
>      private Message fault;
>      private Throwable exception;
>  -    private String exchangeId = 
> DefaultExchange.DEFAULT_ID_GENERATOR.generateId();
>  +    private String exchangeId;
>      private UnitOfWork unitOfWork;
>      private ExchangePattern pattern;
>
>  @@ -233,6 +233,9 @@
>      }
>
>      public String getExchangeId() {
>  +        if (exchangeId == null) {
>  +            exchangeId = DefaultExchange.DEFAULT_ID_GENERATOR.generateId();
>  +        }
>          return exchangeId;
>      }
>
>
>  Modified: 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
>  URL: 
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java?rev=646003&r1=646002&r2=646003&view=diff
>  
> ==============================================================================
>  --- 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
>  (original)
>  +++ 
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MessageSupport.java
>  Tue Apr  8 10:12:38 2008
>  @@ -35,7 +35,7 @@
>      private static final UuidGenerator DEFALT_ID_GENERATOR = new 
> UuidGenerator();
>      private Exchange exchange;
>      private Object body;
>  -    private String messageId = DEFALT_ID_GENERATOR.generateId();
>  +    private String messageId;
>
>      public Object getBody() {
>          if (body == null) {
>  @@ -117,6 +117,9 @@
>       * @return the messageId
>       */
>      public String getMessageId() {
>  +        if (messageId == null) {
>  +            messageId = createMessageId();
>  +        }
>          return this.messageId;
>      }
>
>  @@ -125,5 +128,12 @@
>       */
>      public void setMessageId(String messageId) {
>          this.messageId = messageId;
>  +    }
>  +
>  +    /**
>  +     * Lets allow implementations to auto-create a messageId
>  +     */
>  +    protected String createMessageId() {
>  +        return DEFALT_ID_GENERATOR.generateId();
>      }
>   }
>
>  Modified: 
> activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
>  URL: 
> http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java?rev=646003&r1=646002&r2=646003&view=diff
>  
> ==============================================================================
>  --- 
> activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
>  (original)
>  +++ 
> activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
>  Tue Apr  8 10:12:38 2008
>  @@ -57,11 +57,30 @@
>      public String toString() {
>          if (jmsMessage != null) {
>              return "JmsMessage: " + jmsMessage;
>  -        } else {
>  +        }
>  +        else {
>              return "JmsMessage: " + getBody();
>          }
>      }
>
>  +    @Override
>  +    public void copyFrom(org.apache.camel.Message that) {
>  +        // for performance lets not copy the messageID if we are a JMS 
> message
>  +        boolean copyMessageId = true;
>  +        if (that instanceof JmsMessage) {
>  +            JmsMessage thatMessage = (JmsMessage) that;
>  +            this.jmsMessage = thatMessage.jmsMessage;
>  +            if (this.jmsMessage != null) {
>  +                copyMessageId = false;
>  +            }
>  +        }
>  +        if (!copyMessageId) {
>  +            setMessageId(that.getMessageId());
>  +        }
>  +        setBody(that.getBody());
>  +        getHeaders().putAll(that.getHeaders());
>  +    }
>  +
>      /**
>       * Returns the underlying JMS message
>       *
>  @@ -75,9 +94,10 @@
>          if (binding == null) {
>              Exchange exchange = getExchange();
>              if (exchange instanceof JmsExchange) {
>  -                JmsExchange jmsExchange = (JmsExchange)exchange;
>  +                JmsExchange jmsExchange = (JmsExchange) exchange;
>                  return jmsExchange.getBinding();
>  -            } else {
>  +            }
>  +            else {
>                  return new JmsBinding();
>              }
>          }
>  @@ -90,13 +110,6 @@
>
>      public void setJmsMessage(Message jmsMessage) {
>          this.jmsMessage = jmsMessage;
>  -        try {
>  -            String id = 
> getDestinationAsString(jmsMessage.getJMSDestination());
>  -            id += getSanitizedString(jmsMessage.getJMSMessageID());
>  -            setMessageId(id);
>  -        } catch (JMSException e) {
>  -            LOG.error("Failed to get message id from message " + 
> jmsMessage, e);
>  -        }
>      }
>
>      public Object getHeader(String name) {
>  @@ -107,7 +120,8 @@
>          if (jmsMessage != null && !name.startsWith("JMS")) {
>              try {
>                  answer = jmsMessage.getObjectProperty(name);
>  -            } catch (JMSException e) {
>  +            }
>  +            catch (JMSException e) {
>                  throw new MessagePropertyAccessException(name, e);
>              }
>          }
>  @@ -148,15 +162,16 @@
>
>                  // TODO this works around a bug in the ActiveMQ property 
> handling
>                  map.put("JMSXGroupID", 
> jmsMessage.getStringProperty("JMSXGroupID"));
>  -
>  -            } catch (JMSException e) {
>  +            }
>  +            catch (JMSException e) {
>                  throw new MessageJMSPropertyAccessException(e);
>              }
>
>              Enumeration names;
>              try {
>                  names = jmsMessage.getPropertyNames();
>  -            } catch (JMSException e) {
>  +            }
>  +            catch (JMSException e) {
>                  throw new MessagePropertyNamesAccessException(e);
>              }
>              while (names.hasMoreElements()) {
>  @@ -164,23 +179,36 @@
>                  try {
>                      Object value = jmsMessage.getObjectProperty(name);
>                      map.put(name, value);
>  -                } catch (JMSException e) {
>  +                }
>  +                catch (JMSException e) {
>                      throw new MessagePropertyAccessException(name, e);
>                  }
>              }
>          }
>      }
>
>  +    @Override
>  +    protected String createMessageId() {
>  +        try {
>  +            String id = 
> getDestinationAsString(jmsMessage.getJMSDestination()) + 
> jmsMessage.getJMSMessageID();
>  +            return getSanitizedString(id);
>  +        } catch (JMSException e) {
>  +            LOG.error("Failed to get message id from message " + 
> jmsMessage, e);
>  +            return super.createMessageId();
>  +        }
>  +    }
>  +
>      private String getDestinationAsString(Destination destination) throws 
> JMSException {
>  -        String result = "";
>  +        String result;
>          if (destination == null) {
>  -            result = "null destination!";
>  -        } else if (destination instanceof Topic) {
>  -            result += "topic" + File.separator + 
> getSanitizedString(((Topic)destination).getTopicName());
>  -        } else {
>  -            result += "queue" + File.separator + 
> getSanitizedString(((Queue)destination).getQueueName());
>  +            result = "null destination!" + File.separator;
>  +        }
>  +        else if (destination instanceof Topic) {
>  +            result = "topic" + File.separator + ((Topic) 
> destination).getTopicName() + File.separator;
>  +        }
>  +        else {
>  +            result = "queue" + File.separator + ((Queue) 
> destination).getQueueName() + File.separator;
>          }
>  -        result += File.separator;
>          return result;
>      }
>
>
>
>


-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Reply via email to