001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.mq.il;
023:
024: import javax.jms.Destination;
025: import javax.jms.Queue;
026: import javax.jms.TemporaryQueue;
027: import javax.jms.TemporaryTopic;
028: import javax.jms.Topic;
029:
030: import org.jboss.mq.AcknowledgementRequest;
031: import org.jboss.mq.ConnectionToken;
032: import org.jboss.mq.DurableSubscriptionID;
033: import org.jboss.mq.SpyDestination;
034: import org.jboss.mq.SpyMessage;
035: import org.jboss.mq.TransactionRequest;
036:
037: /**
038: * Defines the methods that can be called by a client on the server.
039: *
040: * @author <a href="Cojonudo14@hotmail.com">Hiram Chirino</a>
041: * @author <a href="Norbert.Lataille@m4x.org">Norbert Lataille</a>
042: * @author <a href="pra@tim.se">Peter Antman</a>
043: * @version $Revision: 57198 $
044: * @created August 16, 2001
045: */
046: public interface ServerIL {
047:
048: /**
049: * #Description of the Method
050: *
051: * @return Description of the Returned Value
052: * @exception Exception Description of Exception
053: */
054: public ServerIL cloneServerIL() throws Exception;
055:
056: /**
057: * @param newConnectionToken org.jboss.mq.ConnectionToken
058: * @exception java.lang.Exception The exception description.
059: */
060: void setConnectionToken(
061: org.jboss.mq.ConnectionToken newConnectionToken)
062: throws java.lang.Exception;
063:
064: /**
065: * Get a clientID from the server. It is up to the server side components
066: * to update the ConectionToken if this method returns normaly.
067: *
068: * @return an internally generated clientID.
069: * @exception Exception Description of Exception
070: */
071: public String getID() throws Exception;
072:
073: /**
074: * Gets the TemporaryTopic attribute of the ServerIL object
075: *
076: * @param dc Description of Parameter
077: * @return The TemporaryTopic value
078: * @exception Exception Description of Exception
079: */
080: public TemporaryTopic getTemporaryTopic(ConnectionToken dc)
081: throws Exception;
082:
083: /**
084: * Gets the TemporaryQueue attribute of the ServerIL object
085: *
086: * @param dc Description of Parameter
087: * @return The TemporaryQueue value
088: * @exception Exception Description of Exception
089: */
090: public TemporaryQueue getTemporaryQueue(ConnectionToken dc)
091: throws Exception;
092:
093: /**
094: * The client is closing the connection.
095: *
096: * @param dc Description of Parameter
097: * @exception Exception Description of Exception
098: */
099: public void connectionClosing(ConnectionToken dc) throws Exception;
100:
101: /**
102: * Check if clientID is a valid ID.
103: *
104: * This method should be called when the client tries to set its own
105: * clientID. It is up to the server side components
106: * to update the ConectionToken if this method returns normaly.
107: *
108: * @param ID a clientID set by the client.
109: * @exception Exception if the clientID was not vallid.
110: */
111: public void checkID(String ID) throws Exception;
112:
113: /**
114: * Adds a message to the destination specifyed in the message.
115: *
116: * @param dc The feature to be added to the Message attribute
117: * @param message The feature to be added to the Message attribute
118: * @exception Exception Description of Exception
119: */
120: public void addMessage(ConnectionToken dc, SpyMessage message)
121: throws Exception;
122:
123: /**
124: * #Description of the Method
125: *
126: * @param dc Description of Parameter
127: * @param dest Description of Parameter
128: * @return Description of the Returned Value
129: * @exception Exception Description of Exception
130: */
131: public Queue createQueue(ConnectionToken dc, String dest)
132: throws Exception;
133:
134: /**
135: * #Description of the Method
136: *
137: * @param dc Description of Parameter
138: * @param dest Description of Parameter
139: * @return Description of the Returned Value
140: * @exception Exception Description of Exception
141: */
142: public Topic createTopic(ConnectionToken dc, String dest)
143: throws Exception;
144:
145: /**
146: * #Description of the Method
147: *
148: * @param dc Description of Parameter
149: * @param dest Description of Parameter
150: * @exception Exception Description of Exception
151: */
152: public void deleteTemporaryDestination(ConnectionToken dc,
153: SpyDestination dest) throws Exception;
154:
155: /**
156: * #Description of the Method
157: *
158: * @param dc Description of Parameter
159: * @param t Description of Parameter
160: * @exception Exception Description of Exception
161: */
162: public void transact(ConnectionToken dc, TransactionRequest t)
163: throws Exception;
164:
165: /**
166: * #Description of the Method
167: *
168: * @param dc Description of Parameter
169: * @param item Description of Parameter
170: * @exception Exception Description of Exception
171: */
172: public void acknowledge(ConnectionToken dc,
173: AcknowledgementRequest item) throws Exception;
174:
175: /**
176: * #Description of the Method
177: *
178: * @param dc Description of Parameter
179: * @param dest Description of Parameter
180: * @param selector Description of Parameter
181: * @return Description of the Returned Value
182: * @exception Exception Description of Exception
183: */
184: public SpyMessage[] browse(ConnectionToken dc, Destination dest,
185: String selector) throws Exception;
186:
187: /**
188: * Get a message synchronously.
189: *
190: * @param dc Description of Parameter
191: * @param subscriberId Description of Parameter
192: * @param wait Description of Parameter
193: * @return Description of the Returned Value
194: * @exception Exception Description of Exception
195: */
196: public SpyMessage receive(ConnectionToken dc, int subscriberId,
197: long wait) throws Exception;
198:
199: /**
200: * Sets the Enabled attribute of the ServerIL object
201: *
202: * @param dc The new Enabled value
203: * @param enabled The new Enabled value
204: * @exception Exception Description of Exception
205: */
206: public void setEnabled(ConnectionToken dc, boolean enabled)
207: throws Exception;
208:
209: /**
210: * Remove a consumer. Is NOT the same as the topic session unsubscribe.
211: *
212: * @param dc Description of Parameter
213: * @param subscriptionId Description of Parameter
214: * @exception Exception Description of Exception
215: */
216: public void unsubscribe(ConnectionToken dc, int subscriptionId)
217: throws Exception;
218:
219: /**
220: * Unsubscribe from a durable subscription.
221: *
222: * @param id Description of Parameter
223: * @exception Exception Description of Exception
224: */
225: public void destroySubscription(ConnectionToken dc,
226: DurableSubscriptionID id) throws Exception;
227:
228: /**
229: * Get a clientID for a given user/password.
230: *
231: * May also be used for autentication if StateManager is used as
232: * authenticator.
233: *
234: * @param userName a valid user name that the StateManager knows about.
235: * @param password a password
236: * @return a preconfigured clientID or null.
237: * @exception Exception Description of Exception
238: */
239: public String checkUser(String userName, String password)
240: throws Exception;
241:
242: /**
243: * Authenticate the user.
244: *
245: * If using a securityManager the user will be autenticated by that.
246: *
247: * @param userName a username.
248: * @param password a password.
249: * @return a sessionid, valid only for the life of this connection.
250: * @exception Exception Description of Exception
251: */
252: public String authenticate(String userName, String password)
253: throws Exception;
254:
255: /**
256: * @param dc org.jboss.mq.ConnectionToken
257: * @param s org.jboss.mq.Subscription
258: * @exception java.lang.Exception The exception description.
259: */
260: void subscribe(org.jboss.mq.ConnectionToken dc,
261: org.jboss.mq.Subscription s) throws java.lang.Exception;
262:
263: /**
264: * Ping the server.
265: *
266: * @param dc Description of Parameter
267: * @param clientTime Description of Parameter
268: * @exception Exception Description of Exception
269: */
270: public void ping(ConnectionToken dc, long clientTime)
271: throws Exception;
272:
273: }
|