[jboss-cvs] JBoss Messaging SVN: r3354 - in branches/Branch_JBMESSAGING-544: src/main/org/jboss/jms/server/endpoint and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 21 10:43:36 EST 2007
Author: jmesnil
Date: 2007-11-21 10:43:36 -0500 (Wed, 21 Nov 2007)
New Revision: 3354
Added:
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageRequestCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageResponseCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserResetMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/EmptyBodyPacketCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageRequest.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageResponse.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserResetMessage.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/JMSExceptionMessage.java
Modified:
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java
branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java
branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java
Log:
http://jira.jboss.org/jira/browse/JBMESSAGING-544: Replace client-server transport with NIO based transport
* added packets & codecs for browser enumeration
* added support for JMSException created on the server and propagated to the client (wrapped in a JMSExceptionMessage and rethrown in DelegateSupport.sendBlocking(AbstractPacket))
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/ClientBrowserDelegate.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -30,13 +30,14 @@
import org.jboss.jms.client.state.HierarchicalState;
import org.jboss.jms.delegate.BrowserDelegate;
import org.jboss.jms.message.JBossMessage;
-import org.jboss.jms.wireformat.BrowserHasNextMessageRequest;
import org.jboss.jms.wireformat.BrowserNextMessageBlockRequest;
-import org.jboss.jms.wireformat.BrowserNextMessageRequest;
-import org.jboss.jms.wireformat.BrowserResetRequest;
import org.jboss.jms.wireformat.CloseRequest;
import org.jboss.jms.wireformat.ClosingRequest;
import org.jboss.jms.wireformat.RequestSupport;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageRequest;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserResetMessage;
/**
* The client-side Browser delegate class.
@@ -85,6 +86,9 @@
client = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
getRemotingClient();
+
+ newClient = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
+ getNewRemotingClient();
}
public void setState(HierarchicalState state)
@@ -93,6 +97,9 @@
client = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
getRemotingClient();
+
+ newClient = ((ConnectionState)state.getParent().getParent()).getRemotingConnection().
+ getNewRemotingClient();
}
@@ -116,22 +123,23 @@
public void reset() throws JMSException
{
- RequestSupport req = new BrowserResetRequest(id, version);
- doInvoke(client, req);
+ sendBlocking(new BrowserResetMessage());
}
public boolean hasNextMessage() throws JMSException
{
- RequestSupport req = new BrowserHasNextMessageRequest(id, version);
-
- return ((Boolean)doInvoke(client, req)).booleanValue();
+ BrowserHasNextMessageResponse response = (BrowserHasNextMessageResponse) sendBlocking(new BrowserHasNextMessageRequest());
+ return response.hasNext();
+
+// RequestSupport req = new BrowserHasNextMessageRequest(id, version);
+//
+// return ((Boolean)doInvoke(client, req)).booleanValue();
}
public JBossMessage nextMessage() throws JMSException
{
- RequestSupport req = new BrowserNextMessageRequest(id, version);
-
- return (JBossMessage)doInvoke(client, req);
+ BrowserNextMessageResponse response = (BrowserNextMessageResponse) sendBlocking(new org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageRequest());
+ return response.getMessage();
}
public JBossMessage[] nextMessageBlock(int maxMessages) throws JMSException
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/client/delegate/DelegateSupport.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -36,6 +36,7 @@
import org.jboss.jms.wireformat.ResponseSupport;
import org.jboss.logging.Logger;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
import org.jboss.messaging.util.Streamable;
import org.jboss.remoting.CannotConnectException;
import org.jboss.remoting.Client;
@@ -171,18 +172,24 @@
{
assert newClient != null;
assert request != null;
-
+
request.setTargetID(id);
try
{
AbstractPacket response = (AbstractPacket) newClient.sendBlocking(request);
- return response;
+ if (response instanceof JMSExceptionMessage)
+ {
+ JMSExceptionMessage message = (JMSExceptionMessage) response;
+ throw message.getException();
+ } else {
+ return response;
+ }
} catch (Throwable t)
{
throw handleThrowable(t);
}
}
-
+
// Private --------------------------------------------------------------------------------------
private Object doInvoke(Client client, RequestSupport req, boolean oneWay) throws JMSException
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerBrowserEndpoint.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -21,6 +21,9 @@
*/
package org.jboss.jms.server.endpoint;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_HASNEXTMESSAGE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGE;
+
import java.util.ArrayList;
import java.util.Iterator;
@@ -28,6 +31,7 @@
import javax.jms.JMSException;
import javax.jms.Message;
+import org.apache.mina.common.IoSession;
import org.jboss.jms.delegate.BrowserEndpoint;
import org.jboss.jms.message.JBossMessage;
import org.jboss.jms.server.selector.Selector;
@@ -35,6 +39,14 @@
import org.jboss.logging.Logger;
import org.jboss.messaging.core.contract.Channel;
import org.jboss.messaging.core.contract.Filter;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
+import org.jboss.messaging.core.remoting.wireformat.NullPacket;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
import org.jboss.messaging.util.ExceptionUtil;
/**
@@ -233,6 +245,8 @@
Dispatcher.instance.unregisterTarget(id, this);
+ PacketDispatcher.server.unregister(id);
+
closed = true;
}
@@ -246,5 +260,46 @@
}
// Inner classes --------------------------------------------------------------------------------
+
+ class ServerBrowserEndpointHandler implements PacketHandler {
+ public String getID()
+ {
+ return id;
+ }
+
+ public void handle(AbstractPacket packet, IoSession session)
+ {
+ try
+ {
+ PacketType type = packet.getType();
+ if (type == REQ_BROWSER_HASNEXTMESSAGE)
+ {
+ BrowserHasNextMessageResponse response = new BrowserHasNextMessageResponse(hasNextMessage());
+ response.normalize(packet);
+ session.write(response);
+ } else if (type == REQ_BROWSER_NEXTMESSAGE)
+ {
+ JBossMessage message = nextMessage();
+ BrowserNextMessageResponse response = new BrowserNextMessageResponse(message);
+ response.normalize(packet);
+ session.write(response);
+ } else if (type == PacketType.MSG_BROWSER_RESET)
+ {
+ reset();
+
+ NullPacket response = new NullPacket();
+ response.normalize(packet);
+ session.write(response);
+ } else {
+ log.error("Unsupported packet for session: " + packet);
+ }
+ } catch (JMSException e)
+ {
+ JMSExceptionMessage message = new JMSExceptionMessage(e);
+ message.normalize(packet);
+ session.write(message);
+ }
+ }
+ }
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -112,6 +112,7 @@
import org.jboss.messaging.core.remoting.wireformat.CreateDestinationRequest;
import org.jboss.messaging.core.remoting.wireformat.CreateDestinationResponse;
import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
+import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
import org.jboss.messaging.core.remoting.wireformat.PacketType;
import org.jboss.messaging.core.remoting.wireformat.RecoverDeliveriesMessage;
@@ -2256,6 +2257,8 @@
Dispatcher.instance.registerTarget(browserID, advised);
+ PacketDispatcher.server.register(ep.new ServerBrowserEndpointHandler());
+
ClientBrowserDelegate stub = new ClientBrowserDelegate(browserID);
log.trace(this + " created and registered " + ep);
@@ -2544,8 +2547,9 @@
}
} catch (JMSException e)
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+ JMSExceptionMessage message = new JMSExceptionMessage(e);
+ message.normalize(packet);
+ session.write(message);
}
}
}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -26,6 +26,8 @@
import org.apache.mina.filter.codec.demux.MessageDecoderResult;
import org.apache.mina.filter.codec.demux.MessageEncoder;
import org.jboss.jms.destination.JBossDestination;
+import org.jboss.messaging.core.contract.Message;
+import org.jboss.messaging.core.impl.message.MessageFactory;
import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
import org.jboss.messaging.core.remoting.wireformat.PacketType;
@@ -277,6 +279,22 @@
ByteArrayInputStream bais = new ByteArrayInputStream(b);
return readDestination(new DataInputStream(bais));
}
+
+ protected static byte[] encode(Message message) throws Exception
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ message.write(new DataOutputStream(baos));
+ baos.flush();
+ return baos.toByteArray();
+ }
+
+ protected static Message decode(byte type, byte[] b) throws Exception
+ {
+ Message msg = MessageFactory.createMessage(type);
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ msg.read(new DataInputStream(bais));
+ return msg;
+ }
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageRequestCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_HASNEXTMESSAGE;
+
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageRequest;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class BrowserHasNextMessageRequestCodec extends EmptyBodyPacketCodec<BrowserHasNextMessageRequest>
+{
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserHasNextMessageRequestCodec()
+ {
+ super(REQ_BROWSER_HASNEXTMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // EmptyBodyPacketCodec overrides --------------------------------
+
+ @Override
+ protected BrowserHasNextMessageRequest newPacket()
+ {
+ return new BrowserHasNextMessageRequest();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageResponseCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserHasNextMessageResponseCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_HASNEXTMESSAGE;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageResponse;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class BrowserHasNextMessageResponseCodec extends
+ AbstractPacketCodec<BrowserHasNextMessageResponse>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserHasNextMessageResponseCodec()
+ {
+ super(RESP_BROWSER_HASNEXTMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session,
+ BrowserHasNextMessageResponse response, IoBuffer out) throws Exception
+ {
+ out.putInt(1); //body length
+ putBoolean(out, response.hasNext());
+ }
+
+ @Override
+ protected BrowserHasNextMessageResponse decodeBody(IoSession session,
+ IoBuffer in) throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ boolean hasNext = getBoolean(in);
+
+ return new BrowserHasNextMessageResponse(hasNext);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageRequestCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageRequestCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageRequestCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGE;
+
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageRequest;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class BrowserNextMessageRequestCodec extends EmptyBodyPacketCodec<BrowserNextMessageRequest>
+{
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserNextMessageRequestCodec()
+ {
+ super(REQ_BROWSER_NEXTMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // EmptyBodyPacketCodec overrides --------------------------------
+
+ @Override
+ protected BrowserNextMessageRequest newPacket()
+ {
+ return new BrowserNextMessageRequest();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageResponseCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageResponseCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageResponseCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,79 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_NEXTMESSAGE;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.jms.message.JBossMessage;
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageResponse;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ */
+public class BrowserNextMessageResponseCodec extends AbstractPacketCodec<BrowserNextMessageResponse>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserNextMessageResponseCodec()
+ {
+ super(RESP_BROWSER_NEXTMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, BrowserNextMessageResponse response,
+ IoBuffer out) throws Exception
+ {
+ JBossMessage message = response.getMessage();
+ byte[] encodedMsg = encode(response.getMessage());
+
+ int bodyLength = 1 + INT_LENGTH + encodedMsg.length;
+
+ out.putInt(bodyLength);
+ out.put(message.getType());
+ out.putInt(encodedMsg.length);
+ out.put(encodedMsg);
+ }
+
+ @Override
+ protected BrowserNextMessageResponse decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ byte type = in.get();
+ int msgLength = in.getInt();
+ byte[] encodedMsg = new byte[msgLength];
+ in.get(encodedMsg);
+ JBossMessage message = (JBossMessage) decode(type, encodedMsg);
+
+ return new BrowserNextMessageResponse(message);
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private ----------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserResetMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserResetMessageCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/BrowserResetMessageCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_BROWSER_RESET;
+
+import org.jboss.messaging.core.remoting.wireformat.BrowserResetMessage;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class BrowserResetMessageCodec extends EmptyBodyPacketCodec<BrowserResetMessage>
+{
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserResetMessageCodec()
+ {
+ super(MSG_BROWSER_RESET);
+ }
+
+ // Public --------------------------------------------------------
+
+ // EmptyBodyPacketCodec overrides --------------------------------
+
+ @Override
+ protected BrowserResetMessage newPacket()
+ {
+ return new BrowserResetMessage();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/DeliverMessageCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -8,15 +8,9 @@
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELIVERMESSAGE;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-
import org.apache.mina.common.IoBuffer;
import org.apache.mina.common.IoSession;
import org.jboss.messaging.core.contract.Message;
-import org.jboss.messaging.core.impl.message.MessageFactory;
import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
/**
@@ -91,21 +85,5 @@
// Private ----------------------------------------------------
- private static byte[] encode(Message message) throws Exception
- {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- message.write(new DataOutputStream(baos));
- baos.flush();
- return baos.toByteArray();
- }
-
- private static Message decode(byte type, byte[] b) throws Exception
- {
- Message msg = MessageFactory.createMessage(type);
- ByteArrayInputStream bais = new ByteArrayInputStream(b);
- msg.read(new DataInputStream(bais));
- return msg;
- }
-
// Inner classes -------------------------------------------------
}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/EmptyBodyPacketCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/EmptyBodyPacketCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/EmptyBodyPacketCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public abstract class EmptyBodyPacketCodec<P extends AbstractPacket> extends
+ AbstractPacketCodec<P>
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public EmptyBodyPacketCodec(PacketType type)
+ {
+ super(type);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, P packet,
+ IoBuffer out) throws Exception
+ {
+ // no body
+ out.putInt(0);
+ }
+
+ @Override
+ protected P decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ in.getInt(); // skip body length
+ return newPacket();
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ protected abstract P newPacket();
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,96 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.codec;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import javax.jms.JMSException;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
+import org.jboss.messaging.core.remoting.wireformat.PacketType;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class JMSExceptionMessageCodec extends
+ AbstractPacketCodec<JMSExceptionMessage>
+{
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public JMSExceptionMessageCodec()
+ {
+ super(PacketType.MSG_JMSEXCEPTION);
+ }
+
+ // Public --------------------------------------------------------
+
+ // AbstractPacketCodec overrides ---------------------------------
+
+ @Override
+ protected void encodeBody(IoSession session, JMSExceptionMessage message,
+ IoBuffer out) throws Exception
+ {
+ JMSException exception = message.getException();
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(exception);
+
+ byte[] encodedException = baos.toByteArray();
+
+ int bodyLength = INT_LENGTH + encodedException.length;
+
+ out.putInt(bodyLength);
+ out.putInt(encodedException.length);
+ out.put(encodedException);
+ }
+
+ @Override
+ protected JMSExceptionMessage decodeBody(IoSession session, IoBuffer in)
+ throws Exception
+ {
+ int bodyLength = in.getInt();
+ if (in.remaining() < bodyLength)
+ {
+ return null;
+ }
+
+ int encodedExceptionLength = in.getInt();
+ byte[] b = new byte[encodedExceptionLength];
+ in.get(b);
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(b);
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ JMSException exception = (JMSException) ois.readObject();
+
+ return new JMSExceptionMessage(exception);
+ }
+
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/PacketCodecFactory.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -10,6 +10,11 @@
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageRequest;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageRequest;
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserResetMessage;
import org.jboss.messaging.core.remoting.wireformat.CancelDeliveriesMessage;
import org.jboss.messaging.core.remoting.wireformat.CancelDeliveryMessage;
import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
@@ -31,6 +36,7 @@
import org.jboss.messaging.core.remoting.wireformat.GetClientIDResponse;
import org.jboss.messaging.core.remoting.wireformat.IDBlockRequest;
import org.jboss.messaging.core.remoting.wireformat.IDBlockResponse;
+import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
import org.jboss.messaging.core.remoting.wireformat.RecoverDeliveriesMessage;
import org.jboss.messaging.core.remoting.wireformat.SendMessage;
@@ -59,6 +65,9 @@
super.addMessageDecoder(NullPacketCodec.class);
super.addMessageEncoder(NullPacket.class, NullPacketCodec.class);
+ super.addMessageDecoder(JMSExceptionMessageCodec.class);
+ super.addMessageEncoder(JMSExceptionMessage.class, JMSExceptionMessageCodec.class);
+
// TextPacket are for testing purpose only!
super.addMessageDecoder(TextPacketCodec.class);
super.addMessageEncoder(TextPacket.class, TextPacketCodec.class);
@@ -181,8 +190,29 @@
super.addMessageDecoder(SendTransactionRequestCodec.class);
super.addMessageEncoder(SendTransactionMessage.class,
SendTransactionRequestCodec.class);
- }
+ super.addMessageDecoder(BrowserResetMessageCodec.class);
+ super.addMessageEncoder(BrowserResetMessage.class,
+ BrowserResetMessageCodec.class);
+
+ super.addMessageDecoder(BrowserHasNextMessageRequestCodec.class);
+ super.addMessageEncoder(BrowserHasNextMessageRequest.class,
+ BrowserHasNextMessageRequestCodec.class);
+
+ super.addMessageDecoder(BrowserHasNextMessageResponseCodec.class);
+ super.addMessageEncoder(BrowserHasNextMessageResponse.class,
+ BrowserHasNextMessageResponseCodec.class);
+
+ super.addMessageDecoder(BrowserNextMessageRequestCodec.class);
+ super.addMessageEncoder(BrowserNextMessageRequest.class,
+ BrowserNextMessageRequestCodec.class);
+
+ super.addMessageDecoder(BrowserNextMessageResponseCodec.class);
+ super.addMessageEncoder(BrowserNextMessageResponse.class,
+ BrowserNextMessageResponseCodec.class);
+
+}
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/codec/SendMessageCodec.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -8,16 +8,9 @@
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-
import org.apache.mina.common.IoBuffer;
import org.apache.mina.common.IoSession;
import org.jboss.jms.message.JBossMessage;
-import org.jboss.messaging.core.contract.Message;
-import org.jboss.messaging.core.impl.message.MessageFactory;
import org.jboss.messaging.core.remoting.wireformat.SendMessage;
/**
@@ -87,21 +80,5 @@
// Private ----------------------------------------------------
- private static byte[] encode(Message message) throws Exception
- {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- message.write(new DataOutputStream(baos));
- baos.flush();
- return baos.toByteArray();
- }
-
- private static Message decode(byte type, byte[] b) throws Exception
- {
- Message msg = MessageFactory.createMessage(type);
- ByteArrayInputStream bais = new ByteArrayInputStream(b);
- msg.read(new DataInputStream(bais));
- return msg;
- }
-
// Inner classes -------------------------------------------------
}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageRequest.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_HASNEXTMESSAGE;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class BrowserHasNextMessageRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserHasNextMessageRequest()
+ {
+ super(REQ_BROWSER_HASNEXTMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserHasNextMessageResponse.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_HASNEXTMESSAGE;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class BrowserHasNextMessageResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final boolean hasNext;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserHasNextMessageResponse(boolean hasNext)
+ {
+ super(RESP_BROWSER_HASNEXTMESSAGE);
+
+ this.hasNext = hasNext;
+ }
+
+ // Public --------------------------------------------------------
+
+ public boolean hasNext()
+ {
+ return hasNext;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", hasNext=" + hasNext + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageRequest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageRequest.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageRequest.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGE;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class BrowserNextMessageRequest extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserNextMessageRequest()
+ {
+ super(REQ_BROWSER_NEXTMESSAGE);
+ }
+
+ // Public --------------------------------------------------------
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageResponse.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageResponse.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserNextMessageResponse.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import org.jboss.jms.message.JBossMessage;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class BrowserNextMessageResponse extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final JBossMessage message;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserNextMessageResponse(JBossMessage message)
+ {
+ super(PacketType.RESP_BROWSER_NEXTMESSAGE);
+
+ assert message != null;
+
+ this.message = message;
+ }
+
+ // Public --------------------------------------------------------
+
+ public JBossMessage getMessage()
+ {
+ return message;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", message=" + message + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserResetMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserResetMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/BrowserResetMessage.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_BROWSER_RESET;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class BrowserResetMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public BrowserResetMessage()
+ {
+ super(MSG_BROWSER_RESET);
+ }
+
+ // Public --------------------------------------------------------
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Added: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/JMSExceptionMessage.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/JMSExceptionMessage.java (rev 0)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/JMSExceptionMessage.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat;
+
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_JMSEXCEPTION;
+
+import javax.jms.JMSException;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class JMSExceptionMessage extends AbstractPacket
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private final JMSException exception;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public JMSExceptionMessage(JMSException exception)
+ {
+ super(MSG_JMSEXCEPTION);
+
+ assert exception != null;
+
+ this.exception = exception;
+ }
+
+ // Public --------------------------------------------------------
+
+ public JMSException getException()
+ {
+ return exception;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getParentString() + ", exception= " + exception + "]";
+ }
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified: branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java
===================================================================
--- branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/src/main/org/jboss/messaging/core/remoting/wireformat/PacketType.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -15,47 +15,56 @@
{
// FIXME better choice of byte value...
- NULL ((byte) 1),
- TEXT ((byte) 3),
+ NULL ((byte) 1),
+ MSG_JMSEXCEPTION ((byte) 2),
+ TEXT ((byte) 3),
// Connection factory
- REQ_CREATECONNECTION ((byte) 4),
- RESP_CREATECONNECTION ((byte) 5),
+ REQ_CREATECONNECTION ((byte) 4),
+ RESP_CREATECONNECTION ((byte) 5),
// Connection
- REQ_IDBLOCK ((byte) 6),
- RESP_IDBLOCK ((byte) 7),
- REQ_CREATESESSION ((byte) 8),
- RESP_CREATESESSION ((byte) 9),
- MSG_STARTCONNECTION ((byte)10),
- MSG_STOPCONNECTION ((byte)11),
- MSG_SENDTRANSACTION ((byte)12),
- RESP_SENDTRANSACTION ((byte)13),
- REQ_GETCLIENTID ((byte)14),
- RESP_GETCLIENTID ((byte)15),
- MSG_SETCLIENTID ((byte)16),
+ REQ_IDBLOCK ((byte) 6),
+ RESP_IDBLOCK ((byte) 7),
+ REQ_CREATESESSION ((byte) 8),
+ RESP_CREATESESSION ((byte) 9),
+ MSG_STARTCONNECTION ((byte)10),
+ MSG_STOPCONNECTION ((byte)11),
+ MSG_SENDTRANSACTION ((byte)12),
+ RESP_SENDTRANSACTION ((byte)13),
+ REQ_GETCLIENTID ((byte)14),
+ RESP_GETCLIENTID ((byte)15),
+ MSG_SETCLIENTID ((byte)16),
// Session
- REQ_CREATECONSUMER ((byte)17),
- RESP_CREATECONSUMER ((byte)18),
- REQ_CREATEDESTINATION ((byte)21),
- RESP_CREATEDESTINATION ((byte)22),
- REQ_CREATEBROWSER ((byte)23),
- RESP_CREATEBROWSER ((byte)24),
- MSG_SENDMESSAGE ((byte)25),
- MSG_DELIVERMESSAGE ((byte)26),
- REQ_ACKDELIVERY ((byte)27),
- RESP_ACKDELIVERY ((byte)28),
- MSG_ACKDELIVERIES ((byte)29),
- RESP_ACKDELIVERIES ((byte)30),
- MSG_RECOVERDELIVERIES ((byte)31),
- MSG_CANCELDELIVERY ((byte)32),
- MSG_CANCELDELIVERIES ((byte)33),
+ REQ_CREATECONSUMER ((byte)17),
+ RESP_CREATECONSUMER ((byte)18),
+ REQ_CREATEDESTINATION ((byte)21),
+ RESP_CREATEDESTINATION ((byte)22),
+ REQ_CREATEBROWSER ((byte)23),
+ RESP_CREATEBROWSER ((byte)24),
+ MSG_SENDMESSAGE ((byte)25),
+ MSG_DELIVERMESSAGE ((byte)26),
+ REQ_ACKDELIVERY ((byte)27),
+ RESP_ACKDELIVERY ((byte)28),
+ MSG_ACKDELIVERIES ((byte)29),
+ RESP_ACKDELIVERIES ((byte)30),
+ MSG_RECOVERDELIVERIES ((byte)31),
+ MSG_CANCELDELIVERY ((byte)32),
+ MSG_CANCELDELIVERIES ((byte)33),
// Consumer
- MSG_CHANGERATE ((byte)34),
+ MSG_CHANGERATE ((byte)34),
+ // Browser
+ MSG_BROWSER_RESET ((byte)35),
+ REQ_BROWSER_HASNEXTMESSAGE ((byte)36),
+ RESP_BROWSER_HASNEXTMESSAGE ((byte)37),
+ REQ_BROWSER_NEXTMESSAGEBLOCK ((byte)38),
+ RESP_BROWSER_NEXTMESSAGEBLOCK ((byte)39),
+ REQ_BROWSER_NEXTMESSAGE ((byte)40),
+ RESP_BROWSER_NEXTMESSAGE ((byte)41),
// Misc
- REQ_CLOSING ((byte)35),
- RESP_CLOSING ((byte)36),
- MSG_CLOSE ((byte)37);
+ REQ_CLOSING ((byte)42),
+ RESP_CLOSING ((byte)43),
+ MSG_CLOSE ((byte)44);
- private byte type;
+ public final byte type;
PacketType(byte type)
{
Modified: branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java
===================================================================
--- branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java 2007-11-21 10:42:02 UTC (rev 3353)
+++ branches/Branch_JBMESSAGING-544/tests/src/org/jboss/test/messaging/core/remoting/wireformat/PacketTypeTest.java 2007-11-21 15:43:36 UTC (rev 3354)
@@ -8,11 +8,13 @@
import static java.lang.System.currentTimeMillis;
import static java.util.UUID.randomUUID;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_BROWSER_RESET;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CANCELDELIVERIES;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CANCELDELIVERY;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CHANGERATE;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELIVERMESSAGE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_JMSEXCEPTION;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_RECOVERDELIVERIES;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
@@ -21,6 +23,8 @@
import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STOPCONNECTION;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.NULL;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_ACKDELIVERY;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_HASNEXTMESSAGE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGE;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATEBROWSER;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
@@ -30,6 +34,8 @@
import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETCLIENTID;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_IDBLOCK;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_ACKDELIVERY;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_HASNEXTMESSAGE;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_NEXTMESSAGE;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CLOSING;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATEBROWSER;
import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONNECTION;
@@ -42,6 +48,9 @@
import java.util.ArrayList;
import java.util.List;
+import javax.jms.InvalidDestinationException;
+import javax.jms.JMSException;
+
import junit.framework.TestCase;
import org.apache.mina.common.IoBuffer;
@@ -65,6 +74,11 @@
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageRequest;
+import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageRequest;
+import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageResponse;
+import org.jboss.messaging.core.remoting.wireformat.BrowserResetMessage;
import org.jboss.messaging.core.remoting.wireformat.CancelDeliveriesMessage;
import org.jboss.messaging.core.remoting.wireformat.CancelDeliveryMessage;
import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
@@ -86,6 +100,7 @@
import org.jboss.messaging.core.remoting.wireformat.GetClientIDResponse;
import org.jboss.messaging.core.remoting.wireformat.IDBlockRequest;
import org.jboss.messaging.core.remoting.wireformat.IDBlockResponse;
+import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
import org.jboss.messaging.core.remoting.wireformat.PacketType;
import org.jboss.messaging.core.remoting.wireformat.RecoverDeliveriesMessage;
@@ -177,6 +192,22 @@
assertEquals(packet.getTargetID(), p.getTargetID());
}
+ public void testJMSExceptionMessage() throws Exception
+ {
+ JMSException e = new InvalidDestinationException(
+ "testJMSExceptionMessage");
+ JMSExceptionMessage message = new JMSExceptionMessage(e);
+
+ AbstractPacket decodedPacket = encodeAndDecode(message);
+
+ assertTrue(decodedPacket instanceof JMSExceptionMessage);
+ JMSExceptionMessage decodedMessage = (JMSExceptionMessage) decodedPacket;
+
+ assertEquals(MSG_JMSEXCEPTION, decodedMessage.getType());
+ assertEquals(message.getException().getMessage(), decodedMessage
+ .getException().getMessage());
+ }
+
public void testTextPacket() throws Exception
{
TextPacket packet = new TextPacket("testTextPacket");
@@ -347,11 +378,13 @@
assertEquals(request.getName(), decodedRequest.getName());
assertEquals(request.isQueue(), decodedRequest.isQueue());
}
-
+
public void testCreateDestinationResponseForQueue() throws Exception
{
- JBossDestination destination = new JBossQueue("testCreateQueueResponse", true);
- CreateDestinationResponse response = new CreateDestinationResponse(destination);
+ JBossDestination destination = new JBossQueue("testCreateQueueResponse",
+ true);
+ CreateDestinationResponse response = new CreateDestinationResponse(
+ destination);
AbstractPacket decodedPacket = encodeAndDecode(response);
@@ -362,11 +395,13 @@
assertTrue(decodedResponse.getDestination() instanceof JBossQueue);
assertEquals(response.getDestination(), decodedResponse.getDestination());
}
-
+
public void testCreateDestinationResponseForTopic() throws Exception
{
- JBossDestination destination = new JBossTopic("testCreateDestinationResponseForTopic");
- CreateDestinationResponse response = new CreateDestinationResponse(destination);
+ JBossDestination destination = new JBossTopic(
+ "testCreateDestinationResponseForTopic");
+ CreateDestinationResponse response = new CreateDestinationResponse(
+ destination);
AbstractPacket decodedPacket = encodeAndDecode(response);
@@ -672,6 +707,63 @@
assertEquals(response.getBrowserID(), decodedResponse.getBrowserID());
}
+ public void testBrowserResetMessage() throws Exception
+ {
+ BrowserResetMessage message = new BrowserResetMessage();
+
+ AbstractPacket decodedPacket = encodeAndDecode(message);
+
+ assertTrue(decodedPacket instanceof BrowserResetMessage);
+ assertEquals(MSG_BROWSER_RESET, decodedPacket.getType());
+ }
+
+ public void testBrowserHasNextMessageRequest() throws Exception
+ {
+ BrowserHasNextMessageRequest request = new BrowserHasNextMessageRequest();
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof BrowserHasNextMessageRequest);
+ assertEquals(REQ_BROWSER_HASNEXTMESSAGE, decodedPacket.getType());
+ }
+
+ public void testBrowserHasNextMessageResponse() throws Exception
+ {
+ BrowserHasNextMessageResponse response = new BrowserHasNextMessageResponse(false);
+
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof BrowserHasNextMessageResponse);
+
+ BrowserHasNextMessageResponse decodedResponse = (BrowserHasNextMessageResponse) decodedPacket;
+ assertEquals(RESP_BROWSER_HASNEXTMESSAGE, decodedResponse.getType());
+ assertEquals(response.hasNext(), decodedResponse.hasNext());
+ }
+
+ public void testBrowserNextMessageRequest() throws Exception
+ {
+ BrowserNextMessageRequest request = new BrowserNextMessageRequest();
+
+ AbstractPacket decodedPacket = encodeAndDecode(request);
+
+ assertTrue(decodedPacket instanceof BrowserNextMessageRequest);
+ assertEquals(REQ_BROWSER_NEXTMESSAGE, decodedPacket.getType());
+ }
+
+ public void testBrowserNextMessageResponse() throws Exception
+ {
+ JBossMessage msg = new JBossMessage(currentTimeMillis());
+ BrowserNextMessageResponse response = new BrowserNextMessageResponse(msg);
+
+ AbstractPacket decodedPacket = encodeAndDecode(response);
+
+ assertTrue(decodedPacket instanceof BrowserNextMessageResponse);
+ BrowserNextMessageResponse decodedResponse = (BrowserNextMessageResponse) decodedPacket;
+ assertEquals(RESP_BROWSER_NEXTMESSAGE, decodedResponse.getType());
+ assertEquals(response.getMessage().getMessageID(), decodedResponse
+ .getMessage().getMessageID());
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
More information about the jboss-cvs-commits
mailing list