You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2014/09/26 22:19:00 UTC
git commit: Create separate methods for message prop in the case of
send vs dispatch so that we can have distinct processing logic for those
cases.
Repository: qpid-jms
Updated Branches:
refs/heads/master a5fe3018d -> ae9f689a2
Create separate methods for message prop in the case of send vs dispatch
so that we can have distinct processing logic for those cases.
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/ae9f689a
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/ae9f689a
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/ae9f689a
Branch: refs/heads/master
Commit: ae9f689a294cb5ef642a977c14077136a75319c0
Parents: a5fe301
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Sep 26 16:18:52 2014 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Sep 26 16:18:52 2014 -0400
----------------------------------------------------------------------
.../org/apache/qpid/jms/message/JmsMessage.java | 19 +++++++++++++++++--
.../jms/message/facade/JmsMessageFacade.java | 13 +++++++++++--
.../facade/defaults/JmsDefaultMessageFacade.java | 4 ++++
.../qpid/jms/provider/amqp/AmqpConsumer.java | 10 +++++-----
.../amqp/message/AmqpJmsMessageFacade.java | 11 +++++++++--
5 files changed, 46 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ae9f689a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
index eb06e21..a914204 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
@@ -514,9 +514,11 @@ public class JmsMessage implements javax.jms.Message {
}
/**
- * Send operation event listener. Used to get the message ready to be sent.
+ * Used to trigger processing required to place the message in a state where it is
+ * ready to be written to the wire. This processing can include such tasks as ensuring
+ * that the proper message headers are set or compressing message bodies etc.
*
- * @throws JMSException
+ * @throws JMSException if an error occurs while preparing the message for send.
*/
public void onSend() throws JMSException {
setReadOnlyBody(true);
@@ -524,6 +526,19 @@ public class JmsMessage implements javax.jms.Message {
facade.onSend();
}
+ /**
+ * Used to trigger processing required before dispatch of a message to its intended
+ * consumer. This method should perform any needed unmarshal or message property
+ * processing prior to the message arriving at a consumer.
+ *
+ * @throws JMSException if an error occurs while preparing the message for dispatch.
+ */
+ public void onDispatch() throws JMSException {
+ setReadOnlyBody(true);
+ setReadOnlyProperties(true);
+ facade.onDispatch();
+ }
+
public JmsConnection getConnection() {
return connection;
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ae9f689a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
index 9f4717d..fb998dc 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
@@ -77,14 +77,23 @@ public interface JmsMessageFacade {
void setProperty(String key, Object value) throws JMSException;
/**
- * Called when a message is sent to allow a Message instance to move the
- * contents from a logical data structure to a binary form for transmission.
+ * Called before a message is sent to allow a Message instance to move the
+ * contents from a logical data structure to a binary form for transmission, or
+ * other processing such as setting proper message headers etc.
*
* @throws JMSException if an error occurs while preparing the message for send.
*/
void onSend() throws JMSException;
/**
+ * Called before a message is dispatched to its intended consumer to allow for
+ * any necessary processing of message data such as setting read-only state etc.
+ *
+ * @throws JMSException if an error occurs while preparing the message for send.
+ */
+ void onDispatch() throws JMSException;
+
+ /**
* This method should provide a quick check on the message to determine if
* there is any content actually contained within.
*
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ae9f689a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
index 330ddfb..41e5d4e 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java
@@ -129,6 +129,10 @@ public class JmsDefaultMessageFacade implements JmsMessageFacade {
}
@Override
+ public void onDispatch() throws JMSException {
+ }
+
+ @Override
public boolean isEmpty() {
return true;
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ae9f689a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java
index 57c6b35..6906e14 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConsumer.java
@@ -75,7 +75,7 @@ public class AmqpConsumer extends AbstractAmqpResource<JmsConsumerInfo, Receiver
private final ByteArrayOutputStream streamBuffer = new ByteArrayOutputStream();
private final byte incomingBuffer[] = new byte[1024 * 64];
- private AtomicLong _incomingSequence = new AtomicLong(0);
+ private final AtomicLong _incomingSequence = new AtomicLong(0);
public AmqpConsumer(AmqpSession session, JmsConsumerInfo info) {
super(info);
@@ -333,10 +333,10 @@ public class AmqpConsumer extends AbstractAmqpResource<JmsConsumerInfo, Receiver
return;
}
- // We need to signal to the create message that it's being dispatched and for now
- // the transformer creates the message in write mode, onSend will reset it to read
- // mode and the consumer will see it as a normal received message.
- message.onSend();
+ // Let the message do any final processing before sending it onto a consumer.
+ // We could defer this to a later stage such as the JmsConnection or even in
+ // the JmsMessageConsumer dispatch method if we needed to.
+ message.onDispatch();
JmsInboundMessageDispatch envelope = new JmsInboundMessageDispatch(getNextIncomingSequenceNumber());
envelope.setMessage(message);
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ae9f689a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
index 6a637c6..02f3d7e 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
@@ -214,16 +214,23 @@ public class AmqpJmsMessageFacade implements JmsMessageFacade {
@Override
public void onSend() throws JMSException {
+ // TODO - Why is this here ?? Seems to be circular reading and reseting
String contentType = getContentType();
- byte jmsMsgType = getJmsMsgType();
-
if (contentType != null) {
message.setContentType(contentType);
}
+
+ byte jmsMsgType = getJmsMsgType();
setAnnotation(JMS_MSG_TYPE, jmsMsgType);
}
@Override
+ public void onDispatch() throws JMSException {
+ // TODO - Sort out send vs dispatch processing.
+ onSend();
+ }
+
+ @Override
public void clearBody() {
message.setBody(null);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org