001/**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.activemq.ra;
018
019import javax.jms.Connection;
020import javax.jms.ConnectionConsumer;
021import javax.jms.ConnectionMetaData;
022import javax.jms.Destination;
023import javax.jms.ExceptionListener;
024import javax.jms.JMSException;
025import javax.jms.Queue;
026import javax.jms.QueueConnection;
027import javax.jms.QueueSession;
028import javax.jms.ServerSessionPool;
029import javax.jms.Session;
030import javax.jms.Topic;
031import javax.jms.TopicConnection;
032import javax.jms.TopicSession;
033
034import org.apache.activemq.ActiveMQConnectionMetaData;
035
036/**
037 * A {@link Connection} implementation which can be used with the ActiveMQ JCA
038 * Resource Adapter to publish messages using the same JMS session that is used to dispatch
039 * messages.
040 *
041 * 
042 */
043public class InboundConnectionProxy implements Connection, QueueConnection, TopicConnection {
044
045    public Session createSession(boolean transacted, int ackMode) throws JMSException {
046        // TODO we could decide to barf if someone passes in incompatible options
047        return new InboundSessionProxy();
048    }
049
050    public QueueSession createQueueSession(boolean transacted, int ackMode) throws JMSException {
051        // TODO we could decide to barf if someone passes in incompatible options
052        return new InboundSessionProxy();
053    }
054
055    public TopicSession createTopicSession(boolean transacted, int ackMode) throws JMSException {
056        // TODO we could decide to barf if someone passes in incompatible options
057        return new InboundSessionProxy();
058    }
059
060    public void start() throws JMSException {
061        // the JCA RA is in control of this
062    }
063
064    public void stop() throws JMSException {
065        // the JCA RA is in control of this
066    }
067
068    public void close() throws JMSException {
069        // the JCA RA is in control of this
070    }
071
072    public ConnectionMetaData getMetaData() throws JMSException {
073        return ActiveMQConnectionMetaData.INSTANCE;
074    }
075
076    public String getClientID() throws JMSException {
077        throw createNotSupported("getClientID()");
078    }
079
080    public void setClientID(String s) throws JMSException {
081        throw createNotSupported("setClient()");
082    }
083
084    public ExceptionListener getExceptionListener() throws JMSException {
085        throw createNotSupported("getExceptionListener()");
086    }
087
088    public void setExceptionListener(ExceptionListener exceptionListener) throws JMSException {
089        throw createNotSupported("setExceptionListener()");
090    }
091
092    public ConnectionConsumer createConnectionConsumer(Destination destination, String s, ServerSessionPool serverSessionPool, int i) throws JMSException {
093        throw createNotSupported("createConnectionConsumer()");
094    }
095
096    public ConnectionConsumer createDurableConnectionConsumer(Topic topic, String s, String s1, ServerSessionPool serverSessionPool, int i) throws JMSException {
097        throw createNotSupported("createDurableConnectionConsumer()");
098    }
099
100    public ConnectionConsumer createConnectionConsumer(Queue queue, String s, ServerSessionPool serverSessionPool, int i) throws JMSException {
101        throw createNotSupported("createConnectionConsumer()");
102    }
103
104    public ConnectionConsumer createConnectionConsumer(Topic topic, String s, ServerSessionPool serverSessionPool, int i) throws JMSException {
105        throw createNotSupported("createConnectionConsumer()");
106    }
107
108    protected JMSException createNotSupported(String text) {
109        return new JMSException("Operation: " + text + " is not supported for this proxy JCA ResourceAdapter provider");
110    }
111}