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 17:27:17 UTC
git commit: Finish the property intercepter bits around ObjectMessage
serialization vs AMQP typed values.
Repository: qpid-jms
Updated Branches:
refs/heads/master dc40b09c9 -> d94144cc9
Finish the property intercepter bits around ObjectMessage serialization
vs AMQP typed values.
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/d94144cc
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/d94144cc
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/d94144cc
Branch: refs/heads/master
Commit: d94144cc95e8d43c38e8ded20c99dff2854579bf
Parents: dc40b09
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Sep 26 11:27:09 2014 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Sep 26 11:27:09 2014 -0400
----------------------------------------------------------------------
.../AmqpJmsMessagePropertyIntercepter.java | 5 +----
.../message/AmqpJmsObjectMessageFacade.java | 22 +++++++++++++++++++-
.../amqp/message/AmqpObjectTypeDelegate.java | 6 ++++++
.../message/AmqpSerializedObjectDelegate.java | 4 ++++
.../amqp/message/AmqpTypedObjectDelegate.java | 4 ++++
.../AmqpJmsMessagePropertyIntercepterTest.java | 22 +++++++++++++++++++-
6 files changed, 57 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d94144cc/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
index c5eb0d9..e5c60e5 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
@@ -147,7 +147,7 @@ public class AmqpJmsMessagePropertyIntercepter {
}
if (message instanceof AmqpJmsObjectMessageFacade) {
- // ((AmqpJmsSerializedObjectMessageFacade) message)
+ ((AmqpJmsObjectMessageFacade) message).setUseAmqpTypedEncoding(rc);
} else {
throw new MessageFormatException(JMS_AMQP_TYPED_ENCODING + " is only applicable to ObjectMessage");
}
@@ -156,9 +156,6 @@ public class AmqpJmsMessagePropertyIntercepter {
@Override
public boolean propertyExists(AmqpJmsMessageFacade message) {
if (message instanceof AmqpJmsObjectMessageFacade) {
- // TODO - See notes in AmqpObjectMessageFacade about whether this should
- // always be exposed for ObjectMessage or only if it's currently
- // the case that the message uses the AMQP typed encoding.
return ((AmqpJmsObjectMessageFacade) message).isAmqpTypedEncoding();
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d94144cc/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
index c55e682..694192b 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsObjectMessageFacade.java
@@ -120,7 +120,27 @@ public class AmqpJmsObjectMessageFacade extends AmqpJmsMessageFacade implements
@Override
public void onSend() {
- // TODO instruct delegate to encode the proper content type into the message.
+ delegate.onSend();
+ }
+
+ void setUseAmqpTypedEncoding(boolean useAmqpTypedEncoding) throws JMSException {
+ if (useAmqpTypedEncoding && delegate instanceof AmqpSerializedObjectDelegate) {
+ AmqpTypedObjectDelegate newDelegate = new AmqpTypedObjectDelegate(message);
+ try {
+ newDelegate.setObject(delegate.getObject());
+ } catch (ClassNotFoundException | IOException e) {
+ throw JmsExceptionSupport.create(e);
+ }
+ delegate = newDelegate;
+ } else if (delegate instanceof AmqpTypedObjectDelegate) {
+ AmqpSerializedObjectDelegate newDelegate = new AmqpSerializedObjectDelegate(message);
+ try {
+ newDelegate.setObject(delegate.getObject());
+ } catch (ClassNotFoundException | IOException e) {
+ throw JmsExceptionSupport.create(e);
+ }
+ delegate = newDelegate;
+ }
}
private void initDelegate(boolean useAmqpTypes) {
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d94144cc/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
index cfa6237..ce95700 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpObjectTypeDelegate.java
@@ -47,4 +47,10 @@ public interface AmqpObjectTypeDelegate {
*/
Serializable getObject() throws IOException, ClassNotFoundException;
+ /**
+ * Signals that the message is about to be sent or dispatched to a consumer, ensure
+ * proper state of the marshaled object and message annotations prior to that.
+ */
+ void onSend();
+
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d94144cc/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
index 72db9dc..3d974e2 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpSerializedObjectDelegate.java
@@ -98,4 +98,8 @@ public class AmqpSerializedObjectDelegate implements AmqpObjectTypeDelegate {
// TODO: ensure content type is [still] set?
}
+
+ @Override
+ public void onSend() {
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d94144cc/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpTypedObjectDelegate.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpTypedObjectDelegate.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpTypedObjectDelegate.java
index 234caaa..f5d8f0c 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpTypedObjectDelegate.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpTypedObjectDelegate.java
@@ -94,6 +94,10 @@ public class AmqpTypedObjectDelegate implements AmqpObjectTypeDelegate {
// TODO: ensure content type is not set (assuming we aren't using data sections)?
}
+ @Override
+ public void onSend() {
+ }
+
private boolean isSupportedAmqpValueObjectType(Serializable serializable) {
// TODO: augment supported types to encode as an AmqpValue?
return serializable instanceof Map<?,?> ||
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/d94144cc/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepterTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepterTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepterTest.java
index 1059e7b..972622b 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepterTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepterTest.java
@@ -133,7 +133,7 @@ public class AmqpJmsMessagePropertyIntercepterTest {
public void testSetJmsAmqpTypedEncoding() throws JMSException {
AmqpJmsObjectMessageFacade message = Mockito.mock(AmqpJmsObjectMessageFacade.class);
AmqpJmsMessagePropertyIntercepter.setProperty(message, JMS_AMQP_TYPED_ENCODING, true);
- // TODO
+ Mockito.verify(message).setUseAmqpTypedEncoding(true);
}
@Test
@@ -149,4 +149,24 @@ public class AmqpJmsMessagePropertyIntercepterTest {
assertEquals(false, AmqpJmsMessagePropertyIntercepter.getProperty(message, JMS_AMQP_TYPED_ENCODING));
}
+ @Test
+ public void testGetJmsAmqpTypedEncodingWhenUsingAmqpTypes() throws JMSException {
+ AmqpJmsObjectMessageFacade message = Mockito.mock(AmqpJmsObjectMessageFacade.class);
+ Mockito.when(message.isAmqpTypedEncoding()).thenReturn(true);
+ assertEquals(true, AmqpJmsMessagePropertyIntercepter.getProperty(message, JMS_AMQP_TYPED_ENCODING));
+ }
+
+ @Test
+ public void testJmsAmqpTypedEncodingNotInPropertyNamesWhenNotSet() throws JMSException {
+ AmqpJmsObjectMessageFacade message = Mockito.mock(AmqpJmsObjectMessageFacade.class);
+ Mockito.when(message.isAmqpTypedEncoding()).thenReturn(false);
+ assertFalse(AmqpJmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_AMQP_TYPED_ENCODING));
+ }
+
+ @Test
+ public void testJmsAmqpTypedEncodingInPropertyNamesWhenSet() throws JMSException {
+ AmqpJmsObjectMessageFacade message = Mockito.mock(AmqpJmsObjectMessageFacade.class);
+ Mockito.when(message.isAmqpTypedEncoding()).thenReturn(true);
+ assertTrue(AmqpJmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_AMQP_TYPED_ENCODING));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org