summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Simon <arnaudsimon@apache.org>2007-08-13 13:59:48 +0000
committerArnaud Simon <arnaudsimon@apache.org>2007-08-13 13:59:48 +0000
commit0a5d8524f72ee4389ffee2f34006cbffd331546f (patch)
tree28ccff8b1a7ec232695666fb6280d321b0d3c00d
parent25355aa8e20fd7490cf1b97c6436400bfa6afb68 (diff)
downloadqpid-python-0a5d8524f72ee4389ffee2f34006cbffd331546f.tar.gz
added constructors
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@565354 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/MessageActor.java2
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/SessionImpl.java2
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/BytesMessageImpl.java20
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/MapMessageImpl.java21
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/MessageFactory.java53
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/MessageImpl.java48
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/ObjectMessageImpl.java26
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/QpidMessage.java26
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/StreamMessageImpl.java (renamed from java/client/src/main/java/org/apache/qpidity/jms/message/StreamMessaeImpl.java)23
-rw-r--r--java/client/src/main/java/org/apache/qpidity/jms/message/TextMessageImpl.java21
10 files changed, 226 insertions, 16 deletions
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/MessageActor.java b/java/client/src/main/java/org/apache/qpidity/jms/MessageActor.java
index 6363108d45..fe3ead4155 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/MessageActor.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/MessageActor.java
@@ -157,7 +157,7 @@ public abstract class MessageActor
*
* @return This Actor's Session.
*/
- protected SessionImpl getSession()
+ public SessionImpl getSession()
{
return _session;
}
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/SessionImpl.java b/java/client/src/main/java/org/apache/qpidity/jms/SessionImpl.java
index 88def8a807..9b716d2b99 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/SessionImpl.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/SessionImpl.java
@@ -975,7 +975,7 @@ public class SessionImpl implements Session
*
* @throws JMSException If this method is called on a closed session.
*/
- protected void acknowledge() throws JMSException
+ public void acknowledge() throws JMSException
{
checkNotClosed();
if (getAcknowledgeMode() == Session.CLIENT_ACKNOWLEDGE)
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/BytesMessageImpl.java b/java/client/src/main/java/org/apache/qpidity/jms/message/BytesMessageImpl.java
index 9323a03803..efc1b40d2d 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/BytesMessageImpl.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/BytesMessageImpl.java
@@ -51,7 +51,27 @@ public class BytesMessageImpl extends MessageImpl implements BytesMessage
*/
protected DataOutputStream _dataOut = new DataOutputStream(_storedData);
+ //--- Constructor
+ /**
+ * Constructor used by SessionImpl.
+ */
+ public BytesMessageImpl()
+ {
+ super();
+ setMessageType(String.valueOf(MessageFactory.JAVAX_JMS_BYTESMESSAGE));
+ }
+
+ /**
+ * Constructor used by MessageFactory
+ *
+ * @param message The new qpid message.
+ */
+ protected BytesMessageImpl(org.apache.qpidity.api.Message message)
+ {
+ super(message);
+ }
+ //--- BytesMessage API
/**
* Gets the number of bytes of the message body when the message
* is in read-only mode.
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/MapMessageImpl.java b/java/client/src/main/java/org/apache/qpidity/jms/message/MapMessageImpl.java
index 24cd8a5a9a..d2493c1cc9 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/MapMessageImpl.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/MapMessageImpl.java
@@ -40,6 +40,27 @@ public class MapMessageImpl extends MessageImpl implements MapMessage
*/
private Map<String, Object> _map = new HashMap<String, Object>();
+ //--- Constructor
+ /**
+ * Constructor used by SessionImpl.
+ */
+ public MapMessageImpl()
+ {
+ super();
+ setMessageType(String.valueOf(MessageFactory.JAVAX_JMS_MAPMESSAGE));
+ }
+
+ /**
+ * Constructor used by MessageFactory
+ *
+ * @param message The new qpid message.
+ */
+ protected MapMessageImpl(org.apache.qpidity.api.Message message)
+ {
+ super(message);
+ }
+
+ //-- Map Message API
/**
* Indicates whether an key exists in this MapMessage.
*
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/MessageFactory.java b/java/client/src/main/java/org/apache/qpidity/jms/message/MessageFactory.java
index 8703afcaff..2f67beb995 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/MessageFactory.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/MessageFactory.java
@@ -17,10 +17,59 @@
*/
package org.apache.qpidity.jms.message;
+import org.apache.qpidity.QpidException;
+
/**
- *
- *
+ * A factory for JMS messages
*/
public class MessageFactory
{
+ /**
+ * JMS Message hierarchy.
+ */
+ public static final byte JAVAX_JMS_MESSAGE = 1;
+ public static final byte JAVAX_JMS_TEXTMESSAGE = 2;
+ public static final byte JAVAX_JMS_STREAMMESSAGE = 3;
+ public static final byte JAVAX_JMS_BYTESMESSAGE = 4;
+ public static final byte JAVAX_JMS_OBJECTMESSAGE = 5;
+ public static final byte JAVAX_JMS_MAPMESSAGE = 6;
+
+ /**
+ * Create a QpidMessage subclass according to the JMS message type.
+ *
+ * @param message The received qpidity messsage
+ * @return The newly craeted JMS message
+ * @throws QpidException If an appropriate Message class cannot be created.
+ */
+ public static QpidMessage getQpidMessage(org.apache.qpidity.api.Message message) throws QpidException
+ {
+ QpidMessage result = null;
+ byte type = Byte.valueOf(message.getMessageProperties().getType());
+ switch (type)
+ {
+ case JAVAX_JMS_MESSAGE:
+ result = new MessageImpl(message);
+ break;
+ case JAVAX_JMS_TEXTMESSAGE:
+ result = new TextMessageImpl(message);
+ break;
+ case JAVAX_JMS_STREAMMESSAGE:
+ result = new StreamMessageImpl(message);
+ break;
+ case JAVAX_JMS_BYTESMESSAGE:
+ result = new BytesMessageImpl(message);
+ break;
+ case JAVAX_JMS_OBJECTMESSAGE:
+ result = new ObjectMessageImpl(message);
+ break;
+ case JAVAX_JMS_MAPMESSAGE:
+ result = new MapMessageImpl(message);
+ break;
+ default:
+ throw new QpidException(
+ "Message type identifier is not mapped " + "to a Message class in the current factory: " + type,
+ null, null);
+ }
+ return result;
+ }
}
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/MessageImpl.java b/java/client/src/main/java/org/apache/qpidity/jms/message/MessageImpl.java
index 18b2fa571b..1d1ee0582d 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/MessageImpl.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/MessageImpl.java
@@ -18,6 +18,7 @@
package org.apache.qpidity.jms.message;
import org.apache.qpidity.jms.ExceptionHelper;
+import org.apache.qpidity.jms.MessageConsumerImpl;
import org.apache.qpidity.QpidException;
import javax.jms.*;
@@ -52,6 +53,31 @@ public class MessageImpl extends QpidMessage implements Message
*/
protected boolean _proertiesReadOnly = false;
+ /**
+ * The message consumer through which this message was received.
+ */
+ private MessageConsumerImpl _messageConsumer;
+
+ //--- Constructor
+ /**
+ * Constructor used by SessionImpl.
+ */
+ public MessageImpl()
+ {
+ super();
+ setMessageType(String.valueOf(MessageFactory.JAVAX_JMS_MESSAGE));
+ }
+
+ /**
+ * Constructor used by MessageFactory
+ *
+ * @param message The new qpid message.
+ */
+ protected MessageImpl(org.apache.qpidity.api.Message message)
+ {
+ super(message);
+ }
+
//---- javax.jms.Message interface
/**
* Get the message ID.
@@ -799,9 +825,18 @@ public class MessageImpl extends QpidMessage implements Message
super.setProperty(name, value);
}
+ /**
+ * Acknowledgment of a message automatically acknowledges all
+ * messages previously received by the session. Clients may
+ * individually acknowledge messages or they may choose to acknowledge
+ * messages in application defined groups (which is done by acknowledging
+ * the last received message in the group).
+ *
+ * @throws JMSException If this method is called on a closed session.
+ */
public void acknowledge() throws JMSException
{
- // TODO
+ _messageConsumer.getSession().acknowledge();
}
/**
@@ -863,4 +898,15 @@ public class MessageImpl extends QpidMessage implements Message
throw new MessageNotWriteableException("Cannot update message");
}
}
+
+ /**
+ * Set the MessageConsumerImpl through which this message was received.
+ * <p> This method is called after a message is received.
+ *
+ * @param messageConsumer the MessageConsumerImpl reference through which this message was received.
+ */
+ public void setMessageConsumer(MessageConsumerImpl messageConsumer)
+ {
+ _messageConsumer = messageConsumer;
+ }
}
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/ObjectMessageImpl.java b/java/client/src/main/java/org/apache/qpidity/jms/message/ObjectMessageImpl.java
index ab5ac21d78..d3653a0962 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/ObjectMessageImpl.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/ObjectMessageImpl.java
@@ -43,6 +43,26 @@ public class ObjectMessageImpl extends MessageImpl implements ObjectMessage
*/
private Serializable _object = null;
+ //--- Constructor
+ /**
+ * Constructor used by SessionImpl.
+ */
+ public ObjectMessageImpl()
+ {
+ super();
+ setMessageType(String.valueOf(MessageFactory.JAVAX_JMS_OBJECTMESSAGE));
+ }
+
+ /**
+ * Constructor used by MessageFactory
+ *
+ * @param message The new qpid message.
+ */
+ protected ObjectMessageImpl(org.apache.qpidity.api.Message message)
+ {
+ super(message);
+ }
+
//--- Interface ObjctMessage
/**
* Sets the serializable object containing this message's data.
@@ -140,15 +160,13 @@ public class ObjectMessageImpl extends MessageImpl implements ObjectMessage
catch (IOException ioe)
{
throw new QpidException(
- "Unexpected error during rebuild of message in afterReceive() - " +
- "The Object stored in the message was not a Serializable object.",
+ "Unexpected error during rebuild of message in afterReceive() - " + "The Object stored in the message was not a Serializable object.",
null, ioe);
}
catch (ClassNotFoundException clnfe)
{
throw new QpidException(
- "Unexpected error during rebuild of message in afterReceive() - " +
- "Could not find the required class in classpath.",
+ "Unexpected error during rebuild of message in afterReceive() - " + "Could not find the required class in classpath.",
null, clnfe);
}
}
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/QpidMessage.java b/java/client/src/main/java/org/apache/qpidity/jms/message/QpidMessage.java
index 3fe838d3bb..34d75e1eba 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/QpidMessage.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/QpidMessage.java
@@ -27,6 +27,7 @@ import javax.jms.Message;
import java.util.Map;
import java.util.Enumeration;
import java.util.Vector;
+import java.util.HashMap;
import java.nio.ByteBuffer;
@@ -51,13 +52,31 @@ public class QpidMessage
//--- This is required as AMQP delivery modes are different from the JMS ones
public static final short DELIVERY_MODE_PERSISTENT = 2;
public static final short DELIVERY_MODE_NON_PERSISTENT = 1;
- //--- This is the default message type
- public static final String MESSAGE_TYPE = "JMS Message";
+
+
+ //-- Constructors
+
+ /**
+ * Constructor used when JMS messages are created by SessionImpl.
+ */
+ protected QpidMessage()
+ {
+ // TODO we need an implementation class: _qpidityMessage
+ _messageProperties = new HashMap<String, Object>();
+ }
/**
- * The message properties
+ * Constructor used when a Qpid message is received
+ *
+ * @param message The received message
*/
+ protected QpidMessage(org.apache.qpidity.api.Message message)
+ {
+ _qpidityMessage = message;
+ _messageProperties = (Map<String, Object>) message.getMessageProperties().getApplicationHeaders();
+ }
+ //---- getters and setters.
/**
* Get the message ID.
*
@@ -178,7 +197,6 @@ public class QpidMessage
/**
* Get this message type.
- * The default value is {@link QpidMessage#MESSAGE_TYPE}
*
* @return This message type.
*/
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/StreamMessaeImpl.java b/java/client/src/main/java/org/apache/qpidity/jms/message/StreamMessageImpl.java
index 4fc64a9a23..94075a3c6f 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/StreamMessaeImpl.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/StreamMessageImpl.java
@@ -43,7 +43,7 @@ import java.io.EOFException;
* |byte[] | X
* |----------------------------------------------------------------------
*/
-public class StreamMessaeImpl extends BytesMessageImpl implements StreamMessage
+public class StreamMessageImpl extends BytesMessageImpl implements StreamMessage
{
/**
* Those statics represent incoming field types. The type of a field is
@@ -66,6 +66,27 @@ public class StreamMessaeImpl extends BytesMessageImpl implements StreamMessage
*/
private int _sizeOfByteArray = 0;
+ //--- Constructor
+ /**
+ * Constructor used by SessionImpl.
+ */
+ public StreamMessageImpl()
+ {
+ super();
+ setMessageType(String.valueOf(MessageFactory.JAVAX_JMS_STREAMMESSAGE));
+ }
+
+ /**
+ * Constructor used by MessageFactory
+ *
+ * @param message The new qpid message.
+ */
+ protected StreamMessageImpl(org.apache.qpidity.api.Message message)
+ {
+ super(message);
+ }
+
+ //--- Interface StreamMessage
/**
* Reads a boolean.
* <p/>
diff --git a/java/client/src/main/java/org/apache/qpidity/jms/message/TextMessageImpl.java b/java/client/src/main/java/org/apache/qpidity/jms/message/TextMessageImpl.java
index df04673fe1..f5228cb6d2 100644
--- a/java/client/src/main/java/org/apache/qpidity/jms/message/TextMessageImpl.java
+++ b/java/client/src/main/java/org/apache/qpidity/jms/message/TextMessageImpl.java
@@ -41,8 +41,25 @@ public class TextMessageImpl extends MessageImpl implements TextMessage
*/
private String _messageText;
- //-- constructor
- // todo
+ //--- Constructor
+ /**
+ * Constructor used by SessionImpl.
+ */
+ public TextMessageImpl()
+ {
+ super();
+ setMessageType(String.valueOf(MessageFactory.JAVAX_JMS_STREAMMESSAGE));
+ }
+
+ /**
+ * Constructor used by MessageFactory
+ *
+ * @param message The new qpid message.
+ */
+ protected TextMessageImpl(org.apache.qpidity.api.Message message)
+ {
+ super(message);
+ }
//--- interface TextMessage