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
