KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > joram > shared > client > ConsumerMessages


1 /*
2  * JORAM: Java(TM) Open Reliable Asynchronous Messaging
3  * Copyright (C) 2001 - 2006 ScalAgent Distributed Technologies
4  * Copyright (C) 1996 - 2000 Dyade
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19  * USA.
20  *
21  * Initial developer(s): Frederic Maistre (INRIA)
22  * Contributor(s): ScalAgent Distributed Technologies
23  */

24 package org.objectweb.joram.shared.client;
25
26 import java.io.Externalizable JavaDoc;
27 import java.io.InputStream JavaDoc;
28 import java.io.OutputStream JavaDoc;
29 import java.io.IOException JavaDoc;
30
31 import java.util.Vector JavaDoc;
32
33 import org.objectweb.joram.shared.messages.Message;
34 import org.objectweb.joram.shared.stream.Streamable;
35 import org.objectweb.joram.shared.stream.StreamUtil;
36
37 /**
38  * A <code>ConsumerMessages</code> is used by a JMS proxy for sending messages
39  * to a consumer.
40  */

41 public final class ConsumerMessages extends AbstractJmsReply {
42   /** Wrapped messages. */
43   private Vector JavaDoc messages = null;
44
45   /** Returns the messages to deliver. */
46   public Vector JavaDoc getMessages() {
47     if (messages == null)
48       messages = new Vector JavaDoc();
49     return messages;
50   }
51
52   public void addMessage(Message msg) {
53     if (messages == null)
54       messages = new Vector JavaDoc();
55     messages.addElement(msg);
56   }
57
58   public int getMessageCount() {
59     if (messages == null)
60       return 0;
61     else
62       return messages.size();
63   }
64
65   /** Name of the subscription or the queue the messages come from. */
66   private String JavaDoc comingFrom = null;
67
68   /**
69    * Returns the name of the queue or the subscription the messages come
70    * from.
71    */

72   public String JavaDoc comesFrom() {
73     return comingFrom;
74   }
75
76   public void setComesFrom(String JavaDoc comingFrom) {
77     this.comingFrom = comingFrom;
78   }
79
80   /** <code>true</code> if the messages come from a queue. */
81   private boolean queueMode;
82
83   /** Returns <code>true</code> if the messages come from a queue. */
84   public boolean getQueueMode() {
85     return queueMode;
86   }
87
88   public void setQueueMode(boolean queueMode) {
89     this.queueMode = queueMode;
90   }
91
92   protected int getClassId() {
93     return CONSUMER_MESSAGES;
94   }
95
96   /**
97    * Constructs a <code>ConsumerMessages</code> instance.
98    *
99    * @param correlationId Reply identifier.
100    * @param message Message to wrap.
101    * @param comingFrom Name of the queue or the subscription the message
102    * come from.
103    * @param queueMode <code>true</code> if the message come from a queue.
104    */

105   public ConsumerMessages(int correlationId, Message message,
106                           String JavaDoc comingFrom, boolean queueMode) {
107     super(correlationId);
108     if (message != null) {
109       messages = new Vector JavaDoc();
110       messages.addElement(message);
111     }
112     this.comingFrom = comingFrom;
113     this.queueMode = queueMode;
114   }
115
116   /**
117    * Constructs a <code>ConsumerMessages</code> instance.
118    *
119    * @param correlationId Reply identifier.
120    * @param messages Messages to wrap.
121    * @param comingFrom Name of the queue or the subscription the messages
122    * comes from.
123    * @param queueMode <code>true</code> if the messages come from a queue.
124    */

125   public ConsumerMessages(int correlationId, Vector JavaDoc messages,
126                           String JavaDoc comingFrom, boolean queueMode) {
127     super(correlationId);
128     this.messages = messages;
129     this.comingFrom = comingFrom;
130     this.queueMode = queueMode;
131   }
132
133   /**
134    * Constructs an empty <code>ConsumerMessages</code> instance.
135    *
136    * @param correlationId Reply identifier.
137    * @param comingFrom Name of the queue or the subscription the reply
138    * comes from.
139    * @param queueMode <code>true</code> if it replies to a queue consumer.
140    */

141   public ConsumerMessages(int correlationId, String JavaDoc comingFrom,
142                           boolean queueMode) {
143     super(correlationId);
144     this.comingFrom = comingFrom;
145     this.queueMode = queueMode;
146   }
147
148   /**
149    * Constructs an empty <code>ConsumerMessages</code> instance.
150    */

151   public ConsumerMessages() {}
152
153   public void toString(StringBuffer JavaDoc strbuf) {
154     super.toString(strbuf);
155     strbuf.append(",messages=").append(messages);
156     strbuf.append(",comingFrom=").append(comingFrom);
157     strbuf.append(",queueMode=").append(queueMode);
158     strbuf.append(')');
159   }
160
161   /* ***** ***** ***** ***** *****
162    * Streamable interface
163    * ***** ***** ***** ***** ***** */

164
165   /**
166    * The object implements the writeTo method to write its contents to
167    * the output stream.
168    *
169    * @param os the stream to write the object to
170    */

171   public void writeTo(OutputStream JavaDoc os) throws IOException JavaDoc {
172     super.writeTo(os);
173     Message.writeVectorTo(messages, os);
174     StreamUtil.writeTo(comingFrom, os);
175     StreamUtil.writeTo(queueMode, os);
176   }
177   
178   /**
179    * The object implements the readFrom method to restore its contents from
180    * the input stream.
181    *
182    * @param is the stream to read data from in order to restore the object
183    */

184   public void readFrom(InputStream JavaDoc is) throws IOException JavaDoc {
185     super.readFrom(is);
186     messages = Message.readVectorFrom(is);
187     comingFrom = StreamUtil.readStringFrom(is);
188     queueMode = StreamUtil.readBooleanFrom(is);
189   }
190 }
191
Popular Tags