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.jvm;
023:
024: import javax.jms.Destination;
025: import javax.jms.JMSException;
026: import javax.jms.Queue;
027: import javax.jms.TemporaryQueue;
028: import javax.jms.TemporaryTopic;
029: import javax.jms.Topic;
030: import javax.transaction.xa.Xid;
031:
032: import org.jboss.mq.AcknowledgementRequest;
033: import org.jboss.mq.ConnectionToken;
034: import org.jboss.mq.DurableSubscriptionID;
035: import org.jboss.mq.Recoverable;
036: import org.jboss.mq.SpyDestination;
037: import org.jboss.mq.SpyMessage;
038: import org.jboss.mq.TransactionRequest;
039: import org.jboss.mq.il.Invoker;
040: import org.jboss.mq.il.ServerIL;
041:
042: /**
043: * The JVM implementation of the ServerIL object
044: *
045: * @author Hiram Chirino (Cojonudo14@hotmail.com)
046: * @author Norbert Lataille (Norbert.Lataille@m4x.org)
047: * @author <a href="pra@tim.se">Peter Antman</a>
048: * @author <a href="adrian@jboss.org">Adrian Brock</a>
049: * @version $Revision: 57198 $
050: * @created August 16, 2001
051: */
052: public class JVMServerIL implements ServerIL, Recoverable {
053: //The server implementation
054: private final Invoker server;
055:
056: /**
057: * Constructor for the JVMServerIL object
058: *
059: * @param s Description of Parameter
060: */
061: public JVMServerIL(Invoker s) {
062: if (s == null)
063: throw new IllegalArgumentException(
064: "JMSServer must be non null in constructor");
065: server = s;
066: }
067:
068: public void setConnectionToken(ConnectionToken newConnectionToken) {
069: // We cannot try to cache the token since this IL is stateless
070: }
071:
072: public void setEnabled(ConnectionToken dc, boolean enabled)
073: throws Exception {
074: server.setEnabled(dc, enabled);
075: }
076:
077: public String getID() throws JMSException {
078: return server.getID();
079: }
080:
081: public TemporaryQueue getTemporaryQueue(ConnectionToken dc)
082: throws JMSException {
083: return server.getTemporaryQueue(dc);
084: }
085:
086: public TemporaryTopic getTemporaryTopic(ConnectionToken dc)
087: throws JMSException {
088: return server.getTemporaryTopic(dc);
089: }
090:
091: public ServerIL cloneServerIL() {
092: return this ;
093: }
094:
095: public void addMessage(ConnectionToken dc, SpyMessage val)
096: throws JMSException {
097: server.addMessage(dc, val.myClone());
098: }
099:
100: public Topic createTopic(ConnectionToken dc, String dest)
101: throws JMSException {
102: return server.createTopic(dc, dest);
103: }
104:
105: public Queue createQueue(ConnectionToken dc, String dest)
106: throws JMSException {
107: return server.createQueue(dc, dest);
108: }
109:
110: public void deleteTemporaryDestination(ConnectionToken dc,
111: SpyDestination dest) throws JMSException {
112: server.deleteTemporaryDestination(dc, dest);
113: }
114:
115: public void checkID(String ID) throws JMSException {
116: server.checkID(ID);
117: }
118:
119: public void connectionClosing(ConnectionToken dc)
120: throws JMSException {
121: server.connectionClosing(dc);
122: }
123:
124: public void acknowledge(ConnectionToken dc,
125: AcknowledgementRequest item) throws Exception {
126: server.acknowledge(dc, item);
127: }
128:
129: public SpyMessage[] browse(ConnectionToken dc, Destination dest,
130: String selector) throws Exception {
131: return server.browse(dc, dest, selector);
132: }
133:
134: public SpyMessage receive(ConnectionToken dc, int subscriberId,
135: long wait) throws Exception {
136: SpyMessage message = server.receive(dc, subscriberId, wait);
137: //copy message to avoid server side problems with persisted message if message is edited client side.
138: if (message != null)
139: message = message.myClone();
140: return message;
141: }
142:
143: public void unsubscribe(ConnectionToken dc, int subscriptionId)
144: throws Exception {
145: server.unsubscribe(dc, subscriptionId);
146: }
147:
148: public void destroySubscription(ConnectionToken dc,
149: DurableSubscriptionID id) throws Exception {
150: server.destroySubscription(dc, id);
151: }
152:
153: public String checkUser(String userName, String password)
154: throws JMSException {
155: return server.checkUser(userName, password);
156: }
157:
158: public String authenticate(String userName, String password)
159: throws JMSException {
160: return server.authenticate(userName, password);
161: }
162:
163: public void subscribe(ConnectionToken dc,
164: org.jboss.mq.Subscription s) throws Exception {
165: server.subscribe(dc, s.myClone());
166: }
167:
168: public void transact(org.jboss.mq.ConnectionToken dc,
169: TransactionRequest t) throws JMSException {
170: server.transact(dc, t);
171: }
172:
173: public void ping(org.jboss.mq.ConnectionToken dc, long clientTime)
174: throws JMSException {
175: server.ping(dc, clientTime);
176: }
177:
178: public Xid[] recover(ConnectionToken dc, int flags)
179: throws Exception {
180: if (server instanceof Recoverable) {
181: Recoverable recoverable = (Recoverable) server;
182: return recoverable.recover(dc, flags);
183: }
184: throw new IllegalStateException(
185: "Invoker does not implement recoverable " + server);
186: }
187: }
|