diff options
| author | Arnaud Simon <arnaudsimon@apache.org> | 2007-08-13 13:59:48 +0000 |
|---|---|---|
| committer | Arnaud Simon <arnaudsimon@apache.org> | 2007-08-13 13:59:48 +0000 |
| commit | 0a5d8524f72ee4389ffee2f34006cbffd331546f (patch) | |
| tree | 28ccff8b1a7ec232695666fb6280d321b0d3c00d /java/client/src | |
| parent | 25355aa8e20fd7490cf1b97c6436400bfa6afb68 (diff) | |
| download | qpid-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
Diffstat (limited to 'java/client/src')
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/MessageActor.java | 2 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/SessionImpl.java | 2 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/message/BytesMessageImpl.java | 20 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/message/MapMessageImpl.java | 21 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/message/MessageFactory.java | 53 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/message/MessageImpl.java | 48 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/message/ObjectMessageImpl.java | 26 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpidity/jms/message/QpidMessage.java | 26 | ||||
| -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.java | 21 |
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 |
