blob: de4b24f93c67b9376cc2e6fc80473c8f236e169b [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.ra;
import javax.jms.Connection;
import javax.jms.ConnectionConsumer;
import javax.jms.ConnectionMetaData;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueSession;
import javax.jms.ServerSessionPool;
import javax.jms.Session;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicSession;
import org.apache.activemq.ActiveMQConnectionMetaData;
/**
* A {@link Connection} implementation which can be used with the ActiveMQ JCA
* Resource Adapter to publish messages using the same JMS session that is used to dispatch
* messages.
*
*
*/
public class InboundConnectionProxy implements Connection, QueueConnection, TopicConnection {
public Session createSession(boolean transacted, int ackMode) throws JMSException {
// TODO we could decide to barf if someone passes in incompatible options
return new InboundSessionProxy();
}
public QueueSession createQueueSession(boolean transacted, int ackMode) throws JMSException {
// TODO we could decide to barf if someone passes in incompatible options
return new InboundSessionProxy();
}
public TopicSession createTopicSession(boolean transacted, int ackMode) throws JMSException {
// TODO we could decide to barf if someone passes in incompatible options
return new InboundSessionProxy();
}
public void start() throws JMSException {
// the JCA RA is in control of this
}
public void stop() throws JMSException {
// the JCA RA is in control of this
}
public void close() throws JMSException {
// the JCA RA is in control of this
}
public ConnectionMetaData getMetaData() throws JMSException {
return ActiveMQConnectionMetaData.INSTANCE;
}
public String getClientID() throws JMSException {
throw createNotSupported("getClientID()");
}
public void setClientID(String s) throws JMSException {
throw createNotSupported("setClient()");
}
public ExceptionListener getExceptionListener() throws JMSException {
throw createNotSupported("getExceptionListener()");
}
public void setExceptionListener(ExceptionListener exceptionListener) throws JMSException {
throw createNotSupported("setExceptionListener()");
}
public ConnectionConsumer createConnectionConsumer(Destination destination, String s, ServerSessionPool serverSessionPool, int i) throws JMSException {
throw createNotSupported("createConnectionConsumer()");
}
public ConnectionConsumer createDurableConnectionConsumer(Topic topic, String s, String s1, ServerSessionPool serverSessionPool, int i) throws JMSException {
throw createNotSupported("createDurableConnectionConsumer()");
}
public ConnectionConsumer createConnectionConsumer(Queue queue, String s, ServerSessionPool serverSessionPool, int i) throws JMSException {
throw createNotSupported("createConnectionConsumer()");
}
public ConnectionConsumer createConnectionConsumer(Topic topic, String s, ServerSessionPool serverSessionPool, int i) throws JMSException {
throw createNotSupported("createConnectionConsumer()");
}
protected JMSException createNotSupported(String text) {
return new JMSException("Operation: " + text + " is not supported for this proxy JCA ResourceAdapter provider");
}
/**
* Creates a <CODE>Session</CODE> object.
*
* @throws JMSException if the <CODE>Connection</CODE> object fails to
* create a session due to some internal error or lack of
* support for the specific transaction and acknowledgement
* mode.
* @since 2.0
*/
@Override
public Session createSession() throws JMSException {
throw new UnsupportedOperationException("createSession() is unsupported");
}
/**
* Creates a <CODE>Session</CODE> object.
*
* @param acknowledgeMode indicates whether the consumer or the client will
* acknowledge any messages it receives; ignored if the
* session is transacted. Legal values are
* <code>Session.AUTO_ACKNOWLEDGE</code>,
* <code>Session.CLIENT_ACKNOWLEDGE</code>, and
* <code>Session.DUPS_OK_ACKNOWLEDGE</code>.
* @return a newly created session
* @throws JMSException if the <CODE>Connection</CODE> object fails to
* create a session due to some internal error or lack of
* support for the specific transaction and acknowledgement
* mode.
* @see Session#AUTO_ACKNOWLEDGE
* @see Session#CLIENT_ACKNOWLEDGE
* @see Session#DUPS_OK_ACKNOWLEDGE
* @since 2.0
*/
@Override
public Session createSession(int sessionMode) throws JMSException {
throw new UnsupportedOperationException("createSession(int sessionMode) is unsupported");
}
/**
*
* @see javax.jms.ConnectionConsumer
* @since 2.0
*/
@Override
public ConnectionConsumer createSharedConnectionConsumer(Topic topic, String subscriptionName, String messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException {
throw new UnsupportedOperationException("createSharedConnectionConsumer() is not supported");
}
/**
*
* @see javax.jms.ConnectionConsumer
* @since 2.0
*/
@Override
public ConnectionConsumer createSharedDurableConnectionConsumer(Topic topic, String subscriptionName, String messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException {
throw new UnsupportedOperationException("createSharedConnectionConsumer() is not supported");
}
}