You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/03/03 00:55:22 UTC
[1/5] activemq-artemis git commit: Fixing converters part I
Repository: activemq-artemis
Updated Branches:
refs/heads/artemis-1009 9d3260b90 -> b557f2df6
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
index 1b7ed43..b5d2c86 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQSession.java
@@ -23,6 +23,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.paging.PagingStore;
import org.apache.activemq.artemis.core.postoffice.RoutingStatus;
@@ -34,7 +35,6 @@ import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
import org.apache.activemq.artemis.core.server.BindingQueryResult;
import org.apache.activemq.artemis.core.server.MessageReference;
import org.apache.activemq.artemis.core.server.QueueQueryResult;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.server.ServerConsumer;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.core.server.SlowConsumerDetectionListener;
@@ -234,7 +234,8 @@ public class AMQSession implements SessionCallback {
ServerConsumer consumer,
int deliveryCount) {
AMQConsumer theConsumer = (AMQConsumer) consumer.getProtocolData();
- return theConsumer.handleDeliver(reference, message, deliveryCount);
+ // TODO: use encoders and proper conversions here
+ return theConsumer.handleDeliver(reference, message.toCore(), deliveryCount);
}
@Override
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompConnection.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompConnection.java b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompConnection.java
index c64c1ea..d0dff4d 100644
--- a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompConnection.java
+++ b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompConnection.java
@@ -30,7 +30,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
@@ -598,7 +598,7 @@ public final class StompConnection implements RemotingConnection {
}
}
- protected void sendServerMessage(Message message, String txID) throws ActiveMQStompException {
+ protected void sendServerMessage(ICoreMessage message, String txID) throws ActiveMQStompException {
StompSession stompSession = getSession(txID);
if (stompSession.isNoLocal()) {
@@ -726,7 +726,7 @@ public final class StompConnection implements RemotingConnection {
return SERVER_NAME;
}
- public StompFrame createStompMessage(Message serverMessage,
+ public StompFrame createStompMessage(ICoreMessage serverMessage,
StompSubscription subscription,
int deliveryCount) throws Exception {
return frameHandler.createMessageFrame(serverMessage, subscription, deliveryCount);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManager.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManager.java b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManager.java
index 2be0be4..39d2fe9 100644
--- a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManager.java
+++ b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompProtocolManager.java
@@ -41,7 +41,6 @@ import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.spi.core.protocol.AbstractProtocolManager;
import org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry;
-import org.apache.activemq.artemis.spi.core.protocol.MessageConverter;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.spi.core.remoting.Acceptor;
@@ -109,13 +108,6 @@ public class StompProtocolManager extends AbstractProtocolManager<StompFrame, St
}
@Override
- public MessageConverter getConverter() {
- return null;
- }
-
- // ProtocolManager implementation --------------------------------
-
- @Override
public ConnectionEntry createConnectionEntry(final Acceptor acceptorUsed, final Connection connection) {
StompConnection conn = new StompConnection(acceptorUsed, connection, this, server.getScheduledPool(), server.getExecutorFactory());
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompSession.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompSession.java b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompSession.java
index d2d42b7..ba706e5 100644
--- a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompSession.java
+++ b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/StompSession.java
@@ -26,6 +26,7 @@ import java.util.concurrent.LinkedBlockingDeque;
import java.util.zip.Inflater;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.Pair;
import org.apache.activemq.artemis.api.core.RoutingType;
@@ -131,12 +132,11 @@ public class StompSession implements SessionCallback {
//TODO-now: fix encoders
LargeServerMessageImpl largeMessage = null;
- Message newServerMessage = serverMessage;
+ ICoreMessage newServerMessage = serverMessage.toCore();
try {
StompSubscription subscription = subscriptions.get(consumer.getID());
StompFrame frame = null;
if (serverMessage.isLargeMessage()) {
- newServerMessage = serverMessage.copy();
largeMessage = (LargeServerMessageImpl) serverMessage;
LargeBodyEncoder encoder = largeMessage.getBodyEncoder();
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/VersionedStompFrameHandler.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/VersionedStompFrameHandler.java b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/VersionedStompFrameHandler.java
index 8d13613..1e40d42 100644
--- a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/VersionedStompFrameHandler.java
+++ b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/VersionedStompFrameHandler.java
@@ -20,6 +20,7 @@ import java.nio.charset.StandardCharsets;
import java.util.concurrent.ScheduledExecutorService;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
@@ -287,7 +288,7 @@ public abstract class VersionedStompFrameHandler {
return response;
}
- public StompFrame createMessageFrame(Message serverMessage,
+ public StompFrame createMessageFrame(ICoreMessage serverMessage,
StompSubscription subscription,
int deliveryCount) throws Exception {
StompFrame frame = createStompFrame(Stomp.Responses.MESSAGE);
@@ -299,7 +300,7 @@ public abstract class VersionedStompFrameHandler {
// TODO-now fix encoders
ActiveMQBuffer buffer = serverMessage.getReadOnlyBodyBuffer();
- int bodyPos = ((CoreMessage)serverMessage).getEndOfBodyPosition() == -1 ? buffer.writerIndex() : ((CoreMessage)serverMessage).getEndOfBodyPosition();
+ int bodyPos = (serverMessage).getEndOfBodyPosition() == -1 ? buffer.writerIndex() : (serverMessage).getEndOfBodyPosition();
buffer.readerIndex(CoreMessage.BUFFER_HEADER_SPACE + DataConstants.SIZE_INT);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v12/StompFrameHandlerV12.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v12/StompFrameHandlerV12.java b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v12/StompFrameHandlerV12.java
index b14605d..58d18ef 100644
--- a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v12/StompFrameHandlerV12.java
+++ b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v12/StompFrameHandlerV12.java
@@ -18,7 +18,7 @@ package org.apache.activemq.artemis.core.protocol.stomp.v12;
import java.util.concurrent.ScheduledExecutorService;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.core.protocol.stomp.ActiveMQStompException;
import org.apache.activemq.artemis.core.protocol.stomp.Stomp;
import org.apache.activemq.artemis.core.protocol.stomp.StompConnection;
@@ -48,7 +48,7 @@ public class StompFrameHandlerV12 extends StompFrameHandlerV11 {
}
@Override
- public StompFrame createMessageFrame(Message serverMessage,
+ public StompFrame createMessageFrame(ICoreMessage serverMessage,
StompSubscription subscription,
int deliveryCount) throws Exception {
StompFrame frame = super.createMessageFrame(serverMessage, subscription, deliveryCount);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java
index 9f36b7f..0ecbae1 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java
@@ -32,6 +32,7 @@ import java.util.List;
import java.util.Map;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.server.MessageReference;
@@ -48,8 +49,10 @@ public final class OpenTypeSupport {
public static CompositeData convert(MessageReference ref) throws OpenDataException {
CompositeType ct;
+ ICoreMessage message = ref.getMessage().toCore();
+
Map<String, Object> fields;
- byte type = ref.getMessage().getType();
+ byte type = message.getType();
switch(type) {
case Message.TEXT_TYPE:
@@ -128,8 +131,7 @@ public final class OpenTypeSupport {
public Map<String, Object> getFields(MessageReference ref) throws OpenDataException {
Map<String, Object> rc = new HashMap<>();
- // TODO-now: fix this
- Message m = ref.getMessage();
+ ICoreMessage m = ref.getMessage().toCore();
rc.put(CompositeDataConstants.MESSAGE_ID, "" + m.getMessageID());
if (m.getUserID() != null) {
rc.put(CompositeDataConstants.USER_ID, "ID:" + m.getUserID().toString());
@@ -270,7 +272,7 @@ public final class OpenTypeSupport {
@Override
public Map<String, Object> getFields(MessageReference ref) throws OpenDataException {
Map<String, Object> rc = super.getFields(ref);
- Message m = ref.getMessage();
+ ICoreMessage m = ref.getMessage().toCore();
ActiveMQBuffer bodyCopy = m.getReadOnlyBodyBuffer();
byte[] bytes = new byte[bodyCopy.readableBytes()];
bodyCopy.readBytes(bytes);
@@ -291,7 +293,7 @@ public final class OpenTypeSupport {
@Override
public Map<String, Object> getFields(MessageReference ref) throws OpenDataException {
Map<String, Object> rc = super.getFields(ref);
- Message m = ref.getMessage();
+ ICoreMessage m = ref.getMessage().toCore();
SimpleString text = m.getReadOnlyBodyBuffer().readNullableSimpleString();
rc.put(CompositeDataConstants.TEXT_BODY, text != null ? text.toString() : "");
return rc;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/Page.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/Page.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/Page.java
index aabec54..271b85c 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/Page.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/Page.java
@@ -24,6 +24,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.io.SequentialFile;
import org.apache.activemq.artemis.core.io.SequentialFileFactory;
@@ -255,7 +256,7 @@ public final class Page implements Comparable<Page> {
if (messages != null) {
for (PagedMessage msg : messages) {
- if (msg.getMessage().isLargeMessage()) {
+ if (msg.getMessage() instanceof ICoreMessage && ((ICoreMessage)msg.getMessage()).isLargeMessage()) {
LargeServerMessage lmsg = (LargeServerMessage) msg.getMessage();
// Remember, cannot call delete directly here
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagedMessageImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagedMessageImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagedMessageImpl.java
index d50dd2e..7d43a2e 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagedMessageImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagedMessageImpl.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.core.paging.impl;
import java.util.Arrays;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.core.paging.PagedMessage;
import org.apache.activemq.artemis.core.persistence.StorageManager;
@@ -136,8 +137,8 @@ public class PagedMessageImpl implements PagedMessage {
}
}
- private boolean isLargeMessage() {
- return message.isLargeMessage();
+ public boolean isLargeMessage() {
+ return message instanceof ICoreMessage && ((ICoreMessage)message).isLargeMessage();
}
@Override
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java
index 2295987..fc0885f 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java
@@ -26,6 +26,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQIOErrorException;
import org.apache.activemq.artemis.api.core.ActiveMQInternalErrorException;
import org.apache.activemq.artemis.api.core.ActiveMQQueueMaxConsumerLimitReached;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.exception.ActiveMQXAException;
import org.apache.activemq.artemis.core.io.IOCallback;
import org.apache.activemq.artemis.core.persistence.StorageManager;
@@ -85,7 +86,6 @@ import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
import org.apache.activemq.artemis.core.server.BindingQueryResult;
import org.apache.activemq.artemis.core.server.LargeServerMessage;
import org.apache.activemq.artemis.core.server.QueueQueryResult;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.spi.core.remoting.Connection;
import org.jboss.logging.Logger;
@@ -491,7 +491,6 @@ public class ServerSessionPacketHandler implements ChannelHandler {
case SESS_SEND: {
SessionSendMessage message = (SessionSendMessage) packet;
requiresResponse = message.isRequiresResponse();
- message.getMessage().setProtocol(manager);
session.send(message.getMessage(), direct);
if (requiresResponse) {
response = new NullResponseMessage();
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
index ffaf2cb..cc81fbe 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreProtocolManager.java
@@ -30,6 +30,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.BaseInterceptor;
import org.apache.activemq.artemis.api.core.Interceptor;
import org.apache.activemq.artemis.api.core.Pair;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
@@ -53,9 +54,7 @@ import org.apache.activemq.artemis.core.remoting.CloseListener;
import org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQFrameDecoder2;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry;
-import org.apache.activemq.artemis.spi.core.protocol.MessageConverter;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManager;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
@@ -111,16 +110,6 @@ public class CoreProtocolManager implements ProtocolManager<Interceptor> {
return false;
}
- /**
- * no need to implement this now
- *
- * @return
- */
- @Override
- public MessageConverter getConverter() {
- return null;
- }
-
@Override
public ConnectionEntry createConnectionEntry(final Acceptor acceptorUsed, final Connection connection) {
final Configuration config = server.getConfiguration();
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreSessionCallback.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreSessionCallback.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreSessionCallback.java
index 3a09e91..542d726 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreSessionCallback.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/CoreSessionCallback.java
@@ -92,10 +92,9 @@ public final class CoreSessionCallback implements SessionCallback {
}
@Override
- public int sendMessage(MessageReference ref, Message message, ServerConsumer consumer, int deliveryCount) {
+ public int sendMessage(MessageReference ref, Message message, ServerConsumer consumer, int deliveryCount) {
- // TODO-now: fix this
- Packet packet = new SessionReceiveMessage(consumer.getID(), message, deliveryCount);
+ Packet packet = new SessionReceiveMessage(consumer.getID(), message.toCore(), deliveryCount);
int size = 0;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LargeServerMessage.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LargeServerMessage.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LargeServerMessage.java
index aa58a7d..6fcc802 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LargeServerMessage.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LargeServerMessage.java
@@ -17,11 +17,11 @@
package org.apache.activemq.artemis.core.server;
import org.apache.activemq.artemis.api.core.ActiveMQException;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.core.io.SequentialFile;
import org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage;
-public interface LargeServerMessage extends ReplicatedLargeMessage, Message {
+public interface LargeServerMessage extends ReplicatedLargeMessage, ICoreMessage {
@Override
void addBytes(byte[] bytes) throws Exception;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServerConsumer.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServerConsumer.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServerConsumer.java
index ce9c489..ab97b56 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServerConsumer.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ServerConsumer.java
@@ -18,6 +18,7 @@ package org.apache.activemq.artemis.core.server;
import java.util.List;
+import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.core.transaction.Transaction;
/**
@@ -94,7 +95,7 @@ public interface ServerConsumer extends Consumer {
void individualCancel(final long messageID, boolean failed) throws Exception;
- void forceDelivery(long sequence);
+ void forceDelivery(long sequence) throws ActiveMQException;
void setTransferring(boolean transferring);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerConsumerImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerConsumerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerConsumerImpl.java
index a130437..e3c4744 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerConsumerImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerConsumerImpl.java
@@ -507,14 +507,19 @@ public class ServerConsumerImpl implements ServerConsumer, ReadyListener {
* there are no other messages to be delivered.
*/
@Override
- public void forceDelivery(final long sequence) {
+ public void forceDelivery(final long sequence) throws ActiveMQException {
forceDelivery(sequence, () -> {
Message forcedDeliveryMessage = new CoreMessage(storageManager.generateID(), 50);
forcedDeliveryMessage.putLongProperty(ClientConsumerImpl.FORCED_DELIVERY_MESSAGE, sequence);
forcedDeliveryMessage.setAddress(messageQueue.getName());
- callback.sendMessage(null, forcedDeliveryMessage, ServerConsumerImpl.this, 0);
+ try {
+ callback.sendMessage(null, forcedDeliveryMessage, ServerConsumerImpl.this, 0);
+ } catch (Exception e) {
+ logger.warn(e.getMessage(), e);
+ }
+
});
}
@@ -1015,7 +1020,7 @@ public class ServerConsumerImpl implements ServerConsumer, ReadyListener {
* @param ref
* @param message
*/
- private void deliverStandardMessage(final MessageReference ref, final Message message) {
+ private void deliverStandardMessage(final MessageReference ref, final Message message) throws ActiveMQException {
int packetSize = callback.sendMessage(ref, message, ServerConsumerImpl.this, ref.getDeliveryCount());
if (availableCredits != null) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
index 84ab636..29a2e47 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
@@ -21,7 +21,9 @@ import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
@@ -42,8 +44,6 @@ import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.Divert;
import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.core.server.QueueFactory;
-import org.apache.activemq.artemis.api.core.RoutingType;
-
import org.apache.activemq.artemis.core.server.cluster.Bridge;
import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
@@ -129,5 +129,5 @@ public interface ManagementService extends NotificationService, ActiveMQComponen
Object[] getResources(Class<?> resourceType);
- Message handleMessage(Message message) throws Exception;
+ ICoreMessage handleMessage(Message message) throws Exception;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
index 5b2bf28..cda0a8a 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
@@ -33,6 +33,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledExecutorService;
import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.JsonUtil;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RoutingType;
@@ -365,10 +366,10 @@ public class ManagementServiceImpl implements ManagementService {
}
@Override
- public Message handleMessage(Message message) throws Exception {
+ public ICoreMessage handleMessage(Message message) throws Exception {
message = message.toCore();
// a reply message is sent with the result stored in the message body.
- Message reply = new CoreMessage(storageManager.generateID(), 512);
+ CoreMessage reply = new CoreMessage(storageManager.generateID(), 512);
String resourceName = message.getStringProperty(ManagementHelper.HDR_RESOURCE_NAME);
if (logger.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/CoreTransactionDetail.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/CoreTransactionDetail.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/CoreTransactionDetail.java
index c885341..95036da 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/CoreTransactionDetail.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/transaction/impl/CoreTransactionDetail.java
@@ -19,8 +19,8 @@ package org.apache.activemq.artemis.core.transaction.impl;
import javax.transaction.xa.Xid;
import java.util.Map;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
-
import org.apache.activemq.artemis.core.transaction.Transaction;
import org.apache.activemq.artemis.core.transaction.TransactionDetail;
@@ -32,7 +32,10 @@ public class CoreTransactionDetail extends TransactionDetail {
@Override
public String decodeMessageType(Message msg) {
- int type = msg.getType();
+ if (!(msg instanceof ICoreMessage)) {
+ return "N/A";
+ }
+ int type = ((ICoreMessage)msg).getType();
switch (type) {
case Message.DEFAULT_TYPE: // 0
return "Default";
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/MessageConverter.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/MessageConverter.java b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/MessageConverter.java
index 3a5e2bf..a440e31 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/MessageConverter.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/MessageConverter.java
@@ -16,11 +16,12 @@
*/
package org.apache.activemq.artemis.spi.core.protocol;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
-public interface MessageConverter {
+public interface MessageConverter<ProtocolMessage extends Message> {
- Message inbound(Object messageInbound) throws Exception;
+ ICoreMessage toCore(ProtocolMessage pureMessage) throws Exception;
- Object outbound(Message messageOutbound, int deliveryCount) throws Exception;
+ ProtocolMessage fromCore(ICoreMessage coreMessage) throws Exception;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/ProtocolManager.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/ProtocolManager.java b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/ProtocolManager.java
index c2b7334..e29d74d 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/ProtocolManager.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/ProtocolManager.java
@@ -22,9 +22,9 @@ import java.util.Map;
import io.netty.channel.ChannelPipeline;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.BaseInterceptor;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.spi.core.remoting.Acceptor;
import org.apache.activemq.artemis.spi.core.remoting.Connection;
@@ -53,14 +53,6 @@ public interface ProtocolManager<P extends BaseInterceptor> {
boolean isProtocol(byte[] array);
/**
- * Gets the Message Converter towards ActiveMQ Artemis.
- * Notice this being null means no need to convert
- *
- * @return
- */
- MessageConverter getConverter();
-
- /**
* If this protocols accepts connectoins without an initial handshake.
* If true this protocol will be the failback case no other connections are made.
* New designed protocols should always require a handshake. This is only useful for legacy protocols.
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
index 92204ce..2f18c21 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
@@ -23,7 +23,9 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
@@ -44,8 +46,6 @@ import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.Divert;
import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.core.server.QueueFactory;
-import org.apache.activemq.artemis.api.core.RoutingType;
-
import org.apache.activemq.artemis.core.server.cluster.Bridge;
import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
@@ -330,7 +330,7 @@ public class ClusteredResetMockTest extends ActiveMQTestBase {
}
@Override
- public Message handleMessage(Message message) throws Exception {
+ public ICoreMessage handleMessage(Message message) throws Exception {
return null;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/ScheduledDeliveryHandlerTest.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/ScheduledDeliveryHandlerTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/ScheduledDeliveryHandlerTest.java
index 5b44572..522b7d0 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/ScheduledDeliveryHandlerTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/impl/ScheduledDeliveryHandlerTest.java
@@ -32,15 +32,13 @@ import java.util.concurrent.atomic.AtomicInteger;
import io.netty.buffer.ByteBuf;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
-import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RefCountMessage;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.encode.BodyType;
import org.apache.activemq.artemis.core.filter.Filter;
-import org.apache.activemq.artemis.core.message.LargeBodyEncoder;
+import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.core.paging.cursor.PageSubscription;
import org.apache.activemq.artemis.core.persistence.Persister;
import org.apache.activemq.artemis.core.server.Consumer;
@@ -312,12 +310,7 @@ public class ScheduledDeliveryHandlerTest extends Assert {
final long id;
@Override
- public Message toCore() {
- return this;
- }
-
- @Override
- public ActiveMQBuffer getReadOnlyBodyBuffer() {
+ public CoreMessage toCore() {
return null;
}
@@ -389,10 +382,6 @@ public class ScheduledDeliveryHandlerTest extends Assert {
public void messageChanged() {
}
- @Override
- public LargeBodyEncoder getBodyEncoder() throws ActiveMQException {
- return null;
- }
@Override
public UUID getUserID() {
@@ -418,32 +407,6 @@ public class ScheduledDeliveryHandlerTest extends Assert {
public ByteBuf getBuffer() {
return null;
}
-
- @Override
- public Object getProtocol() {
- return null;
- }
-
- @Override
- public Message setProtocol(Object protocol) {
- return null;
- }
-
- @Override
- public Object getBody() {
- return null;
- }
-
- @Override
- public BodyType getBodyType() {
- return null;
- }
-
- @Override
- public Message setBody(BodyType type, Object body) {
- return null;
- }
-
@Override
public Message setAddress(String address) {
return null;
@@ -455,11 +418,6 @@ public class ScheduledDeliveryHandlerTest extends Assert {
}
@Override
- public byte getType() {
- return 0;
- }
-
- @Override
public boolean isDurable() {
return false;
}
@@ -515,11 +473,6 @@ public class ScheduledDeliveryHandlerTest extends Assert {
}
@Override
- public ActiveMQBuffer getBodyBuffer() {
- return null;
- }
-
- @Override
public Message putBooleanProperty(SimpleString key, boolean value) {
return null;
}
@@ -785,11 +738,6 @@ public class ScheduledDeliveryHandlerTest extends Assert {
}
@Override
- public Message setType(byte type) {
- return null;
- }
-
- @Override
public void receiveBuffer(ByteBuf buffer) {
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
index aa64d9f..0bb177d 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
@@ -65,6 +65,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.Pair;
import org.apache.activemq.artemis.api.core.SimpleString;
@@ -2079,7 +2080,7 @@ public abstract class ActiveMQTestBase extends Assert {
}
protected Message generateMessage(final long id) {
- Message message = new CoreMessage(id, 1000);
+ ICoreMessage message = new CoreMessage(id, 1000);
message.setMessageID(id);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AcknowledgeTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AcknowledgeTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AcknowledgeTest.java
index 40f2ebd..16154c1 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AcknowledgeTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AcknowledgeTest.java
@@ -25,6 +25,7 @@ import io.netty.buffer.ByteBuf;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RefCountMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
@@ -35,9 +36,7 @@ import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.MessageHandler;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
-import org.apache.activemq.artemis.api.core.encode.BodyType;
import org.apache.activemq.artemis.core.client.impl.ClientSessionInternal;
-import org.apache.activemq.artemis.core.message.LargeBodyEncoder;
import org.apache.activemq.artemis.core.persistence.Persister;
import org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQConsumerContext;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
@@ -339,6 +338,8 @@ public class AcknowledgeTest extends ActiveMQTestBase {
class FakeMessageWithID extends RefCountMessage {
+ final long id;
+
@Override
public int getPersistSize() {
return 0;
@@ -354,11 +355,6 @@ public class AcknowledgeTest extends ActiveMQTestBase {
}
@Override
- public Message setProtocol(Object protocol) {
- return this;
- }
-
- @Override
public void reloadPersistence(ActiveMQBuffer record) {
}
@@ -369,8 +365,8 @@ public class AcknowledgeTest extends ActiveMQTestBase {
}
@Override
- public Message toCore() {
- return this;
+ public ICoreMessage toCore() {
+ return null;
}
@Override
@@ -382,12 +378,6 @@ public class AcknowledgeTest extends ActiveMQTestBase {
public void sendBuffer(ByteBuf buffer, int count) {
}
-
- @Override
- public LargeBodyEncoder getBodyEncoder() throws ActiveMQException {
- return null;
- }
-
@Override
public Message setUserID(Object userID) {
return null;
@@ -404,18 +394,6 @@ public class AcknowledgeTest extends ActiveMQTestBase {
}
@Override
- public ActiveMQBuffer getReadOnlyBodyBuffer() {
- return null;
- }
-
- final long id;
-
- @Override
- public Message setType(byte type) {
- return null;
- }
-
- @Override
public Message copy() {
return null;
}
@@ -495,26 +473,6 @@ public class AcknowledgeTest extends ActiveMQTestBase {
}
@Override
- public Object getProtocol() {
- return null;
- }
-
- @Override
- public Object getBody() {
- return null;
- }
-
- @Override
- public BodyType getBodyType() {
- return null;
- }
-
- @Override
- public Message setBody(BodyType type, Object body) {
- return null;
- }
-
- @Override
public Message setAddress(String address) {
return null;
}
@@ -525,11 +483,6 @@ public class AcknowledgeTest extends ActiveMQTestBase {
}
@Override
- public byte getType() {
- return 0;
- }
-
- @Override
public boolean isDurable() {
return false;
}
@@ -585,11 +538,6 @@ public class AcknowledgeTest extends ActiveMQTestBase {
}
@Override
- public ActiveMQBuffer getBodyBuffer() {
- return null;
- }
-
- @Override
public Message putBooleanProperty(SimpleString key, boolean value) {
return null;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/ConsumerTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/ConsumerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/ConsumerTest.java
index e2cf2a0..03e9ec3 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/ConsumerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/ConsumerTest.java
@@ -196,7 +196,7 @@ public class ConsumerTest extends ActiveMQTestBase {
return;
}
- internalSend(true);
+ internalSend(true, true);
}
@Test
@@ -207,21 +207,38 @@ public class ConsumerTest extends ActiveMQTestBase {
return;
}
- internalSend(false);
+ internalSend(false, true);
}
- public void internalSend(boolean amqp) throws Throwable {
+ @Test
+ public void testSendAMQPReceiveCore() throws Throwable {
+
+ if (!isNetty()) {
+ // no need to run the test, there's no AMQP support
+ return;
+ }
+
+ internalSend(true, false);
+ }
- ConnectionFactory factory;
+ @Test
+ public void testSendCoreReceiveAMQP() throws Throwable {
- if (amqp) {
- factory = new JmsConnectionFactory("amqp://localhost:61616");
- } else {
- factory = new ActiveMQConnectionFactory();
+ if (!isNetty()) {
+ // no need to run the test, there's no AMQP support
+ return;
}
+ internalSend(false, true);
+ }
+
+ public void internalSend(boolean amqpSender, boolean amqpConsumer) throws Throwable {
+
+ ConnectionFactory factoryAMQP = new JmsConnectionFactory("amqp://localhost:61616");
+ ConnectionFactory factoryCore = new ActiveMQConnectionFactory();
+
- Connection connection = factory.createConnection();
+ Connection connection = (amqpSender ? factoryAMQP : factoryCore).createConnection();
try {
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
@@ -232,7 +249,9 @@ public class ConsumerTest extends ActiveMQTestBase {
long time = System.currentTimeMillis();
int NUMBER_OF_MESSAGES = 100;
for (int i = 0; i < NUMBER_OF_MESSAGES; i++) {
- producer.send(session.createTextMessage("hello " + i));
+ TextMessage msg = session.createTextMessage("hello " + i);
+ msg.setIntProperty("mycount", i);
+ producer.send(msg);
}
long end = System.currentTimeMillis();
@@ -245,8 +264,9 @@ public class ConsumerTest extends ActiveMQTestBase {
server.start();
}
- connection = factory.createConnection();
+ connection = (amqpConsumer ? factoryAMQP : factoryCore).createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ queue = session.createQueue(QUEUE.toString());
connection.start();
@@ -255,6 +275,7 @@ public class ConsumerTest extends ActiveMQTestBase {
for (int i = 0; i < NUMBER_OF_MESSAGES; i++) {
TextMessage message = (TextMessage) consumer.receive(1000);
Assert.assertNotNull(message);
+ Assert.assertEquals(i, message.getIntProperty("mycount"));
Assert.assertEquals("hello " + i, message.getText());
}
} finally {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageTest.java
index 5e822eb..025d00a 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageTest.java
@@ -40,7 +40,6 @@ import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.core.client.impl.ClientConsumerInternal;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.StoreConfiguration;
-
import org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager;
import org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
@@ -350,7 +349,7 @@ public class LargeMessageTest extends LargeMessageTestBase {
ClientProducer producer = session.createProducer(ADDRESS);
- Message clientFile = session.createMessage(true);
+ ClientMessage clientFile = session.createMessage(true);
for (int i = 0; i < messageSize; i++) {
clientFile.getBodyBuffer().writeByte(getSamplebyte(i));
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientExitTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientExitTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientExitTest.java
index 70c5b22..23fa0a6 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientExitTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/clientcrash/ClientExitTest.java
@@ -16,9 +16,9 @@
*/
package org.apache.activemq.artemis.tests.integration.clientcrash;
-import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ClientConsumer;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
@@ -63,7 +63,7 @@ public class ClientExitTest extends ClientTestBase {
// read the message from the queue
- Message message = consumer.receive(15000);
+ ClientMessage message = consumer.receive(15000);
assertNotNull(message);
assertEquals(ClientExitTest.MESSAGE_TEXT, message.getBodyBuffer().readString());
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/MessageJournalTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/MessageJournalTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/MessageJournalTest.java
index 1897bdd..85ed04f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/MessageJournalTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/journal/MessageJournalTest.java
@@ -28,7 +28,6 @@ import org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageM
import org.apache.activemq.artemis.core.protocol.core.impl.CoreProtocolManagerFactory;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
-import org.apache.activemq.artemis.protocol.amqp.broker.ProtonProtocolManager;
import org.apache.activemq.artemis.protocol.amqp.broker.ProtonProtocolManagerFactory;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.qpid.proton.message.Message;
@@ -53,8 +52,6 @@ public class MessageJournalTest extends ActiveMQTestBase {
message.getBodyBuffer().writeByte((byte)'Z');
- message.setProtocol(factory.createProtocolManager(server, null, null, null));
-
server.getStorageManager().storeMessage(message);
server.getStorageManager().stop();
@@ -95,7 +92,7 @@ public class MessageJournalTest extends ActiveMQTestBase {
Message protonJMessage = Message.Factory.create();
- AMQPMessage message = new AMQPMessage(protonJMessage, (ProtonProtocolManager)factory.createProtocolManager(server, null, null, null));
+ AMQPMessage message = new AMQPMessage(protonJMessage);
message.setMessageID(333);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementHelperTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementHelperTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementHelperTest.java
index 0719b38..3151408 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementHelperTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementHelperTest.java
@@ -20,7 +20,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
import org.apache.activemq.artemis.core.client.impl.ClientMessageImpl;
import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
@@ -48,7 +48,7 @@ public class ManagementHelperTest extends Assert {
String operationName = RandomUtil.randomString();
String param = RandomUtil.randomString();
String[] params = new String[]{RandomUtil.randomString(), RandomUtil.randomString(), RandomUtil.randomString()};
- Message msg = new ClientMessageImpl((byte) 0, false, 0, 0, (byte) 4, 1000);
+ ClientMessage msg = new ClientMessageImpl((byte) 0, false, 0, 0, (byte) 4, 1000);
ManagementHelper.putOperationInvocation(msg, resource, operationName, param, params);
Object[] parameters = ManagementHelper.retrieveOperationParameters(msg);
@@ -135,7 +135,7 @@ public class ManagementHelperTest extends Assert {
Object[] params = new Object[]{i, s, d, b, l, map, strArray, maps};
- Message msg = new ClientMessageImpl((byte) 0, false, 0, 0, (byte) 4, 1000);
+ ClientMessageImpl msg = new ClientMessageImpl((byte) 0, false, 0, 0, (byte) 4, 1000);
ManagementHelper.putOperationInvocation(msg, resource, operationName, params);
Object[] parameters = ManagementHelper.retrieveOperationParameters(msg);
@@ -201,7 +201,7 @@ public class ManagementHelperTest extends Assert {
Object[] params = new Object[]{"hello", map};
- Message msg = new ClientMessageImpl((byte) 0, false, 0, 0, (byte) 4, 1000);
+ ClientMessageImpl msg = new ClientMessageImpl((byte) 0, false, 0, 0, (byte) 4, 1000);
ManagementHelper.putOperationInvocation(msg, resource, operationName, params);
Object[] parameters = ManagementHelper.retrieveOperationParameters(msg);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
index b6ea147..151341f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.tests.integration.management;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.AddressControl;
@@ -50,7 +51,7 @@ public class ManagementServiceImplTest extends ActiveMQTestBase {
server.start();
// invoke attribute and operation on the server
- Message message = new CoreMessage(1, 100);
+ CoreMessage message = new CoreMessage(1, 100);
ManagementHelper.putOperationInvocation(message, ResourceNames.BROKER, "createQueue", queue, address);
Message reply = server.getManagementService().handleMessage(message);
@@ -66,10 +67,10 @@ public class ManagementServiceImplTest extends ActiveMQTestBase {
server.start();
// invoke attribute and operation on the server
- Message message = new CoreMessage(1, 100);
+ CoreMessage message = new CoreMessage(1, 100);
ManagementHelper.putOperationInvocation(message, ResourceNames.BROKER, "thereIsNoSuchOperation");
- Message reply = server.getManagementService().handleMessage(message);
+ ICoreMessage reply = server.getManagementService().handleMessage(message);
Assert.assertFalse(ManagementHelper.hasOperationSucceeded(reply));
Assert.assertNotNull(ManagementHelper.getResult(reply));
@@ -83,10 +84,10 @@ public class ManagementServiceImplTest extends ActiveMQTestBase {
server.start();
// invoke attribute and operation on the server
- Message message = new CoreMessage(1, 100);
+ ICoreMessage message = new CoreMessage(1, 100);
ManagementHelper.putOperationInvocation(message, "Resouce.Does.Not.Exist", "toString");
- Message reply = server.getManagementService().handleMessage(message);
+ ICoreMessage reply = server.getManagementService().handleMessage(message);
Assert.assertFalse(ManagementHelper.hasOperationSucceeded(reply));
Assert.assertNotNull(ManagementHelper.getResult(reply));
@@ -100,11 +101,11 @@ public class ManagementServiceImplTest extends ActiveMQTestBase {
server.start();
// invoke attribute and operation on the server
- Message message = new CoreMessage(1, 100);
+ ICoreMessage message = new CoreMessage(1, 100);
ManagementHelper.putAttribute(message, ResourceNames.BROKER, "started");
- Message reply = server.getManagementService().handleMessage(message);
+ ICoreMessage reply = server.getManagementService().handleMessage(message);
Assert.assertTrue(ManagementHelper.hasOperationSucceeded(reply));
Assert.assertTrue((Boolean) ManagementHelper.getResult(reply));
@@ -118,11 +119,11 @@ public class ManagementServiceImplTest extends ActiveMQTestBase {
server.start();
// invoke attribute and operation on the server
- Message message = new CoreMessage(1, 100);
+ ICoreMessage message = new CoreMessage(1, 100);
ManagementHelper.putAttribute(message, ResourceNames.BROKER, "attribute.Does.Not.Exist");
- Message reply = server.getManagementService().handleMessage(message);
+ ICoreMessage reply = server.getManagementService().handleMessage(message);
Assert.assertFalse(ManagementHelper.hasOperationSucceeded(reply));
Assert.assertNotNull(ManagementHelper.getResult(reply));
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingSendTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingSendTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingSendTest.java
index 1f0d7e0..3675416 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingSendTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingSendTest.java
@@ -26,7 +26,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQException;
-import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ClientConsumer;
import org.apache.activemq.artemis.api.core.client.ClientMessage;
@@ -289,7 +288,7 @@ public class PagingSendTest extends ActiveMQTestBase {
List<String> messageIds = new ArrayList<>();
ClientProducer producer = session.createProducer(queueAddr);
for (int i = 0; i < batchSize; i++) {
- Message message = session.createMessage(true);
+ ClientMessage message = session.createMessage(true);
message.getBodyBuffer().writeBytes(new byte[1024]);
String id = UUID.randomUUID().toString();
message.putStringProperty("id", id);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
index 1714947..48127d2 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
@@ -42,6 +42,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.Pair;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ClientConsumer;
import org.apache.activemq.artemis.api.core.client.ClientMessage;
@@ -75,7 +76,6 @@ import org.apache.activemq.artemis.core.persistence.impl.journal.OperationContex
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.JournalType;
import org.apache.activemq.artemis.core.server.Queue;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
@@ -5536,7 +5536,7 @@ public class PagingTest extends ActiveMQTestBase {
for (int i = 0; i < 100; i++) {
Message msg = session.createMessage(true);
- msg.getBodyBuffer().writeBytes(new byte[1024]);
+ msg.toCore().getBodyBuffer().writeBytes(new byte[1024]);
prod.send(msg);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java
index cba3008..ec49ece 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java
@@ -425,7 +425,7 @@ public class ScaleDownTest extends ClusterTestBase {
while (!servers[0].getPagingManager().getPageStore(new SimpleString(addressName)).isPaging()) {
for (int i = 0; i < CHUNK_SIZE; i++) {
- Message message = session.createMessage(true);
+ ClientMessage message = session.createMessage(true);
message.getBodyBuffer().writeBytes(new byte[1024]);
producer.send(message);
messageCount++;
@@ -463,7 +463,7 @@ public class ScaleDownTest extends ClusterTestBase {
while (!servers[0].getPagingManager().getPageStore(new SimpleString(addressName)).isPaging()) {
for (int i = 0; i < CHUNK_SIZE; i++) {
- Message message = session.createMessage(true);
+ ClientMessage message = session.createMessage(true);
message.getBodyBuffer().writeBytes(new byte[1024]);
message.putIntProperty("order", i);
producer.send(message);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
index 89f7a60..141a6b8 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
@@ -27,6 +27,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQConnectionTimedOutException;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
@@ -41,7 +42,6 @@ import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptor;
import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
import org.apache.activemq.artemis.core.remoting.impl.ssl.SSLSupport;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.utils.RandomUtil;
@@ -127,7 +127,7 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
ClientConsumer consumer = addClientConsumer(session.createConsumer(CoreClientOverOneWaySSLTest.QUEUE));
session.start();
- Message m = consumer.receive(1000);
+ ClientMessage m = consumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(text, m.getBodyBuffer().readString());
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverTwoWaySSLTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverTwoWaySSLTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverTwoWaySSLTest.java
index 772e44d..11b3b0b 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverTwoWaySSLTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverTwoWaySSLTest.java
@@ -26,7 +26,6 @@ import io.netty.handler.ssl.SslHandler;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException;
import org.apache.activemq.artemis.api.core.Interceptor;
-import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
@@ -151,7 +150,7 @@ public class CoreClientOverTwoWaySSLTest extends ActiveMQTestBase {
ClientConsumer consumer = session.createConsumer(CoreClientOverTwoWaySSLTest.QUEUE);
session.start();
- Message m = consumer.receive(1000);
+ ClientMessage m = consumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(text, m.getBodyBuffer().readString());
}
@@ -189,7 +188,7 @@ public class CoreClientOverTwoWaySSLTest extends ActiveMQTestBase {
ClientConsumer consumer = session.createConsumer(CoreClientOverTwoWaySSLTest.QUEUE);
session.start();
- Message m = consumer.receive(1000);
+ ClientMessage m = consumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(text, m.getBodyBuffer().readString());
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/message/impl/MessageImplTest.java
----------------------------------------------------------------------
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/message/impl/MessageImplTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/message/impl/MessageImplTest.java
index 2e0ffac..e88097a 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/message/impl/MessageImplTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/message/impl/MessageImplTest.java
@@ -21,6 +21,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.client.impl.ClientMessageImpl;
@@ -46,9 +47,9 @@ public class MessageImplTest extends ActiveMQTestBase {
final long expiration = RandomUtil.randomLong();
final long timestamp = RandomUtil.randomLong();
final byte priority = RandomUtil.randomByte();
- Message message1 = new ClientMessageImpl(type, durable, expiration, timestamp, priority, 100);
+ ICoreMessage message1 = new ClientMessageImpl(type, durable, expiration, timestamp, priority, 100);
- Message message = message1;
+ ICoreMessage message = message1;
Assert.assertEquals(type, message.getType());
Assert.assertEquals(durable, message.isDurable());
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PageTest.java
----------------------------------------------------------------------
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PageTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PageTest.java
index 37e33ed..847e8b7 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PageTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PageTest.java
@@ -19,7 +19,7 @@ package org.apache.activemq.artemis.tests.unit.core.paging.impl;
import java.nio.ByteBuffer;
import java.util.List;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.io.SequentialFile;
import org.apache.activemq.artemis.core.io.SequentialFileFactory;
@@ -207,7 +207,7 @@ public class PageTest extends ActiveMQTestBase {
int initialNumberOfMessages = page.getNumberOfMessages();
for (int i = 0; i < numberOfElements; i++) {
- Message msg = new CoreMessage().initBuffer(100);
+ ICoreMessage msg = new CoreMessage().initBuffer(100);
for (int j = 0; j < 10; j++) {
msg.getBodyBuffer().writeByte((byte) 'b');
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingManagerImplTest.java
----------------------------------------------------------------------
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingManagerImplTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingManagerImplTest.java
index 654fd89..60f7a15 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingManagerImplTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingManagerImplTest.java
@@ -22,7 +22,7 @@ import java.util.List;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.core.paging.PagedMessage;
@@ -63,7 +63,7 @@ public class PagingManagerImplTest extends ActiveMQTestBase {
PagingStore store = managerImpl.getPageStore(new SimpleString("simple-test"));
- Message msg = createMessage(1L, new SimpleString("simple-test"), createRandomBuffer(10));
+ ICoreMessage msg = createMessage(1L, new SimpleString("simple-test"), createRandomBuffer(10));
final RoutingContextImpl ctx = new RoutingContextImpl(null);
Assert.assertFalse(store.page(msg, ctx.getTransaction(), ctx.getContextListing(store.getStoreName()), lock));
@@ -82,7 +82,7 @@ public class PagingManagerImplTest extends ActiveMQTestBase {
Assert.assertEquals(1, msgs.size());
- ActiveMQTestBase.assertEqualsByteArrays(msg.getBodyBuffer().writerIndex(), msg.getBodyBuffer().toByteBuffer().array(), (msgs.get(0).getMessage()).getBodyBuffer().toByteBuffer().array());
+ ActiveMQTestBase.assertEqualsByteArrays(msg.getBodyBuffer().writerIndex(), msg.getBodyBuffer().toByteBuffer().array(), (msgs.get(0).getMessage()).toCore().getBodyBuffer().toByteBuffer().array());
Assert.assertTrue(store.isPaging());
@@ -104,10 +104,10 @@ public class PagingManagerImplTest extends ActiveMQTestBase {
pageDirDir.mkdirs();
}
- protected Message createMessage(final long messageId,
- final SimpleString destination,
- final ByteBuffer buffer) {
- Message msg = new CoreMessage(messageId, 200);
+ protected ICoreMessage createMessage(final long messageId,
+ final SimpleString destination,
+ final ByteBuffer buffer) {
+ ICoreMessage msg = new CoreMessage(messageId, 200);
msg.setAddress(destination);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java
----------------------------------------------------------------------
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java
index 905e550..af58a53 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java
@@ -224,7 +224,7 @@ public class PagingStoreImplTest extends ActiveMQTestBase {
for (int i = 0; i < numMessages; i++) {
ActiveMQBuffer horn1 = buffers.get(i);
- ActiveMQBuffer horn2 = msg.get(i).getMessage().getBodyBuffer();
+ ActiveMQBuffer horn2 = msg.get(i).getMessage().toCore().getBodyBuffer();
horn1.resetReaderIndex();
horn2.resetReaderIndex();
for (int j = 0; j < horn1.writerIndex(); j++) {
@@ -290,7 +290,7 @@ public class PagingStoreImplTest extends ActiveMQTestBase {
for (int i = 0; i < 5; i++) {
Assert.assertEquals(sequence++, msg.get(i).getMessage().getMessageID());
- ActiveMQTestBase.assertEqualsBuffers(18, buffers.get(pageNr * 5 + i), msg.get(i).getMessage().getBodyBuffer());
+ ActiveMQTestBase.assertEqualsBuffers(18, buffers.get(pageNr * 5 + i), msg.get(i).getMessage().toCore().getBodyBuffer());
}
}
@@ -341,7 +341,7 @@ public class PagingStoreImplTest extends ActiveMQTestBase {
Assert.assertEquals(1L, msgs.get(0).getMessage().getMessageID());
- ActiveMQTestBase.assertEqualsBuffers(18, buffers.get(0), msgs.get(0).getMessage().getBodyBuffer());
+ ActiveMQTestBase.assertEqualsBuffers(18, buffers.get(0), msgs.get(0).getMessage().toCore().getBodyBuffer());
Assert.assertEquals(1, store.getNumberOfPages());
@@ -485,14 +485,14 @@ public class PagingStoreImplTest extends ActiveMQTestBase {
page.close();
for (PagedMessage msg : msgs) {
- long id = msg.getMessage().getBodyBuffer().readLong();
- msg.getMessage().getBodyBuffer().resetReaderIndex();
+ long id = msg.getMessage().toCore().getBodyBuffer().readLong();
+ msg.getMessage().toCore().getBodyBuffer().resetReaderIndex();
Message msgWritten = buffers.remove(id);
buffers2.put(id, msg.getMessage());
Assert.assertNotNull(msgWritten);
Assert.assertEquals(msg.getMessage().getAddress(), msgWritten.getAddressSimpleString());
- ActiveMQTestBase.assertEqualsBuffers(10, msgWritten.getBodyBuffer(), msg.getMessage().getBodyBuffer());
+ ActiveMQTestBase.assertEqualsBuffers(10, msgWritten.toCore().getBodyBuffer(), msg.getMessage().toCore().getBodyBuffer());
}
}
@@ -547,11 +547,11 @@ public class PagingStoreImplTest extends ActiveMQTestBase {
for (PagedMessage msg : msgs) {
- long id = msg.getMessage().getBodyBuffer().readLong();
+ long id = msg.getMessage().toCore().getBodyBuffer().readLong();
Message msgWritten = buffers2.remove(id);
Assert.assertNotNull(msgWritten);
Assert.assertEquals(msg.getMessage().getAddress(), msgWritten.getAddressSimpleString());
- ActiveMQTestBase.assertEqualsByteArrays(msgWritten.getBodyBuffer().writerIndex(), msgWritten.getBodyBuffer().toByteBuffer().array(), msg.getMessage().getBodyBuffer().toByteBuffer().array());
+ ActiveMQTestBase.assertEqualsByteArrays(msgWritten.toCore().getBodyBuffer().writerIndex(), msgWritten.toCore().getBodyBuffer().toByteBuffer().array(), msg.getMessage().toCore().getBodyBuffer().toByteBuffer().array());
}
}
@@ -560,8 +560,8 @@ public class PagingStoreImplTest extends ActiveMQTestBase {
lastPage.close();
Assert.assertEquals(1, lastMessages.size());
- lastMessages.get(0).getMessage().getBodyBuffer().resetReaderIndex();
- Assert.assertEquals(lastMessages.get(0).getMessage().getBodyBuffer().readLong(), lastMessageId);
+ lastMessages.get(0).getMessage().toCore().getBodyBuffer().resetReaderIndex();
+ Assert.assertEquals(lastMessages.get(0).getMessage().toCore().getBodyBuffer().readLong(), lastMessageId);
Assert.assertEquals(0, buffers2.size());
@@ -739,11 +739,11 @@ public class PagingStoreImplTest extends ActiveMQTestBase {
};
}
- private Message createMessage(final long id,
+ private CoreMessage createMessage(final long id,
final PagingStore store,
final SimpleString destination,
final ActiveMQBuffer buffer) {
- Message msg = new CoreMessage(id, 50 + buffer.capacity());
+ CoreMessage msg = new CoreMessage(id, 50 + buffer.capacity());
msg.setAddress(destination);
[5/5] activemq-artemis git commit: Fixing converters part I
Posted by cl...@apache.org.
Fixing converters part I
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b557f2df
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b557f2df
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b557f2df
Branch: refs/heads/artemis-1009
Commit: b557f2df6d0287a21adfaf67f6e93875ba174b5b
Parents: 9d3260b
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Mar 2 18:57:23 2017 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Mar 2 19:38:06 2017 -0500
----------------------------------------------------------------------
.../cli/commands/tools/XmlDataExporter.java | 32 +-
.../cli/commands/tools/XmlDataExporterUtil.java | 9 +-
.../cli/commands/tools/XmlDataImporter.java | 7 +-
.../activemq/artemis/api/core/ICoreMessage.java | 87 +++
.../activemq/artemis/api/core/Message.java | 96 +--
.../artemis/api/core/client/ClientMessage.java | 61 +-
.../api/core/management/ManagementHelper.java | 18 +-
.../core/client/impl/ClientConsumerImpl.java | 2 +-
.../core/client/impl/ClientProducerImpl.java | 18 +-
.../artemis/core/message/impl/CoreMessage.java | 73 +--
.../core/impl/ActiveMQSessionContext.java | 3 +-
.../core/impl/wireformat/MessagePacket.java | 9 +-
.../impl/wireformat/SessionReceiveMessage.java | 8 +-
.../impl/wireformat/SessionSendMessage.java | 4 +-
.../spi/core/remoting/SessionContext.java | 5 +-
.../api/jms/management/JMSManagementHelper.java | 3 +-
.../jms/transaction/JMSTransactionDetail.java | 6 +-
.../protocol/amqp/broker/AMQPMessage.java | 91 +--
.../amqp/broker/AMQPSessionCallback.java | 16 +-
.../amqp/broker/ProtonProtocolManager.java | 12 +-
.../protocol/amqp/converter/AMQPConverter.java | 44 ++
.../amqp/converter/AmqpCoreConverter.java | 366 +++++++++++
.../amqp/converter/CoreAmqpConverter.java | 565 +++++++++++++++++
.../amqp/converter/ProtonMessageConverter.java | 101 ----
.../converter/jms/ServerJMSBytesMessage.java | 6 +-
.../amqp/converter/jms/ServerJMSMapMessage.java | 5 +-
.../amqp/converter/jms/ServerJMSMessage.java | 64 +-
.../converter/jms/ServerJMSObjectMessage.java | 8 +-
.../converter/jms/ServerJMSStreamMessage.java | 5 +-
.../converter/jms/ServerJMSTextMessage.java | 5 +-
.../converter/message/AMQPMessageSupport.java | 76 +--
.../converter/message/AMQPMessageTypes.java | 30 -
.../message/AMQPNativeOutboundTransformer.java | 80 ---
.../amqp/converter/message/EncodedMessage.java | 67 ---
.../converter/message/InboundTransformer.java | 240 --------
.../message/JMSMappingInboundTransformer.java | 182 ------
.../message/JMSMappingOutboundTransformer.java | 574 ------------------
.../converter/message/OutboundTransformer.java | 53 --
.../amqp/proton/ProtonServerSenderContext.java | 32 +-
.../amqp/converter/TestConversions.java | 599 +------------------
.../JMSMappingInboundTransformerTest.java | 166 ++---
.../JMSMappingOutboundTransformerTest.java | 204 ++-----
.../JMSTransformationSpeedComparisonTest.java | 86 ++-
.../message/MessageTransformationTest.java | 116 +---
.../protocol/amqp/message/AMQPMessageTest.java | 2 +-
.../core/protocol/mqtt/MQTTProtocolManager.java | 6 -
.../artemis/core/protocol/mqtt/MQTTUtil.java | 5 +-
.../openwire/OpenWireMessageConverter.java | 19 +-
.../openwire/OpenWireProtocolManager.java | 8 +-
.../core/protocol/openwire/OpenwireMessage.java | 473 +++++++++++++++
.../core/protocol/openwire/amq/AMQConsumer.java | 5 +-
.../core/protocol/openwire/amq/AMQSession.java | 5 +-
.../core/protocol/stomp/StompConnection.java | 6 +-
.../protocol/stomp/StompProtocolManager.java | 8 -
.../core/protocol/stomp/StompSession.java | 4 +-
.../stomp/VersionedStompFrameHandler.java | 5 +-
.../stomp/v12/StompFrameHandlerV12.java | 4 +-
.../impl/openmbean/OpenTypeSupport.java | 12 +-
.../activemq/artemis/core/paging/impl/Page.java | 3 +-
.../core/paging/impl/PagedMessageImpl.java | 5 +-
.../core/ServerSessionPacketHandler.java | 3 +-
.../protocol/core/impl/CoreProtocolManager.java | 13 +-
.../protocol/core/impl/CoreSessionCallback.java | 5 +-
.../artemis/core/server/LargeServerMessage.java | 4 +-
.../artemis/core/server/ServerConsumer.java | 3 +-
.../core/server/impl/ServerConsumerImpl.java | 11 +-
.../server/management/ManagementService.java | 6 +-
.../management/impl/ManagementServiceImpl.java | 5 +-
.../transaction/impl/CoreTransactionDetail.java | 7 +-
.../spi/core/protocol/MessageConverter.java | 7 +-
.../spi/core/protocol/ProtocolManager.java | 10 +-
.../group/impl/ClusteredResetMockTest.java | 6 +-
.../impl/ScheduledDeliveryHandlerTest.java | 56 +-
.../artemis/tests/util/ActiveMQTestBase.java | 3 +-
.../integration/client/AcknowledgeTest.java | 62 +-
.../tests/integration/client/ConsumerTest.java | 43 +-
.../integration/client/LargeMessageTest.java | 3 +-
.../integration/clientcrash/ClientExitTest.java | 4 +-
.../integration/journal/MessageJournalTest.java | 5 +-
.../management/ManagementHelperTest.java | 8 +-
.../management/ManagementServiceImplTest.java | 19 +-
.../integration/paging/PagingSendTest.java | 3 +-
.../tests/integration/paging/PagingTest.java | 4 +-
.../tests/integration/server/ScaleDownTest.java | 4 +-
.../ssl/CoreClientOverOneWaySSLTest.java | 4 +-
.../ssl/CoreClientOverTwoWaySSLTest.java | 5 +-
.../unit/core/message/impl/MessageImplTest.java | 5 +-
.../tests/unit/core/paging/impl/PageTest.java | 4 +-
.../core/paging/impl/PagingManagerImplTest.java | 14 +-
.../core/paging/impl/PagingStoreImplTest.java | 24 +-
90 files changed, 2136 insertions(+), 3018 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java
index b57b5c5..b53db48 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java
@@ -16,6 +16,9 @@
*/
package org.apache.activemq.artemis.cli.commands.tools;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
import java.io.File;
import java.io.OutputStream;
import java.lang.reflect.InvocationHandler;
@@ -33,14 +36,13 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
+import io.airlift.airline.Command;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.ActiveMQException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.cli.commands.ActionContext;
import org.apache.activemq.artemis.core.config.Configuration;
@@ -74,8 +76,6 @@ import org.apache.activemq.artemis.core.persistence.impl.journal.codec.Persisten
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
import org.apache.activemq.artemis.core.server.JournalType;
import org.apache.activemq.artemis.core.server.LargeServerMessage;
-import org.apache.activemq.artemis.api.core.RoutingType;
-
import org.apache.activemq.artemis.core.settings.HierarchicalRepository;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository;
@@ -83,8 +83,6 @@ import org.apache.activemq.artemis.utils.ActiveMQThreadFactory;
import org.apache.activemq.artemis.utils.ExecutorFactory;
import org.apache.activemq.artemis.utils.OrderedExecutorFactory;
-import io.airlift.airline.Command;
-
@Command(name = "exp", description = "Export all message-data using an XML that could be interpreted by any system.")
public final class XmlDataExporter extends OptionalLocking {
@@ -361,13 +359,13 @@ public final class XmlDataExporter extends OptionalLocking {
xmlWriter.writeEndElement(); // end BINDINGS_PARENT
}
- private void printAllMessagesAsXML() throws XMLStreamException {
+ private void printAllMessagesAsXML() throws Exception {
xmlWriter.writeStartElement(XmlDataConstants.MESSAGES_PARENT);
// Order here is important. We must process the messages from the journal before we process those from the page
// files in order to get the messages in the right order.
for (Map.Entry<Long, Message> messageMapEntry : messages.entrySet()) {
- printSingleMessageAsXML(messageMapEntry.getValue(), extractQueueNames(messageRefs.get(messageMapEntry.getKey())));
+ printSingleMessageAsXML(messageMapEntry.getValue().toCore(), extractQueueNames(messageRefs.get(messageMapEntry.getKey())));
}
printPagedMessagesAsXML();
@@ -441,7 +439,7 @@ public final class XmlDataExporter extends OptionalLocking {
}
if (queueNames.size() > 0 && (message.getTransactionID() == -1 || pgTXs.contains(message.getTransactionID()))) {
- printSingleMessageAsXML(message.getMessage(), queueNames);
+ printSingleMessageAsXML(message.getMessage().toCore(), queueNames);
}
messageId++;
@@ -458,20 +456,20 @@ public final class XmlDataExporter extends OptionalLocking {
}
}
- private void printSingleMessageAsXML(Message message, List<String> queues) throws XMLStreamException {
+ private void printSingleMessageAsXML(ICoreMessage message, List<String> queues) throws Exception {
xmlWriter.writeStartElement(XmlDataConstants.MESSAGES_CHILD);
printMessageAttributes(message);
printMessageProperties(message);
printMessageQueues(queues);
- printMessageBody(message);
+ printMessageBody(message.toCore());
xmlWriter.writeEndElement(); // end MESSAGES_CHILD
messagesPrinted++;
}
- private void printMessageBody(Message message) throws XMLStreamException {
+ private void printMessageBody(Message message) throws Exception {
xmlWriter.writeStartElement(XmlDataConstants.MESSAGE_BODY);
- if (message.isLargeMessage()) {
+ if (message.toCore().isLargeMessage()) {
printLargeMessageBody((LargeServerMessage) message);
} else {
xmlWriter.writeCData(XmlDataExporterUtil.encodeMessageBody(message));
@@ -484,7 +482,7 @@ public final class XmlDataExporter extends OptionalLocking {
LargeBodyEncoder encoder = null;
try {
- encoder = message.getBodyEncoder();
+ encoder = message.toCore().getBodyEncoder();
encoder.open();
long totalBytesWritten = 0;
Long bufferSize;
@@ -541,7 +539,7 @@ public final class XmlDataExporter extends OptionalLocking {
xmlWriter.writeEndElement(); // end PROPERTIES_PARENT
}
- private void printMessageAttributes(Message message) throws XMLStreamException {
+ private void printMessageAttributes(ICoreMessage message) throws XMLStreamException {
xmlWriter.writeAttribute(XmlDataConstants.MESSAGE_ID, Long.toString(message.getMessageID()));
xmlWriter.writeAttribute(XmlDataConstants.MESSAGE_PRIORITY, Byte.toString(message.getPriority()));
xmlWriter.writeAttribute(XmlDataConstants.MESSAGE_EXPIRATION, Long.toString(message.getExpiration()));
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java
index a3807bd..ca7f1a8 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java
@@ -17,9 +17,9 @@
package org.apache.activemq.artemis.cli.commands.tools;
import com.google.common.base.Preconditions;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.utils.Base64;
/**
@@ -91,12 +91,13 @@ public class XmlDataExporterUtil {
* @param message
* @return
*/
- public static String encodeMessageBody(final Message message) {
+ public static String encodeMessageBody(final Message message) throws Exception {
Preconditions.checkNotNull(message, "ServerMessage can not be null");
- int size = ((CoreMessage)message.toCore()).getEndOfBodyPosition() - message.getBodyBuffer().readerIndex();
+ ICoreMessage coreMessage = message.toCore();
+ int size = coreMessage.getEndOfBodyPosition() - coreMessage.getBodyBuffer().readerIndex();
byte[] buffer = new byte[size];
- message.getBodyBuffer().readBytes(buffer);
+ message.toCore().getBodyBuffer().readBytes(buffer);
return XmlDataExporterUtil.encode(buffer);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
index 0f06738..518d231 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
@@ -45,7 +45,9 @@ import java.util.UUID;
import io.airlift.airline.Command;
import io.airlift.airline.Option;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
@@ -62,7 +64,6 @@ import org.apache.activemq.artemis.cli.commands.ActionContext;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.utils.Base64;
import org.apache.activemq.artemis.utils.ClassloadingUtil;
import org.apache.activemq.artemis.utils.ListUtil;
@@ -297,7 +298,7 @@ public final class XmlDataImporter extends ActionAbstract {
switch (eventType) {
case XMLStreamConstants.START_ELEMENT:
if (XmlDataConstants.MESSAGE_BODY.equals(reader.getLocalName())) {
- processMessageBody(message);
+ processMessageBody(message.toCore());
} else if (XmlDataConstants.PROPERTIES_CHILD.equals(reader.getLocalName())) {
processMessageProperties(message);
} else if (XmlDataConstants.QUEUES_CHILD.equals(reader.getLocalName())) {
@@ -468,7 +469,7 @@ public final class XmlDataImporter extends ActionAbstract {
}
}
- private void processMessageBody(final Message message) throws XMLStreamException, IOException {
+ private void processMessageBody(final ICoreMessage message) throws XMLStreamException, IOException {
boolean isLarge = false;
for (int i = 0; i < reader.getAttributeCount(); i++) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/ICoreMessage.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/ICoreMessage.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/ICoreMessage.java
new file mode 100644
index 0000000..9a58819
--- /dev/null
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/ICoreMessage.java
@@ -0,0 +1,87 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.api.core;
+
+import java.io.InputStream;
+import java.util.Map;
+
+import org.apache.activemq.artemis.core.message.LargeBodyEncoder;
+import org.apache.activemq.artemis.core.message.impl.CoreMessage;
+
+/**
+ * This interface is only to determine the API of methods required for Core Messages
+ */
+public interface ICoreMessage extends Message {
+
+ LargeBodyEncoder getBodyEncoder() throws ActiveMQException;
+
+ int getHeadersAndPropertiesEncodeSize();
+
+ @Override
+ InputStream getBodyInputStream();
+
+ /** Returns a new Buffer slicing the current Body. */
+ ActiveMQBuffer getReadOnlyBodyBuffer();
+
+ /** Return the type of the message */
+ @Override
+ byte getType();
+
+ /** the type of the message */
+ @Override
+ CoreMessage setType(byte type);
+
+ /**
+ * We are really interested if this is a LargeServerMessage.
+ * @return
+ */
+ boolean isServerMessage();
+
+ /**
+ * The body used for this message.
+ * @return
+ */
+ @Override
+ ActiveMQBuffer getBodyBuffer();
+
+ int getEndOfBodyPosition();
+
+
+ /**
+ * @return Returns the message in Map form, useful when encoding to JSON
+ */
+ @Override
+ default Map<String, Object> toMap() {
+ Map map = toPropertyMap();
+ map.put("messageID", getMessageID());
+ Object userID = getUserID();
+ if (getUserID() != null) {
+ map.put("userID", "ID:" + userID.toString());
+ }
+
+ map.put("address", getAddress());
+ map.put("type", getType());
+ map.put("durable", isDurable());
+ map.put("expiration", getExpiration());
+ map.put("timestamp", getTimestamp());
+ map.put("priority", (int)getPriority());
+
+ return map;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
index b08202d..73ee856 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/Message.java
@@ -22,8 +22,6 @@ import java.util.Map;
import java.util.Set;
import io.netty.buffer.ByteBuf;
-import org.apache.activemq.artemis.api.core.encode.BodyType;
-import org.apache.activemq.artemis.core.message.LargeBodyEncoder;
import org.apache.activemq.artemis.core.persistence.Persister;
/**
@@ -166,36 +164,44 @@ public interface Message {
byte STREAM_TYPE = 6;
-
- void messageChanged();
-
- /** Used to calculate what is the delivery time.
- * Return null if not scheduled. */
- Long getScheduledDeliveryTime();
-
- /** Used for Large messages on Core.
- * Do not use this, it will go away
- * @deprecated use it directly from core message, as it doesn't make sense on other protocols */
+ /**
+ * @deprecated do not use this, use through ICoreMessage or ClientMessage
+ */
@Deprecated
default InputStream getBodyInputStream() {
return null;
}
/**
- * Careful: Unless you are changing the body of the message, prefer getReadOnlyBodyBuffer
- * @deprecated use it directly from core message, as it doesn't make sense on other protocols */
+ * @deprecated do not use this, use through ICoreMessage or ClientMessage
+ */
@Deprecated
- ActiveMQBuffer getBodyBuffer();
+ default ActiveMQBuffer getBodyBuffer() {
+ return null;
+ }
- /**
- * @deprecated use it directly from core message, as it doesn't make sense on other protocols */
+ /**
+ * @deprecated do not use this, use through ICoreMessage or ClientMessage
+ */
@Deprecated
- ActiveMQBuffer getReadOnlyBodyBuffer();
+ default byte getType() {
+ return (byte)0;
+ }
- /** Used in the cases of large messages
- * @deprecated use it directly from core message, as it doesn't make sense on other protocols */
+ /**
+ * @deprecated do not use this, use through ICoreMessage or ClientMessage
+ */
@Deprecated
- LargeBodyEncoder getBodyEncoder() throws ActiveMQException;
+ default Message setType(byte type) {
+ return this;
+ }
+
+
+ void messageChanged();
+
+ /** Used to calculate what is the delivery time.
+ * Return null if not scheduled. */
+ Long getScheduledDeliveryTime();
/** Context can be used by the application server to inject extra control, like a protocol specific on the server.
* There is only one per Object, use it wisely!
@@ -209,27 +215,6 @@ public interface Message {
/** The buffer will belong to this message, until release is called. */
Message setBuffer(ByteBuf buffer);
- // TODO-now: Do we need this?
- byte getType();
-
- // TODO-now: Do we need this?
- Message setType(byte type);
-
- /**
- * Returns whether this message is a <em>large message</em> or a regular message.
- */
- boolean isLargeMessage();
-
- /**
- * TODO: There's currently some treatment on LargeMessage that is done for server's side large message
- * This needs to be refactored, this Method shouldn't be used at all.
- * @Deprecated do not use this, internal use only. *It will* be removed for sure even on minor releases.
- * */
- @Deprecated
- default boolean isServerMessage() {
- return false;
- }
-
ByteBuf getBuffer();
/** It will generate a new instance of the message encode, being a deep copy, new properties, new everything */
@@ -247,6 +232,10 @@ public interface Message {
Message setMessageID(long id);
+ default boolean isLargeMessage() {
+ return false;
+ }
+
/**
* Returns the expiration time of this message.
*/
@@ -297,16 +286,6 @@ public interface Message {
Persister<Message> getPersister();
- Object getProtocol();
-
- Message setProtocol(Object protocol);
-
- Object getBody();
-
- BodyType getBodyType();
-
- Message setBody(BodyType type, Object body);
-
String getAddress();
Message setAddress(String address);
@@ -356,16 +335,6 @@ public interface Message {
}
setBuffer(null);
}
-
- default String getText() {
- if (getBodyType() == BodyType.Text) {
- return getBody().toString();
- } else {
- return null;
- }
- }
-
- // TODO-now: move this to some utility class
default void referenceOriginalMessage(final Message original, String originalQueue) {
String queueOnMessage = original.getStringProperty(Message.HDR_ORIGINAL_QUEUE.toString());
@@ -559,7 +528,6 @@ public interface Message {
}
map.put("address", getAddress());
- map.put("type", getBodyType().toString());
map.put("durable", isDurable());
map.put("expiration", getExpiration());
map.put("timestamp", getTimestamp());
@@ -581,7 +549,7 @@ public interface Message {
/** This should make you convert your message into Core format. */
- Message toCore();
+ ICoreMessage toCore();
int getMemoryEstimate();
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientMessage.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientMessage.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientMessage.java
index daded00..67f2150 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientMessage.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientMessage.java
@@ -19,14 +19,15 @@ package org.apache.activemq.artemis.api.core.client;
import java.io.InputStream;
import java.io.OutputStream;
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQException;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
/**
* A ClientMessage represents a message sent and/or received by ActiveMQ Artemis.
*/
-public interface ClientMessage extends Message {
+public interface ClientMessage extends ICoreMessage {
/**
* Returns the number of times this message was delivered.
@@ -123,126 +124,140 @@ public interface ClientMessage extends Message {
ClientMessage setBodyInputStream(InputStream bodyInputStream);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Return the bodyInputStream for large messages
+ * @return
+ */
+ @Override
+ InputStream getBodyInputStream();
+
+ /**
+ * The buffer to write the body.
+ * @return
+ */
+ @Override
+ ActiveMQBuffer getBodyBuffer();
+
+ /**
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putBooleanProperty(SimpleString key, boolean value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putBooleanProperty(String key, boolean value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putByteProperty(SimpleString key, byte value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putByteProperty(String key, byte value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putBytesProperty(SimpleString key, byte[] value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putBytesProperty(String key, byte[] value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putShortProperty(SimpleString key, short value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putShortProperty(String key, short value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putCharProperty(SimpleString key, char value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putCharProperty(String key, char value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putIntProperty(SimpleString key, int value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putIntProperty(String key, int value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putLongProperty(SimpleString key, long value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putLongProperty(String key, long value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putFloatProperty(SimpleString key, float value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putFloatProperty(String key, float value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putDoubleProperty(SimpleString key, double value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putDoubleProperty(String key, double value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
@Override
ClientMessage putStringProperty(String key, String value);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
ClientMessage writeBodyBufferBytes(byte[] bytes);
/**
- * Overridden from {@link Message} to enable fluent API
+ * Overridden from {@link org.apache.activemq.artemis.api.core.Message} to enable fluent API
*/
ClientMessage writeBodyBufferString(String string);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ManagementHelper.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ManagementHelper.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ManagementHelper.java
index 40211c1..946285d 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ManagementHelper.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ManagementHelper.java
@@ -18,9 +18,11 @@ package org.apache.activemq.artemis.api.core.management;
import javax.json.JsonArray;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.JsonUtil;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.core.message.impl.CoreMessage;
/**
* Helper class to use ActiveMQ Artemis Core messages to manage server resources.
@@ -86,7 +88,7 @@ public final class ManagementHelper {
* @param attribute the name of the attribute
* @see ResourceNames
*/
- public static void putAttribute(final Message message, final String resourceName, final String attribute) {
+ public static void putAttribute(final ICoreMessage message, final String resourceName, final String attribute) {
message.putStringProperty(ManagementHelper.HDR_RESOURCE_NAME, new SimpleString(resourceName));
message.putStringProperty(ManagementHelper.HDR_ATTRIBUTE, new SimpleString(attribute));
}
@@ -99,7 +101,7 @@ public final class ManagementHelper {
* @param operationName the name of the operation to invoke on the resource
* @see ResourceNames
*/
- public static void putOperationInvocation(final Message message,
+ public static void putOperationInvocation(final ICoreMessage message,
final String resourceName,
final String operationName) throws Exception {
ManagementHelper.putOperationInvocation(message, resourceName, operationName, (Object[]) null);
@@ -114,7 +116,7 @@ public final class ManagementHelper {
* @param parameters the parameters to use to invoke the server resource
* @see ResourceNames
*/
- public static void putOperationInvocation(final Message message,
+ public static void putOperationInvocation(final ICoreMessage message,
final String resourceName,
final String operationName,
final Object... parameters) throws Exception {
@@ -141,7 +143,7 @@ public final class ManagementHelper {
* Used by ActiveMQ Artemis management service.
*/
public static Object[] retrieveOperationParameters(final Message message) throws Exception {
- SimpleString sstring = message.getBodyBuffer().readNullableSimpleString();
+ SimpleString sstring = message.toCore().getReadOnlyBodyBuffer().readNullableSimpleString();
String jsonString = (sstring == null) ? null : sstring.toString();
if (jsonString != null) {
@@ -170,7 +172,7 @@ public final class ManagementHelper {
/**
* Used by ActiveMQ Artemis management service.
*/
- public static void storeResult(final Message message, final Object result) throws Exception {
+ public static void storeResult(final CoreMessage message, final Object result) throws Exception {
String resultString;
if (result != null) {
@@ -192,7 +194,7 @@ public final class ManagementHelper {
* If an error occurred on the server, {@link #hasOperationSucceeded(Message)} will return {@code false}.
* and the result will be a String corresponding to the server exception.
*/
- public static Object[] getResults(final Message message) throws Exception {
+ public static Object[] getResults(final ICoreMessage message) throws Exception {
SimpleString sstring = message.getBodyBuffer().readNullableSimpleString();
String jsonString = (sstring == null) ? null : sstring.toString();
@@ -210,7 +212,7 @@ public final class ManagementHelper {
* If an error occurred on the server, {@link #hasOperationSucceeded(Message)} will return {@code false}.
* and the result will be a String corresponding to the server exception.
*/
- public static Object getResult(final Message message) throws Exception {
+ public static Object getResult(final ICoreMessage message) throws Exception {
return getResult(message, null);
}
@@ -220,7 +222,7 @@ public final class ManagementHelper {
* If an error occurred on the server, {@link #hasOperationSucceeded(Message)} will return {@code false}.
* and the result will be a String corresponding to the server exception.
*/
- public static Object getResult(final Message message, Class desiredType) throws Exception {
+ public static Object getResult(final ICoreMessage message, Class desiredType) throws Exception {
Object[] res = ManagementHelper.getResults(message);
if (res != null) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java
index d95aeba..82af968 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java
@@ -625,7 +625,7 @@ public final class ClientConsumerImpl implements ClientConsumerInternal {
currentLargeMessageController.setLocal(true);
//sets the packet
- ActiveMQBuffer qbuff = clMessage.getBodyBuffer();
+ ActiveMQBuffer qbuff = clMessage.toCore().getBodyBuffer();
int bytesToRead = qbuff.writerIndex() - qbuff.readerIndex();
final byte[] body = ByteUtil.getActiveArray(qbuff.readBytes(bytesToRead).toByteBuffer());
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
index 1704de0..ce4a8a1 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java
@@ -23,12 +23,12 @@ import java.util.concurrent.atomic.AtomicLong;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.ActiveMQException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.SendAcknowledgementHandler;
import org.apache.activemq.artemis.core.client.ActiveMQClientMessageBundle;
import org.apache.activemq.artemis.core.message.LargeBodyEncoder;
-import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.spi.core.remoting.SessionContext;
import org.apache.activemq.artemis.utils.ActiveMQBufferInputStream;
import org.apache.activemq.artemis.utils.DeflaterReader;
@@ -218,7 +218,7 @@ public class ClientProducerImpl implements ClientProducerInternal {
try {
// In case we received message from another protocol, we first need to convert it to core as the ClientProducer only understands core
- Message msg = msgToSend.toCore();
+ ICoreMessage msg = msgToSend.toCore();
ClientProducerCredits theCredits;
@@ -259,7 +259,7 @@ public class ClientProducerImpl implements ClientProducerInternal {
session.workDone();
if (isLarge) {
- largeMessageSend(sendBlocking, (CoreMessage)msg, theCredits, handler);
+ largeMessageSend(sendBlocking, msg, theCredits, handler);
} else {
sendRegularMessage(sendingAddress, msg, sendBlocking, theCredits, handler);
}
@@ -268,12 +268,12 @@ public class ClientProducerImpl implements ClientProducerInternal {
}
}
- private InputStream getBodyInputStream(Message msgI) {
+ private InputStream getBodyInputStream(ICoreMessage msgI) {
return msgI.getBodyInputStream();
}
private void sendRegularMessage(final SimpleString sendingAddress,
- final Message msgI,
+ final ICoreMessage msgI,
final boolean sendBlocking,
final ClientProducerCredits theCredits,
final SendAcknowledgementHandler handler) throws ActiveMQException {
@@ -306,7 +306,7 @@ public class ClientProducerImpl implements ClientProducerInternal {
* @throws ActiveMQException
*/
private void largeMessageSend(final boolean sendBlocking,
- final CoreMessage msgI,
+ final ICoreMessage msgI,
final ClientProducerCredits credits,
SendAcknowledgementHandler handler) throws ActiveMQException {
logger.tracef("largeMessageSend::%s, Blocking=%s", msgI, sendBlocking);
@@ -353,7 +353,7 @@ public class ClientProducerImpl implements ClientProducerInternal {
* @throws ActiveMQException
*/
private void largeMessageSendServer(final boolean sendBlocking,
- final Message msgI,
+ final ICoreMessage msgI,
final ClientProducerCredits credits,
SendAcknowledgementHandler handler) throws ActiveMQException {
sendInitialLargeMessageHeader(msgI, credits);
@@ -394,7 +394,7 @@ public class ClientProducerImpl implements ClientProducerInternal {
* @throws ActiveMQException
*/
private void largeMessageSendBuffered(final boolean sendBlocking,
- final Message msgI,
+ final ICoreMessage msgI,
final ClientProducerCredits credits,
SendAcknowledgementHandler handler) throws ActiveMQException {
msgI.getBodyBuffer().readerIndex(0);
@@ -409,7 +409,7 @@ public class ClientProducerImpl implements ClientProducerInternal {
* @throws ActiveMQException
*/
private void largeMessageSendStreamed(final boolean sendBlocking,
- final Message msgI,
+ final ICoreMessage msgI,
final InputStream inputStreamParameter,
final ClientProducerCredits credits,
SendAcknowledgementHandler handler) throws ActiveMQException {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
index f620a1d..bf642e0 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
@@ -17,6 +17,7 @@
package org.apache.activemq.artemis.core.message.impl;
+import java.io.InputStream;
import java.nio.ByteBuffer;
import java.util.Set;
@@ -25,6 +26,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RefCountMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
@@ -41,7 +43,7 @@ import org.jboss.logging.Logger;
/** Note: you shouldn't change properties using multi-threads. Change your properties before you can send it to multiple
* consumers */
-public class CoreMessage extends RefCountMessage {
+public class CoreMessage extends RefCountMessage implements ICoreMessage {
public static final int BUFFER_HEADER_SPACE = PacketImpl.PACKET_HEADERS_SIZE;
@@ -89,23 +91,10 @@ public class CoreMessage extends RefCountMessage {
protected volatile TypedProperties properties;
- private Object protocol;
-
public CoreMessage() {
}
@Override
- public CoreMessage setProtocol(Object protocol) {
- this.protocol = protocol;
- return this;
- }
-
- @Override
- public Object getProtocol() {
- return protocol;
- }
-
- @Override
public Persister<Message> getPersister() {
return CoreMessagePersister.getInstance();
}
@@ -164,6 +153,11 @@ public class CoreMessage extends RefCountMessage {
return null;
}
+ @Override
+ public InputStream getBodyInputStream() {
+ return null;
+ }
+
/**
* {@inheritDoc}
*/
@@ -187,6 +181,7 @@ public class CoreMessage extends RefCountMessage {
}
}
+ @Override
public int getEndOfBodyPosition() {
if (endOfBodyPosition < 0) {
endOfBodyPosition = getBodyBuffer().writerIndex();
@@ -238,7 +233,7 @@ public class CoreMessage extends RefCountMessage {
messageID = msg.getMessageID();
address = msg.getAddressSimpleString();
userID = (UUID)msg.getUserID();
- type = msg.getType();
+ type = msg.toCore().getType();
durable = msg.isDurable();
expiration = msg.getExpiration();
timestamp = msg.getTimestamp();
@@ -369,6 +364,17 @@ public class CoreMessage extends RefCountMessage {
}
@Override
+ public boolean isServerMessage() {
+ // even though CoreMessage is used both on server and client
+ // callers are interested in knowing if this is a server large message
+ // as it will be used to send the body from the files.
+ //
+ // this may need further refactoring when we improve large messages
+ // and expose that functionality to other protocols.
+ return false;
+ }
+
+ @Override
public byte getType() {
return type;
}
@@ -467,27 +473,6 @@ public class CoreMessage extends RefCountMessage {
}
@Override
- public Object getBody() {
-
- if (body == null) {
- decodeBody();
- }
-
- return body;
- }
-
- private void decodeBody() {
- buffer.readerIndex(DataConstants.SIZE_INT);
- switch (getBodyType()) {
- case Text:
- body = SimpleString.readNullableSimpleString(buffer);
- break;
-
- default:
- break;
- }
- }
-
public int getHeadersAndPropertiesEncodeSize() {
return DataConstants.SIZE_LONG + // Message ID
DataConstants.SIZE_BYTE + // user id null?
@@ -501,10 +486,6 @@ public class CoreMessage extends RefCountMessage {
/* PropertySize and Properties */checkProperties().getEncodeSize();
}
- @Override
- public BodyType getBodyType() {
- return getBodyType(type);
- }
public static BodyType getBodyType(byte type) {
switch (type) {
@@ -540,16 +521,6 @@ public class CoreMessage extends RefCountMessage {
}
@Override
- public CoreMessage setBody(final BodyType bodyType, Object body) {
- messageChanged();
-
- this.type = Message.TEXT_TYPE;
- this.body = body;
-
- return this;
- }
-
- @Override
public boolean isLargeMessage() {
return false;
}
@@ -1016,7 +987,7 @@ public class CoreMessage extends RefCountMessage {
}
@Override
- public Message toCore() {
+ public CoreMessage toCore() {
return this;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
index 9975a5b..38cc177 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
@@ -31,6 +31,7 @@ import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
@@ -427,7 +428,7 @@ public class ActiveMQSessionContext extends SessionContext {
}
@Override
- public void sendFullMessage(Message msgI,
+ public void sendFullMessage(ICoreMessage msgI,
boolean sendBlocking,
SendAcknowledgementHandler handler,
SimpleString defaultAddress) throws ActiveMQException {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/MessagePacket.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/MessagePacket.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/MessagePacket.java
index ec2520a..49989d3 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/MessagePacket.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/MessagePacket.java
@@ -16,26 +16,25 @@
*/
package org.apache.activemq.artemis.core.protocol.core.impl.wireformat;
-
import io.netty.buffer.Unpooled;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper;
import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
public abstract class MessagePacket extends PacketImpl implements MessagePacketI {
- protected Message message;
+ protected ICoreMessage message;
- public MessagePacket(final byte type, final Message message) {
+ public MessagePacket(final byte type, final ICoreMessage message) {
super(type);
this.message = message;
}
@Override
- public Message getMessage() {
+ public ICoreMessage getMessage() {
return message;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionReceiveMessage.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionReceiveMessage.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionReceiveMessage.java
index c03d3c8..b0ab52b 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionReceiveMessage.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionReceiveMessage.java
@@ -17,8 +17,8 @@
package org.apache.activemq.artemis.core.protocol.core.impl.wireformat;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
-
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
+import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.utils.DataConstants;
@@ -31,7 +31,7 @@ public class SessionReceiveMessage extends MessagePacket {
private int deliveryCount;
- public SessionReceiveMessage(final long consumerID, final Message message, final int deliveryCount) {
+ public SessionReceiveMessage(final long consumerID, final ICoreMessage message, final int deliveryCount) {
super(SESS_RECEIVE_MSG, message);
this.consumerID = consumerID;
@@ -39,7 +39,7 @@ public class SessionReceiveMessage extends MessagePacket {
this.deliveryCount = deliveryCount;
}
- public SessionReceiveMessage(final Message message) {
+ public SessionReceiveMessage(final CoreMessage message) {
super(SESS_RECEIVE_MSG, message);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionSendMessage.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionSendMessage.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionSendMessage.java
index 8182b90..43bb0be 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionSendMessage.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/SessionSendMessage.java
@@ -18,7 +18,7 @@ package org.apache.activemq.artemis.core.protocol.core.impl.wireformat;
import io.netty.buffer.ByteBuf;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.client.SendAcknowledgementHandler;
import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
@@ -38,7 +38,7 @@ public class SessionSendMessage extends MessagePacket {
private final transient SendAcknowledgementHandler handler;
/** This will be using the CoreMessage because it is meant for the core-protocol */
- public SessionSendMessage(final Message message,
+ public SessionSendMessage(final ICoreMessage message,
final boolean requiresResponse,
final SendAcknowledgementHandler handler) {
super(SESS_SEND, message);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
index 8bb0081..3fddb8e 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
@@ -23,7 +23,9 @@ import java.util.Set;
import java.util.concurrent.Executor;
import org.apache.activemq.artemis.api.core.ActiveMQException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ClientConsumer;
import org.apache.activemq.artemis.api.core.client.ClientSession;
@@ -33,7 +35,6 @@ import org.apache.activemq.artemis.core.client.impl.ClientLargeMessageInternal;
import org.apache.activemq.artemis.core.client.impl.ClientMessageInternal;
import org.apache.activemq.artemis.core.client.impl.ClientProducerCreditsImpl;
import org.apache.activemq.artemis.core.client.impl.ClientSessionInternal;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.utils.IDGenerator;
import org.apache.activemq.artemis.utils.SimpleIDGenerator;
@@ -129,7 +130,7 @@ public abstract class SessionContext {
public abstract int getCreditsOnSendingFull(Message msgI);
- public abstract void sendFullMessage(Message msgI,
+ public abstract void sendFullMessage(ICoreMessage msgI,
boolean sendBlocking,
SendAcknowledgementHandler handler,
SimpleString defaultAddress) throws ActiveMQException;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSManagementHelper.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSManagementHelper.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSManagementHelper.java
index 0e99106..4d0306b 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSManagementHelper.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSManagementHelper.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.api.jms.management;
import javax.jms.JMSException;
import javax.jms.Message;
+import org.apache.activemq.artemis.api.core.client.ClientMessage;
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
import org.apache.activemq.artemis.jms.client.ActiveMQMessage;
@@ -27,7 +28,7 @@ import org.apache.activemq.artemis.jms.client.ActiveMQMessage;
*/
public class JMSManagementHelper {
- private static org.apache.activemq.artemis.api.core.Message getCoreMessage(final Message jmsMessage) {
+ private static ClientMessage getCoreMessage(final Message jmsMessage) {
if (jmsMessage instanceof ActiveMQMessage == false) {
throw new IllegalArgumentException("Cannot send a foreign message as a management message " + jmsMessage.getClass().getName());
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/transaction/JMSTransactionDetail.java
----------------------------------------------------------------------
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/transaction/JMSTransactionDetail.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/transaction/JMSTransactionDetail.java
index 289f88c..ecb4ccb 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/transaction/JMSTransactionDetail.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/transaction/JMSTransactionDetail.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.jms.transaction;
import javax.transaction.xa.Xid;
import java.util.Map;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.core.transaction.Transaction;
import org.apache.activemq.artemis.core.transaction.TransactionDetail;
@@ -37,7 +38,10 @@ public class JMSTransactionDetail extends TransactionDetail {
@Override
public String decodeMessageType(Message msg) {
- int type = msg.getType();
+ if (!(msg instanceof ICoreMessage)) {
+ return "N/A";
+ }
+ int type = ((ICoreMessage) msg).getType();
switch (type) {
case ActiveMQMessage.TYPE: // 0
return "Default";
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java
index 772f2cd..456d281 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPMessage.java
@@ -27,13 +27,12 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.PooledByteBufAllocator;
import io.netty.buffer.Unpooled;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
-import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.RefCountMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.encode.BodyType;
-import org.apache.activemq.artemis.core.message.LargeBodyEncoder;
import org.apache.activemq.artemis.core.persistence.Persister;
+import org.apache.activemq.artemis.protocol.amqp.converter.AMQPConverter;
import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
import org.apache.activemq.artemis.protocol.amqp.util.TLSEncode;
import org.apache.activemq.artemis.utils.DataConstants;
@@ -60,7 +59,6 @@ public class AMQPMessage extends RefCountMessage {
String address;
MessageImpl protonMessage;
private volatile int memoryEstimate = -1;
- private ProtonProtocolManager protocolManager;
private long expiration = 0;
// this can be used to encode the header again and the rest of the message buffer
private int headerEnd = -1;
@@ -71,8 +69,7 @@ public class AMQPMessage extends RefCountMessage {
private Properties _properties;
private ApplicationProperties applicationProperties;
- public AMQPMessage(long messageFormat, byte[] data, ProtonProtocolManager protocolManager) {
- this.protocolManager = protocolManager;
+ public AMQPMessage(long messageFormat, byte[] data) {
this.data = Unpooled.wrappedBuffer(data);
this.messageFormat = messageFormat;
this.bufferValid = true;
@@ -86,15 +83,14 @@ public class AMQPMessage extends RefCountMessage {
}
- public AMQPMessage(long messageFormat, Message message, ProtonProtocolManager protocolManager) {
- this.protocolManager = protocolManager;
- this.protonMessage = (MessageImpl)message;
+ public AMQPMessage(long messageFormat, Message message) {
this.messageFormat = messageFormat;
+ this.protonMessage = (MessageImpl)message;
}
- public AMQPMessage(Message message, ProtonProtocolManager protocolManager) {
- this(0, message, protocolManager);
+ public AMQPMessage(Message message) {
+ this(0, message);
}
public MessageImpl getProtonMessage() {
@@ -292,40 +288,6 @@ public class AMQPMessage extends RefCountMessage {
}
@Override
- public ActiveMQBuffer getBodyBuffer() {
- // NO-IMPL
- return null;
- }
-
- @Override
- public ActiveMQBuffer getReadOnlyBodyBuffer() {
- // NO-IMPL
- return null;
- }
-
- @Override
- public LargeBodyEncoder getBodyEncoder() throws ActiveMQException {
- // NO-IMPL
- return null;
- }
-
- @Override
- public byte getType() {
- return type;
- }
-
- @Override
- public AMQPMessage setType(byte type) {
- this.type = type;
- return this;
- }
-
- @Override
- public boolean isLargeMessage() {
- return false;
- }
-
- @Override
public ByteBuf getBuffer() {
if (data == null) {
return null;
@@ -342,12 +304,14 @@ public class AMQPMessage extends RefCountMessage {
@Override
public org.apache.activemq.artemis.api.core.Message copy() {
- AMQPMessage newEncode = new AMQPMessage(this.messageFormat, data.array(), protocolManager);
+ checkBuffer();
+ AMQPMessage newEncode = new AMQPMessage(this.messageFormat, data.array());
return newEncode;
}
@Override
public org.apache.activemq.artemis.api.core.Message copy(long newID) {
+ checkBuffer();
return copy().setMessageID(newID);
}
@@ -403,32 +367,6 @@ public class AMQPMessage extends RefCountMessage {
}
@Override
- public Object getProtocol() {
- return protocolManager;
- }
-
- @Override
- public AMQPMessage setProtocol(Object protocol) {
- this.protocolManager = (ProtonProtocolManager)protocol;
- return this;
- }
-
- @Override
- public Object getBody() {
- return null;
- }
-
- @Override
- public BodyType getBodyType() {
- return null;
- }
-
- @Override
- public org.apache.activemq.artemis.api.core.Message setBody(BodyType type, Object body) {
- return null;
- }
-
- @Override
public String getAddress() {
if (address == null) {
Properties properties = getProtonMessage().getProperties();
@@ -794,9 +732,12 @@ public class AMQPMessage extends RefCountMessage {
}
@Override
- public org.apache.activemq.artemis.api.core.Message toCore() {
- MessageImpl protonMessage = getProtonMessage();
- throw new IllegalStateException("conversion between AMQP and Core not implemented yet!");
+ public ICoreMessage toCore() {
+ try {
+ return AMQPConverter.getInstance().toCore(this);
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPSessionCallback.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPSessionCallback.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPSessionCallback.java
index f34298c..5931afe 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPSessionCallback.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/AMQPSessionCallback.java
@@ -24,6 +24,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
import org.apache.activemq.artemis.core.io.IOCallback;
@@ -33,14 +34,13 @@ import org.apache.activemq.artemis.core.server.AddressQueryResult;
import org.apache.activemq.artemis.core.server.BindingQueryResult;
import org.apache.activemq.artemis.core.server.MessageReference;
import org.apache.activemq.artemis.core.server.QueueQueryResult;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.server.ServerConsumer;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
import org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl;
import org.apache.activemq.artemis.core.transaction.Transaction;
import org.apache.activemq.artemis.jms.client.ActiveMQConnection;
-import org.apache.activemq.artemis.protocol.amqp.converter.ProtonMessageConverter;
+import org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter;
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPException;
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPInternalErrorException;
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPResourceLimitExceededException;
@@ -64,7 +64,6 @@ import org.apache.qpid.proton.amqp.messaging.Accepted;
import org.apache.qpid.proton.amqp.messaging.Rejected;
import org.apache.qpid.proton.amqp.transport.AmqpError;
import org.apache.qpid.proton.amqp.transport.ErrorCondition;
-import org.apache.qpid.proton.codec.WritableBuffer;
import org.apache.qpid.proton.engine.Delivery;
import org.apache.qpid.proton.engine.EndpointState;
import org.apache.qpid.proton.engine.Receiver;
@@ -296,13 +295,6 @@ public class AMQPSessionCallback implements SessionCallback {
}
}
- public long encodeMessage(Message message, int deliveryCount, WritableBuffer buffer) throws Exception {
- ProtonMessageConverter converter = (ProtonMessageConverter) manager.getConverter();
-
- // The Proton variant accepts a WritableBuffer to allow for a faster more direct encode.
- return (long) converter.outbound(message, deliveryCount, buffer);
- }
-
public String tempQueueName() {
return UUIDGenerator.getInstance().generateStringUUID();
}
@@ -350,7 +342,7 @@ public class AMQPSessionCallback implements SessionCallback {
String address,
int messageFormat,
byte[] data) throws Exception {
- AMQPMessage message = new AMQPMessage(messageFormat, data, manager);
+ AMQPMessage message = new AMQPMessage(messageFormat, data);
if (address != null) {
message.setAddress(new SimpleString(address));
} else {
@@ -494,7 +486,7 @@ public class AMQPSessionCallback implements SessionCallback {
ProtonServerSenderContext plugSender = (ProtonServerSenderContext) consumer.getProtocolContext();
try {
- return plugSender.deliverMessage(message, deliveryCount);
+ return plugSender.deliverMessage(CoreAmqpConverter.checkAMQP(message), deliveryCount);
} catch (Exception e) {
synchronized (connection.getLock()) {
plugSender.getSender().setCondition(new ErrorCondition(AmqpError.INTERNAL_ERROR, e.getMessage()));
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManager.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManager.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManager.java
index 754172a..9c7d24d 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManager.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/broker/ProtonProtocolManager.java
@@ -26,19 +26,17 @@ import io.netty.channel.ChannelPipeline;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.BaseInterceptor;
import org.apache.activemq.artemis.api.core.Interceptor;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.server.management.Notification;
import org.apache.activemq.artemis.core.server.management.NotificationListener;
import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
-import org.apache.activemq.artemis.protocol.amqp.converter.ProtonMessageConverter;
import org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext;
import org.apache.activemq.artemis.protocol.amqp.proton.AMQPConstants;
import org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry;
-import org.apache.activemq.artemis.spi.core.protocol.MessageConverter;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManager;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
@@ -54,8 +52,6 @@ public class ProtonProtocolManager implements ProtocolManager<Interceptor>, Noti
private final ActiveMQServer server;
- private MessageConverter protonConverter;
-
private final ProtonProtocolManagerFactory factory;
private final Map<SimpleString, RoutingType> prefixes = new HashMap<>();
@@ -72,7 +68,6 @@ public class ProtonProtocolManager implements ProtocolManager<Interceptor>, Noti
public ProtonProtocolManager(ProtonProtocolManagerFactory factory, ActiveMQServer server) {
this.factory = factory;
this.server = server;
- this.protonConverter = new ProtonMessageConverter(server.getStorageManager());
}
public ActiveMQServer getServer() {
@@ -80,11 +75,6 @@ public class ProtonProtocolManager implements ProtocolManager<Interceptor>, Noti
}
@Override
- public MessageConverter getConverter() {
- return protonConverter;
- }
-
- @Override
public void onNotification(Notification notification) {
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AMQPConverter.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AMQPConverter.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AMQPConverter.java
new file mode 100644
index 0000000..724474b
--- /dev/null
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AMQPConverter.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.protocol.amqp.converter;
+
+import org.apache.activemq.artemis.api.core.ICoreMessage;
+import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
+import org.apache.activemq.artemis.spi.core.protocol.MessageConverter;
+
+
+public class AMQPConverter implements MessageConverter<AMQPMessage> {
+
+ private static final AMQPConverter theInstance = new AMQPConverter();
+
+ private AMQPConverter() {
+ }
+
+ public static AMQPConverter getInstance() {
+ return theInstance;
+ }
+
+ @Override
+ public AMQPMessage fromCore(ICoreMessage coreMessage) throws Exception {
+ return CoreAmqpConverter.fromCore(coreMessage);
+ }
+
+ @Override
+ public ICoreMessage toCore(AMQPMessage messageSource) throws Exception {
+ return AmqpCoreConverter.toCore(messageSource);
+ }
+}
[4/5] activemq-artemis git commit: Fixing converters part I
Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java
new file mode 100644
index 0000000..44aff5b
--- /dev/null
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/AmqpCoreConverter.java
@@ -0,0 +1,366 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.protocol.amqp.converter;
+
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.PooledByteBufAllocator;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
+import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerDestination;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageIdHelper;
+import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
+import org.apache.activemq.artemis.protocol.amqp.util.TLSEncode;
+import org.apache.qpid.proton.amqp.Binary;
+import org.apache.qpid.proton.amqp.Decimal128;
+import org.apache.qpid.proton.amqp.Decimal32;
+import org.apache.qpid.proton.amqp.Decimal64;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.UnsignedByte;
+import org.apache.qpid.proton.amqp.UnsignedInteger;
+import org.apache.qpid.proton.amqp.UnsignedLong;
+import org.apache.qpid.proton.amqp.UnsignedShort;
+import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
+import org.apache.qpid.proton.amqp.messaging.AmqpValue;
+import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
+import org.apache.qpid.proton.amqp.messaging.Data;
+import org.apache.qpid.proton.amqp.messaging.Footer;
+import org.apache.qpid.proton.amqp.messaging.Header;
+import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
+import org.apache.qpid.proton.amqp.messaging.Properties;
+import org.apache.qpid.proton.amqp.messaging.Section;
+import org.apache.qpid.proton.codec.WritableBuffer;
+
+import static org.apache.activemq.artemis.api.core.Message.HDR_SCHEDULED_DELIVERY_TIME;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_DATA;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_NULL;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_SEQUENCE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_BINARY;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_LIST;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_MAP;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_NULL;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_STRING;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_ENCODING;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FIRST_ACQUIRER;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FOOTER_PREFIX;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_DURABLE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_PRIORITY;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_MESSAGE_ANNOTATION_PREFIX;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_ORIGINAL_ENCODING;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_REPLYTO_GROUP_ID;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.OCTET_STREAM_CONTENT_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createBytesMessage;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createMapMessage;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createMessage;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createObjectMessage;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createStreamMessage;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createTextMessage;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.getCharsetForTextualContent;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.isContentType;
+
+/**
+ * This class was created just to separate concerns on AMQPConverter.
+ * For better organization of the code.
+ * */
+public class AmqpCoreConverter {
+
+ public static ICoreMessage toCore(AMQPMessage message) throws Exception {
+
+ Section body = message.getProtonMessage().getBody();
+ ServerJMSMessage result;
+
+ if (body == null) {
+ if (isContentType(SERIALIZED_JAVA_OBJECT_CONTENT_TYPE, message.getProtonMessage())) {
+ result = createObjectMessage(message.getMessageID());
+ } else if (isContentType(OCTET_STREAM_CONTENT_TYPE, message.getProtonMessage()) || isContentType(null, message.getProtonMessage())) {
+ result = createBytesMessage(message.getMessageID());
+ } else {
+ Charset charset = getCharsetForTextualContent(message.getProtonMessage().getContentType());
+ if (charset != null) {
+ result = createTextMessage(message.getMessageID());
+ } else {
+ result = createMessage(message.getMessageID());
+ }
+ }
+
+ result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_NULL);
+ } else if (body instanceof Data) {
+ Binary payload = ((Data) body).getValue();
+
+ if (isContentType(SERIALIZED_JAVA_OBJECT_CONTENT_TYPE, message.getProtonMessage())) {
+ result = createObjectMessage(message.getMessageID(), payload.getArray(), payload.getArrayOffset(), payload.getLength());
+ } else if (isContentType(OCTET_STREAM_CONTENT_TYPE, message.getProtonMessage())) {
+ result = createBytesMessage(message.getMessageID(), payload.getArray(), payload.getArrayOffset(), payload.getLength());
+ } else {
+ Charset charset = getCharsetForTextualContent(message.getProtonMessage().getContentType());
+ if (StandardCharsets.UTF_8.equals(charset)) {
+ ByteBuffer buf = ByteBuffer.wrap(payload.getArray(), payload.getArrayOffset(), payload.getLength());
+
+ try {
+ CharBuffer chars = charset.newDecoder().decode(buf);
+ result = createTextMessage(message.getMessageID(), String.valueOf(chars));
+ } catch (CharacterCodingException e) {
+ result = createBytesMessage(message.getMessageID(), payload.getArray(), payload.getArrayOffset(), payload.getLength());
+ }
+ } else {
+ result = createBytesMessage(message.getMessageID(), payload.getArray(), payload.getArrayOffset(), payload.getLength());
+ }
+ }
+
+ result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_DATA);
+ } else if (body instanceof AmqpSequence) {
+ AmqpSequence sequence = (AmqpSequence) body;
+ ServerJMSStreamMessage m = createStreamMessage(message.getMessageID());
+ for (Object item : sequence.getValue()) {
+ m.writeObject(item);
+ }
+
+ result = m;
+ result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_SEQUENCE);
+ } else if (body instanceof AmqpValue) {
+ Object value = ((AmqpValue) body).getValue();
+ if (value == null || value instanceof String) {
+ result = createTextMessage(message.getMessageID(), (String) value);
+
+ result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, value == null ? AMQP_VALUE_NULL : AMQP_VALUE_STRING);
+ } else if (value instanceof Binary) {
+ Binary payload = (Binary) value;
+
+ if (isContentType(SERIALIZED_JAVA_OBJECT_CONTENT_TYPE, message.getProtonMessage())) {
+ result = createObjectMessage(message.getMessageID(), payload);
+ } else {
+ result = createBytesMessage(message.getMessageID(), payload.getArray(), payload.getArrayOffset(), payload.getLength());
+ }
+
+ result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_BINARY);
+ } else if (value instanceof List) {
+ ServerJMSStreamMessage m = createStreamMessage(message.getMessageID());
+ for (Object item : (List<Object>) value) {
+ m.writeObject(item);
+ }
+ result = m;
+ result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_LIST);
+ } else if (value instanceof Map) {
+ result = createMapMessage(message.getMessageID(), (Map<String, Object>) value);
+ result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_MAP);
+ } else {
+ ByteBuf buf = PooledByteBufAllocator.DEFAULT.heapBuffer(1024);
+ try {
+ TLSEncode.getEncoder().setByteBuffer(new NettyWritable(buf));
+ TLSEncode.getEncoder().writeObject(body);
+ result = createBytesMessage(message.getMessageID(), buf.array(), 0, buf.writerIndex());
+ } finally {
+ buf.release();
+ TLSEncode.getEncoder().setByteBuffer((WritableBuffer)null);
+ }
+ }
+ } else {
+ throw new RuntimeException("Unexpected body type: " + body.getClass());
+ }
+
+ populateMessage(result, message.getProtonMessage());
+
+ return result != null ? result.getInnerMessage() : null;
+ }
+
+ protected static ServerJMSMessage populateMessage(ServerJMSMessage jms, org.apache.qpid.proton.message.Message amqp) throws Exception {
+ Header header = amqp.getHeader();
+ if (header != null) {
+ jms.setBooleanProperty(JMS_AMQP_HEADER, true);
+
+ if (header.getDurable() != null) {
+ jms.setBooleanProperty(JMS_AMQP_HEADER_DURABLE, true);
+ jms.setJMSDeliveryMode(header.getDurable().booleanValue() ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT);
+ } else {
+ jms.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
+ }
+
+ if (header.getPriority() != null) {
+ jms.setBooleanProperty(JMS_AMQP_HEADER_PRIORITY, true);
+ jms.setJMSPriority(header.getPriority().intValue());
+ } else {
+ jms.setJMSPriority(javax.jms.Message.DEFAULT_PRIORITY);
+ }
+
+ if (header.getFirstAcquirer() != null) {
+ jms.setBooleanProperty(JMS_AMQP_FIRST_ACQUIRER, header.getFirstAcquirer());
+ }
+
+ if (header.getDeliveryCount() != null) {
+ // AMQP Delivery Count counts only failed delivers where JMS
+ // Delivery Count should include the original delivery in the count.
+ jms.setLongProperty("JMSXDeliveryCount", header.getDeliveryCount().longValue() + 1);
+ }
+ } else {
+ jms.setJMSPriority((byte) javax.jms.Message.DEFAULT_PRIORITY);
+ jms.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
+ }
+
+ final MessageAnnotations ma = amqp.getMessageAnnotations();
+ if (ma != null) {
+ for (Map.Entry<?, ?> entry : ma.getValue().entrySet()) {
+ String key = entry.getKey().toString();
+ if ("x-opt-delivery-time".equals(key) && entry.getValue() != null) {
+ long deliveryTime = ((Number) entry.getValue()).longValue();
+ jms.setLongProperty(HDR_SCHEDULED_DELIVERY_TIME.toString(), deliveryTime);
+ } else if ("x-opt-delivery-delay".equals(key) && entry.getValue() != null) {
+ long delay = ((Number) entry.getValue()).longValue();
+ if (delay > 0) {
+ jms.setLongProperty(HDR_SCHEDULED_DELIVERY_TIME.toString(), System.currentTimeMillis() + delay);
+ }
+ }
+
+ setProperty(jms, JMS_AMQP_MESSAGE_ANNOTATION_PREFIX + key, entry.getValue());
+ }
+ }
+
+ final ApplicationProperties ap = amqp.getApplicationProperties();
+ if (ap != null) {
+ for (Map.Entry<Object, Object> entry : (Set<Map.Entry<Object, Object>>) ap.getValue().entrySet()) {
+ setProperty(jms, entry.getKey().toString(), entry.getValue());
+ }
+ }
+
+ final Properties properties = amqp.getProperties();
+ if (properties != null) {
+ if (properties.getMessageId() != null) {
+ jms.setJMSMessageID(AMQPMessageIdHelper.INSTANCE.toBaseMessageIdString(properties.getMessageId()));
+ }
+ Binary userId = properties.getUserId();
+ if (userId != null) {
+ // TODO - Better Way to set this?
+ jms.setStringProperty("JMSXUserID", new String(userId.getArray(), userId.getArrayOffset(), userId.getLength(), StandardCharsets.UTF_8));
+ }
+ if (properties.getTo() != null) {
+ jms.setJMSDestination(new ServerDestination(properties.getTo()));
+ }
+ if (properties.getSubject() != null) {
+ jms.setJMSType(properties.getSubject());
+ }
+ if (properties.getReplyTo() != null) {
+ jms.setJMSReplyTo(new ServerDestination(properties.getReplyTo()));
+ }
+ if (properties.getCorrelationId() != null) {
+ jms.setJMSCorrelationID(AMQPMessageIdHelper.INSTANCE.toBaseMessageIdString(properties.getCorrelationId()));
+ }
+ if (properties.getContentType() != null) {
+ jms.setStringProperty(JMS_AMQP_CONTENT_TYPE, properties.getContentType().toString());
+ }
+ if (properties.getContentEncoding() != null) {
+ jms.setStringProperty(JMS_AMQP_CONTENT_ENCODING, properties.getContentEncoding().toString());
+ }
+ if (properties.getCreationTime() != null) {
+ jms.setJMSTimestamp(properties.getCreationTime().getTime());
+ }
+ if (properties.getGroupId() != null) {
+ jms.setStringProperty("_AMQ_GROUP_ID", properties.getGroupId());
+ }
+ if (properties.getGroupSequence() != null) {
+ jms.setIntProperty("JMSXGroupSeq", properties.getGroupSequence().intValue());
+ }
+ if (properties.getReplyToGroupId() != null) {
+ jms.setStringProperty(JMS_AMQP_REPLYTO_GROUP_ID, properties.getReplyToGroupId());
+ }
+ if (properties.getAbsoluteExpiryTime() != null) {
+ jms.setJMSExpiration(properties.getAbsoluteExpiryTime().getTime());
+ }
+ }
+
+ // If the jms expiration has not yet been set...
+ if (header != null && jms.getJMSExpiration() == 0) {
+ // Then lets try to set it based on the message ttl.
+ long ttl = javax.jms.Message.DEFAULT_TIME_TO_LIVE;
+ if (header.getTtl() != null) {
+ ttl = header.getTtl().longValue();
+ }
+
+ if (ttl == 0) {
+ jms.setJMSExpiration(0);
+ } else {
+ jms.setJMSExpiration(System.currentTimeMillis() + ttl);
+ }
+ }
+
+ final Footer fp = amqp.getFooter();
+ if (fp != null) {
+ for (Map.Entry<Object, Object> entry : (Set<Map.Entry<Object, Object>>) fp.getValue().entrySet()) {
+ String key = entry.getKey().toString();
+ setProperty(jms, JMS_AMQP_FOOTER_PREFIX + key, entry.getValue());
+ }
+ }
+
+ return jms;
+ }
+
+ private static void setProperty(javax.jms.Message msg, String key, Object value) throws JMSException {
+ if (value instanceof UnsignedLong) {
+ long v = ((UnsignedLong) value).longValue();
+ msg.setLongProperty(key, v);
+ } else if (value instanceof UnsignedInteger) {
+ long v = ((UnsignedInteger) value).longValue();
+ if (Integer.MIN_VALUE <= v && v <= Integer.MAX_VALUE) {
+ msg.setIntProperty(key, (int) v);
+ } else {
+ msg.setLongProperty(key, v);
+ }
+ } else if (value instanceof UnsignedShort) {
+ int v = ((UnsignedShort) value).intValue();
+ if (Short.MIN_VALUE <= v && v <= Short.MAX_VALUE) {
+ msg.setShortProperty(key, (short) v);
+ } else {
+ msg.setIntProperty(key, v);
+ }
+ } else if (value instanceof UnsignedByte) {
+ short v = ((UnsignedByte) value).shortValue();
+ if (Byte.MIN_VALUE <= v && v <= Byte.MAX_VALUE) {
+ msg.setByteProperty(key, (byte) v);
+ } else {
+ msg.setShortProperty(key, v);
+ }
+ } else if (value instanceof Symbol) {
+ msg.setStringProperty(key, value.toString());
+ } else if (value instanceof Decimal128) {
+ msg.setDoubleProperty(key, ((Decimal128) value).doubleValue());
+ } else if (value instanceof Decimal64) {
+ msg.setDoubleProperty(key, ((Decimal64) value).doubleValue());
+ } else if (value instanceof Decimal32) {
+ msg.setFloatProperty(key, ((Decimal32) value).floatValue());
+ } else if (value instanceof Binary) {
+ msg.setStringProperty(key, value.toString());
+ } else {
+ msg.setObjectProperty(key, value);
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/CoreAmqpConverter.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/CoreAmqpConverter.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/CoreAmqpConverter.java
new file mode 100644
index 0000000..c29ec9f
--- /dev/null
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/CoreAmqpConverter.java
@@ -0,0 +1,565 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.protocol.amqp.converter;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MessageEOFException;
+import javax.jms.Queue;
+import javax.jms.TemporaryQueue;
+import javax.jms.TemporaryTopic;
+import javax.jms.TextMessage;
+import javax.jms.Topic;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.PooledByteBufAllocator;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
+import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSBytesMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMapMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSObjectMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSTextMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageIdHelper;
+import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPIllegalStateException;
+import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
+import org.apache.activemq.artemis.protocol.amqp.util.TLSEncode;
+import org.apache.activemq.artemis.reader.MessageUtil;
+import org.apache.qpid.proton.amqp.Binary;
+import org.apache.qpid.proton.amqp.Symbol;
+import org.apache.qpid.proton.amqp.UnsignedByte;
+import org.apache.qpid.proton.amqp.UnsignedInteger;
+import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
+import org.apache.qpid.proton.amqp.messaging.AmqpValue;
+import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
+import org.apache.qpid.proton.amqp.messaging.Data;
+import org.apache.qpid.proton.amqp.messaging.DeliveryAnnotations;
+import org.apache.qpid.proton.amqp.messaging.Footer;
+import org.apache.qpid.proton.amqp.messaging.Header;
+import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
+import org.apache.qpid.proton.amqp.messaging.Properties;
+import org.apache.qpid.proton.amqp.messaging.Section;
+import org.apache.qpid.proton.codec.EncoderImpl;
+import org.apache.qpid.proton.codec.WritableBuffer;
+import org.jboss.logging.Logger;
+
+import static org.apache.activemq.artemis.api.core.FilterConstants.NATIVE_MESSAGE_ID;
+import static org.apache.activemq.artemis.api.core.Message.HDR_SCHEDULED_DELIVERY_TIME;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_DATA;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_NULL;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_SEQUENCE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_UNKNOWN;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_BINARY;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_LIST;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_STRING;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.EMPTY_BINARY;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_ENCODING;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_DELIVERY_ANNOTATION_PREFIX;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FIRST_ACQUIRER;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FOOTER_PREFIX;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_DURABLE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_PRIORITY;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_MESSAGE_ANNOTATION_PREFIX;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_NATIVE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_ORIGINAL_ENCODING;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_PREFIX;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_PROPERTIES;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_REPLYTO_GROUP_ID;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_DEST_TYPE_MSG_ANNOTATION;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_REPLY_TO_TYPE_MSG_ANNOTATION;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.QUEUE_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.TEMP_QUEUE_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.TEMP_TOPIC_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.TOPIC_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.toAddress;
+
+public class CoreAmqpConverter {
+
+ private static Logger logger = Logger.getLogger(CoreAmqpConverter.class);
+
+ public static AMQPMessage checkAMQP(Message message) throws Exception {
+ if (message instanceof AMQPMessage) {
+ return (AMQPMessage)message;
+ } else {
+ // It will first convert to Core, then to AMQP
+ return fromCore(message.toCore());
+ }
+ }
+
+ public static AMQPMessage fromCore(ICoreMessage coreMessage) throws Exception {
+ if (coreMessage == null) {
+ return null;
+ }
+
+ ServerJMSMessage message = ServerJMSMessage.wrapCoreMessage(coreMessage);
+ message.decode();
+
+ long messageFormat = 0;
+ Header header = null;
+ Properties properties = null;
+ Map<Symbol, Object> daMap = null;
+ Map<Symbol, Object> maMap = null;
+ Map<String, Object> apMap = null;
+ Map<Object, Object> footerMap = null;
+
+ Section body = convertBody(message);
+
+ if (message.getInnerMessage().isDurable()) {
+ if (header == null) {
+ header = new Header();
+ }
+ header.setDurable(true);
+ }
+ byte priority = (byte) message.getJMSPriority();
+ if (priority != javax.jms.Message.DEFAULT_PRIORITY) {
+ if (header == null) {
+ header = new Header();
+ }
+ header.setPriority(UnsignedByte.valueOf(priority));
+ }
+ String type = message.getJMSType();
+ if (type != null) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setSubject(type);
+ }
+ String messageId = message.getJMSMessageID();
+ if (messageId != null) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ try {
+ properties.setMessageId(AMQPMessageIdHelper.INSTANCE.toIdObject(messageId));
+ } catch (ActiveMQAMQPIllegalStateException e) {
+ properties.setMessageId(messageId);
+ }
+ }
+ Destination destination = message.getJMSDestination();
+ if (destination != null) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setTo(toAddress(destination));
+ if (maMap == null) {
+ maMap = new HashMap<>();
+ }
+ maMap.put(JMS_DEST_TYPE_MSG_ANNOTATION, destinationType(destination));
+ }
+ Destination replyTo = message.getJMSReplyTo();
+ if (replyTo != null) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setReplyTo(toAddress(replyTo));
+ if (maMap == null) {
+ maMap = new HashMap<>();
+ }
+ maMap.put(JMS_REPLY_TO_TYPE_MSG_ANNOTATION, destinationType(replyTo));
+ }
+ String correlationId = message.getJMSCorrelationID();
+ if (correlationId != null) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ try {
+ properties.setCorrelationId(AMQPMessageIdHelper.INSTANCE.toIdObject(correlationId));
+ } catch (ActiveMQAMQPIllegalStateException e) {
+ properties.setCorrelationId(correlationId);
+ }
+ }
+ long expiration = message.getJMSExpiration();
+ if (expiration != 0) {
+ long ttl = expiration - System.currentTimeMillis();
+ if (ttl < 0) {
+ ttl = 1;
+ }
+
+ if (header == null) {
+ header = new Header();
+ }
+ header.setTtl(new UnsignedInteger((int) ttl));
+
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setAbsoluteExpiryTime(new Date(expiration));
+ }
+ long timeStamp = message.getJMSTimestamp();
+ if (timeStamp != 0) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setCreationTime(new Date(timeStamp));
+ }
+
+ final Set<String> keySet = MessageUtil.getPropertyNames(message.getInnerMessage());
+ for (String key : keySet) {
+ if (key.startsWith("JMSX")) {
+ if (key.equals("JMSXUserID")) {
+ String value = message.getStringProperty(key);
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setUserId(new Binary(value.getBytes(StandardCharsets.UTF_8)));
+ continue;
+ } else if (key.equals("JMSXGroupID")) {
+ String value = message.getStringProperty(key);
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setGroupId(value);
+ continue;
+ } else if (key.equals("JMSXGroupSeq")) {
+ UnsignedInteger value = new UnsignedInteger(message.getIntProperty(key));
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setGroupSequence(value);
+ continue;
+ }
+ } else if (key.startsWith(JMS_AMQP_PREFIX)) {
+ // AMQP Message Information stored from a conversion to the Core Message
+ if (key.equals(JMS_AMQP_NATIVE)) {
+ // skip..internal use only
+ continue;
+ } else if (key.equals(JMS_AMQP_ORIGINAL_ENCODING)) {
+ // skip..internal use only
+ continue;
+ } else if (key.equals(JMS_AMQP_FIRST_ACQUIRER)) {
+ if (header == null) {
+ header = new Header();
+ }
+ header.setFirstAcquirer(message.getBooleanProperty(key));
+ continue;
+ } else if (key.equals(JMS_AMQP_HEADER)) {
+ if (header == null) {
+ header = new Header();
+ }
+ continue;
+ } else if (key.equals(JMS_AMQP_HEADER_DURABLE)) {
+ if (header == null) {
+ header = new Header();
+ }
+ header.setDurable(message.getInnerMessage().isDurable());
+ continue;
+ } else if (key.equals(JMS_AMQP_HEADER_PRIORITY)) {
+ if (header == null) {
+ header = new Header();
+ }
+ header.setPriority(UnsignedByte.valueOf(priority));
+ continue;
+ } else if (key.startsWith(JMS_AMQP_PROPERTIES)) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ continue;
+ } else if (key.startsWith(JMS_AMQP_DELIVERY_ANNOTATION_PREFIX)) {
+ if (daMap == null) {
+ daMap = new HashMap<>();
+ }
+ String name = key.substring(JMS_AMQP_DELIVERY_ANNOTATION_PREFIX.length());
+ daMap.put(Symbol.valueOf(name), message.getObjectProperty(key));
+ continue;
+ } else if (key.startsWith(JMS_AMQP_MESSAGE_ANNOTATION_PREFIX)) {
+ if (maMap == null) {
+ maMap = new HashMap<>();
+ }
+ String name = key.substring(JMS_AMQP_MESSAGE_ANNOTATION_PREFIX.length());
+ maMap.put(Symbol.valueOf(name), message.getObjectProperty(key));
+ continue;
+ } else if (key.equals(JMS_AMQP_CONTENT_TYPE)) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setContentType(Symbol.getSymbol(message.getStringProperty(key)));
+ continue;
+ } else if (key.equals(JMS_AMQP_CONTENT_ENCODING)) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setContentEncoding(Symbol.getSymbol(message.getStringProperty(key)));
+ continue;
+ } else if (key.equals(JMS_AMQP_REPLYTO_GROUP_ID)) {
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setReplyToGroupId(message.getStringProperty(key));
+ continue;
+ } else if (key.startsWith(JMS_AMQP_FOOTER_PREFIX)) {
+ if (footerMap == null) {
+ footerMap = new HashMap<>();
+ }
+ String name = key.substring(JMS_AMQP_FOOTER_PREFIX.length());
+ footerMap.put(name, message.getObjectProperty(key));
+ continue;
+ }
+ } else if (key.equals("_AMQ_GROUP_ID")) {
+ String value = message.getStringProperty(key);
+ if (properties == null) {
+ properties = new Properties();
+ }
+ properties.setGroupId(value);
+ continue;
+ } else if (key.equals(NATIVE_MESSAGE_ID)) {
+ // skip..internal use only
+ continue;
+ } else if (key.endsWith(HDR_SCHEDULED_DELIVERY_TIME.toString())) {
+ // skip..remove annotation from previous inbound transformation
+ continue;
+ }
+
+ if (apMap == null) {
+ apMap = new HashMap<>();
+ }
+
+ Object objectProperty = message.getObjectProperty(key);
+ if (objectProperty instanceof byte[]) {
+ objectProperty = new Binary((byte[]) objectProperty);
+ }
+
+ apMap.put(key, objectProperty);
+ }
+
+ ByteBuf buffer = PooledByteBufAllocator.DEFAULT.heapBuffer(1024);
+
+ try {
+ EncoderImpl encoder = TLSEncode.getEncoder();
+ encoder.setByteBuffer(new NettyWritable(buffer));
+
+ if (header != null) {
+ encoder.writeObject(header);
+ }
+ if (daMap != null) {
+ encoder.writeObject(new DeliveryAnnotations(daMap));
+ }
+ if (maMap != null) {
+ encoder.writeObject(new MessageAnnotations(maMap));
+ }
+ if (properties != null) {
+ encoder.writeObject(properties);
+ }
+ if (apMap != null) {
+ encoder.writeObject(new ApplicationProperties(apMap));
+ }
+ if (body != null) {
+ encoder.writeObject(body);
+ }
+ if (footerMap != null) {
+ encoder.writeObject(new Footer(footerMap));
+ }
+
+ byte[] data = new byte[buffer.writerIndex()];
+ buffer.readBytes(data);
+
+ return new AMQPMessage(messageFormat, data);
+
+ } finally {
+ TLSEncode.getEncoder().setByteBuffer((WritableBuffer) null);
+ buffer.release();
+ }
+ }
+
+ private static Section convertBody(ServerJMSMessage message) throws JMSException {
+
+ Section body = null;
+ short orignalEncoding = AMQP_UNKNOWN;
+
+ try {
+ orignalEncoding = message.getShortProperty(JMS_AMQP_ORIGINAL_ENCODING);
+ } catch (Exception ex) {
+ // Ignore and stick with UNKNOWN
+ }
+
+ if (message instanceof ServerJMSBytesMessage) {
+ Binary payload = getBinaryFromMessageBody((ServerJMSBytesMessage) message);
+
+ if (payload == null) {
+ payload = EMPTY_BINARY;
+ }
+
+ switch (orignalEncoding) {
+ case AMQP_NULL:
+ break;
+ case AMQP_VALUE_BINARY:
+ body = new AmqpValue(payload);
+ break;
+ case AMQP_DATA:
+ case AMQP_UNKNOWN:
+ default:
+ body = new Data(payload);
+ break;
+ }
+ } else if (message instanceof ServerJMSTextMessage) {
+ switch (orignalEncoding) {
+ case AMQP_NULL:
+ break;
+ case AMQP_DATA:
+ body = new Data(getBinaryFromMessageBody((ServerJMSTextMessage) message));
+ break;
+ case AMQP_VALUE_STRING:
+ case AMQP_UNKNOWN:
+ default:
+ body = new AmqpValue(((TextMessage) message).getText());
+ break;
+ }
+ } else if (message instanceof ServerJMSMapMessage) {
+ body = new AmqpValue(getMapFromMessageBody((ServerJMSMapMessage) message));
+ } else if (message instanceof ServerJMSStreamMessage) {
+ ArrayList<Object> list = new ArrayList<>();
+ final ServerJMSStreamMessage m = (ServerJMSStreamMessage) message;
+ try {
+ while (true) {
+ list.add(m.readObject());
+ }
+ } catch (MessageEOFException e) {
+ }
+
+ switch (orignalEncoding) {
+ case AMQP_SEQUENCE:
+ body = new AmqpSequence(list);
+ break;
+ case AMQP_VALUE_LIST:
+ case AMQP_UNKNOWN:
+ default:
+ body = new AmqpValue(list);
+ break;
+ }
+ } else if (message instanceof ServerJMSObjectMessage) {
+ Binary payload = getBinaryFromMessageBody((ServerJMSObjectMessage) message);
+
+ if (payload == null) {
+ payload = EMPTY_BINARY;
+ }
+
+ switch (orignalEncoding) {
+ case AMQP_VALUE_BINARY:
+ body = new AmqpValue(payload);
+ break;
+ case AMQP_DATA:
+ case AMQP_UNKNOWN:
+ default:
+ body = new Data(payload);
+ break;
+ }
+
+ // For a non-AMQP message we tag the outbound content type as containing
+ // a serialized Java object so that an AMQP client has a hint as to what
+ // we are sending it.
+ if (!message.propertyExists(JMS_AMQP_CONTENT_TYPE)) {
+ message.setStringProperty(JMS_AMQP_CONTENT_TYPE, SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
+ }
+ } else if (message instanceof ServerJMSMessage) {
+ // If this is not an AMQP message that was converted then the original encoding
+ // will be unknown so we check for special cases of messages with special data
+ // encoded into the server message body.
+ if (orignalEncoding == AMQP_UNKNOWN) {
+ ICoreMessage internalMessage = message.getInnerMessage();
+ int readerIndex = internalMessage.getBodyBuffer().readerIndex();
+ try {
+ Object s = internalMessage.getBodyBuffer().readNullableSimpleString();
+ if (s != null) {
+ body = new AmqpValue(s.toString());
+ }
+ } catch (Throwable ignored) {
+ logger.debug("Exception ignored during conversion", ignored.getMessage(), ignored);
+ } finally {
+ internalMessage.getBodyBuffer().readerIndex(readerIndex);
+ }
+ }
+ }
+
+ return body;
+ }
+
+ private static Binary getBinaryFromMessageBody(ServerJMSBytesMessage message) throws JMSException {
+ byte[] data = new byte[(int) message.getBodyLength()];
+ message.readBytes(data);
+ message.reset(); // Need to reset after readBytes or future readBytes
+
+ return new Binary(data);
+ }
+
+ private static Binary getBinaryFromMessageBody(ServerJMSTextMessage message) throws JMSException {
+ Binary result = null;
+ String text = message.getText();
+ if (text != null) {
+ result = new Binary(text.getBytes(StandardCharsets.UTF_8));
+ }
+
+ return result;
+ }
+
+ private static Binary getBinaryFromMessageBody(ServerJMSObjectMessage message) throws JMSException {
+ message.getInnerMessage().getBodyBuffer().resetReaderIndex();
+ int size = message.getInnerMessage().getBodyBuffer().readInt();
+ byte[] bytes = new byte[size];
+ message.getInnerMessage().getBodyBuffer().readBytes(bytes);
+
+ return new Binary(bytes);
+ }
+
+ private static Map<String, Object> getMapFromMessageBody(ServerJMSMapMessage message) throws JMSException {
+ final HashMap<String, Object> map = new LinkedHashMap<>();
+
+ @SuppressWarnings("unchecked")
+ final Enumeration<String> names = message.getMapNames();
+ while (names.hasMoreElements()) {
+ String key = names.nextElement();
+ Object value = message.getObject(key);
+ if (value instanceof byte[]) {
+ value = new Binary((byte[]) value);
+ }
+ map.put(key, value);
+ }
+
+ return map;
+ }
+
+ private static byte destinationType(Destination destination) {
+ if (destination instanceof Queue) {
+ if (destination instanceof TemporaryQueue) {
+ return TEMP_QUEUE_TYPE;
+ } else {
+ return QUEUE_TYPE;
+ }
+ } else if (destination instanceof Topic) {
+ if (destination instanceof TemporaryTopic) {
+ return TEMP_TOPIC_TYPE;
+ } else {
+ return TOPIC_TYPE;
+ }
+ }
+
+ throw new IllegalArgumentException("Unknown Destination Type passed to JMS Transformer.");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/ProtonMessageConverter.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/ProtonMessageConverter.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/ProtonMessageConverter.java
deleted file mode 100644
index 125a20f..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/ProtonMessageConverter.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter;
-
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_NATIVE;
-
-import java.io.IOException;
-
-import javax.jms.BytesMessage;
-
-import org.apache.activemq.artemis.core.client.ActiveMQClientLogger;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSBytesMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPNativeOutboundTransformer;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.EncodedMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.InboundTransformer;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.JMSMappingInboundTransformer;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.JMSMappingOutboundTransformer;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.OutboundTransformer;
-import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
-import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
-import org.apache.activemq.artemis.spi.core.protocol.MessageConverter;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.qpid.proton.codec.WritableBuffer;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-
-public class ProtonMessageConverter implements MessageConverter {
-
- public ProtonMessageConverter(IDGenerator idGenerator) {
- inboundTransformer = new JMSMappingInboundTransformer(idGenerator);
- outboundTransformer = new JMSMappingOutboundTransformer(idGenerator);
- }
-
- private final InboundTransformer inboundTransformer;
- private final OutboundTransformer outboundTransformer;
-
- @Override
- public org.apache.activemq.artemis.api.core.Message inbound(Object messageSource) throws Exception {
- AMQPMessage encodedMessageSource = (AMQPMessage) messageSource;
- ServerJMSMessage transformedMessage = null;
-
- try {
- transformedMessage = inboundTransformer.transform(encodedMessageSource);
- } catch (Exception e) {
- ActiveMQClientLogger.LOGGER.debug("Transform of message using [{}] transformer, failed" + inboundTransformer.getTransformerName());
- ActiveMQClientLogger.LOGGER.trace("Transformation error:", e);
-
- throw new IOException("Failed to transform incoming delivery, skipping.");
- }
-
- transformedMessage.encode();
-
- return transformedMessage.getInnerMessage();
- }
-
- @Override
- public Object outbound(org.apache.activemq.artemis.api.core.Message messageOutbound, int deliveryCount) throws Exception {
- // Useful for testing but not recommended for real life use.
- ByteBuf nettyBuffer = Unpooled.buffer(1024);
- NettyWritable buffer = new NettyWritable(nettyBuffer);
- long messageFormat = (long) outbound(messageOutbound, deliveryCount, buffer);
-
- EncodedMessage encoded = new EncodedMessage(messageFormat, nettyBuffer.array(), nettyBuffer.arrayOffset() + nettyBuffer.readerIndex(),
- nettyBuffer.readableBytes());
-
- return encoded;
- }
-
- public Object outbound(org.apache.activemq.artemis.api.core.Message messageOutbound, int deliveryCount, WritableBuffer buffer) throws Exception {
- ServerJMSMessage jmsMessage = AMQPMessageSupport.wrapMessage(messageOutbound.getType(), messageOutbound, deliveryCount);
-
- jmsMessage.decode();
-
- if (jmsMessage.getBooleanProperty(JMS_AMQP_NATIVE)) {
- if (jmsMessage instanceof BytesMessage) {
- return AMQPNativeOutboundTransformer.transform(outboundTransformer, (ServerJMSBytesMessage) jmsMessage, buffer);
- } else {
- return 0;
- }
- } else {
- return outboundTransformer.transform(jmsMessage, buffer);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSBytesMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSBytesMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSBytesMessage.java
index c3a60f0..8d473a7 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSBytesMessage.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSBytesMessage.java
@@ -19,7 +19,7 @@ package org.apache.activemq.artemis.protocol.amqp.converter.jms;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
-import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import static org.apache.activemq.artemis.reader.BytesMessageUtil.bytesMessageReset;
@@ -49,8 +49,8 @@ import static org.apache.activemq.artemis.reader.BytesMessageUtil.bytesWriteUTF;
public class ServerJMSBytesMessage extends ServerJMSMessage implements BytesMessage {
- public ServerJMSBytesMessage(Message message, int deliveryCount) {
- super(message, deliveryCount);
+ public ServerJMSBytesMessage(ICoreMessage message) {
+ super(message);
}
@Override
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMapMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMapMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMapMessage.java
index df79183..f72239e 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMapMessage.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMapMessage.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
import java.util.Set;
import org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.utils.TypedProperties;
@@ -51,8 +52,8 @@ public final class ServerJMSMapMessage extends ServerJMSMessage implements MapMe
/*
* This constructor is used to construct messages prior to sending
*/
- public ServerJMSMapMessage(Message message, int deliveryCount) {
- super(message, deliveryCount);
+ public ServerJMSMapMessage(ICoreMessage message) {
+ super(message);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMessage.java
index adf4621..2a52f7a 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMessage.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSMessage.java
@@ -25,34 +25,48 @@ import java.util.Enumeration;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
import org.apache.activemq.artemis.reader.MessageUtil;
import static org.apache.activemq.artemis.api.core.FilterConstants.NATIVE_MESSAGE_ID;
+import static org.apache.activemq.artemis.api.core.Message.BYTES_TYPE;
+import static org.apache.activemq.artemis.api.core.Message.MAP_TYPE;
+import static org.apache.activemq.artemis.api.core.Message.OBJECT_TYPE;
+import static org.apache.activemq.artemis.api.core.Message.STREAM_TYPE;
+import static org.apache.activemq.artemis.api.core.Message.TEXT_TYPE;
public class ServerJMSMessage implements Message {
- protected final CoreMessage message;
-
- protected int deliveryCount;
-
- public org.apache.activemq.artemis.api.core.Message getInnerMessage() {
- return message;
- }
+ protected final ICoreMessage message;
+ private ActiveMQBuffer readBodyBuffer;
- public ServerJMSMessage(org.apache.activemq.artemis.api.core.Message message, int deliveryCount) {
- this.message = (CoreMessage)message;
- this.deliveryCount = deliveryCount;
+ public ServerJMSMessage(ICoreMessage message) {
+ this.message = message;
+ }
+
+ public static ServerJMSMessage wrapCoreMessage(ICoreMessage wrapped) {
+ switch (wrapped.getType()) {
+ case STREAM_TYPE:
+ return new ServerJMSStreamMessage(wrapped);
+ case BYTES_TYPE:
+ return new ServerJMSBytesMessage(wrapped);
+ case MAP_TYPE:
+ return new ServerJMSMapMessage(wrapped);
+ case TEXT_TYPE:
+ return new ServerJMSTextMessage(wrapped);
+ case OBJECT_TYPE:
+ return new ServerJMSObjectMessage(wrapped);
+ default:
+ return new ServerJMSMessage(wrapped);
+ }
}
- public int getDeliveryCount() {
- return deliveryCount;
+ public ICoreMessage getInnerMessage() {
+ return message;
}
- private ActiveMQBuffer readBodyBuffer;
-
/**
* When reading we use a protected copy so multi-threads can work fine
*/
@@ -112,13 +126,13 @@ public class ServerJMSMessage implements Message {
}
@Override
- public final void setJMSCorrelationID(String correlationID) throws JMSException {
- MessageUtil.setJMSCorrelationID(message, correlationID);
+ public final String getJMSCorrelationID() throws JMSException {
+ return MessageUtil.getJMSCorrelationID(message);
}
@Override
- public final String getJMSCorrelationID() throws JMSException {
- return MessageUtil.getJMSCorrelationID(message);
+ public final void setJMSCorrelationID(String correlationID) throws JMSException {
+ MessageUtil.setJMSCorrelationID(message, correlationID);
}
@Override
@@ -253,19 +267,11 @@ public class ServerJMSMessage implements Message {
@Override
public final int getIntProperty(String name) throws JMSException {
- if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) {
- return deliveryCount;
- }
-
return message.getIntProperty(name);
}
@Override
public final long getLongProperty(String name) throws JMSException {
- if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) {
- return deliveryCount;
- }
-
return message.getLongProperty(name);
}
@@ -281,10 +287,6 @@ public class ServerJMSMessage implements Message {
@Override
public final String getStringProperty(String name) throws JMSException {
- if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) {
- return String.valueOf(deliveryCount);
- }
-
return message.getStringProperty(name);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSObjectMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSObjectMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSObjectMessage.java
index 15b04a9..23ffb09 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSObjectMessage.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSObjectMessage.java
@@ -16,11 +16,11 @@
*/
package org.apache.activemq.artemis.protocol.amqp.converter.jms;
-import java.io.Serializable;
-
import javax.jms.JMSException;
import javax.jms.ObjectMessage;
+import java.io.Serializable;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.qpid.proton.amqp.Binary;
@@ -30,8 +30,8 @@ public class ServerJMSObjectMessage extends ServerJMSMessage implements ObjectMe
private Binary payload;
- public ServerJMSObjectMessage(Message message, int deliveryCount) {
- super(message, deliveryCount);
+ public ServerJMSObjectMessage(ICoreMessage message) {
+ super(message);
}
@Override
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSStreamMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSStreamMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSStreamMessage.java
index b092e61..9aaf4c3 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSStreamMessage.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSStreamMessage.java
@@ -21,6 +21,7 @@ import javax.jms.MessageEOFException;
import javax.jms.MessageFormatException;
import javax.jms.StreamMessage;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.Pair;
import org.apache.activemq.artemis.utils.DataConstants;
@@ -43,8 +44,8 @@ public final class ServerJMSStreamMessage extends ServerJMSMessage implements St
private int bodyLength = 0;
- public ServerJMSStreamMessage(Message message, int deliveryCount) {
- super(message, deliveryCount);
+ public ServerJMSStreamMessage(ICoreMessage message) {
+ super(message);
}
// StreamMessage implementation ----------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSTextMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSTextMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSTextMessage.java
index 058a3e9..f770185 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSTextMessage.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSTextMessage.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.protocol.amqp.converter.jms;
import javax.jms.JMSException;
import javax.jms.TextMessage;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
@@ -48,8 +49,8 @@ public class ServerJMSTextMessage extends ServerJMSMessage implements TextMessag
/*
* This constructor is used to construct messages prior to sending
*/
- public ServerJMSTextMessage(Message message, int deliveryCount) {
- super(message, deliveryCount);
+ public ServerJMSTextMessage(ICoreMessage message) {
+ super(message);
}
// TextMessage implementation ------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageSupport.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageSupport.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageSupport.java
index 0a39573..9583051 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageSupport.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageSupport.java
@@ -33,7 +33,6 @@ import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSObjectMe
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSTextMessage;
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPInvalidContentTypeException;
-import org.apache.activemq.artemis.utils.IDGenerator;
import org.apache.qpid.proton.amqp.Binary;
import org.apache.qpid.proton.amqp.Symbol;
import org.apache.qpid.proton.amqp.messaging.Data;
@@ -79,7 +78,6 @@ public final class AMQPMessageSupport {
public static final String JMS_AMQP_HEADER_PRIORITY = JMS_AMQP_PREFIX + HEADER + PRIORITY;
public static final String JMS_AMQP_PROPERTIES = JMS_AMQP_PREFIX + PROPERTIES;
public static final String JMS_AMQP_ORIGINAL_ENCODING = JMS_AMQP_PREFIX + ORIGINAL_ENCODING;
- public static final String JMS_AMQP_MESSAGE_FORMAT = JMS_AMQP_PREFIX + MESSAGE_FORMAT;
public static final String JMS_AMQP_NATIVE = JMS_AMQP_PREFIX + NATIVE;
public static final String JMS_AMQP_FIRST_ACQUIRER = JMS_AMQP_PREFIX + FIRST_ACQUIRER;
public static final String JMS_AMQP_CONTENT_TYPE = JMS_AMQP_PREFIX + CONTENT_TYPE;
@@ -103,6 +101,15 @@ public final class AMQPMessageSupport {
public static final short AMQP_VALUE_MAP = 7;
public static final short AMQP_VALUE_LIST = 8;
+ public static final Symbol JMS_DEST_TYPE_MSG_ANNOTATION = getSymbol("x-opt-jms-dest");
+ public static final Symbol JMS_REPLY_TO_TYPE_MSG_ANNOTATION = getSymbol("x-opt-jms-reply-to");
+
+ public static final byte QUEUE_TYPE = 0x00;
+ public static final byte TOPIC_TYPE = 0x01;
+ public static final byte TEMP_QUEUE_TYPE = 0x02;
+ public static final byte TEMP_TOPIC_TYPE = 0x03;
+
+
/**
* Content type used to mark Data sections as containing a serialized java object.
*/
@@ -179,23 +186,6 @@ public final class AMQPMessageSupport {
}
}
- public static ServerJMSMessage wrapMessage(int messageType, org.apache.activemq.artemis.api.core.Message wrapped, int deliveryCount) {
- switch (messageType) {
- case STREAM_TYPE:
- return new ServerJMSStreamMessage(wrapped, deliveryCount);
- case BYTES_TYPE:
- return new ServerJMSBytesMessage(wrapped, deliveryCount);
- case MAP_TYPE:
- return new ServerJMSMapMessage(wrapped, deliveryCount);
- case TEXT_TYPE:
- return new ServerJMSTextMessage(wrapped, deliveryCount);
- case OBJECT_TYPE:
- return new ServerJMSObjectMessage(wrapped, deliveryCount);
- default:
- return new ServerJMSMessage(wrapped, deliveryCount);
- }
- }
-
public static String toAddress(Destination destination) {
if (destination instanceof ActiveMQDestination) {
return ((ActiveMQDestination) destination).getAddress();
@@ -203,56 +193,56 @@ public final class AMQPMessageSupport {
return null;
}
- public static ServerJMSBytesMessage createBytesMessage(IDGenerator idGenerator) {
- return new ServerJMSBytesMessage(newMessage(idGenerator, BYTES_TYPE), 0);
+ public static ServerJMSBytesMessage createBytesMessage(long id) {
+ return new ServerJMSBytesMessage(newMessage(id, BYTES_TYPE));
}
- public static ServerJMSMessage createBytesMessage(IDGenerator idGenerator, byte[] array, int arrayOffset, int length) throws JMSException {
- ServerJMSBytesMessage message = createBytesMessage(idGenerator);
+ public static ServerJMSBytesMessage createBytesMessage(long id, byte[] array, int arrayOffset, int length) throws JMSException {
+ ServerJMSBytesMessage message = createBytesMessage(id);
message.writeBytes(array, arrayOffset, length);
return message;
}
- public static ServerJMSStreamMessage createStreamMessage(IDGenerator idGenerator) {
- return new ServerJMSStreamMessage(newMessage(idGenerator, STREAM_TYPE), 0);
+ public static ServerJMSStreamMessage createStreamMessage(long id) {
+ return new ServerJMSStreamMessage(newMessage(id, STREAM_TYPE));
}
- public static ServerJMSMessage createMessage(IDGenerator idGenerator) {
- return new ServerJMSMessage(newMessage(idGenerator, DEFAULT_TYPE), 0);
+ public static ServerJMSMessage createMessage(long id) {
+ return new ServerJMSMessage(newMessage(id, DEFAULT_TYPE));
}
- public static ServerJMSTextMessage createTextMessage(IDGenerator idGenerator) {
- return new ServerJMSTextMessage(newMessage(idGenerator, TEXT_TYPE), 0);
+ public static ServerJMSTextMessage createTextMessage(long id) {
+ return new ServerJMSTextMessage(newMessage(id, TEXT_TYPE));
}
- public static ServerJMSTextMessage createTextMessage(IDGenerator idGenerator, String text) throws JMSException {
- ServerJMSTextMessage message = createTextMessage(idGenerator);
+ public static ServerJMSTextMessage createTextMessage(long id, String text) throws JMSException {
+ ServerJMSTextMessage message = createTextMessage(id);
message.setText(text);
return message;
}
- public static ServerJMSObjectMessage createObjectMessage(IDGenerator idGenerator) {
- return new ServerJMSObjectMessage(newMessage(idGenerator, OBJECT_TYPE), 0);
+ public static ServerJMSObjectMessage createObjectMessage(long id) {
+ return new ServerJMSObjectMessage(newMessage(id, OBJECT_TYPE));
}
- public static ServerJMSMessage createObjectMessage(IDGenerator idGenerator, Binary serializedForm) throws JMSException {
- ServerJMSObjectMessage message = createObjectMessage(idGenerator);
+ public static ServerJMSMessage createObjectMessage(long id, Binary serializedForm) throws JMSException {
+ ServerJMSObjectMessage message = createObjectMessage(id);
message.setSerializedForm(serializedForm);
return message;
}
- public static ServerJMSMessage createObjectMessage(IDGenerator idGenerator, byte[] array, int offset, int length) throws JMSException {
- ServerJMSObjectMessage message = createObjectMessage(idGenerator);
+ public static ServerJMSMessage createObjectMessage(long id, byte[] array, int offset, int length) throws JMSException {
+ ServerJMSObjectMessage message = createObjectMessage(id);
message.setSerializedForm(new Binary(array, offset, length));
return message;
}
- public static ServerJMSMapMessage createMapMessage(IDGenerator idGenerator) {
- return new ServerJMSMapMessage(newMessage(idGenerator, MAP_TYPE), 0);
+ public static ServerJMSMapMessage createMapMessage(long id) {
+ return new ServerJMSMapMessage(newMessage(id, MAP_TYPE));
}
- public static ServerJMSMapMessage createMapMessage(IDGenerator idGenerator, Map<String, Object> content) throws JMSException {
- ServerJMSMapMessage message = createMapMessage(idGenerator);
+ public static ServerJMSMapMessage createMapMessage(long id, Map<String, Object> content) throws JMSException {
+ ServerJMSMapMessage message = createMapMessage(id);
final Set<Map.Entry<String, Object>> set = content.entrySet();
for (Map.Entry<String, Object> entry : set) {
Object value = entry.getValue();
@@ -265,8 +255,8 @@ public final class AMQPMessageSupport {
return message;
}
- private static CoreMessage newMessage(IDGenerator idGenerator, byte messageType) {
- CoreMessage message = new CoreMessage(idGenerator.generateID(), 512);
+ private static CoreMessage newMessage(long id, byte messageType) {
+ CoreMessage message = new CoreMessage(id, 512);
message.setType(messageType);
((ResetLimitWrappedActiveMQBuffer) message.getBodyBuffer()).setMessage(null);
return message;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageTypes.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageTypes.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageTypes.java
deleted file mode 100644
index 70c755a..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPMessageTypes.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter.message;
-
-@Deprecated
-public class AMQPMessageTypes {
-
- // TODO - Remove in future release as these are no longer used by the
- // inbound JMS Transformer.
-
- public static final String AMQP_TYPE_KEY = "amqp:type";
-
- public static final String AMQP_SEQUENCE = "amqp:sequence";
-
- public static final String AMQP_LIST = "amqp:list";
-}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPNativeOutboundTransformer.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPNativeOutboundTransformer.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPNativeOutboundTransformer.java
deleted file mode 100644
index 8e89bb3..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/AMQPNativeOutboundTransformer.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter.message;
-
-import java.io.UnsupportedEncodingException;
-
-import javax.jms.JMSException;
-
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSBytesMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.qpid.proton.amqp.UnsignedInteger;
-import org.apache.qpid.proton.amqp.messaging.Header;
-import org.apache.qpid.proton.codec.WritableBuffer;
-import org.apache.qpid.proton.message.ProtonJMessage;
-
-public class AMQPNativeOutboundTransformer extends OutboundTransformer {
-
- public AMQPNativeOutboundTransformer(IDGenerator idGenerator) {
- super(idGenerator);
- }
-
- @Override
- public long transform(ServerJMSMessage message, WritableBuffer buffer) throws JMSException, UnsupportedEncodingException {
- if (message == null || !(message instanceof ServerJMSBytesMessage)) {
- return 0;
- }
-
- return transform(this, (ServerJMSBytesMessage) message, buffer);
- }
-
- public static long transform(OutboundTransformer options, ServerJMSBytesMessage message, WritableBuffer buffer) throws JMSException {
- byte[] data = new byte[(int) message.getBodyLength()];
- message.readBytes(data);
- message.reset();
-
- // The AMQP delivery-count field only includes prior failed delivery attempts,
- int amqpDeliveryCount = message.getDeliveryCount() - 1;
- if (amqpDeliveryCount >= 1) {
-
- // decode...
- ProtonJMessage amqp = (ProtonJMessage) org.apache.qpid.proton.message.Message.Factory.create();
- int offset = 0;
- int len = data.length;
- while (len > 0) {
- final int decoded = amqp.decode(data, offset, len);
- assert decoded > 0 : "Make progress decoding the message";
- offset += decoded;
- len -= decoded;
- }
-
- // Update the DeliveryCount header which might require adding a Header
- if (amqp.getHeader() == null && amqpDeliveryCount > 0) {
- amqp.setHeader(new Header());
- }
-
- amqp.getHeader().setDeliveryCount(new UnsignedInteger(amqpDeliveryCount));
-
- amqp.encode(buffer);
- } else {
- buffer.put(data, 0, data.length);
- }
-
- return 0;
- }
-}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/EncodedMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/EncodedMessage.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/EncodedMessage.java
deleted file mode 100644
index 22042da..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/EncodedMessage.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter.message;
-
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.message.Message;
-
-public class EncodedMessage {
-
- private final Binary data;
- final long messageFormat;
-
- public EncodedMessage(long messageFormat, byte[] data, int offset, int length) {
- this.data = new Binary(data, offset, length);
- this.messageFormat = messageFormat;
- }
-
- public long getMessageFormat() {
- return messageFormat;
- }
-
- public Message decode() throws Exception {
- Message amqp = Message.Factory.create();
-
- int offset = getArrayOffset();
- int len = getLength();
- while (len > 0) {
- final int decoded = amqp.decode(getArray(), offset, len);
- assert decoded > 0 : "Make progress decoding the message";
- offset += decoded;
- len -= decoded;
- }
-
- return amqp;
- }
-
- public int getLength() {
- return data.getLength();
- }
-
- public int getArrayOffset() {
- return data.getArrayOffset();
- }
-
- public byte[] getArray() {
- return data.getArray();
- }
-
- @Override
- public String toString() {
- return data.toString();
- }
-}
[3/5] activemq-artemis git commit: Fixing converters part I
Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/InboundTransformer.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/InboundTransformer.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/InboundTransformer.java
deleted file mode 100644
index 1e83959..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/InboundTransformer.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter.message;
-
-import static org.apache.activemq.artemis.api.core.Message.HDR_SCHEDULED_DELIVERY_TIME;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_ENCODING;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_TYPE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FIRST_ACQUIRER;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FOOTER_PREFIX;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_DURABLE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_PRIORITY;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_MESSAGE_ANNOTATION_PREFIX;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_REPLYTO_GROUP_ID;
-
-import java.nio.charset.StandardCharsets;
-import java.util.Map;
-import java.util.Set;
-
-import javax.jms.DeliveryMode;
-import javax.jms.JMSException;
-import javax.jms.Message;
-
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerDestination;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
-import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.amqp.Decimal128;
-import org.apache.qpid.proton.amqp.Decimal32;
-import org.apache.qpid.proton.amqp.Decimal64;
-import org.apache.qpid.proton.amqp.Symbol;
-import org.apache.qpid.proton.amqp.UnsignedByte;
-import org.apache.qpid.proton.amqp.UnsignedInteger;
-import org.apache.qpid.proton.amqp.UnsignedLong;
-import org.apache.qpid.proton.amqp.UnsignedShort;
-import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
-import org.apache.qpid.proton.amqp.messaging.Footer;
-import org.apache.qpid.proton.amqp.messaging.Header;
-import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
-import org.apache.qpid.proton.amqp.messaging.Properties;
-
-public abstract class InboundTransformer {
-
- protected IDGenerator idGenerator;
-
- public static final String TRANSFORMER_JMS = "jms";
-
- public InboundTransformer(IDGenerator idGenerator) {
- this.idGenerator = idGenerator;
- }
-
- public abstract ServerJMSMessage transform(AMQPMessage amqpMessage) throws Exception;
-
- public abstract String getTransformerName();
-
- @SuppressWarnings("unchecked")
- protected ServerJMSMessage populateMessage(ServerJMSMessage jms, org.apache.qpid.proton.message.Message amqp) throws Exception {
- Header header = amqp.getHeader();
- if (header != null) {
- jms.setBooleanProperty(JMS_AMQP_HEADER, true);
-
- if (header.getDurable() != null) {
- jms.setBooleanProperty(JMS_AMQP_HEADER_DURABLE, true);
- jms.setJMSDeliveryMode(header.getDurable().booleanValue() ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT);
- } else {
- jms.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
- }
-
- if (header.getPriority() != null) {
- jms.setBooleanProperty(JMS_AMQP_HEADER_PRIORITY, true);
- jms.setJMSPriority(header.getPriority().intValue());
- } else {
- jms.setJMSPriority(Message.DEFAULT_PRIORITY);
- }
-
- if (header.getFirstAcquirer() != null) {
- jms.setBooleanProperty(JMS_AMQP_FIRST_ACQUIRER, header.getFirstAcquirer());
- }
-
- if (header.getDeliveryCount() != null) {
- // AMQP Delivery Count counts only failed delivers where JMS
- // Delivery Count should include the original delivery in the count.
- jms.setLongProperty("JMSXDeliveryCount", header.getDeliveryCount().longValue() + 1);
- }
- } else {
- jms.setJMSPriority((byte) Message.DEFAULT_PRIORITY);
- jms.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
- }
-
- final MessageAnnotations ma = amqp.getMessageAnnotations();
- if (ma != null) {
- for (Map.Entry<?, ?> entry : ma.getValue().entrySet()) {
- String key = entry.getKey().toString();
- if ("x-opt-delivery-time".equals(key) && entry.getValue() != null) {
- long deliveryTime = ((Number) entry.getValue()).longValue();
- jms.setLongProperty(HDR_SCHEDULED_DELIVERY_TIME.toString(), deliveryTime);
- } else if ("x-opt-delivery-delay".equals(key) && entry.getValue() != null) {
- long delay = ((Number) entry.getValue()).longValue();
- if (delay > 0) {
- jms.setLongProperty(HDR_SCHEDULED_DELIVERY_TIME.toString(), System.currentTimeMillis() + delay);
- }
- }
-
- setProperty(jms, JMS_AMQP_MESSAGE_ANNOTATION_PREFIX + key, entry.getValue());
- }
- }
-
- final ApplicationProperties ap = amqp.getApplicationProperties();
- if (ap != null) {
- for (Map.Entry<Object, Object> entry : (Set<Map.Entry<Object, Object>>) ap.getValue().entrySet()) {
- setProperty(jms, entry.getKey().toString(), entry.getValue());
- }
- }
-
- final Properties properties = amqp.getProperties();
- if (properties != null) {
- if (properties.getMessageId() != null) {
- jms.setJMSMessageID(AMQPMessageIdHelper.INSTANCE.toBaseMessageIdString(properties.getMessageId()));
- }
- Binary userId = properties.getUserId();
- if (userId != null) {
- // TODO - Better Way to set this?
- jms.setStringProperty("JMSXUserID", new String(userId.getArray(), userId.getArrayOffset(), userId.getLength(), StandardCharsets.UTF_8));
- }
- if (properties.getTo() != null) {
- jms.setJMSDestination(new ServerDestination(properties.getTo()));
- }
- if (properties.getSubject() != null) {
- jms.setJMSType(properties.getSubject());
- }
- if (properties.getReplyTo() != null) {
- jms.setJMSReplyTo(new ServerDestination(properties.getReplyTo()));
- }
- if (properties.getCorrelationId() != null) {
- jms.setJMSCorrelationID(AMQPMessageIdHelper.INSTANCE.toBaseMessageIdString(properties.getCorrelationId()));
- }
- if (properties.getContentType() != null) {
- jms.setStringProperty(JMS_AMQP_CONTENT_TYPE, properties.getContentType().toString());
- }
- if (properties.getContentEncoding() != null) {
- jms.setStringProperty(JMS_AMQP_CONTENT_ENCODING, properties.getContentEncoding().toString());
- }
- if (properties.getCreationTime() != null) {
- jms.setJMSTimestamp(properties.getCreationTime().getTime());
- }
- if (properties.getGroupId() != null) {
- jms.setStringProperty("_AMQ_GROUP_ID", properties.getGroupId());
- }
- if (properties.getGroupSequence() != null) {
- jms.setIntProperty("JMSXGroupSeq", properties.getGroupSequence().intValue());
- }
- if (properties.getReplyToGroupId() != null) {
- jms.setStringProperty(JMS_AMQP_REPLYTO_GROUP_ID, properties.getReplyToGroupId());
- }
- if (properties.getAbsoluteExpiryTime() != null) {
- jms.setJMSExpiration(properties.getAbsoluteExpiryTime().getTime());
- }
- }
-
- // If the jms expiration has not yet been set...
- if (header != null && jms.getJMSExpiration() == 0) {
- // Then lets try to set it based on the message ttl.
- long ttl = Message.DEFAULT_TIME_TO_LIVE;
- if (header.getTtl() != null) {
- ttl = header.getTtl().longValue();
- }
-
- if (ttl == 0) {
- jms.setJMSExpiration(0);
- } else {
- jms.setJMSExpiration(System.currentTimeMillis() + ttl);
- }
- }
-
- final Footer fp = amqp.getFooter();
- if (fp != null) {
- for (Map.Entry<Object, Object> entry : (Set<Map.Entry<Object, Object>>) fp.getValue().entrySet()) {
- String key = entry.getKey().toString();
- setProperty(jms, JMS_AMQP_FOOTER_PREFIX + key, entry.getValue());
- }
- }
-
- return jms;
- }
-
- private void setProperty(Message msg, String key, Object value) throws JMSException {
- if (value instanceof UnsignedLong) {
- long v = ((UnsignedLong) value).longValue();
- msg.setLongProperty(key, v);
- } else if (value instanceof UnsignedInteger) {
- long v = ((UnsignedInteger) value).longValue();
- if (Integer.MIN_VALUE <= v && v <= Integer.MAX_VALUE) {
- msg.setIntProperty(key, (int) v);
- } else {
- msg.setLongProperty(key, v);
- }
- } else if (value instanceof UnsignedShort) {
- int v = ((UnsignedShort) value).intValue();
- if (Short.MIN_VALUE <= v && v <= Short.MAX_VALUE) {
- msg.setShortProperty(key, (short) v);
- } else {
- msg.setIntProperty(key, v);
- }
- } else if (value instanceof UnsignedByte) {
- short v = ((UnsignedByte) value).shortValue();
- if (Byte.MIN_VALUE <= v && v <= Byte.MAX_VALUE) {
- msg.setByteProperty(key, (byte) v);
- } else {
- msg.setShortProperty(key, v);
- }
- } else if (value instanceof Symbol) {
- msg.setStringProperty(key, value.toString());
- } else if (value instanceof Decimal128) {
- msg.setDoubleProperty(key, ((Decimal128) value).doubleValue());
- } else if (value instanceof Decimal64) {
- msg.setDoubleProperty(key, ((Decimal64) value).doubleValue());
- } else if (value instanceof Decimal32) {
- msg.setFloatProperty(key, ((Decimal32) value).floatValue());
- } else if (value instanceof Binary) {
- msg.setStringProperty(key, value.toString());
- } else {
- msg.setObjectProperty(key, value);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformer.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformer.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformer.java
deleted file mode 100644
index 4c7426e..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformer.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter.message;
-
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_DATA;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_NULL;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_SEQUENCE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_BINARY;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_LIST;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_MAP;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_NULL;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_STRING;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_MESSAGE_FORMAT;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_ORIGINAL_ENCODING;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.OCTET_STREAM_CONTENT_TYPE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createBytesMessage;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createMapMessage;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createMessage;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createObjectMessage;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createStreamMessage;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.createTextMessage;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.getCharsetForTextualContent;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.isContentType;
-
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
-import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPInternalErrorException;
-import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
-import org.apache.qpid.proton.amqp.messaging.AmqpValue;
-import org.apache.qpid.proton.amqp.messaging.Data;
-import org.apache.qpid.proton.amqp.messaging.Section;
-import org.apache.qpid.proton.message.Message;
-
-public class JMSMappingInboundTransformer extends InboundTransformer {
-
- public JMSMappingInboundTransformer(IDGenerator idGenerator) {
- super(idGenerator);
- }
-
- @Override
- public String getTransformerName() {
- return TRANSFORMER_JMS;
- }
-
-
- public ServerJMSMessage transform(EncodedMessage message) throws Exception {
- AMQPMessage messageEncode = new AMQPMessage(message.getMessageFormat(), message.getArray(), null);
- return transform(messageEncode);
- }
-
- @Override
- public ServerJMSMessage transform(AMQPMessage amqpMessage) throws Exception {
- ServerJMSMessage transformedMessage = createServerMessage(amqpMessage.getProtonMessage());
- populateMessage(transformedMessage, amqpMessage.getProtonMessage());
-
- // Regardless of the transformer that finally decoded the message we need to ensure that
- // the AMQP Message Format value is preserved for application on retransmit.
- if (transformedMessage != null && amqpMessage.getMessageFormat() != 0) {
- transformedMessage.setLongProperty(JMS_AMQP_MESSAGE_FORMAT, amqpMessage.getMessageFormat());
- }
-
- return transformedMessage;
- }
-
- @SuppressWarnings("unchecked")
- private ServerJMSMessage createServerMessage(Message message) throws Exception {
-
- Section body = message.getBody();
- ServerJMSMessage result;
-
- if (body == null) {
- if (isContentType(SERIALIZED_JAVA_OBJECT_CONTENT_TYPE, message)) {
- result = createObjectMessage(idGenerator);
- } else if (isContentType(OCTET_STREAM_CONTENT_TYPE, message) || isContentType(null, message)) {
- result = createBytesMessage(idGenerator);
- } else {
- Charset charset = getCharsetForTextualContent(message.getContentType());
- if (charset != null) {
- result = createTextMessage(idGenerator);
- } else {
- result = createMessage(idGenerator);
- }
- }
-
- result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_NULL);
- } else if (body instanceof Data) {
- Binary payload = ((Data) body).getValue();
-
- if (isContentType(SERIALIZED_JAVA_OBJECT_CONTENT_TYPE, message)) {
- result = createObjectMessage(idGenerator, payload.getArray(), payload.getArrayOffset(), payload.getLength());
- } else if (isContentType(OCTET_STREAM_CONTENT_TYPE, message)) {
- result = createBytesMessage(idGenerator, payload.getArray(), payload.getArrayOffset(), payload.getLength());
- } else {
- Charset charset = getCharsetForTextualContent(message.getContentType());
- if (StandardCharsets.UTF_8.equals(charset)) {
- ByteBuffer buf = ByteBuffer.wrap(payload.getArray(), payload.getArrayOffset(), payload.getLength());
-
- try {
- CharBuffer chars = charset.newDecoder().decode(buf);
- result = createTextMessage(idGenerator, String.valueOf(chars));
- } catch (CharacterCodingException e) {
- result = createBytesMessage(idGenerator, payload.getArray(), payload.getArrayOffset(), payload.getLength());
- }
- } else {
- result = createBytesMessage(idGenerator, payload.getArray(), payload.getArrayOffset(), payload.getLength());
- }
- }
-
- result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_DATA);
- } else if (body instanceof AmqpSequence) {
- AmqpSequence sequence = (AmqpSequence) body;
- ServerJMSStreamMessage m = createStreamMessage(idGenerator);
- for (Object item : sequence.getValue()) {
- m.writeObject(item);
- }
-
- result = m;
- result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_SEQUENCE);
- } else if (body instanceof AmqpValue) {
- Object value = ((AmqpValue) body).getValue();
- if (value == null || value instanceof String) {
- result = createTextMessage(idGenerator, (String) value);
-
- result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, value == null ? AMQP_VALUE_NULL : AMQP_VALUE_STRING);
- } else if (value instanceof Binary) {
- Binary payload = (Binary) value;
-
- if (isContentType(SERIALIZED_JAVA_OBJECT_CONTENT_TYPE, message)) {
- result = createObjectMessage(idGenerator, payload);
- } else {
- result = createBytesMessage(idGenerator, payload.getArray(), payload.getArrayOffset(), payload.getLength());
- }
-
- result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_BINARY);
- } else if (value instanceof List) {
- ServerJMSStreamMessage m = createStreamMessage(idGenerator);
- for (Object item : (List<Object>) value) {
- m.writeObject(item);
- }
- result = m;
- result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_LIST);
- } else if (value instanceof Map) {
- result = createMapMessage(idGenerator, (Map<String, Object>) value);
- result.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_MAP);
- } else {
- // Trigger fall-back to native encoder which generates BytesMessage with the
- // original message stored in the message body.
- throw new ActiveMQAMQPInternalErrorException("Unable to encode to ActiveMQ JMS Message");
- }
- } else {
- throw new RuntimeException("Unexpected body type: " + body.getClass());
- }
-
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformer.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformer.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformer.java
deleted file mode 100644
index 23bcaf1..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformer.java
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter.message;
-
-import static org.apache.activemq.artemis.api.core.FilterConstants.NATIVE_MESSAGE_ID;
-import static org.apache.activemq.artemis.api.core.Message.HDR_SCHEDULED_DELIVERY_TIME;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_DATA;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_NULL;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_SEQUENCE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_UNKNOWN;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_BINARY;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_LIST;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.AMQP_VALUE_STRING;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.EMPTY_BINARY;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_ENCODING;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_CONTENT_TYPE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_DELIVERY_ANNOTATION_PREFIX;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FIRST_ACQUIRER;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_FOOTER_PREFIX;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_DURABLE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_HEADER_PRIORITY;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_MESSAGE_ANNOTATION_PREFIX;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_MESSAGE_FORMAT;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_NATIVE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_ORIGINAL_ENCODING;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_PREFIX;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_PROPERTIES;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.JMS_AMQP_REPLYTO_GROUP_ID;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.toAddress;
-
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageEOFException;
-import javax.jms.Queue;
-import javax.jms.TemporaryQueue;
-import javax.jms.TemporaryTopic;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSBytesMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMapMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSObjectMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSTextMessage;
-import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPIllegalStateException;
-import org.apache.activemq.artemis.protocol.amqp.util.TLSEncode;
-import org.apache.activemq.artemis.reader.MessageUtil;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.amqp.Symbol;
-import org.apache.qpid.proton.amqp.UnsignedByte;
-import org.apache.qpid.proton.amqp.UnsignedInteger;
-import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
-import org.apache.qpid.proton.amqp.messaging.AmqpValue;
-import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
-import org.apache.qpid.proton.amqp.messaging.Data;
-import org.apache.qpid.proton.amqp.messaging.DeliveryAnnotations;
-import org.apache.qpid.proton.amqp.messaging.Footer;
-import org.apache.qpid.proton.amqp.messaging.Header;
-import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
-import org.apache.qpid.proton.amqp.messaging.Properties;
-import org.apache.qpid.proton.amqp.messaging.Section;
-import org.apache.qpid.proton.codec.EncoderImpl;
-import org.apache.qpid.proton.codec.WritableBuffer;
-import org.jboss.logging.Logger;
-
-public class JMSMappingOutboundTransformer extends OutboundTransformer {
-
- private static final Logger logger = Logger.getLogger(JMSMappingOutboundTransformer.class);
-
- public static final Symbol JMS_DEST_TYPE_MSG_ANNOTATION = Symbol.valueOf("x-opt-jms-dest");
- public static final Symbol JMS_REPLY_TO_TYPE_MSG_ANNOTATION = Symbol.valueOf("x-opt-jms-reply-to");
-
- public static final byte QUEUE_TYPE = 0x00;
- public static final byte TOPIC_TYPE = 0x01;
- public static final byte TEMP_QUEUE_TYPE = 0x02;
- public static final byte TEMP_TOPIC_TYPE = 0x03;
-
- public JMSMappingOutboundTransformer(IDGenerator idGenerator) {
- super(idGenerator);
- }
-
- @Override
- public long transform(ServerJMSMessage message, WritableBuffer buffer) throws JMSException, UnsupportedEncodingException {
- if (message == null) {
- return 0;
- }
-
- long messageFormat = 0;
- Header header = null;
- Properties properties = null;
- Map<Symbol, Object> daMap = null;
- Map<Symbol, Object> maMap = null;
- Map<String, Object> apMap = null;
- Map<Object, Object> footerMap = null;
-
- Section body = convertBody(message);
-
- if (message.getInnerMessage().isDurable()) {
- if (header == null) {
- header = new Header();
- }
- header.setDurable(true);
- }
- byte priority = (byte) message.getJMSPriority();
- if (priority != Message.DEFAULT_PRIORITY) {
- if (header == null) {
- header = new Header();
- }
- header.setPriority(UnsignedByte.valueOf(priority));
- }
- String type = message.getJMSType();
- if (type != null) {
- if (properties == null) {
- properties = new Properties();
- }
- properties.setSubject(type);
- }
- String messageId = message.getJMSMessageID();
- if (messageId != null) {
- if (properties == null) {
- properties = new Properties();
- }
- try {
- properties.setMessageId(AMQPMessageIdHelper.INSTANCE.toIdObject(messageId));
- } catch (ActiveMQAMQPIllegalStateException e) {
- properties.setMessageId(messageId);
- }
- }
- Destination destination = message.getJMSDestination();
- if (destination != null) {
- if (properties == null) {
- properties = new Properties();
- }
- properties.setTo(toAddress(destination));
- if (maMap == null) {
- maMap = new HashMap<>();
- }
- maMap.put(JMS_DEST_TYPE_MSG_ANNOTATION, destinationType(destination));
- }
- Destination replyTo = message.getJMSReplyTo();
- if (replyTo != null) {
- if (properties == null) {
- properties = new Properties();
- }
- properties.setReplyTo(toAddress(replyTo));
- if (maMap == null) {
- maMap = new HashMap<>();
- }
- maMap.put(JMS_REPLY_TO_TYPE_MSG_ANNOTATION, destinationType(replyTo));
- }
- String correlationId = message.getJMSCorrelationID();
- if (correlationId != null) {
- if (properties == null) {
- properties = new Properties();
- }
- try {
- properties.setCorrelationId(AMQPMessageIdHelper.INSTANCE.toIdObject(correlationId));
- } catch (ActiveMQAMQPIllegalStateException e) {
- properties.setCorrelationId(correlationId);
- }
- }
- long expiration = message.getJMSExpiration();
- if (expiration != 0) {
- long ttl = expiration - System.currentTimeMillis();
- if (ttl < 0) {
- ttl = 1;
- }
-
- if (header == null) {
- header = new Header();
- }
- header.setTtl(new UnsignedInteger((int) ttl));
-
- if (properties == null) {
- properties = new Properties();
- }
- properties.setAbsoluteExpiryTime(new Date(expiration));
- }
- long timeStamp = message.getJMSTimestamp();
- if (timeStamp != 0) {
- if (properties == null) {
- properties = new Properties();
- }
- properties.setCreationTime(new Date(timeStamp));
- }
-
- final Set<String> keySet = MessageUtil.getPropertyNames(message.getInnerMessage());
- for (String key : keySet) {
- if (key.startsWith("JMSX")) {
- if (key.equals("JMSXDeliveryCount")) {
- // The AMQP delivery-count field only includes prior failed delivery attempts,
- // whereas JMSXDeliveryCount includes the first/current delivery attempt.
- int amqpDeliveryCount = message.getDeliveryCount() - 1;
- if (amqpDeliveryCount > 0) {
- if (header == null) {
- header = new Header();
- }
- header.setDeliveryCount(new UnsignedInteger(amqpDeliveryCount));
- }
- continue;
- } else if (key.equals("JMSXUserID")) {
- String value = message.getStringProperty(key);
- if (properties == null) {
- properties = new Properties();
- }
- properties.setUserId(new Binary(value.getBytes(StandardCharsets.UTF_8)));
- continue;
- } else if (key.equals("JMSXGroupID")) {
- String value = message.getStringProperty(key);
- if (properties == null) {
- properties = new Properties();
- }
- properties.setGroupId(value);
- continue;
- } else if (key.equals("JMSXGroupSeq")) {
- UnsignedInteger value = new UnsignedInteger(message.getIntProperty(key));
- if (properties == null) {
- properties = new Properties();
- }
- properties.setGroupSequence(value);
- continue;
- }
- } else if (key.startsWith(JMS_AMQP_PREFIX)) {
- // AMQP Message Information stored from a conversion to the Core Message
- if (key.equals(JMS_AMQP_MESSAGE_FORMAT)) {
- messageFormat = message.getLongProperty(JMS_AMQP_MESSAGE_FORMAT);
- continue;
- } else if (key.equals(JMS_AMQP_NATIVE)) {
- // skip..internal use only
- continue;
- } else if (key.equals(JMS_AMQP_ORIGINAL_ENCODING)) {
- // skip..internal use only
- continue;
- } else if (key.equals(JMS_AMQP_FIRST_ACQUIRER)) {
- if (header == null) {
- header = new Header();
- }
- header.setFirstAcquirer(message.getBooleanProperty(key));
- continue;
- } else if (key.equals(JMS_AMQP_HEADER)) {
- if (header == null) {
- header = new Header();
- }
- continue;
- } else if (key.equals(JMS_AMQP_HEADER_DURABLE)) {
- if (header == null) {
- header = new Header();
- }
- header.setDurable(message.getInnerMessage().isDurable());
- continue;
- } else if (key.equals(JMS_AMQP_HEADER_PRIORITY)) {
- if (header == null) {
- header = new Header();
- }
- header.setPriority(UnsignedByte.valueOf(priority));
- continue;
- } else if (key.startsWith(JMS_AMQP_PROPERTIES)) {
- if (properties == null) {
- properties = new Properties();
- }
- continue;
- } else if (key.startsWith(JMS_AMQP_DELIVERY_ANNOTATION_PREFIX)) {
- if (daMap == null) {
- daMap = new HashMap<>();
- }
- String name = key.substring(JMS_AMQP_DELIVERY_ANNOTATION_PREFIX.length());
- daMap.put(Symbol.valueOf(name), message.getObjectProperty(key));
- continue;
- } else if (key.startsWith(JMS_AMQP_MESSAGE_ANNOTATION_PREFIX)) {
- if (maMap == null) {
- maMap = new HashMap<>();
- }
- String name = key.substring(JMS_AMQP_MESSAGE_ANNOTATION_PREFIX.length());
- maMap.put(Symbol.valueOf(name), message.getObjectProperty(key));
- continue;
- } else if (key.equals(JMS_AMQP_CONTENT_TYPE)) {
- if (properties == null) {
- properties = new Properties();
- }
- properties.setContentType(Symbol.getSymbol(message.getStringProperty(key)));
- continue;
- } else if (key.equals(JMS_AMQP_CONTENT_ENCODING)) {
- if (properties == null) {
- properties = new Properties();
- }
- properties.setContentEncoding(Symbol.getSymbol(message.getStringProperty(key)));
- continue;
- } else if (key.equals(JMS_AMQP_REPLYTO_GROUP_ID)) {
- if (properties == null) {
- properties = new Properties();
- }
- properties.setReplyToGroupId(message.getStringProperty(key));
- continue;
- } else if (key.startsWith(JMS_AMQP_FOOTER_PREFIX)) {
- if (footerMap == null) {
- footerMap = new HashMap<>();
- }
- String name = key.substring(JMS_AMQP_FOOTER_PREFIX.length());
- footerMap.put(name, message.getObjectProperty(key));
- continue;
- }
- } else if (key.equals("_AMQ_GROUP_ID")) {
- String value = message.getStringProperty(key);
- if (properties == null) {
- properties = new Properties();
- }
- properties.setGroupId(value);
- continue;
- } else if (key.equals(NATIVE_MESSAGE_ID)) {
- // skip..internal use only
- continue;
- } else if (key.endsWith(HDR_SCHEDULED_DELIVERY_TIME.toString())) {
- // skip..remove annotation from previous inbound transformation
- continue;
- } else if (key.equals(AMQPMessageTypes.AMQP_TYPE_KEY)) {
- // skip..internal use only - TODO - Remove this deprecated value in future release.
- continue;
- }
-
- if (apMap == null) {
- apMap = new HashMap<>();
- }
-
- Object objectProperty = message.getObjectProperty(key);
- if (objectProperty instanceof byte[]) {
- objectProperty = new Binary((byte[]) objectProperty);
- }
-
- apMap.put(key, objectProperty);
- }
-
- EncoderImpl encoder = TLSEncode.getEncoder();
- encoder.setByteBuffer(buffer);
-
- if (header != null) {
- encoder.writeObject(header);
- }
- if (daMap != null) {
- encoder.writeObject(new DeliveryAnnotations(daMap));
- }
- if (maMap != null) {
- encoder.writeObject(new MessageAnnotations(maMap));
- }
- if (properties != null) {
- encoder.writeObject(properties);
- }
- if (apMap != null) {
- encoder.writeObject(new ApplicationProperties(apMap));
- }
- if (body != null) {
- encoder.writeObject(body);
- }
- if (footerMap != null) {
- encoder.writeObject(new Footer(footerMap));
- }
-
- return messageFormat;
- }
-
- private Section convertBody(ServerJMSMessage message) throws JMSException {
-
- Section body = null;
- short orignalEncoding = AMQP_UNKNOWN;
-
- try {
- orignalEncoding = message.getShortProperty(JMS_AMQP_ORIGINAL_ENCODING);
- } catch (Exception ex) {
- // Ignore and stick with UNKNOWN
- }
-
- if (message instanceof ServerJMSBytesMessage) {
- Binary payload = getBinaryFromMessageBody((ServerJMSBytesMessage) message);
-
- if (payload == null) {
- payload = EMPTY_BINARY;
- }
-
- switch (orignalEncoding) {
- case AMQP_NULL:
- break;
- case AMQP_VALUE_BINARY:
- body = new AmqpValue(payload);
- break;
- case AMQP_DATA:
- case AMQP_UNKNOWN:
- default:
- body = new Data(payload);
- break;
- }
- } else if (message instanceof ServerJMSTextMessage) {
- switch (orignalEncoding) {
- case AMQP_NULL:
- break;
- case AMQP_DATA:
- body = new Data(getBinaryFromMessageBody((ServerJMSTextMessage) message));
- break;
- case AMQP_VALUE_STRING:
- case AMQP_UNKNOWN:
- default:
- body = new AmqpValue(((TextMessage) message).getText());
- break;
- }
- } else if (message instanceof ServerJMSMapMessage) {
- body = new AmqpValue(getMapFromMessageBody((ServerJMSMapMessage) message));
- } else if (message instanceof ServerJMSStreamMessage) {
- ArrayList<Object> list = new ArrayList<>();
- final ServerJMSStreamMessage m = (ServerJMSStreamMessage) message;
- try {
- while (true) {
- list.add(m.readObject());
- }
- } catch (MessageEOFException e) {
- }
-
- // Deprecated encoding markers - TODO - Remove on future release
- if (orignalEncoding == AMQP_UNKNOWN) {
- String amqpType = message.getStringProperty(AMQPMessageTypes.AMQP_TYPE_KEY);
- if (amqpType != null) {
- if (amqpType.equals(AMQPMessageTypes.AMQP_LIST)) {
- orignalEncoding = AMQP_VALUE_LIST;
- } else {
- orignalEncoding = AMQP_SEQUENCE;
- }
- }
- }
-
- switch (orignalEncoding) {
- case AMQP_SEQUENCE:
- body = new AmqpSequence(list);
- break;
- case AMQP_VALUE_LIST:
- case AMQP_UNKNOWN:
- default:
- body = new AmqpValue(list);
- break;
- }
- } else if (message instanceof ServerJMSObjectMessage) {
- Binary payload = getBinaryFromMessageBody((ServerJMSObjectMessage) message);
-
- if (payload == null) {
- payload = EMPTY_BINARY;
- }
-
- switch (orignalEncoding) {
- case AMQP_VALUE_BINARY:
- body = new AmqpValue(payload);
- break;
- case AMQP_DATA:
- case AMQP_UNKNOWN:
- default:
- body = new Data(payload);
- break;
- }
-
- // For a non-AMQP message we tag the outbound content type as containing
- // a serialized Java object so that an AMQP client has a hint as to what
- // we are sending it.
- if (!message.propertyExists(JMS_AMQP_CONTENT_TYPE)) {
- message.setStringProperty(JMS_AMQP_CONTENT_TYPE, SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
- }
- } else if (message instanceof ServerJMSMessage) {
- // If this is not an AMQP message that was converted then the original encoding
- // will be unknown so we check for special cases of messages with special data
- // encoded into the server message body.
- if (orignalEncoding == AMQP_UNKNOWN) {
- org.apache.activemq.artemis.api.core.Message internalMessage = message.getInnerMessage();
- int readerIndex = internalMessage.getBodyBuffer().readerIndex();
- try {
- Object s = internalMessage.getBodyBuffer().readNullableSimpleString();
- if (s != null) {
- body = new AmqpValue(s.toString());
- }
- } catch (Throwable ignored) {
- logger.debug("Exception ignored during conversion, should be ok!", ignored.getMessage(), ignored);
- } finally {
- internalMessage.getBodyBuffer().readerIndex(readerIndex);
- }
- }
- }
-
- return body;
- }
-
- private Binary getBinaryFromMessageBody(ServerJMSBytesMessage message) throws JMSException {
- byte[] data = new byte[(int) message.getBodyLength()];
- message.readBytes(data);
- message.reset(); // Need to reset after readBytes or future readBytes
-
- return new Binary(data);
- }
-
- private Binary getBinaryFromMessageBody(ServerJMSTextMessage message) throws JMSException {
- Binary result = null;
- String text = message.getText();
- if (text != null) {
- result = new Binary(text.getBytes(StandardCharsets.UTF_8));
- }
-
- return result;
- }
-
- private Binary getBinaryFromMessageBody(ServerJMSObjectMessage message) throws JMSException {
- message.getInnerMessage().getBodyBuffer().resetReaderIndex();
- int size = message.getInnerMessage().getBodyBuffer().readInt();
- byte[] bytes = new byte[size];
- message.getInnerMessage().getBodyBuffer().readBytes(bytes);
-
- return new Binary(bytes);
- }
-
- private Map<String, Object> getMapFromMessageBody(ServerJMSMapMessage message) throws JMSException {
- final HashMap<String, Object> map = new LinkedHashMap<>();
-
- @SuppressWarnings("unchecked")
- final Enumeration<String> names = message.getMapNames();
- while (names.hasMoreElements()) {
- String key = names.nextElement();
- Object value = message.getObject(key);
- if (value instanceof byte[]) {
- value = new Binary((byte[]) value);
- }
- map.put(key, value);
- }
-
- return map;
- }
-
- private static byte destinationType(Destination destination) {
- if (destination instanceof Queue) {
- if (destination instanceof TemporaryQueue) {
- return TEMP_QUEUE_TYPE;
- } else {
- return QUEUE_TYPE;
- }
- } else if (destination instanceof Topic) {
- if (destination instanceof TemporaryTopic) {
- return TEMP_TOPIC_TYPE;
- } else {
- return TOPIC_TYPE;
- }
- }
-
- throw new IllegalArgumentException("Unknown Destination Type passed to JMS Transformer.");
- }
-}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/OutboundTransformer.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/OutboundTransformer.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/OutboundTransformer.java
deleted file mode 100644
index 5113513..0000000
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/message/OutboundTransformer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.protocol.amqp.converter.message;
-
-import java.io.UnsupportedEncodingException;
-
-import javax.jms.JMSException;
-
-import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.qpid.proton.codec.WritableBuffer;
-
-public abstract class OutboundTransformer {
-
- protected IDGenerator idGenerator;
-
- public OutboundTransformer(IDGenerator idGenerator) {
- this.idGenerator = idGenerator;
- }
-
- /**
- * Given an JMS Message perform a conversion to an AMQP Message and encode into a form that
- * is ready for transmission.
- *
- * @param message
- * the message to transform
- * @param buffer
- * the buffer where encoding should write to
- *
- * @return the message format key of the encoded message.
- *
- * @throws JMSException
- * if an error occurs during message transformation
- * @throws UnsupportedEncodingException
- * if an error occurs during message encoding
- */
- public abstract long transform(ServerJMSMessage message, WritableBuffer buffer) throws JMSException, UnsupportedEncodingException;
-
-}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
index 15611c3..1bb15b3 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java
@@ -21,16 +21,19 @@ import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.PooledByteBufAllocator;
import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
+import org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.postoffice.impl.CompositeAddress;
import org.apache.activemq.artemis.core.server.AddressQueryResult;
import org.apache.activemq.artemis.core.server.QueueQueryResult;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.transaction.Transaction;
import org.apache.activemq.artemis.jms.client.ActiveMQConnection;
+import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
import org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback;
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPException;
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPIllegalStateException;
@@ -38,9 +41,7 @@ import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPInternal
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPNotFoundException;
import org.apache.activemq.artemis.protocol.amqp.exceptions.ActiveMQAMQPResourceLimitExceededException;
import org.apache.activemq.artemis.protocol.amqp.logger.ActiveMQAMQPProtocolMessageBundle;
-import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
import org.apache.activemq.artemis.protocol.amqp.util.CreditsSemaphore;
-import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
import org.apache.activemq.artemis.selector.filter.FilterException;
import org.apache.activemq.artemis.selector.impl.SelectorParser;
import org.apache.qpid.proton.amqp.DescribedType;
@@ -63,9 +64,6 @@ import org.apache.qpid.proton.engine.EndpointState;
import org.apache.qpid.proton.engine.Sender;
import org.jboss.logging.Logger;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.PooledByteBufAllocator;
-
/**
* TODO: Merge {@link ProtonServerSenderContext} and {@link org.apache.activemq.artemis.protocol.amqp.client.ProtonClientSenderContext} once we support 'global' link names. The split is a workaround for outgoing links
*/
@@ -568,7 +566,7 @@ public class ProtonServerSenderContext extends ProtonInitializable implements Pr
/**
* handle an out going message from ActiveMQ Artemis, send via the Proton Sender
*/
- public int deliverMessage(Message message, int deliveryCount) throws Exception {
+ public int deliverMessage(AMQPMessage message, int deliveryCount) throws Exception {
if (closed) {
return 0;
}
@@ -592,21 +590,7 @@ public class ProtonServerSenderContext extends ProtonInitializable implements Pr
ByteBuf nettyBuffer = PooledByteBufAllocator.DEFAULT.heapBuffer(1024);
try {
- long messageFormat = 0;
-
-
- if (message instanceof AMQPMessage) {
- message.sendBuffer(nettyBuffer, deliveryCount);
- } else {
- // Encode the Server Message into the given Netty Buffer as an AMQP
- // Message transformed from the internal message model.
- try {
- messageFormat = sessionSPI.encodeMessage(message, deliveryCount, new NettyWritable(nettyBuffer));
- } catch (Throwable e) {
- log.warn(e.getMessage(), e);
- throw new ActiveMQAMQPInternalErrorException(e.getMessage(), e);
- }
- }
+ message.sendBuffer(nettyBuffer, deliveryCount);
int size = nettyBuffer.writerIndex();
@@ -616,7 +600,7 @@ public class ProtonServerSenderContext extends ProtonInitializable implements Pr
}
final Delivery delivery;
delivery = sender.delivery(tag, 0, tag.length);
- delivery.setMessageFormat((int) messageFormat);
+ delivery.setMessageFormat((int) message.getMessageFormat());
delivery.setContext(message);
// this will avoid a copy.. patch provided by Norman using buffer.array()
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
index 9a333c7..f132a45 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/TestConversions.java
@@ -16,42 +16,28 @@
*/
package org.apache.activemq.artemis.protocol.amqp.converter;
-import java.io.IOException;
-import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.PooledByteBufAllocator;
-import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
-import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSBytesMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMapMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSTextMessage;
-import org.apache.activemq.artemis.protocol.amqp.converter.message.EncodedMessage;
-import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
-import org.apache.activemq.artemis.utils.SimpleIDGenerator;
import org.apache.qpid.proton.amqp.Binary;
import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
import org.apache.qpid.proton.amqp.messaging.AmqpValue;
import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
import org.apache.qpid.proton.amqp.messaging.Data;
import org.apache.qpid.proton.message.Message;
-import org.apache.qpid.proton.message.ProtonJMessage;
import org.apache.qpid.proton.message.impl.MessageImpl;
import org.junit.Assert;
import org.junit.Test;
-import static org.apache.activemq.artemis.api.core.Message.BYTES_TYPE;
-import static org.apache.activemq.artemis.api.core.Message.MAP_TYPE;
-import static org.apache.activemq.artemis.api.core.Message.STREAM_TYPE;
-import static org.apache.activemq.artemis.api.core.Message.TEXT_TYPE;
-import static org.apache.activemq.artemis.protocol.amqp.converter.message.AMQPMessageSupport.wrapMessage;
public class TestConversions extends Assert {
@@ -70,18 +56,12 @@ public class TestConversions extends Assert {
message.setBody(new AmqpValue(new Boolean(true)));
- AMQPMessage encodedMessage = new AMQPMessage(message, null);
+ AMQPMessage encodedMessage = new AMQPMessage(message);
- ProtonMessageConverter converter = new ProtonMessageConverter(new SimpleIDGenerator(0));
- org.apache.activemq.artemis.api.core.Message serverMessage = converter.inbound(encodedMessage);
+ ICoreMessage serverMessage = encodedMessage.toCore();
- verifyProperties(new ServerJMSMessage(serverMessage, 0));
+ verifyProperties(ServerJMSMessage.wrapCoreMessage(serverMessage));
- EncodedMessage encoded = (EncodedMessage) converter.outbound(serverMessage, 0);
- Message amqpMessage = encoded.decode();
-
- AmqpValue value = (AmqpValue) amqpMessage.getBody();
- assertEquals(value.getValue(), true);
}
@Test
@@ -99,12 +79,11 @@ public class TestConversions extends Assert {
message.setBody(new Data(new Binary(bodyBytes)));
- AMQPMessage encodedMessage = new AMQPMessage(message, null);
+ AMQPMessage encodedMessage = new AMQPMessage(message);
- ProtonMessageConverter converter = new ProtonMessageConverter(new SimpleIDGenerator(0));
- org.apache.activemq.artemis.api.core.Message serverMessage = converter.inbound(encodedMessage);
+ ICoreMessage serverMessage = encodedMessage.toCore();
- ServerJMSBytesMessage bytesMessage = (ServerJMSBytesMessage) wrapMessage(BYTES_TYPE, serverMessage, 0);
+ ServerJMSBytesMessage bytesMessage = (ServerJMSBytesMessage) ServerJMSMessage.wrapCoreMessage(serverMessage);
verifyProperties(bytesMessage);
@@ -116,9 +95,6 @@ public class TestConversions extends Assert {
Assert.assertArrayEquals(bodyBytes, newBodyBytes);
- Object obj = converter.outbound(serverMessage, 0);
-
- System.out.println("output = " + obj);
}
private void verifyProperties(javax.jms.Message message) throws Exception {
@@ -149,28 +125,17 @@ public class TestConversions extends Assert {
message.setBody(new AmqpValue(mapValues));
- AMQPMessage encodedMessage = new AMQPMessage(message, null);
+ AMQPMessage encodedMessage = new AMQPMessage(message);
- ProtonMessageConverter converter = new ProtonMessageConverter(new SimpleIDGenerator(0));
- org.apache.activemq.artemis.api.core.Message serverMessage = converter.inbound(encodedMessage);
+ ICoreMessage serverMessage = encodedMessage.toCore();
- ServerJMSMapMessage mapMessage = (ServerJMSMapMessage) wrapMessage(MAP_TYPE, serverMessage, 0);
+ ServerJMSMapMessage mapMessage = (ServerJMSMapMessage) ServerJMSMessage.wrapCoreMessage(serverMessage);
mapMessage.decode();
verifyProperties(mapMessage);
Assert.assertEquals(1, mapMessage.getInt("someint"));
Assert.assertEquals("value", mapMessage.getString("somestr"));
-
- EncodedMessage encoded = (EncodedMessage) converter.outbound(serverMessage, 0);
- Message amqpMessage = encoded.decode();
-
- AmqpValue value = (AmqpValue) amqpMessage.getBody();
- Map<?, ?> mapoutput = (Map<?, ?>) value.getValue();
-
- assertEquals(Integer.valueOf(1), mapoutput.get("someint"));
-
- System.out.println("output = " + amqpMessage);
}
@Test
@@ -186,12 +151,11 @@ public class TestConversions extends Assert {
message.setBody(new AmqpSequence(objects));
- AMQPMessage encodedMessage = new AMQPMessage(message, null);
+ AMQPMessage encodedMessage = new AMQPMessage(message);
- ProtonMessageConverter converter = new ProtonMessageConverter(new SimpleIDGenerator(0));
- org.apache.activemq.artemis.api.core.Message serverMessage = converter.inbound(encodedMessage);
+ ICoreMessage serverMessage = encodedMessage.toCore();
- ServerJMSStreamMessage streamMessage = (ServerJMSStreamMessage) wrapMessage(STREAM_TYPE, serverMessage, 0);
+ ServerJMSStreamMessage streamMessage = (ServerJMSStreamMessage) ServerJMSMessage.wrapCoreMessage(serverMessage);
verifyProperties(streamMessage);
@@ -199,13 +163,6 @@ public class TestConversions extends Assert {
assertEquals(10, streamMessage.readInt());
assertEquals("10", streamMessage.readString());
-
- EncodedMessage encoded = (EncodedMessage) converter.outbound(serverMessage, 0);
- Message amqpMessage = encoded.decode();
-
- List<?> list = ((AmqpSequence) amqpMessage.getBody()).getValue();
- Assert.assertEquals(Integer.valueOf(10), list.get(0));
- Assert.assertEquals("10", list.get(1));
}
@Test
@@ -218,541 +175,17 @@ public class TestConversions extends Assert {
String text = "someText";
message.setBody(new AmqpValue(text));
- AMQPMessage encodedMessage = new AMQPMessage(message, null);
+ AMQPMessage encodedMessage = new AMQPMessage(message);
- ProtonMessageConverter converter = new ProtonMessageConverter(new SimpleIDGenerator(0));
- org.apache.activemq.artemis.api.core.Message serverMessage = converter.inbound(encodedMessage);
+ ICoreMessage serverMessage = encodedMessage.toCore();
- ServerJMSTextMessage textMessage = (ServerJMSTextMessage) wrapMessage(TEXT_TYPE, serverMessage, 0);
+ ServerJMSTextMessage textMessage = (ServerJMSTextMessage) ServerJMSMessage.wrapCoreMessage(serverMessage);
textMessage.decode();
verifyProperties(textMessage);
Assert.assertEquals(text, textMessage.getText());
- EncodedMessage encoded = (EncodedMessage) converter.outbound(serverMessage, 0);
- Message amqpMessage = encoded.decode();
-
- AmqpValue value = (AmqpValue) amqpMessage.getBody();
- String textValue = (String) value.getValue();
-
- Assert.assertEquals(text, textValue);
-
- System.out.println("output = " + amqpMessage);
- }
-
- private ProtonJMessage reEncodeMsg(Object obj) {
- ProtonJMessage objOut = (ProtonJMessage) obj;
-
- ByteBuf nettyBuffer = PooledByteBufAllocator.DEFAULT.heapBuffer(1024);
-
- objOut.encode(new NettyWritable(nettyBuffer));
- return objOut;
}
- class EmptyBuffer implements ActiveMQBuffer {
-
- @Override
- public ByteBuf byteBuf() {
- return null;
- }
-
- @Override
- public int capacity() {
- return 0;
- }
-
- @Override
- public int readerIndex() {
- return 0;
- }
-
- @Override
- public void readerIndex(int readerIndex) {
-
- }
-
- @Override
- public int writerIndex() {
- return 0;
- }
-
- @Override
- public void writerIndex(int writerIndex) {
-
- }
-
- @Override
- public void setIndex(int readerIndex, int writerIndex) {
-
- }
-
- @Override
- public int readableBytes() {
- return 0;
- }
-
- @Override
- public int writableBytes() {
- return 0;
- }
-
- @Override
- public boolean readable() {
- return false;
- }
-
- @Override
- public boolean writable() {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public void markReaderIndex() {
-
- }
-
- @Override
- public void resetReaderIndex() {
-
- }
-
- @Override
- public void markWriterIndex() {
-
- }
-
- @Override
- public void resetWriterIndex() {
-
- }
-
- @Override
- public void discardReadBytes() {
-
- }
-
- @Override
- public byte getByte(int index) {
- return 0;
- }
-
- @Override
- public short getUnsignedByte(int index) {
- return 0;
- }
-
- @Override
- public short getShort(int index) {
- return 0;
- }
-
- @Override
- public int getUnsignedShort(int index) {
- return 0;
- }
-
- @Override
- public int getInt(int index) {
- return 0;
- }
-
- @Override
- public long getUnsignedInt(int index) {
- return 0;
- }
-
- @Override
- public long getLong(int index) {
- return 0;
- }
-
- @Override
- public void getBytes(int index, ActiveMQBuffer dst) {
-
- }
-
- @Override
- public void getBytes(int index, ActiveMQBuffer dst, int length) {
-
- }
-
- @Override
- public void getBytes(int index, ActiveMQBuffer dst, int dstIndex, int length) {
-
- }
-
- @Override
- public void getBytes(int index, byte[] dst) {
-
- }
-
- @Override
- public void getBytes(int index, byte[] dst, int dstIndex, int length) {
-
- }
-
- @Override
- public void getBytes(int index, ByteBuffer dst) {
-
- }
-
- @Override
- public char getChar(int index) {
- return 0;
- }
-
- @Override
- public float getFloat(int index) {
- return 0;
- }
-
- @Override
- public double getDouble(int index) {
- return 0;
- }
-
- @Override
- public void setByte(int index, byte value) {
-
- }
-
- @Override
- public void setShort(int index, short value) {
-
- }
-
- @Override
- public void setInt(int index, int value) {
-
- }
-
- @Override
- public void setLong(int index, long value) {
-
- }
-
- @Override
- public void setBytes(int index, ActiveMQBuffer src) {
-
- }
-
- @Override
- public void setBytes(int index, ActiveMQBuffer src, int length) {
-
- }
-
- @Override
- public void setBytes(int index, ActiveMQBuffer src, int srcIndex, int length) {
-
- }
-
- @Override
- public void setBytes(int index, byte[] src) {
-
- }
-
- @Override
- public void setBytes(int index, byte[] src, int srcIndex, int length) {
-
- }
-
- @Override
- public void setBytes(int index, ByteBuffer src) {
-
- }
-
- @Override
- public void setChar(int index, char value) {
-
- }
-
- @Override
- public void setFloat(int index, float value) {
-
- }
-
- @Override
- public void setDouble(int index, double value) {
-
- }
-
- @Override
- public byte readByte() {
- return 0;
- }
-
- @Override
- public int readUnsignedByte() {
- return 0;
- }
-
- @Override
- public short readShort() {
- return 0;
- }
-
- @Override
- public int readUnsignedShort() {
- return 0;
- }
-
- @Override
- public int readInt() {
- return 0;
- }
-
- @Override
- public long readUnsignedInt() {
- return 0;
- }
-
- @Override
- public long readLong() {
- return 0;
- }
-
- @Override
- public char readChar() {
- return 0;
- }
-
- @Override
- public float readFloat() {
- return 0;
- }
-
- @Override
- public double readDouble() {
- return 0;
- }
-
- @Override
- public boolean readBoolean() {
- return false;
- }
-
- @Override
- public SimpleString readNullableSimpleString() {
- return null;
- }
-
- @Override
- public String readNullableString() {
- return null;
- }
-
- @Override
- public SimpleString readSimpleString() {
- return null;
- }
-
- @Override
- public String readString() {
- return null;
- }
-
- @Override
- public String readUTF() {
- return null;
- }
-
- @Override
- public ActiveMQBuffer readBytes(int length) {
- return null;
- }
-
- @Override
- public ActiveMQBuffer readSlice(int length) {
- return null;
- }
-
- @Override
- public void readBytes(ActiveMQBuffer dst) {
-
- }
-
- @Override
- public void readBytes(ActiveMQBuffer dst, int length) {
-
- }
-
- @Override
- public void readBytes(ActiveMQBuffer dst, int dstIndex, int length) {
-
- }
-
- @Override
- public void readBytes(byte[] dst) {
-
- }
-
- @Override
- public void readBytes(byte[] dst, int dstIndex, int length) {
-
- }
-
- @Override
- public void readBytes(ByteBuffer dst) {
-
- }
-
- @Override
- public int skipBytes(int length) {
- return length;
- }
-
- @Override
- public void writeByte(byte value) {
-
- }
-
- @Override
- public void writeShort(short value) {
-
- }
-
- @Override
- public void writeInt(int value) {
-
- }
-
- @Override
- public void writeLong(long value) {
-
- }
-
- @Override
- public void writeChar(char chr) {
-
- }
-
- @Override
- public void writeFloat(float value) {
-
- }
-
- @Override
- public void writeDouble(double value) {
-
- }
-
- @Override
- public void writeBoolean(boolean val) {
-
- }
-
- @Override
- public void writeNullableSimpleString(SimpleString val) {
-
- }
-
- @Override
- public void writeNullableString(String val) {
-
- }
-
- @Override
- public void writeSimpleString(SimpleString val) {
-
- }
-
- @Override
- public void writeString(String val) {
-
- }
-
- @Override
- public void writeUTF(String utf) {
-
- }
-
- @Override
- public void writeBytes(ActiveMQBuffer src, int length) {
-
- }
-
- @Override
- public void writeBytes(ActiveMQBuffer src, int srcIndex, int length) {
-
- }
-
- @Override
- public void writeBytes(byte[] src) {
-
- }
-
- @Override
- public void writeBytes(byte[] src, int srcIndex, int length) {
-
- }
-
- @Override
- public void writeBytes(ByteBuffer src) {
-
- }
-
- @Override
- public void readFully(byte[] b) throws IOException {
- }
-
- @Override
- public void readFully(byte[] b, int off, int len) throws IOException {
- }
-
- @Override
- public String readLine() throws IOException {
- return null;
- }
-
- @Override
- public ActiveMQBuffer copy() {
- return null;
- }
-
- @Override
- public ActiveMQBuffer copy(int index, int length) {
- return null;
- }
-
- @Override
- public ActiveMQBuffer slice() {
- return null;
- }
-
- @Override
- public ActiveMQBuffer slice(int index, int length) {
- return null;
- }
-
- @Override
- public ActiveMQBuffer duplicate() {
- return null;
- }
-
- @Override
- public ByteBuffer toByteBuffer() {
- return null;
- }
-
- @Override
- public ByteBuffer toByteBuffer(int index, int length) {
- return null;
- }
-
- @Override
- public void release() {
- //no-op
- }
-
- @Override
- public void writeBytes(ByteBuf src, int srcIndex, int length) {
-
- }
- }
}
[2/5] activemq-artemis git commit: Fixing converters part I
Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformerTest.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformerTest.java b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformerTest.java
index bfaec54..693b4e0 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformerTest.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingInboundTransformerTest.java
@@ -16,11 +16,13 @@
*/
package org.apache.activemq.artemis.protocol.amqp.converter.message;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
+import javax.jms.Destination;
+import javax.jms.MapMessage;
+import javax.jms.Queue;
+import javax.jms.TemporaryQueue;
+import javax.jms.TemporaryTopic;
+import javax.jms.TextMessage;
+import javax.jms.Topic;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -30,23 +32,15 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
-import javax.jms.Destination;
-import javax.jms.MapMessage;
-import javax.jms.Queue;
-import javax.jms.TemporaryQueue;
-import javax.jms.TemporaryTopic;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.jms.client.ActiveMQMessage;
+import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSBytesMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMapMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSObjectMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSTextMessage;
-import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.activemq.artemis.utils.SimpleIDGenerator;
import org.apache.qpid.proton.Proton;
import org.apache.qpid.proton.amqp.Binary;
import org.apache.qpid.proton.amqp.Symbol;
@@ -58,13 +52,15 @@ import org.apache.qpid.proton.message.Message;
import org.junit.Before;
import org.junit.Test;
-public class JMSMappingInboundTransformerTest {
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
- private IDGenerator idGenerator;
+public class JMSMappingInboundTransformerTest {
@Before
public void setUp() {
- this.idGenerator = new SimpleIDGenerator(0);
}
// ----- Null Body Section ------------------------------------------------//
@@ -78,14 +74,14 @@ public class JMSMappingInboundTransformerTest {
*/
@Test
public void testCreateBytesMessageFromNoBodySectionAndContentType() throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
-
Message message = Message.Factory.create();
message.setContentType(AMQPMessageSupport.OCTET_STREAM_CONTENT_TYPE);
- AMQPMessage messageEncode = new AMQPMessage(message, null);
+ AMQPMessage messageEncode = new AMQPMessage(message);
- javax.jms.Message jmsMessage = transformer.transform(messageEncode);
+ ICoreMessage coreMessage = messageEncode.toCore();
+
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(coreMessage);
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSBytesMessage.class, jmsMessage.getClass());
@@ -100,12 +96,9 @@ public class JMSMappingInboundTransformerTest {
*/
@Test
public void testCreateBytesMessageFromNoBodySectionAndNoContentType() throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
-
Message message = Message.Factory.create();
- EncodedMessage em = encodeMessage(message);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSBytesMessage.class, jmsMessage.getClass());
@@ -121,13 +114,10 @@ public class JMSMappingInboundTransformerTest {
*/
@Test
public void testCreateObjectMessageFromNoBodySectionAndContentType() throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
-
Message message = Message.Factory.create();
message.setContentType(AMQPMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
- EncodedMessage em = encodeMessage(message);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSObjectMessage.class, jmsMessage.getClass());
@@ -135,13 +125,10 @@ public class JMSMappingInboundTransformerTest {
@Test
public void testCreateTextMessageFromNoBodySectionAndContentType() throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
-
Message message = Message.Factory.create();
message.setContentType("text/plain");
- EncodedMessage em = encodeMessage(message);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSTextMessage.class, jmsMessage.getClass());
@@ -155,14 +142,12 @@ public class JMSMappingInboundTransformerTest {
* @throws Exception
* if an error occurs during the test.
*/
+ @Test
public void testCreateGenericMessageFromNoBodySectionAndUnknownContentType() throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
-
Message message = Message.Factory.create();
message.setContentType("unknown-content-type");
- EncodedMessage em = encodeMessage(message);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ActiveMQMessage.class, jmsMessage.getClass());
@@ -185,10 +170,7 @@ public class JMSMappingInboundTransformerTest {
message.setBody(new Data(binary));
message.setContentType(AMQPMessageSupport.OCTET_STREAM_CONTENT_TYPE);
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSBytesMessage.class, jmsMessage.getClass());
@@ -208,10 +190,7 @@ public class JMSMappingInboundTransformerTest {
message.setBody(new Data(binary));
message.setContentType("unknown-content-type");
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSBytesMessage.class, jmsMessage.getClass());
@@ -232,10 +211,7 @@ public class JMSMappingInboundTransformerTest {
assertNull(message.getContentType());
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSBytesMessage.class, jmsMessage.getClass());
@@ -256,10 +232,7 @@ public class JMSMappingInboundTransformerTest {
message.setBody(new Data(binary));
message.setContentType(AMQPMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSObjectMessage.class, jmsMessage.getClass());
@@ -359,10 +332,7 @@ public class JMSMappingInboundTransformerTest {
message.setBody(new Data(binary));
message.setContentType(contentType);
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
if (StandardCharsets.UTF_8.equals(expectedCharset)) {
@@ -386,10 +356,7 @@ public class JMSMappingInboundTransformerTest {
Message message = Proton.message();
message.setBody(new AmqpValue("content"));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSTextMessage.class, jmsMessage.getClass());
@@ -407,10 +374,7 @@ public class JMSMappingInboundTransformerTest {
Message message = Proton.message();
message.setBody(new AmqpValue(null));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSTextMessage.class, jmsMessage.getClass());
@@ -426,14 +390,11 @@ public class JMSMappingInboundTransformerTest {
*/
@Test
public void testCreateObjectMessageFromAmqpValueWithBinaryAndContentType() throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
-
Message message = Message.Factory.create();
message.setBody(new AmqpValue(new Binary(new byte[0])));
message.setContentType(AMQPMessageSupport.SERIALIZED_JAVA_OBJECT_CONTENT_TYPE);
- EncodedMessage em = encodeMessage(message);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSObjectMessage.class, jmsMessage.getClass());
@@ -452,10 +413,7 @@ public class JMSMappingInboundTransformerTest {
Map<String, String> map = new HashMap<>();
message.setBody(new AmqpValue(map));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSMapMessage.class, jmsMessage.getClass());
@@ -481,10 +439,7 @@ public class JMSMappingInboundTransformerTest {
message.setBody(new AmqpValue(map));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSMapMessage.class, jmsMessage.getClass());
@@ -508,10 +463,7 @@ public class JMSMappingInboundTransformerTest {
List<String> list = new ArrayList<>();
message.setBody(new AmqpValue(list));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSStreamMessage.class, jmsMessage.getClass());
@@ -530,10 +482,7 @@ public class JMSMappingInboundTransformerTest {
List<String> list = new ArrayList<>();
message.setBody(new AmqpSequence(list));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSStreamMessage.class, jmsMessage.getClass());
@@ -552,10 +501,7 @@ public class JMSMappingInboundTransformerTest {
Binary binary = new Binary(new byte[0]);
message.setBody(new AmqpValue(binary));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSBytesMessage.class, jmsMessage.getClass());
@@ -574,11 +520,7 @@ public class JMSMappingInboundTransformerTest {
Message message = Proton.message();
message.setBody(new AmqpValue(UUID.randomUUID()));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
-
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertNotNull("Message should not be null", jmsMessage);
assertEquals("Unexpected message class type", ServerJMSBytesMessage.class, jmsMessage.getClass());
@@ -590,10 +532,7 @@ public class JMSMappingInboundTransformerTest {
Message message = Message.Factory.create();
message.setBody(new AmqpValue(contentString));
- EncodedMessage em = encodeMessage(message);
-
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(message).toCore());
assertTrue("Expected TextMessage", jmsMessage instanceof TextMessage);
assertEquals("Unexpected message class type", ServerJMSTextMessage.class, jmsMessage.getClass());
@@ -633,7 +572,6 @@ public class JMSMappingInboundTransformerTest {
private void doTransformWithToTypeDestinationTypeAnnotationTestImpl(Object toTypeAnnotationValue, Class<? extends Destination> expectedClass)
throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
String toAddress = "toAddress";
Message amqp = Message.Factory.create();
@@ -646,9 +584,7 @@ public class JMSMappingInboundTransformerTest {
amqp.setMessageAnnotations(ma);
}
- EncodedMessage em = encodeMessage(amqp);
-
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(amqp).toCore());
assertTrue("Expected TextMessage", jmsMessage instanceof TextMessage);
}
@@ -681,7 +617,6 @@ public class JMSMappingInboundTransformerTest {
private void doTransformWithReplyToTypeDestinationTypeAnnotationTestImpl(Object replyToTypeAnnotationValue, Class<? extends Destination> expectedClass)
throws Exception {
- JMSMappingInboundTransformer transformer = new JMSMappingInboundTransformer(idGenerator);
String replyToAddress = "replyToAddress";
Message amqp = Message.Factory.create();
@@ -694,27 +629,8 @@ public class JMSMappingInboundTransformerTest {
amqp.setMessageAnnotations(ma);
}
- EncodedMessage em = encodeMessage(amqp);
-
- javax.jms.Message jmsMessage = transformer.transform(em);
+ javax.jms.Message jmsMessage = ServerJMSMessage.wrapCoreMessage(new AMQPMessage(amqp).toCore());
assertTrue("Expected TextMessage", jmsMessage instanceof TextMessage);
}
- // ----- Utility Methods --------------------------------------------------//
-
- private EncodedMessage encodeMessage(Message message) {
- byte[] encodeBuffer = new byte[1024 * 8];
- int encodedSize;
- while (true) {
- try {
- encodedSize = message.encode(encodeBuffer, 0, encodeBuffer.length);
- break;
- } catch (java.nio.BufferOverflowException e) {
- encodeBuffer = new byte[encodeBuffer.length * 2];
- }
- }
-
- long messageFormat = 0;
- return new EncodedMessage(messageFormat, encodeBuffer, 0, encodedSize);
- }
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformerTest.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformerTest.java b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformerTest.java
index 3fe6d70..f38da3a 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformerTest.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSMappingOutboundTransformerTest.java
@@ -27,10 +27,9 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
import org.apache.activemq.artemis.core.buffers.impl.ResetLimitWrappedActiveMQBuffer;
import org.apache.activemq.artemis.core.message.impl.CoreMessage;
+import org.apache.activemq.artemis.protocol.amqp.converter.AMQPConverter;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerDestination;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSBytesMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMapMessage;
@@ -38,9 +37,6 @@ import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSObjectMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSStreamMessage;
import org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSTextMessage;
-import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.activemq.artemis.utils.SimpleIDGenerator;
import org.apache.qpid.proton.amqp.Binary;
import org.apache.qpid.proton.amqp.Symbol;
import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
@@ -70,8 +66,6 @@ public class JMSMappingOutboundTransformerTest {
private final UUID TEST_OBJECT_VALUE = UUID.fromString("fee14b62-09e0-4ac6-a4c3-4206c630d844");
private final String TEST_ADDRESS = "queue://testAddress";
- private IDGenerator idGenerator;
- private JMSMappingOutboundTransformer transformer;
public static final byte QUEUE_TYPE = 0x00;
public static final byte TOPIC_TYPE = 0x01;
@@ -80,8 +74,6 @@ public class JMSMappingOutboundTransformerTest {
@Before
public void setUp() {
- idGenerator = new SimpleIDGenerator(0);
- transformer = new JMSMappingOutboundTransformer(idGenerator);
}
// ----- no-body Message type tests ---------------------------------------//
@@ -91,10 +83,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSMessage outbound = createMessage();
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNull(amqp.getBody());
}
@@ -105,10 +94,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_NULL);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNull(amqp.getBody());
}
@@ -120,10 +106,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSBytesMessage outbound = createBytesMessage();
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -138,10 +121,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.writeBytes(expectedPayload);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -162,10 +142,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.writeBytes(expectedPayload);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -184,10 +161,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_BINARY);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -203,10 +177,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.writeBytes(expectedPayload);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -228,10 +199,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.writeBytes(expectedPayload);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -251,10 +219,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSMapMessage outbound = createMapMessage();
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -269,10 +234,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setBytes("bytes", byteArray);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -294,10 +256,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setBoolean("property-3", true);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -318,10 +277,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setBoolean("property-3", true);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -341,10 +297,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSStreamMessage outbound = createStreamMessage();
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -357,10 +310,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_SEQUENCE);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpSequence);
@@ -374,10 +324,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.writeString("test");
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -397,10 +344,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.writeString("test");
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpSequence);
@@ -419,10 +363,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSObjectMessage outbound = createObjectMessage();
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -435,10 +376,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_UNKNOWN);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -451,10 +389,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_BINARY);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -467,10 +402,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSObjectMessage outbound = createObjectMessage(TEST_OBJECT_VALUE);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -487,10 +419,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_UNKNOWN);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -507,10 +436,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_BINARY);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -527,10 +453,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSObjectMessage outbound = createObjectMessage(TEST_OBJECT_VALUE, true);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -547,10 +470,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_UNKNOWN);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -567,10 +487,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_VALUE_BINARY);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -589,10 +506,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSTextMessage outbound = createTextMessage();
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -606,10 +520,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_DATA);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -627,10 +538,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_DATA);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -647,10 +555,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSTextMessage outbound = createTextMessage(contentString);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -663,10 +568,7 @@ public class JMSMappingOutboundTransformerTest {
ServerJMSTextMessage outbound = createTextMessage(contentString);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof AmqpValue);
@@ -680,10 +582,7 @@ public class JMSMappingOutboundTransformerTest {
outbound.setShortProperty(JMS_AMQP_ORIGINAL_ENCODING, AMQP_DATA);
outbound.encode();
- EncodedMessage encoded = transform(outbound);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(outbound.getInnerMessage()).getProtonMessage();
assertNotNull(amqp.getBody());
assertTrue(amqp.getBody() instanceof Data);
@@ -729,15 +628,12 @@ public class JMSMappingOutboundTransformerTest {
textMessage.setText("myTextMessageContent");
textMessage.setJMSDestination(jmsDestination);
- EncodedMessage encoded = transform(textMessage);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(textMessage.getInnerMessage()).getProtonMessage();
MessageAnnotations ma = amqp.getMessageAnnotations();
Map<Symbol, Object> maMap = ma == null ? null : ma.getValue();
if (maMap != null) {
- Object actualValue = maMap.get(JMSMappingOutboundTransformer.JMS_DEST_TYPE_MSG_ANNOTATION);
+ Object actualValue = maMap.get(AMQPMessageSupport.JMS_DEST_TYPE_MSG_ANNOTATION);
assertEquals("Unexpected annotation value", expectedAnnotationValue, actualValue);
} else if (expectedAnnotationValue != null) {
fail("Expected annotation value, but there were no annotations");
@@ -783,15 +679,12 @@ public class JMSMappingOutboundTransformerTest {
textMessage.setText("myTextMessageContent");
textMessage.setJMSReplyTo(jmsReplyTo);
- EncodedMessage encoded = transform(textMessage);
- assertNotNull(encoded);
-
- Message amqp = encoded.decode();
+ Message amqp = AMQPConverter.getInstance().fromCore(textMessage.getInnerMessage()).getProtonMessage();
MessageAnnotations ma = amqp.getMessageAnnotations();
Map<Symbol, Object> maMap = ma == null ? null : ma.getValue();
if (maMap != null) {
- Object actualValue = maMap.get(JMSMappingOutboundTransformer.JMS_REPLY_TO_TYPE_MSG_ANNOTATION);
+ Object actualValue = maMap.get(AMQPMessageSupport.JMS_REPLY_TO_TYPE_MSG_ANNOTATION);
assertEquals("Unexpected annotation value", expectedAnnotationValue, actualValue);
} else if (expectedAnnotationValue != null) {
fail("Expected annotation value, but there were no annotations");
@@ -804,17 +697,6 @@ public class JMSMappingOutboundTransformerTest {
// ----- Utility Methods used for this Test -------------------------------//
- public EncodedMessage transform(ServerJMSMessage message) throws Exception {
- // Useful for testing but not recommended for real life use.
- ByteBuf nettyBuffer = Unpooled.buffer(1024);
- NettyWritable buffer = new NettyWritable(nettyBuffer);
-
- long messageFormat = transformer.transform(message, buffer);
-
- EncodedMessage encoded = new EncodedMessage(messageFormat, nettyBuffer.array(), nettyBuffer.arrayOffset() + nettyBuffer.readerIndex(), nettyBuffer.readableBytes());
-
- return encoded;
- }
private ServerDestination createDestination(byte destType) {
ServerDestination destination = null;
@@ -839,7 +721,7 @@ public class JMSMappingOutboundTransformerTest {
}
private ServerJMSMessage createMessage() {
- return new ServerJMSMessage(newMessage(org.apache.activemq.artemis.api.core.Message.DEFAULT_TYPE), 0);
+ return new ServerJMSMessage(newMessage(org.apache.activemq.artemis.api.core.Message.DEFAULT_TYPE));
}
private ServerJMSBytesMessage createBytesMessage() {
@@ -847,7 +729,7 @@ public class JMSMappingOutboundTransformerTest {
}
private ServerJMSBytesMessage createBytesMessage(boolean compression) {
- ServerJMSBytesMessage message = new ServerJMSBytesMessage(newMessage(org.apache.activemq.artemis.api.core.Message.BYTES_TYPE), 0);
+ ServerJMSBytesMessage message = new ServerJMSBytesMessage(newMessage(org.apache.activemq.artemis.api.core.Message.BYTES_TYPE));
if (compression) {
// TODO
@@ -861,7 +743,7 @@ public class JMSMappingOutboundTransformerTest {
}
private ServerJMSMapMessage createMapMessage(boolean compression) {
- ServerJMSMapMessage message = new ServerJMSMapMessage(newMessage(org.apache.activemq.artemis.api.core.Message.MAP_TYPE), 0);
+ ServerJMSMapMessage message = new ServerJMSMapMessage(newMessage(org.apache.activemq.artemis.api.core.Message.MAP_TYPE));
if (compression) {
// TODO
@@ -875,7 +757,7 @@ public class JMSMappingOutboundTransformerTest {
}
private ServerJMSStreamMessage createStreamMessage(boolean compression) {
- ServerJMSStreamMessage message = new ServerJMSStreamMessage(newMessage(org.apache.activemq.artemis.api.core.Message.STREAM_TYPE), 0);
+ ServerJMSStreamMessage message = new ServerJMSStreamMessage(newMessage(org.apache.activemq.artemis.api.core.Message.STREAM_TYPE));
if (compression) {
// TODO
@@ -893,7 +775,7 @@ public class JMSMappingOutboundTransformerTest {
}
private ServerJMSObjectMessage createObjectMessage(Serializable payload, boolean compression) {
- ServerJMSObjectMessage result = AMQPMessageSupport.createObjectMessage(idGenerator);
+ ServerJMSObjectMessage result = AMQPMessageSupport.createObjectMessage(0);
if (compression) {
// TODO
@@ -920,7 +802,7 @@ public class JMSMappingOutboundTransformerTest {
}
private ServerJMSTextMessage createTextMessage(String text, boolean compression) {
- ServerJMSTextMessage result = AMQPMessageSupport.createTextMessage(idGenerator);
+ ServerJMSTextMessage result = AMQPMessageSupport.createTextMessage(0);
if (compression) {
// TODO
@@ -942,7 +824,7 @@ public class JMSMappingOutboundTransformerTest {
}
private CoreMessage newMessage(byte messageType) {
- CoreMessage message = new CoreMessage(idGenerator.generateID(), 512);
+ CoreMessage message = new CoreMessage(0, 512);
message.setType(messageType);
((ResetLimitWrappedActiveMQBuffer) message.getBodyBuffer()).setMessage(null);
return message;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSTransformationSpeedComparisonTest.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSTransformationSpeedComparisonTest.java b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSTransformationSpeedComparisonTest.java
index fdf0129..483f245 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSTransformationSpeedComparisonTest.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/JMSTransformationSpeedComparisonTest.java
@@ -21,27 +21,23 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
-import org.apache.activemq.artemis.protocol.amqp.converter.ProtonMessageConverter;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.PooledByteBufAllocator;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
-import org.apache.activemq.artemis.protocol.amqp.util.NettyWritable;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.activemq.artemis.utils.SimpleIDGenerator;
+import org.apache.activemq.artemis.protocol.amqp.converter.AMQPConverter;
import org.apache.qpid.proton.Proton;
import org.apache.qpid.proton.amqp.Symbol;
import org.apache.qpid.proton.amqp.messaging.AmqpValue;
import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
import org.apache.qpid.proton.message.Message;
-import org.apache.qpid.proton.message.ProtonJMessage;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-
/**
* Some simple performance tests for the Message Transformers.
*/
@@ -51,16 +47,11 @@ public class JMSTransformationSpeedComparisonTest {
@Rule
public TestName test = new TestName();
- private IDGenerator idGenerator;
- private ProtonMessageConverter converter;
-
private final int WARM_CYCLES = 1000;
private final int PROFILE_CYCLES = 1000000;
@Before
public void setUp() {
- idGenerator = new SimpleIDGenerator(0);
- converter = new ProtonMessageConverter(idGenerator);
}
@Test
@@ -68,20 +59,20 @@ public class JMSTransformationSpeedComparisonTest {
Message message = Proton.message();
message.setBody(new AmqpValue("String payload for AMQP message conversion performance testing."));
- AMQPMessage encoded = encode(message);
+ AMQPMessage encoded = new AMQPMessage(message);
// Warm up
for (int i = 0; i < WARM_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
long totalDuration = 0;
long startTime = System.nanoTime();
for (int i = 0; i < PROFILE_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
totalDuration += System.nanoTime() - startTime;
@@ -99,20 +90,20 @@ public class JMSTransformationSpeedComparisonTest {
message.setContentType("text/plain");
message.setBody(new AmqpValue("String payload for AMQP message conversion performance testing."));
- AMQPMessage encoded = encode(message);
+ AMQPMessage encoded = new AMQPMessage(message);
// Warm up
for (int i = 0; i < WARM_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
long totalDuration = 0;
long startTime = System.nanoTime();
for (int i = 0; i < PROFILE_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
totalDuration += System.nanoTime() - startTime;
@@ -122,20 +113,20 @@ public class JMSTransformationSpeedComparisonTest {
@Test
public void testTypicalQpidJMSMessage() throws Exception {
- AMQPMessage encoded = encode(createTypicalQpidJMSMessage());
+ AMQPMessage encoded = new AMQPMessage(createTypicalQpidJMSMessage());
// Warm up
for (int i = 0; i < WARM_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
long totalDuration = 0;
long startTime = System.nanoTime();
for (int i = 0; i < PROFILE_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
totalDuration += System.nanoTime() - startTime;
@@ -149,16 +140,16 @@ public class JMSTransformationSpeedComparisonTest {
// Warm up
for (int i = 0; i < WARM_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
long totalDuration = 0;
long startTime = System.nanoTime();
for (int i = 0; i < PROFILE_CYCLES; ++i) {
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
totalDuration += System.nanoTime() - startTime;
@@ -172,14 +163,16 @@ public class JMSTransformationSpeedComparisonTest {
// Warm up
for (int i = 0; i < WARM_CYCLES; ++i) {
- converter.inbound(encoded);
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
long totalDuration = 0;
long startTime = System.nanoTime();
for (int i = 0; i < PROFILE_CYCLES; ++i) {
- converter.inbound(encoded);
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
totalDuration += System.nanoTime() - startTime;
@@ -191,18 +184,19 @@ public class JMSTransformationSpeedComparisonTest {
public void testTypicalQpidJMSMessageOutBoundOnly() throws Exception {
AMQPMessage encoded = encode(createTypicalQpidJMSMessage());
- org.apache.activemq.artemis.api.core.Message intermediate = converter.inbound(encoded);
// Warm up
for (int i = 0; i < WARM_CYCLES; ++i) {
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
long totalDuration = 0;
long startTime = System.nanoTime();
for (int i = 0; i < PROFILE_CYCLES; ++i) {
- encode(converter.outbound(intermediate, 1));
+ ICoreMessage intermediate = encoded.toCore();
+ encode(AMQPConverter.getInstance().fromCore(intermediate));
}
totalDuration += System.nanoTime() - startTime;
@@ -278,16 +272,16 @@ public class JMSTransformationSpeedComparisonTest {
return message;
}
- private AMQPMessage encode(Object target) {
- if (target instanceof ProtonJMessage) {
- ProtonJMessage amqp = (ProtonJMessage) target;
-
- ByteBuf nettyBuffer = Unpooled.buffer(1024);
- amqp.encode(new NettyWritable(nettyBuffer));
+ private AMQPMessage encode(Message message) {
+ return new AMQPMessage(message);
+ }
- return new AMQPMessage(0, nettyBuffer.array(), null);
- } else {
- return null;
+ private void encode(AMQPMessage target) {
+ ByteBuf buf = PooledByteBufAllocator.DEFAULT.heapBuffer(1024);
+ try {
+ target.sendBuffer(buf, 1);
+ } finally {
+ buf.release();
}
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/MessageTransformationTest.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/MessageTransformationTest.java b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/MessageTransformationTest.java
index 6a0f20c..7cba09b 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/MessageTransformationTest.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/converter/message/MessageTransformationTest.java
@@ -16,36 +16,30 @@
*/
package org.apache.activemq.artemis.protocol.amqp.converter.message;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
-import org.apache.activemq.artemis.protocol.amqp.converter.ProtonMessageConverter;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage;
-import org.apache.activemq.artemis.utils.IDGenerator;
-import org.apache.activemq.artemis.utils.SimpleIDGenerator;
+import org.apache.activemq.artemis.protocol.amqp.converter.AMQPConverter;
import org.apache.qpid.proton.Proton;
import org.apache.qpid.proton.amqp.Symbol;
import org.apache.qpid.proton.amqp.messaging.AmqpValue;
import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
import org.apache.qpid.proton.amqp.messaging.MessageAnnotations;
import org.apache.qpid.proton.amqp.messaging.Section;
-import org.apache.qpid.proton.codec.CompositeWritableBuffer;
-import org.apache.qpid.proton.codec.DroppingWritableBuffer;
-import org.apache.qpid.proton.codec.WritableBuffer;
import org.apache.qpid.proton.message.Message;
-import org.apache.qpid.proton.message.ProtonJMessage;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
/**
* Tests some basic encode / decode functionality on the transformers.
*/
@@ -54,72 +48,10 @@ public class MessageTransformationTest {
@Rule
public TestName test = new TestName();
- private IDGenerator idGenerator;
- private ProtonMessageConverter converter;
-
@Before
public void setUp() {
- idGenerator = new SimpleIDGenerator(0);
- converter = new ProtonMessageConverter(idGenerator);
}
- @Test
- public void testEncodeDecodeFidelity() throws Exception {
- Map<String, Object> applicationProperties = new HashMap<>();
- Map<Symbol, Object> messageAnnotations = new HashMap<>();
-
- applicationProperties.put("property-1", "string");
- applicationProperties.put("property-2", 512);
- applicationProperties.put("property-3", true);
-
- messageAnnotations.put(Symbol.valueOf("x-opt-jms-msg-type"), 0);
- messageAnnotations.put(Symbol.valueOf("x-opt-jms-dest"), 0);
-
- Message incomingMessage = Proton.message();
-
- incomingMessage.setAddress("queue://test-queue");
- incomingMessage.setDeliveryCount(1);
- incomingMessage.setApplicationProperties(new ApplicationProperties(applicationProperties));
- incomingMessage.setMessageAnnotations(new MessageAnnotations(messageAnnotations));
- incomingMessage.setCreationTime(System.currentTimeMillis());
- incomingMessage.setContentType("text/plain");
- incomingMessage.setBody(new AmqpValue("String payload for AMQP message conversion performance testing."));
-
- EncodedMessage encoded = encode(incomingMessage);
-
- org.apache.activemq.artemis.api.core.Message outbound = converter.inbound(encoded);
- Message outboudMessage = ((EncodedMessage) converter.outbound(outbound, outbound.getLongProperty("JMSXDeliveryCount").intValue())).decode();
-
- // Test that message details are equal
- assertEquals(incomingMessage.getAddress(), outboudMessage.getAddress());
- assertEquals(incomingMessage.getDeliveryCount(), outboudMessage.getDeliveryCount());
- assertEquals(incomingMessage.getCreationTime(), outboudMessage.getCreationTime());
- assertEquals(incomingMessage.getContentType(), outboudMessage.getContentType());
-
- // Test Message annotations
- ApplicationProperties incomingApplicationProperties = incomingMessage.getApplicationProperties();
- ApplicationProperties outgoingApplicationProperties = outboudMessage.getApplicationProperties();
-
- assertEquals(incomingApplicationProperties.getValue(), outgoingApplicationProperties.getValue());
-
- // Test Message properties
- MessageAnnotations incomingMessageAnnotations = incomingMessage.getMessageAnnotations();
- MessageAnnotations outgoingMessageAnnotations = outboudMessage.getMessageAnnotations();
-
- assertEquals(incomingMessageAnnotations.getValue(), outgoingMessageAnnotations.getValue());
-
- // Test that bodies are equal
- assertTrue(incomingMessage.getBody() instanceof AmqpValue);
- assertTrue(outboudMessage.getBody() instanceof AmqpValue);
-
- AmqpValue incomingBody = (AmqpValue) incomingMessage.getBody();
- AmqpValue outgoingBody = (AmqpValue) outboudMessage.getBody();
-
- assertTrue(incomingBody.getValue() instanceof String);
- assertTrue(outgoingBody.getValue() instanceof String);
-
- assertEquals(incomingBody.getValue(), outgoingBody.getValue());
- }
@Test
public void testBodyOnlyEncodeDecode() throws Exception {
@@ -128,8 +60,8 @@ public class MessageTransformationTest {
incomingMessage.setBody(new AmqpValue("String payload for AMQP message conversion performance testing."));
- org.apache.activemq.artemis.api.core.Message outbound = converter.inbound(new AMQPMessage(incomingMessage, null));
- Message outboudMessage = ((EncodedMessage) converter.outbound(outbound, 1)).decode();
+ ICoreMessage core = new AMQPMessage(incomingMessage).toCore();
+ Message outboudMessage = AMQPConverter.getInstance().fromCore(core).getProtonMessage();
assertNull(outboudMessage.getHeader());
assertNull(outboudMessage.getProperties());
@@ -143,8 +75,8 @@ public class MessageTransformationTest {
incomingMessage.setBody(new AmqpValue("String payload for AMQP message conversion performance testing."));
incomingMessage.setMessageId("ID:SomeQualifier:0:0:1");
- org.apache.activemq.artemis.api.core.Message outbound = converter.inbound(new AMQPMessage(incomingMessage, null));
- Message outboudMessage = ((EncodedMessage) converter.outbound(outbound, 1)).decode();
+ ICoreMessage core = new AMQPMessage(incomingMessage).toCore();
+ Message outboudMessage = AMQPConverter.getInstance().fromCore(core).getProtonMessage();
assertNull(outboudMessage.getHeader());
assertNotNull(outboudMessage.getProperties());
@@ -158,8 +90,8 @@ public class MessageTransformationTest {
incomingMessage.setBody(new AmqpValue("String payload for AMQP message conversion performance testing."));
incomingMessage.setDurable(true);
- org.apache.activemq.artemis.api.core.Message outbound = converter.inbound(new AMQPMessage(incomingMessage, null));
- Message outboudMessage = ((EncodedMessage) converter.outbound(outbound, 1)).decode();
+ ICoreMessage core = new AMQPMessage(incomingMessage).toCore();
+ Message outboudMessage = AMQPConverter.getInstance().fromCore(core).getProtonMessage();
assertNotNull(outboudMessage.getHeader());
assertNull(outboudMessage.getProperties());
@@ -172,8 +104,8 @@ public class MessageTransformationTest {
incomingMessage.setBody(new AmqpValue(new Boolean(true)));
- org.apache.activemq.artemis.api.core.Message outbound = converter.inbound(new AMQPMessage(incomingMessage, null));
- Message outboudMessage = ((EncodedMessage) converter.outbound(outbound, 1)).decode();
+ ICoreMessage core = new AMQPMessage(incomingMessage).toCore();
+ Message outboudMessage = AMQPConverter.getInstance().fromCore(core).getProtonMessage();
Section section = outboudMessage.getBody();
assertNotNull(section);
@@ -229,8 +161,8 @@ public class MessageTransformationTest {
message.setMessageAnnotations(new MessageAnnotations(messageAnnotations));
message.setBody(new AmqpValue("String payload for AMQP message conversion performance testing."));
- org.apache.activemq.artemis.api.core.Message outbound = converter.inbound(new AMQPMessage(message, null));
- Message outboudMessage = ((EncodedMessage) converter.outbound(outbound, 1)).decode();
+ ICoreMessage core = new AMQPMessage(message).toCore();
+ Message outboudMessage = AMQPConverter.getInstance().fromCore(core).getProtonMessage();
assertNotNull(outboudMessage.getHeader());
assertNotNull(outboudMessage.getProperties());
@@ -242,18 +174,4 @@ public class MessageTransformationTest {
assertEquals(9, outboudMessage.getApplicationProperties().getValue().size());
assertEquals(4, outboudMessage.getMessageAnnotations().getValue().size());
}
-
- private EncodedMessage encode(Message message) {
- ProtonJMessage amqp = (ProtonJMessage) message;
-
- ByteBuffer buffer = ByteBuffer.wrap(new byte[1024 * 4]);
- final DroppingWritableBuffer overflow = new DroppingWritableBuffer();
- int c = amqp.encode(new CompositeWritableBuffer(new WritableBuffer.ByteBufferWrapper(buffer), overflow));
- if (overflow.position() > 0) {
- buffer = ByteBuffer.wrap(new byte[1024 * 4 + overflow.position()]);
- c = amqp.encode(new WritableBuffer.ByteBufferWrapper(buffer));
- }
-
- return new EncodedMessage(1, buffer.array(), 0, c);
- }
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/message/AMQPMessageTest.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/message/AMQPMessageTest.java b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/message/AMQPMessageTest.java
index 4313eae..db40a8e 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/message/AMQPMessageTest.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/test/java/org/apache/activemq/artemis/protocol/amqp/message/AMQPMessageTest.java
@@ -52,7 +52,7 @@ public class AMQPMessageTest {
nettyBuffer.readBytes(bytes);
- AMQPMessage encode = new AMQPMessage(0, bytes, null);
+ AMQPMessage encode = new AMQPMessage(0, bytes);
Assert.assertEquals(7, encode.getHeader().getDeliveryCount().intValue());
Assert.assertEquals(true, encode.getHeader().getDurable());
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManager.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManager.java b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManager.java
index 1f435ff..f4cba64 100644
--- a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManager.java
+++ b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTProtocolManager.java
@@ -32,7 +32,6 @@ import org.apache.activemq.artemis.core.server.management.Notification;
import org.apache.activemq.artemis.core.server.management.NotificationListener;
import org.apache.activemq.artemis.spi.core.protocol.AbstractProtocolManager;
import org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry;
-import org.apache.activemq.artemis.spi.core.protocol.MessageConverter;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.spi.core.remoting.Acceptor;
@@ -132,11 +131,6 @@ class MQTTProtocolManager extends AbstractProtocolManager<MqttMessage, MQTTInter
}
@Override
- public MessageConverter getConverter() {
- return null;
- }
-
- @Override
public void handshake(NettyServerConnection connection, ActiveMQBuffer buffer) {
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
index e7b8c50..613fef3 100644
--- a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
+++ b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
@@ -24,6 +24,7 @@ import io.netty.handler.codec.mqtt.MqttMessageType;
import io.netty.handler.codec.mqtt.MqttPublishVariableHeader;
import io.netty.handler.codec.mqtt.MqttSubscribeMessage;
import io.netty.handler.codec.mqtt.MqttTopicSubscription;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.config.WildcardConfiguration;
@@ -91,7 +92,7 @@ public class MQTTUtil {
return MQTT_RETAIN_ADDRESS_PREFIX + MQTT_WILDCARD.convert(filter, wildcardConfiguration);
}
- private static Message createServerMessage(MQTTSession session,
+ private static ICoreMessage createServerMessage(MQTTSession session,
SimpleString address,
boolean retain,
int qos) {
@@ -111,7 +112,7 @@ public class MQTTUtil {
int qos,
ByteBuf payload) {
String coreAddress = convertMQTTAddressFilterToCore(topic, session.getWildcardConfiguration());
- Message message = createServerMessage(session, new SimpleString(coreAddress), retain, qos);
+ ICoreMessage message = createServerMessage(session, new SimpleString(coreAddress), retain, qos);
message.getBodyBuffer().writeBytes(payload, 0, payload.readableBytes());
return message;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireMessageConverter.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireMessageConverter.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireMessageConverter.java
index 550a63a..76e50ef 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireMessageConverter.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireMessageConverter.java
@@ -35,6 +35,7 @@ import java.util.zip.InflaterOutputStream;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.message.impl.CoreMessage;
import org.apache.activemq.artemis.core.protocol.openwire.amq.AMQConsumer;
@@ -68,7 +69,7 @@ import org.apache.activemq.util.MarshallingSupport;
import org.apache.activemq.wireformat.WireFormat;
import org.fusesource.hawtbuf.UTF8Buffer;
-public class OpenWireMessageConverter implements MessageConverter {
+public class OpenWireMessageConverter implements MessageConverter<OpenwireMessage> {
public static final String AMQ_PREFIX = "__HDR_";
public static final String AMQ_MSG_DLQ_DELIVERY_FAILURE_CAUSE_PROPERTY = AMQ_PREFIX + "dlqDeliveryFailureCause";
@@ -101,12 +102,22 @@ public class OpenWireMessageConverter implements MessageConverter {
}
@Override
+ public OpenwireMessage fromCore(ICoreMessage coreMessage) throws Exception {
+ return null;
+ }
+
+ @Override
+ public ICoreMessage toCore(OpenwireMessage pureMessage) throws Exception {
+ return null;
+ }
+
+ // @Override
public Object outbound(org.apache.activemq.artemis.api.core.Message message, int deliveryCount) {
// TODO: implement this
return null;
}
- @Override
+// @Override
public org.apache.activemq.artemis.api.core.Message inbound(Object message) throws Exception {
Message messageSend = (Message) message;
@@ -414,7 +425,7 @@ public class OpenWireMessageConverter implements MessageConverter {
}
public static MessageDispatch createMessageDispatch(MessageReference reference,
- org.apache.activemq.artemis.api.core.Message message,
+ ICoreMessage message,
AMQConsumer consumer) throws IOException, JMSException {
// TODO-now: use new Encode here
ActiveMQMessage amqMessage = toAMQMessage(reference, message, consumer.getMarshaller(), consumer.getOpenwireDestination());
@@ -433,7 +444,7 @@ public class OpenWireMessageConverter implements MessageConverter {
}
private static ActiveMQMessage toAMQMessage(MessageReference reference,
- org.apache.activemq.artemis.api.core.Message coreMessage,
+ ICoreMessage coreMessage,
WireFormat marshaller,
ActiveMQDestination actualDestination) throws IOException {
ActiveMQMessage amqMsg = null;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
index 5b62e3e..4292fe5 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
@@ -35,6 +35,7 @@ import org.apache.activemq.advisory.AdvisorySupport;
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.BaseInterceptor;
import org.apache.activemq.artemis.api.core.Interceptor;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ClusterTopologyListener;
import org.apache.activemq.artemis.api.core.client.TopologyMember;
@@ -44,12 +45,10 @@ import org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
import org.apache.activemq.artemis.core.server.cluster.ClusterManager;
import org.apache.activemq.artemis.reader.MessageUtil;
import org.apache.activemq.artemis.spi.core.protocol.ConnectionEntry;
-import org.apache.activemq.artemis.spi.core.protocol.MessageConverter;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManager;
import org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
@@ -236,11 +235,6 @@ public class OpenWireProtocolManager implements ProtocolManager<Interceptor>, Cl
}
@Override
- public MessageConverter getConverter() {
- return messageConverter;
- }
-
- @Override
public void removeHandler(String name) {
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenwireMessage.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenwireMessage.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenwireMessage.java
new file mode 100644
index 0000000..0b29114
--- /dev/null
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenwireMessage.java
@@ -0,0 +1,473 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.activemq.artemis.core.protocol.openwire;
+
+import java.util.Set;
+
+import io.netty.buffer.ByteBuf;
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.ActiveMQPropertyConversionException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
+import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RefCountMessageListener;
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.core.persistence.Persister;
+
+// TODO: Implement this
+public class OpenwireMessage implements Message {
+
+ @Override
+ public boolean containsProperty(SimpleString key) {
+ return false;
+ }
+
+ @Override
+ public void messageChanged() {
+
+ }
+
+ @Override
+ public Long getScheduledDeliveryTime() {
+ return null;
+ }
+
+ @Override
+ public RefCountMessageListener getContext() {
+ return null;
+ }
+
+ @Override
+ public Message setContext(RefCountMessageListener context) {
+ return null;
+ }
+
+ @Override
+ public Message setBuffer(ByteBuf buffer) {
+ return null;
+ }
+
+ @Override
+ public ByteBuf getBuffer() {
+ return null;
+ }
+
+ @Override
+ public Message copy() {
+ return null;
+ }
+
+ @Override
+ public Message copy(long newID) {
+ return null;
+ }
+
+ @Override
+ public long getMessageID() {
+ return 0;
+ }
+
+ @Override
+ public Message setMessageID(long id) {
+ return null;
+ }
+
+ @Override
+ public long getExpiration() {
+ return 0;
+ }
+
+ @Override
+ public Message setExpiration(long expiration) {
+ return null;
+ }
+
+ @Override
+ public Object getUserID() {
+ return null;
+ }
+
+ @Override
+ public Message setUserID(Object userID) {
+ return null;
+ }
+
+ @Override
+ public void copyHeadersAndProperties(Message msg) {
+
+ }
+
+ @Override
+ public boolean isDurable() {
+ return false;
+ }
+
+ @Override
+ public Message setDurable(boolean durable) {
+ return null;
+ }
+
+ @Override
+ public Persister<Message> getPersister() {
+ return null;
+ }
+
+ @Override
+ public String getAddress() {
+ return null;
+ }
+
+ @Override
+ public Message setAddress(String address) {
+ return null;
+ }
+
+ @Override
+ public SimpleString getAddressSimpleString() {
+ return null;
+ }
+
+ @Override
+ public Message setAddress(SimpleString address) {
+ return null;
+ }
+
+ @Override
+ public long getTimestamp() {
+ return 0;
+ }
+
+ @Override
+ public Message setTimestamp(long timestamp) {
+ return null;
+ }
+
+ @Override
+ public byte getPriority() {
+ return 0;
+ }
+
+ @Override
+ public Message setPriority(byte priority) {
+ return null;
+ }
+
+ @Override
+ public void receiveBuffer(ByteBuf buffer) {
+
+ }
+
+ @Override
+ public void sendBuffer(ByteBuf buffer, int deliveryCount) {
+
+ }
+
+ @Override
+ public int getPersistSize() {
+ return 0;
+ }
+
+ @Override
+ public void persist(ActiveMQBuffer targetRecord) {
+
+ }
+
+ @Override
+ public void reloadPersistence(ActiveMQBuffer record) {
+
+ }
+
+ @Override
+ public Message putBooleanProperty(String key, boolean value) {
+ return null;
+ }
+
+ @Override
+ public Message putByteProperty(String key, byte value) {
+ return null;
+ }
+
+ @Override
+ public Message putBytesProperty(String key, byte[] value) {
+ return null;
+ }
+
+ @Override
+ public Message putShortProperty(String key, short value) {
+ return null;
+ }
+
+ @Override
+ public Message putCharProperty(String key, char value) {
+ return null;
+ }
+
+ @Override
+ public Message putIntProperty(String key, int value) {
+ return null;
+ }
+
+ @Override
+ public Message putLongProperty(String key, long value) {
+ return null;
+ }
+
+ @Override
+ public Message putFloatProperty(String key, float value) {
+ return null;
+ }
+
+ @Override
+ public Message putDoubleProperty(String key, double value) {
+ return null;
+ }
+
+ @Override
+ public Message putBooleanProperty(SimpleString key, boolean value) {
+ return null;
+ }
+
+ @Override
+ public Message putByteProperty(SimpleString key, byte value) {
+ return null;
+ }
+
+ @Override
+ public Message putBytesProperty(SimpleString key, byte[] value) {
+ return null;
+ }
+
+ @Override
+ public Message putShortProperty(SimpleString key, short value) {
+ return null;
+ }
+
+ @Override
+ public Message putCharProperty(SimpleString key, char value) {
+ return null;
+ }
+
+ @Override
+ public Message putIntProperty(SimpleString key, int value) {
+ return null;
+ }
+
+ @Override
+ public Message putLongProperty(SimpleString key, long value) {
+ return null;
+ }
+
+ @Override
+ public Message putFloatProperty(SimpleString key, float value) {
+ return null;
+ }
+
+ @Override
+ public Message putDoubleProperty(SimpleString key, double value) {
+ return null;
+ }
+
+ @Override
+ public Message putStringProperty(String key, String value) {
+ return null;
+ }
+
+ @Override
+ public Message putObjectProperty(String key, Object value) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Message putObjectProperty(SimpleString key, Object value) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Object removeProperty(String key) {
+ return null;
+ }
+
+ @Override
+ public boolean containsProperty(String key) {
+ return false;
+ }
+
+ @Override
+ public Boolean getBooleanProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Byte getByteProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Double getDoubleProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Integer getIntProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Long getLongProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Object getObjectProperty(String key) {
+ return null;
+ }
+
+ @Override
+ public Short getShortProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Float getFloatProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public String getStringProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public SimpleString getSimpleStringProperty(String key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public byte[] getBytesProperty(String key) throws ActiveMQPropertyConversionException {
+ return new byte[0];
+ }
+
+ @Override
+ public Object removeProperty(SimpleString key) {
+ return null;
+ }
+
+ @Override
+ public Boolean getBooleanProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Byte getByteProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Double getDoubleProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Integer getIntProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Long getLongProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Object getObjectProperty(SimpleString key) {
+ return null;
+ }
+
+ @Override
+ public Short getShortProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public Float getFloatProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public String getStringProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public SimpleString getSimpleStringProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return null;
+ }
+
+ @Override
+ public byte[] getBytesProperty(SimpleString key) throws ActiveMQPropertyConversionException {
+ return new byte[0];
+ }
+
+ @Override
+ public Message putStringProperty(SimpleString key, SimpleString value) {
+ return null;
+ }
+
+ @Override
+ public int getEncodeSize() {
+ return 0;
+ }
+
+ @Override
+ public Set<SimpleString> getPropertyNames() {
+ return null;
+ }
+
+ @Override
+ public int getRefCount() {
+ return 0;
+ }
+
+ @Override
+ public int incrementRefCount() throws Exception {
+ return 0;
+ }
+
+ @Override
+ public int decrementRefCount() throws Exception {
+ return 0;
+ }
+
+ @Override
+ public int incrementDurableRefCount() {
+ return 0;
+ }
+
+ @Override
+ public int decrementDurableRefCount() {
+ return 0;
+ }
+
+ @Override
+ public ICoreMessage toCore() {
+ return null;
+ }
+
+ @Override
+ public int getMemoryEstimate() {
+ return 0;
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b557f2df/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
index 6f83c2d..3bdee8b 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/amq/AMQConsumer.java
@@ -27,14 +27,15 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.advisory.AdvisorySupport;
import org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException;
+import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl;
import org.apache.activemq.artemis.core.protocol.openwire.OpenWireMessageConverter;
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
import org.apache.activemq.artemis.core.server.MessageReference;
import org.apache.activemq.artemis.core.server.QueueQueryResult;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.core.server.ServerConsumer;
import org.apache.activemq.artemis.core.server.SlowConsumerDetectionListener;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
@@ -208,7 +209,7 @@ public class AMQConsumer {
}
- public int handleDeliver(MessageReference reference, Message message, int deliveryCount) {
+ public int handleDeliver(MessageReference reference, ICoreMessage message, int deliveryCount) {
MessageDispatch dispatch;
try {
if (messagePullHandler != null && !messagePullHandler.checkForcedConsumer(message)) {