You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ar...@apache.org on 2007/11/22 20:05:34 UTC
svn commit: r597478 - in
/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client:
BasicMessageProducer.java BasicMessageProducer_0_10.java
message/AbstractJMSMessage.java
Author: arnaudsimon
Date: Thu Nov 22 11:05:33 2007
New Revision: 597478
URL: http://svn.apache.org/viewvc?rev=597478&view=rev
Log:
optimized message creation
Modified:
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java
Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java?rev=597478&r1=597477&r2=597478&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java Thu Nov 22 11:05:33 2007
@@ -456,7 +456,7 @@
type = AMQDestination.UNKNOWN_TYPE;
}
- message.getJmsHeaders().setInteger(CustomJMSXProperty.JMS_QPID_DESTTYPE.getShortStringName(), type);
+ // message.getJmsHeaders().setInteger(CustomJMSXProperty.JMS_QPID_DESTTYPE.getShortStringName(), type);
sendMessage(destination, origMessage, message, deliveryMode, priority, timeToLive,
mandatory, immediate, wait);
Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java?rev=597478&r1=597477&r2=597478&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java Thu Nov 22 11:05:33 2007
@@ -51,9 +51,7 @@
{
((AMQSession_0_10) getSession()).getQpidSession().exchangeDeclare(destination.getExchangeName().toString(),
destination.getExchangeClass().toString(),
- null,
- null
- );
+ null, null);
}
//--- Overwritten methods
@@ -66,97 +64,91 @@
boolean wait) throws JMSException
{
message.prepareForSending();
- org.apache.qpidity.api.Message qpidityMessage = new ByteBufferMessage();
- if(_logger.isDebugEnabled())
+ if (message.get010Message() == null)
{
- _logger.debug("Message Props: " + message.toString());
- }
- try
- {
- if (message.getData() != null)
- {
- qpidityMessage.appendData(message.getData().buf());
- }
- else
+ message.set010Message(new ByteBufferMessage());
+ if (message.getData() == null)
{
- qpidityMessage.appendData(ByteBuffer.allocate(0));
+ try
+ {
+ message.get010Message().appendData(ByteBuffer.allocate(0));
+ }
+ catch (IOException e)
+ {
+ throw new JMSException(e.getMessage());
+ }
}
}
- catch (IOException e)
- {
- throw ExceptionHelper.convertQpidExceptionToJMSException(e);
- }
+
// set the delivery properties
if (!_disableTimestamps)
{
final long currentTime = System.currentTimeMillis();
- qpidityMessage.getDeliveryProperties().setTimestamp(currentTime);
+ message.get010Message().getDeliveryProperties().setTimestamp(currentTime);
if (timeToLive > 0)
{
- qpidityMessage.getDeliveryProperties().setExpiration(currentTime + timeToLive);
+ message.get010Message().getDeliveryProperties().setExpiration(currentTime + timeToLive);
}
else
{
- qpidityMessage.getDeliveryProperties().setExpiration(0);
+ message.get010Message().getDeliveryProperties().setExpiration(0);
}
+ origMessage.setJMSTimestamp(message.get010Message().getDeliveryProperties().getTimestamp());
}
- qpidityMessage.getDeliveryProperties().setDeliveryMode((byte) deliveryMode);
- qpidityMessage.getDeliveryProperties().setPriority((byte) priority);
- qpidityMessage.getDeliveryProperties().setExchange(destination.getExchangeName().toString());
- qpidityMessage.getDeliveryProperties().setRoutingKey(destination.getRoutingKey().toString());
+ message.get010Message().getDeliveryProperties().setDeliveryMode((byte) deliveryMode);
+ message.get010Message().getDeliveryProperties().setPriority((byte) priority);
+ message.get010Message().getDeliveryProperties().setExchange(destination.getExchangeName().toString());
+ message.get010Message().getDeliveryProperties().setRoutingKey(destination.getRoutingKey().toString());
+ origMessage.setJMSPriority(message.get010Message().getDeliveryProperties().getPriority());
+ origMessage.setJMSExpiration(message.get010Message().getDeliveryProperties().getExpiration());
+ origMessage.setJMSMessageID(message.getJMSMessageID());
+ origMessage.setJMSDeliveryMode(deliveryMode);
+
BasicContentHeaderProperties contentHeaderProperties = message.getContentHeaderProperties();
- // set the application properties
- qpidityMessage.getMessageProperties().setContentType(contentHeaderProperties.getContentType().toString());
- AMQShortString type = contentHeaderProperties.getType();
- if( type != null )
- {
- qpidityMessage.getMessageProperties().setType( type.toString());
- }
- qpidityMessage.getMessageProperties().setMessageId(message.getJMSMessageID()) ;
- AMQShortString correlationID = contentHeaderProperties.getCorrelationId();
- if( correlationID != null )
+ if (contentHeaderProperties.reset())
{
- qpidityMessage.getMessageProperties().setCorrelationId(correlationID.toString());
- }
- String replyToURL = contentHeaderProperties.getReplyToAsString();
- if (replyToURL != null)
- {
- AMQBindingURL dest;
- try
- {
- dest = new AMQBindingURL(replyToURL);
- }
- catch (URLSyntaxException e)
- {
- throw ExceptionHelper.convertQpidExceptionToJMSException(e);
- }
- qpidityMessage.getMessageProperties()
- .setReplyTo(new ReplyTo(dest.getExchangeName().toString(), dest.getRoutingKey().toString()));
- }
- if (contentHeaderProperties.getHeaders() != null)
- {
- //JMS_QPID_DESTTYPE is always set but useles so this is a temporary fix
- contentHeaderProperties.getHeaders().remove(CustomJMSXProperty.JMS_QPID_DESTTYPE.getShortStringName());
- qpidityMessage.getMessageProperties().setApplicationHeaders(FiledTableSupport.convertToMap(contentHeaderProperties.getHeaders()));
- for(String key:qpidityMessage.getMessageProperties().getApplicationHeaders().keySet())
- {
- _logger.debug(key + "=" + qpidityMessage.getMessageProperties().getApplicationHeaders().get(key));
+ // set the application properties
+ message.get010Message().getMessageProperties()
+ .setContentType(contentHeaderProperties.getContentType().toString());
+ AMQShortString type = contentHeaderProperties.getType();
+ if (type != null)
+ {
+ message.get010Message().getMessageProperties().setType(type.toString());
+ }
+ message.get010Message().getMessageProperties().setMessageId(message.getJMSMessageID());
+ AMQShortString correlationID = contentHeaderProperties.getCorrelationId();
+ if (correlationID != null)
+ {
+ message.get010Message().getMessageProperties().setCorrelationId(correlationID.toString());
+ }
+ String replyToURL = contentHeaderProperties.getReplyToAsString();
+ if (replyToURL != null)
+ {
+ AMQBindingURL dest;
+ try
+ {
+ dest = new AMQBindingURL(replyToURL);
+ }
+ catch (URLSyntaxException e)
+ {
+ throw ExceptionHelper.convertQpidExceptionToJMSException(e);
+ }
+ message.get010Message().getMessageProperties()
+ .setReplyTo(new ReplyTo(dest.getExchangeName().toString(), dest.getRoutingKey().toString()));
+ }
+ if (contentHeaderProperties.getHeaders() != null)
+ {
+ //JMS_QPID_DESTTYPE is always set but useles so this is a temporary fix
+ contentHeaderProperties.getHeaders().remove(CustomJMSXProperty.JMS_QPID_DESTTYPE.getShortStringName());
+ message.get010Message().getMessageProperties()
+ .setApplicationHeaders(FiledTableSupport.convertToMap(contentHeaderProperties.getHeaders()));
}
}
- if(_logger.isDebugEnabled() )
- {
- _logger.debug("Updating original message");
- }
- origMessage.setJMSPriority(qpidityMessage.getDeliveryProperties().getPriority());
- origMessage.setJMSTimestamp(qpidityMessage.getDeliveryProperties().getTimestamp());
- origMessage.setJMSExpiration(qpidityMessage.getDeliveryProperties().getExpiration());
- origMessage.setJMSMessageID(message.getJMSMessageID());
- origMessage.setJMSDeliveryMode(deliveryMode);
// send the message
try
{
((AMQSession_0_10) getSession()).getQpidSession().messageTransfer(destination.getExchangeName().toString(),
- qpidityMessage,
+ message.get010Message(),
org.apache.qpidity.nclient.Session.TRANSFER_CONFIRM_MODE_NOT_REQUIRED,
org.apache.qpidity.nclient.Session.TRANSFER_ACQUIRE_MODE_PRE_ACQUIRE);
}
@@ -164,19 +156,19 @@
{
throw ExceptionHelper.convertQpidExceptionToJMSException(e);
}
- catch(RuntimeException rte)
+ catch (RuntimeException rte)
{
- JMSException ex = new JMSException("Exception when sending message");
+ JMSException ex = new JMSException("Exception when sending message");
ex.setLinkedException(rte);
throw ex;
}
-
}
public boolean isBound(AMQDestination destination) throws JMSException
{
- return _session.isQueueBound(destination.getExchangeName(), destination.getAMQQueueName(), destination.getRoutingKey());
+ return _session.isQueueBound(destination.getExchangeName(), destination.getAMQQueueName(),
+ destination.getRoutingKey());
}
}
Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java?rev=597478&r1=597477&r2=597478&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java Thu Nov 22 11:05:33 2007
@@ -42,6 +42,7 @@
import java.util.Enumeration;
import java.util.Map;
import java.util.UUID;
+import java.io.IOException;
public abstract class AbstractJMSMessage extends AMQMessage implements org.apache.qpid.jms.Message
{
@@ -58,6 +59,48 @@
private BasicMessageConsumer _consumer;
private boolean _strictAMQP;
+ /**
+ * This is 0_10 specific
+ */
+ private org.apache.qpidity.api.Message _010message = null;
+
+ public void set010Message(org.apache.qpidity.api.Message m )
+ {
+ _010message = m;
+ }
+
+ public void dataChanged()
+ {
+ if (_010message != null)
+ {
+ _010message.clearData();
+ try
+ {
+ if (_data != null)
+ {
+ _010message.appendData(_data.buf());
+ }
+ else
+ {
+ _010message.appendData(java.nio.ByteBuffer.allocate(0));
+ }
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ /**
+ * End 010 specific
+ */
+
+ public org.apache.qpidity.api.Message get010Message()
+ {
+ return _010message;
+ }
+
protected AbstractJMSMessage(ByteBuffer data)
{
super(new BasicContentHeaderProperties());
@@ -652,6 +695,7 @@
{
throw new MessageNotWriteableException("You need to call clearProperties() to make the message writable");
}
+ _contentHeaderProperties.updated();
}
public boolean isReadable()
@@ -673,6 +717,7 @@
else
{
_data.flip();
+ dataChanged();
_changedData = false;
}
}