diff --git a/activemq-all/pom.xml b/activemq-all/pom.xml index 963b7b60e9..01630fa049 100644 --- a/activemq-all/pom.xml +++ b/activemq-all/pom.xml @@ -104,7 +104,7 @@ org.apache.activemq.protobuf:activemq-protobuf org.fusesource.hawtbuf:hawtbuf org.jasypt:jasypt - org.apache.geronimo.specs:geronimo-jms_1.1_spec + jakarta.jms:jakarta.jms-api org.apache.geronimo.specs:geronimo-jta_1.1_spec org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec org.apache.geronimo.specs:geronimo-annotation_1.0_spec @@ -319,9 +319,9 @@ true - org.apache.geronimo.specs - geronimo-jms_1.1_spec - 1.1.1 + jakarta.jms + jakarta.jms-api + 2.0.3 sources true diff --git a/activemq-broker/src/test/java/org/apache/activemq/ActiveMQJms2Test.java b/activemq-broker/src/test/java/org/apache/activemq/ActiveMQJms2Test.java new file mode 100644 index 0000000000..51e2614677 --- /dev/null +++ b/activemq-broker/src/test/java/org/apache/activemq/ActiveMQJms2Test.java @@ -0,0 +1,169 @@ +/** + * 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; + +import javax.jms.Connection; +import javax.jms.JMSException; +import javax.jms.MessageProducer; +import javax.jms.Session; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ActiveMQJms2Test { + + protected static ActiveMQConnectionFactory activemqConnectionFactory = null; + + protected Connection connection = null; + protected Session session = null; + protected MessageProducer messageProducer = null; + + @BeforeClass + public static void setUpClass() { + activemqConnectionFactory = new ActiveMQConnectionFactory("vm://localhost?marshal=false&broker.persistent=false"); + } + + @AfterClass + public static void tearDownClass() { + activemqConnectionFactory = null; + } + + @Before + public void setUp() throws JMSException { + connection = activemqConnectionFactory.createConnection(); + connection.start(); + + session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + + messageProducer = session.createProducer(session.createQueue("AMQ.JMS2.TEST")); + } + + @After + public void tearDown() { + if(messageProducer != null) { + try { messageProducer.close(); } catch (Exception e) { } finally { messageProducer = null; } + } + + if(session != null) { + try { session.close(); } catch (Exception e) { } finally { session = null; } + } + + if(connection != null) { + try { connection.close(); } catch (Exception e) { } finally { connection = null; } + } + } + + @Test(expected = UnsupportedOperationException.class) + public void testConnectionFactoryCreateContext() { + activemqConnectionFactory.createContext(); + } + + @Test(expected = UnsupportedOperationException.class) + public void testConnectionFactoryCreateContextSession() { + activemqConnectionFactory.createContext(Session.AUTO_ACKNOWLEDGE); + } + + @Test(expected = UnsupportedOperationException.class) + public void testConnectionFactoryCreateContextUserPass() { + activemqConnectionFactory.createContext("admin", "admin"); + } + + @Test(expected = UnsupportedOperationException.class) + public void testConnectionFactoryCreateContextUserPassSession() { + activemqConnectionFactory.createContext("admin", "admin", Session.AUTO_ACKNOWLEDGE); + } + + @Test(expected = UnsupportedOperationException.class) + public void testConnectionSharedConnectionConsumer() throws JMSException { + connection.createSharedConnectionConsumer(null, null, null, null, 10); + } + + @Test(expected = UnsupportedOperationException.class) + public void testConnectionSharedDurableConnectionConsumer() throws JMSException { + connection.createSharedDurableConnectionConsumer(null, null, null, null, 10); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSessionAckMode() throws JMSException { + connection.createSession(Session.AUTO_ACKNOWLEDGE); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSessionDurableConsumer() throws JMSException { + session.createDurableConsumer(null, null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSessionDurableConsumerSelectorNoLocal() throws JMSException { + session.createDurableConsumer(null, null, null, true); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSessionSharedConsumer() throws JMSException { + session.createSharedConsumer(null, null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSessionSharedConsumerSelector() throws JMSException { + session.createSharedConsumer(null, null, null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSessionSharedDurableConsumer() throws JMSException { + session.createSharedDurableConsumer(null, null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSessionSharedDurableConsumerSelector() throws JMSException { + session.createSharedDurableConsumer(null, null, null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testProducerDeliveryDelayGet() throws JMSException { + messageProducer.getDeliveryDelay(); + } + + @Test(expected = UnsupportedOperationException.class) + public void testProducerDeliveryDelaySet() throws JMSException { + messageProducer.setDeliveryDelay(1000l); + } + + @Test(expected = UnsupportedOperationException.class) + public void testProducerSendMessageCompletionListener() throws JMSException { + messageProducer.send(session.createQueue("AMQ.TEST"), null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testProducerSendMessageQoSParamsCompletionListener() throws JMSException { + messageProducer.send(null, 1, 4, 0l, null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testProducerSendDestinationMessageCompletionListener() throws JMSException { + messageProducer.send(session.createQueue("AMQ.TEST"), null, null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testProducerSendDestinationMessageQosParamsCompletionListener() throws JMSException { + messageProducer.send(session.createQueue("AMQ.TEST"), null, 1, 4, 0l, null); + } + +} diff --git a/activemq-client/pom.xml b/activemq-client/pom.xml index a6d81cd132..6b6932d663 100644 --- a/activemq-client/pom.xml +++ b/activemq-client/pom.xml @@ -43,8 +43,8 @@ slf4j-api - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.fusesource.hawtbuf @@ -58,12 +58,13 @@ geronimo-j2ee-management_1.1_spec - + commons-net commons-net true + javax.jmdns diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnection.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnection.java index 5d11fb6d08..eae362eb9a 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnection.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnection.java @@ -304,6 +304,44 @@ public class ActiveMQConnection implements Connection, TopicConnection, QueueCon return stats; } + /** + * Creates a Session object. + * + * @throws JMSException if the Connection 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 Session 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 + * Session.AUTO_ACKNOWLEDGE, + * Session.CLIENT_ACKNOWLEDGE, and + * Session.DUPS_OK_ACKNOWLEDGE. + * @return a newly created session + * @throws JMSException if the Connection 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"); + } + /** * Creates a Session object. * @@ -826,10 +864,32 @@ public class ActiveMQConnection implements Connection, TopicConnection, QueueCon return new ActiveMQConnectionConsumer(this, sessionPool, info); } - // Properties - // ------------------------------------------------------------------------- + /** + * + * @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"); + } + + // Properties + // ------------------------------------------------------------------------- + + /** * Returns true if this connection has been started * * @return true if this Connection is started diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java index 2a868ee7fc..461dbe1945 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java @@ -27,6 +27,7 @@ import java.util.concurrent.RejectedExecutionHandler; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.ExceptionListener; +import javax.jms.JMSContext; import javax.jms.JMSException; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; @@ -285,6 +286,38 @@ public class ActiveMQConnectionFactory extends JNDIBaseStorable implements Conne public TopicConnection createTopicConnection(String userName, String password) throws JMSException { return createActiveMQConnection(userName, password); } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext() { + throw new UnsupportedOperationException("createContext() is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password) { + throw new UnsupportedOperationException("createContext() is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password, int sessionMode) { + throw new UnsupportedOperationException("createContext() is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(int sessionMode) { + throw new UnsupportedOperationException("createContext() is not supported"); + } /** * @return the StatsImpl associated with this ConnectionFactory. diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducer.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducer.java index 2fec295e42..9fd24396e0 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducer.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducer.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; +import javax.jms.CompletionListener; import javax.jms.Destination; import javax.jms.IllegalStateException; import javax.jms.InvalidDestinationException; @@ -220,7 +221,43 @@ public class ActiveMQMessageProducer extends ActiveMQMessageProducerSupport impl */ @Override public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException { - this.send(destination, message, deliveryMode, priority, timeToLive, null); + this.send(destination, message, deliveryMode, priority, timeToLive, (AsyncCallback)null); + } + + /** + * + * @param message the message to send + * @param CompletionListener to callback + * @throws JMSException if the JMS provider fails to send the message due to + * some internal error. + * @throws UnsupportedOperationException if an invalid destination is + * specified. + * @throws InvalidDestinationException if a client uses this method with an + * invalid destination. + * @see javax.jms.Session#createProducer + * @since 2.0 + */ + @Override + public void send(Message message, CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Message, CompletionListener) is not supported"); + + } + + @Override + public void send(Message message, int deliveryMode, int priority, long timeToLive, + CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Message, deliveryMode, priority, timetoLive, CompletionListener) is not supported"); + } + + @Override + public void send(Destination destination, Message message, CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Destination, Message, CompletionListener) is not supported"); + } + + @Override + public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, + CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Destination, Message, deliveryMode, priority, timetoLive, CompletionListener) is not supported"); } public void send(Message message, AsyncCallback onComplete) throws JMSException { diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducerSupport.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducerSupport.java index 1f8ce41d6d..b7dd6cf701 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducerSupport.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageProducerSupport.java @@ -42,6 +42,31 @@ public abstract class ActiveMQMessageProducerSupport implements MessageProducer, disableMessageTimestamp = session.connection.isDisableTimeStampsByDefault(); } + /** + * Gets the delivery delay associated with this MessageProducer. + * + * @return this producer's DeliveryDely/ + * @throws JMSException if the JMS provider fails to close the producer due to + * some internal error. + * @since 2.0 + */ + @Override + public void setDeliveryDelay(long deliveryDelay) throws JMSException { + throw new UnsupportedOperationException("setDeliveryDelay() is not supported"); + } + + /** + * Gets the delivery delay value for this MessageProducer. + * + * @return the delivery delay for this messageProducer + * @throws javax.jms.JMSException if the JMS provider fails to determine if deliver delay is + * disabled due to some internal error. + */ + @Override + public long getDeliveryDelay() throws JMSException { + throw new UnsupportedOperationException("getDeliveryDelay() is not supported"); + } + /** * Sets whether message IDs are disabled. *

diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQQueueSession.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQQueueSession.java index 66170e5753..700317ad45 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQQueueSession.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQQueueSession.java @@ -104,6 +104,37 @@ public class ActiveMQQueueSession implements QueueSession { } return next.createConsumer(destination, messageSelector, noLocal); } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName) throws JMSException { + throw new IllegalStateException("Operation not supported by a QueueSession"); + } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector) throws JMSException { + throw new IllegalStateException("Operation not supported by a QueueSession"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name) throws JMSException { + throw new IllegalStateException("Operation not supported by a QueueSession"); + + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal) throws JMSException { + throw new IllegalStateException("Operation not supported by a QueueSession"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name) throws JMSException { + throw new IllegalStateException("Operation not supported by a QueueSession"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector) throws JMSException { + throw new IllegalStateException("Operation not supported by a QueueSession"); + } @Override public TopicSubscriber createDurableSubscriber(Topic topic, String name) throws JMSException { diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQSession.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQSession.java index 35bddf2852..2ba1fe193f 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQSession.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQSession.java @@ -1381,8 +1381,38 @@ public class ActiveMQSession implements Session, QueueSession, TopicSession, Sta } return new ActiveMQTopic(topicName); } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName) is not supported"); + } - /** + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName, messageSelector) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name, messageSelector, noLocal) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name, messageSelector) is not supported"); + } + + /** * Creates a durable subscriber to the specified topic. *

* If a client needs to receive all the messages published on a topic, diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQTopicSession.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQTopicSession.java index ea92a71a02..a6a8cd0028 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQTopicSession.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQTopicSession.java @@ -137,7 +137,38 @@ public class ActiveMQTopicSession implements TopicSession { return next.createConsumer(destination, messageSelector, noLocal); } - /** + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName) throws JMSException { + throw new IllegalStateException("Operation not supported by a TopicSession"); + } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector) throws JMSException { + throw new IllegalStateException("Operation not supported by a TopicSession"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name) throws JMSException { + throw new IllegalStateException("Operation not supported by a TopicSession"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal) throws JMSException { + throw new IllegalStateException("Operation not supported by a TopicSession"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name) throws JMSException { + throw new IllegalStateException("Operation not supported by a TopicSession"); + + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector) throws JMSException { + throw new IllegalStateException("Operation not supported by a TopicSession"); + } + + /** * @param topic * @param name * @return diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQXAConnectionFactory.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQXAConnectionFactory.java index c3836856a7..3a96b1efe3 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQXAConnectionFactory.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQXAConnectionFactory.java @@ -22,6 +22,7 @@ import java.util.Properties; import javax.jms.JMSException; import javax.jms.XAConnection; import javax.jms.XAConnectionFactory; +import javax.jms.XAJMSContext; import javax.jms.XAQueueConnection; import javax.jms.XAQueueConnectionFactory; import javax.jms.XATopicConnection; @@ -79,6 +80,16 @@ public class ActiveMQXAConnectionFactory extends ActiveMQConnectionFactory imple public XATopicConnection createXATopicConnection(String userName, String password) throws JMSException { return (XATopicConnection) createActiveMQConnection(userName, password); } + + @Override + public XAJMSContext createXAContext() { + throw new UnsupportedOperationException("createXAContext() is not supported"); + } + + @Override + public XAJMSContext createXAContext(String userName, String password) { + throw new UnsupportedOperationException("createXAContext(userName, password) is not supported"); + } protected ActiveMQConnection createActiveMQConnection(Transport transport, JMSStatsImpl stats) throws Exception { ActiveMQXAConnection connection = new ActiveMQXAConnection(transport, getClientIdGenerator(), getConnectionIdGenerator(), stats); diff --git a/activemq-client/src/main/java/org/apache/activemq/ActiveMQXASslConnectionFactory.java b/activemq-client/src/main/java/org/apache/activemq/ActiveMQXASslConnectionFactory.java index e6e5726aae..aa5fa6c8df 100644 --- a/activemq-client/src/main/java/org/apache/activemq/ActiveMQXASslConnectionFactory.java +++ b/activemq-client/src/main/java/org/apache/activemq/ActiveMQXASslConnectionFactory.java @@ -22,6 +22,7 @@ import java.util.Properties; import javax.jms.JMSException; import javax.jms.XAConnection; import javax.jms.XAConnectionFactory; +import javax.jms.XAJMSContext; import javax.jms.XAQueueConnection; import javax.jms.XAQueueConnectionFactory; import javax.jms.XATopicConnection; @@ -73,6 +74,16 @@ public class ActiveMQXASslConnectionFactory extends ActiveMQSslConnectionFactory return (XATopicConnection) createActiveMQConnection(userName, password); } + @Override + public XAJMSContext createXAContext() { + throw new UnsupportedOperationException("createXAContext() is not supported"); + } + + @Override + public XAJMSContext createXAContext(String userName, String password) { + throw new UnsupportedOperationException("createXAContext(userName, password) is not supported"); + } + @Override protected ActiveMQConnection createActiveMQConnection(Transport transport, JMSStatsImpl stats) throws Exception { ActiveMQXAConnection connection = new ActiveMQXAConnection(transport, getClientIdGenerator(), getConnectionIdGenerator(), stats); diff --git a/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java b/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java index f0dd802fc9..1dd28eebc9 100644 --- a/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java +++ b/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java @@ -784,4 +784,25 @@ public class ActiveMQMessage extends Message implements org.apache.activemq.Mess //which is already marshalled return true; } + + @Override + public long getJMSDeliveryTime() throws JMSException { + return deliveryTime; + } + + @Override + public void setJMSDeliveryTime(long deliveryTime) throws JMSException { + this.deliveryTime = deliveryTime; + } + + @Override + public T getBody(Class c) throws JMSException { + throw new UnsupportedOperationException("getBody(Class) is not supported"); + } + + @Override + public boolean isBodyAssignableTo(Class c) throws JMSException { + throw new UnsupportedOperationException("isBodyAssignableTo(Class) is not supported"); + } + } diff --git a/activemq-client/src/main/java/org/apache/activemq/command/Message.java b/activemq-client/src/main/java/org/apache/activemq/command/Message.java index 65b560d28a..44f80949d9 100644 --- a/activemq-client/src/main/java/org/apache/activemq/command/Message.java +++ b/activemq-client/src/main/java/org/apache/activemq/command/Message.java @@ -62,6 +62,7 @@ public abstract class Message extends BaseCommand implements MarshallAware, Mess protected ActiveMQDestination destination; protected TransactionId transactionId; + protected long deliveryTime; protected long expiration; protected long timestamp; protected long arrival; @@ -143,6 +144,7 @@ public abstract class Message extends BaseCommand implements MarshallAware, Mess copy.messageId = messageId != null ? messageId.copy() : null; copy.originalDestination = originalDestination; copy.originalTransactionId = originalTransactionId; + copy.deliveryTime = deliveryTime; copy.expiration = expiration; copy.timestamp = timestamp; copy.correlationId = correlationId; diff --git a/activemq-console/pom.xml b/activemq-console/pom.xml index b9498b827b..55726f8934 100644 --- a/activemq-console/pom.xml +++ b/activemq-console/pom.xml @@ -56,8 +56,8 @@ - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.commons diff --git a/activemq-jms-pool/pom.xml b/activemq-jms-pool/pom.xml index 7b4ca5f04d..1283cb5f4a 100644 --- a/activemq-jms-pool/pom.xml +++ b/activemq-jms-pool/pom.xml @@ -40,8 +40,8 @@ slf4j-api - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.components diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java index 038e13c67b..13de1af8dd 100644 --- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java +++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java @@ -162,6 +162,44 @@ public class PooledConnection implements TopicConnection, QueueConnection, Poole return (TopicSession) createSession(transacted, ackMode); } + /** + * Creates a Session object. + * + * @throws JMSException if the Connection 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 Session 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 + * Session.AUTO_ACKNOWLEDGE, + * Session.CLIENT_ACKNOWLEDGE, and + * Session.DUPS_OK_ACKNOWLEDGE. + * @return a newly created session + * @throws JMSException if the Connection 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"); + } + @Override public Session createSession(boolean transacted, int ackMode) throws JMSException { PooledSession result = (PooledSession) pool.createSession(transacted, ackMode); @@ -175,6 +213,28 @@ public class PooledConnection implements TopicConnection, QueueConnection, Poole result.addSessionEventListener(this); return result; } + + /** + * + * @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"); + } // Implementation methods // ------------------------------------------------------------------------- diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java index 11fbbbb328..264303791c 100644 --- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java +++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java @@ -23,6 +23,7 @@ import java.util.concurrent.atomic.AtomicReference; import javax.jms.Connection; import javax.jms.ConnectionFactory; +import javax.jms.JMSContext; import javax.jms.JMSException; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; @@ -271,6 +272,38 @@ public class PooledConnectionFactory implements ConnectionFactory, QueueConnecti return newPooledConnection(connection); } + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext() { + throw new UnsupportedOperationException("createContext() is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password) { + throw new UnsupportedOperationException("createContext(userName, password) is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password, int sessionMode) { + throw new UnsupportedOperationException("createContext(userName, password, sessionMode) is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(int sessionMode) { + throw new UnsupportedOperationException("createContext(sessionMode) is not supported"); + } + protected Connection newPooledConnection(ConnectionPool connection) { return new PooledConnection(connection); } diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledProducer.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledProducer.java index 175f74de95..38d9b7f50e 100644 --- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledProducer.java +++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledProducer.java @@ -16,6 +16,7 @@ */ package org.apache.activemq.jms.pool; +import javax.jms.CompletionListener; import javax.jms.Destination; import javax.jms.InvalidDestinationException; import javax.jms.JMSException; @@ -95,6 +96,68 @@ public class PooledProducer implements MessageProducer { messageProducer.send(destination, message, deliveryMode, priority, timeToLive); } } + + /** + * + * @param message the message to send + * @param CompletionListener to callback + * @throws JMSException if the JMS provider fails to send the message due to + * some internal error. + * @throws UnsupportedOperationException if an invalid destination is + * specified. + * @throws InvalidDestinationException if a client uses this method with an + * invalid destination. + * @see javax.jms.Session#createProducer + * @since 2.0 + */ + @Override + public void send(Message message, CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Message, CompletionListener) is not supported"); + + } + + @Override + public void send(Message message, int deliveryMode, int priority, long timeToLive, + CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Message, deliveryMode, priority, timetoLive, CompletionListener) is not supported"); + } + + @Override + public void send(Destination destination, Message message, CompletionListener completionListener) + throws JMSException { + throw new UnsupportedOperationException("send(Destination, Message, CompletionListener) is not supported"); + } + + @Override + public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, + CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Destination, Message, deliveryMode, priority, timetoLive, CompletionListener) is not supported"); + } + + /** + * Gets the delivery delay associated with this MessageProducer. + * + * @return this producer's DeliveryDely/ + * @throws JMSException if the JMS provider fails to close the producer due to + * some internal error. + * @since 2.0 + */ + @Override + public void setDeliveryDelay(long deliveryDelay) throws JMSException { + throw new UnsupportedOperationException("setDeliveryDelay() is not supported"); + } + + /** + * Gets the delivery delay value for this MessageProducer. + * + * @return the delivery delay for this messageProducer + * @throws javax.jms.JMSException if the JMS provider fails to determine if deliver delay is + * disabled due to some internal error. + */ + @Override + public long getDeliveryDelay() throws JMSException { + throw new UnsupportedOperationException("getDeliveryDelay() is not supported"); + } @Override public Destination getDestination() { diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java index 1e8fd23224..8e436e6434 100644 --- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java +++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledSession.java @@ -360,6 +360,36 @@ public class PooledSession implements Session, TopicSession, QueueSession, XASes public QueueReceiver createReceiver(Queue queue, String selector) throws JMSException { return addQueueReceiver(((QueueSession) getInternalSession()).createReceiver(queue, selector)); } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName) is not supported"); + } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName, messageSelector) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name, messageSelector, noLocal) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name, messageSelector) is not supported"); + } // Producer related methods // ------------------------------------------------------------------------- diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/XAConnectionPoolTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/XAConnectionPoolTest.java index a4ea122f24..f531ff4ee3 100644 --- a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/XAConnectionPoolTest.java +++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/XAConnectionPoolTest.java @@ -39,6 +39,7 @@ import javax.jms.TopicPublisher; import javax.jms.TopicSession; import javax.jms.XAConnection; import javax.jms.XAConnectionFactory; +import javax.jms.XAJMSContext; import javax.naming.spi.ObjectFactory; import javax.transaction.HeuristicMixedException; import javax.transaction.HeuristicRollbackException; @@ -419,6 +420,16 @@ public class XAConnectionPoolTest extends JmsPoolTestSupport { this.connectionFactory = connectionFactory; } + @Override + public XAJMSContext createXAContext() { + throw new UnsupportedOperationException("createXAContext() is not supported"); + } + + @Override + public XAJMSContext createXAContext(String userName, String password) { + throw new UnsupportedOperationException("createXAContext(userName, password) is not supported"); + } + @Override public XAConnection createXAConnection() throws JMSException { return connectionFactory.createXAConnection(); diff --git a/activemq-karaf-itest/pom.xml b/activemq-karaf-itest/pom.xml index a596858c1e..82af8d0ec5 100644 --- a/activemq-karaf-itest/pom.xml +++ b/activemq-karaf-itest/pom.xml @@ -34,6 +34,12 @@ org.apache.activemq activemq-client test + + + jakarta.jms + jakarta.jms-api + + org.apache.activemq diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java index d4f665111c..658ab40555 100644 --- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java +++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java @@ -37,7 +37,7 @@ public class ActiveMQBrokerNdCamelFeatureTest extends AbstractFeatureTest { public static Option[] configure() { return new Option[] // { - composite(configure("activemq", "activemq-camel")), + composite(configure("activemq", "camel-jms")), editConfigurationFilePut("etc/system.properties", "camel.version", camelVersion()), replaceConfigurationFile("etc/activemq.xml", new File(RESOURCE_BASE + "activemq-nd-camel.xml")), replaceConfigurationFile("etc/org.apache.activemq.server-default.cfg", new File(RESOURCE_BASE + "org.apache.activemq.server-default.cfg")) diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java index c41e397af7..afed638b1d 100644 --- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java +++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java @@ -50,7 +50,7 @@ public class ActiveMQBrokerNdExternalCamelFeatureTest extends AbstractFeatureTes public void test() throws Throwable { assertFeatureInstalled("activemq"); installAndAssertFeature("camel"); - installAndAssertFeature("activemq-camel"); + installAndAssertFeature("camel-jms"); assertBrokerStarted(); withinReason(new Runnable() { diff --git a/activemq-karaf/pom.xml b/activemq-karaf/pom.xml index 4c6d4156e2..e6b637309e 100644 --- a/activemq-karaf/pom.xml +++ b/activemq-karaf/pom.xml @@ -32,13 +32,17 @@ 1.1.4c_5 - 2.9 1.6.1_2 1.4.17_1 2.4.0 + + org.apache.geronimo.specs + geronimo-jms_2.0_spec + 1.0-alpha-2 + org.ops4j.pax.logging pax-logging-api @@ -97,14 +101,32 @@ org.apache.activemq activemq-log4j-appender + + + jakarta.jms + jakarta.jms-api + + org.apache.activemq activemq-console + + + jakarta.jms + jakarta.jms-api + + org.apache.activemq activemq-pool + + + jakarta.jms + jakarta.jms-api + + diff --git a/activemq-karaf/src/main/resources/features-core.xml b/activemq-karaf/src/main/resources/features-core.xml index feecb4ae23..28bd9b0309 100644 --- a/activemq-karaf/src/main/resources/features-core.xml +++ b/activemq-karaf/src/main/resources/features-core.xml @@ -32,7 +32,6 @@ mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/${jaxb-bundle-version} mvn:org.apache.commons/commons-pool2/${commons-pool2-version} mvn:commons-net/commons-net/${commons-net-version} - mvn:org.apache.zookeeper/zookeeper/${zookeeper-version} mvn:org.apache.activemq/activemq-osgi/${project.version} @@ -57,7 +56,6 @@ mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt-spring31/1.9.2_1 mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.stax-api-1.0/${servicemix.specs.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/${xpp3-bundle-version} - mvn:joda-time/joda-time/${jodatime-bundle-version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xstream/${xstream-bundle-version} mvn:org.apache.aries/org.apache.aries.util/${aries-version} mvn:org.apache.activemq/activeio-core/${activeio-version} diff --git a/activemq-osgi/pom.xml b/activemq-osgi/pom.xml index 9c3b0652d6..c042b4e2cc 100644 --- a/activemq-osgi/pom.xml +++ b/activemq-osgi/pom.xml @@ -473,9 +473,9 @@ true - org.apache.geronimo.specs - geronimo-jms_1.1_spec - 1.1.1 + jakarta.jms + jakarta.jms-api + 2.0.3 sources true diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionFactory.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionFactory.java index 4e30a374cd..9ffd85b40d 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionFactory.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionFactory.java @@ -20,6 +20,7 @@ import java.io.Serializable; import javax.jms.Connection; import javax.jms.ConnectionFactory; +import javax.jms.JMSContext; import javax.jms.JMSException; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; @@ -77,6 +78,38 @@ public class ActiveMQConnectionFactory implements ConnectionFactory, QueueConnec i.setPassword(password); return createConnection(i); } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext() { + throw new UnsupportedOperationException("createContext() is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password) { + throw new UnsupportedOperationException("createContext(userName, password) is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password, int sessionMode) { + throw new UnsupportedOperationException("createContext(userName, password, sessionMode) is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(int sessionMode) { + throw new UnsupportedOperationException("createContext(sessionMode) is not supported"); + } /** * @param connectionRequestInfo diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxy.java b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxy.java index 800e73a630..de4b24f93c 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxy.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxy.java @@ -108,4 +108,62 @@ public class InboundConnectionProxy implements Connection, QueueConnection, Topi protected JMSException createNotSupported(String text) { return new JMSException("Operation: " + text + " is not supported for this proxy JCA ResourceAdapter provider"); } + + /** + * Creates a Session object. + * + * @throws JMSException if the Connection 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 Session 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 + * Session.AUTO_ACKNOWLEDGE, + * Session.CLIENT_ACKNOWLEDGE, and + * Session.DUPS_OK_ACKNOWLEDGE. + * @return a newly created session + * @throws JMSException if the Connection 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"); + } } diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxyFactory.java b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxyFactory.java index 57119ae900..9472bce259 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxyFactory.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundConnectionProxyFactory.java @@ -18,6 +18,7 @@ package org.apache.activemq.ra; import javax.jms.Connection; import javax.jms.ConnectionFactory; +import javax.jms.JMSContext; import javax.jms.JMSException; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; @@ -56,4 +57,36 @@ public class InboundConnectionProxyFactory implements ConnectionFactory, QueueCo public TopicConnection createTopicConnection(String userName, String password) throws JMSException { return createTopicConnection(); } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext() { + throw new UnsupportedOperationException("createContext() is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password) { + throw new UnsupportedOperationException("createContext(userName, password) is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(String userName, String password, int sessionMode) { + throw new UnsupportedOperationException("createContext(userName, password, sessionMode) is not supported"); + } + + /** + * @return Returns the JMSContext. + */ + @Override + public JMSContext createContext(int sessionMode) { + throw new UnsupportedOperationException("createContext(sessionMode) is not supported"); + } } diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundMessageProducerProxy.java b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundMessageProducerProxy.java index 3ed5ef8e6e..7c42f82a3f 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundMessageProducerProxy.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundMessageProducerProxy.java @@ -16,7 +16,9 @@ */ package org.apache.activemq.ra; +import javax.jms.CompletionListener; import javax.jms.Destination; +import javax.jms.InvalidDestinationException; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageProducer; @@ -159,4 +161,63 @@ public class InboundMessageProducerProxy implements MessageProducer, QueueSender public void publish(Topic arg0, Message arg1, int arg2, int arg3, long arg4) throws JMSException { messageProducer.send(arg0, arg1, arg2, arg3, arg4); } + + /** + * + * @param message the message to send + * @param CompletionListener to callback + * @throws JMSException if the JMS provider fails to send the message due to + * some internal error. + * @throws UnsupportedOperationException if an invalid destination is + * specified. + * @throws InvalidDestinationException if a client uses this method with an + * invalid destination. + * @see javax.jms.Session#createProducer + * @since 2.0 + */ + @Override + public void send(Message message, CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Message, CompletionListener) is not supported"); + + } + + @Override + public void send(Message message, int deliveryMode, int priority, long timeToLive, CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Message, deliveryMode, priority, timetoLive, CompletionListener) is not supported"); + } + + @Override + public void send(Destination destination, Message message, CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Destination, Message, CompletionListener) is not supported"); + } + + @Override + public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, CompletionListener completionListener) throws JMSException { + throw new UnsupportedOperationException("send(Destination, Message, deliveryMode, priority, timetoLive, CompletionListener) is not supported"); + } + + /** + * Gets the delivery delay associated with this MessageProducer. + * + * @return this producer's DeliveryDely/ + * @throws JMSException if the JMS provider fails to close the producer due to + * some internal error. + * @since 2.0 + */ + @Override + public void setDeliveryDelay(long deliveryDelay) throws JMSException { + throw new UnsupportedOperationException("setDeliveryDelay() is not supported"); + } + + /** + * Gets the delivery delay value for this MessageProducer. + * + * @return the delivery delay for this messageProducer + * @throws javax.jms.JMSException if the JMS provider fails to determine if deliver delay is + * disabled due to some internal error. + */ + @Override + public long getDeliveryDelay() throws JMSException { + throw new UnsupportedOperationException("getDeliveryDelay() is not supported"); + } } diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundSessionProxy.java b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundSessionProxy.java index ae9d84830e..93ea988b66 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/InboundSessionProxy.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/InboundSessionProxy.java @@ -237,6 +237,36 @@ public class InboundSessionProxy implements Session, QueueSession, TopicSession return getTopicSession().createPublisher(topic); } + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName) is not supported"); + } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName, messageSelector) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name, messageSelector, noLocal) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name, messageSelector) is not supported"); + } + public String toString() { try { return "InboundSessionProxy { " + getSession() + " }"; diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java index d18260a0a2..c3b3c883e8 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedConnectionProxy.java @@ -290,4 +290,62 @@ public class ManagedConnectionProxy implements Connection, QueueConnection, Topi } } + /** + * Creates a Session object. + * + * @throws JMSException if the Connection 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 Session 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 + * Session.AUTO_ACKNOWLEDGE, + * Session.CLIENT_ACKNOWLEDGE, and + * Session.DUPS_OK_ACKNOWLEDGE. + * @return a newly created session + * @throws JMSException if the Connection 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"); + } + } diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedSessionProxy.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedSessionProxy.java index a71e48a41e..6d76a4780c 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedSessionProxy.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ManagedSessionProxy.java @@ -406,6 +406,36 @@ public class ManagedSessionProxy implements Session, QueueSession, TopicSession throw new RuntimeException("Operation not supported."); } + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName) is not supported"); + } + + @Override + public MessageConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedConsumer(Topic, sharedSubscriptionName, messageSelector) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal) throws JMSException { + throw new UnsupportedOperationException("createDurableConsumer(Topic, name, messageSelector, noLocal) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name) is not supported"); + } + + @Override + public MessageConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector) throws JMSException { + throw new UnsupportedOperationException("createSharedDurableConsumer(Topic, name, messageSelector) is not supported"); + } + public String toString() { return "ManagedSessionProxy { " + session + " }"; } diff --git a/activemq-rar/pom.xml b/activemq-rar/pom.xml index 8357ad10e8..98bc70ed8f 100644 --- a/activemq-rar/pom.xml +++ b/activemq-rar/pom.xml @@ -38,8 +38,8 @@ activemq-spring - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs @@ -164,8 +164,8 @@ activemq-ra - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs diff --git a/activemq-tooling/activemq-maven-plugin/pom.xml b/activemq-tooling/activemq-maven-plugin/pom.xml index 4cf6d308d2..a17c6b665e 100644 --- a/activemq-tooling/activemq-maven-plugin/pom.xml +++ b/activemq-tooling/activemq-maven-plugin/pom.xml @@ -55,8 +55,8 @@ derbynet - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs diff --git a/activemq-tooling/activemq-memtest-maven-plugin/pom.xml b/activemq-tooling/activemq-memtest-maven-plugin/pom.xml index 06296c9f03..e52472b6d3 100644 --- a/activemq-tooling/activemq-memtest-maven-plugin/pom.xml +++ b/activemq-tooling/activemq-memtest-maven-plugin/pom.xml @@ -56,8 +56,8 @@ derbynet - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs diff --git a/activemq-tooling/activemq-perf-maven-plugin/pom.xml b/activemq-tooling/activemq-perf-maven-plugin/pom.xml index 398bf1581a..ca7197ff39 100644 --- a/activemq-tooling/activemq-perf-maven-plugin/pom.xml +++ b/activemq-tooling/activemq-perf-maven-plugin/pom.xml @@ -59,8 +59,8 @@ derbynet - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs diff --git a/activemq-unit-tests/pom.xml b/activemq-unit-tests/pom.xml index f73adfc751..2db07afef9 100644 --- a/activemq-unit-tests/pom.xml +++ b/activemq-unit-tests/pom.xml @@ -67,8 +67,8 @@ activemq-runtime-config - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.slf4j diff --git a/activemq-web-console/pom.xml b/activemq-web-console/pom.xml index 2b04dd34fc..ce3be8ea55 100644 --- a/activemq-web-console/pom.xml +++ b/activemq-web-console/pom.xml @@ -186,8 +186,8 @@ - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs diff --git a/activemq-web-demo/pom.xml b/activemq-web-demo/pom.xml index 732e81fa9b..d4e7847307 100644 --- a/activemq-web-demo/pom.xml +++ b/activemq-web-demo/pom.xml @@ -142,8 +142,8 @@ - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs diff --git a/assembly/pom.xml b/assembly/pom.xml index 9724e715e0..9d328502ff 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -254,8 +254,8 @@ log4j - org.apache.geronimo.specs - geronimo-jms_1.1_spec + jakarta.jms + jakarta.jms-api org.apache.geronimo.specs diff --git a/assembly/src/main/descriptors/common-bin.xml b/assembly/src/main/descriptors/common-bin.xml index 57b6d92790..ce02af96ca 100644 --- a/assembly/src/main/descriptors/common-bin.xml +++ b/assembly/src/main/descriptors/common-bin.xml @@ -142,7 +142,7 @@ ${pom.groupId}:activemq-jaas org.apache.activemq.protobuf:activemq-protobuf org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec - org.apache.geronimo.specs:geronimo-jms_1.1_spec + jakarta.jms:jakarta.jms-api org.apache.geronimo.specs:geronimo-jta_1.1_spec ${pom.groupId}:activemq-web org.fusesource.hawtbuf:hawtbuf diff --git a/assembly/src/release/examples/amqp/java/pom.xml b/assembly/src/release/examples/amqp/java/pom.xml index 955f71566f..d257ab3e7a 100644 --- a/assembly/src/release/examples/amqp/java/pom.xml +++ b/assembly/src/release/examples/amqp/java/pom.xml @@ -29,9 +29,9 @@ - org.apache.geronimo.specs - geronimo-jms_1.1_spec - 1.1 + jakarta.jms + jakarta.jms-api + 2.0.3 org.apache.qpid diff --git a/assembly/src/release/examples/openwire/advanced-scenarios/pom.xml b/assembly/src/release/examples/openwire/advanced-scenarios/pom.xml index 5e9c8e2325..a53d815b9b 100644 --- a/assembly/src/release/examples/openwire/advanced-scenarios/pom.xml +++ b/assembly/src/release/examples/openwire/advanced-scenarios/pom.xml @@ -41,11 +41,10 @@ ActiveMQ OpenWire Java Examples - - org.apache.geronimo.specs - geronimo-jms_1.1_spec - 1.1 + jakarta.jms + jakarta.jms-api + 2.0.3 org.apache.activemq diff --git a/assembly/src/release/examples/openwire/java/pom.xml b/assembly/src/release/examples/openwire/java/pom.xml index a624592a16..58e84d89a9 100644 --- a/assembly/src/release/examples/openwire/java/pom.xml +++ b/assembly/src/release/examples/openwire/java/pom.xml @@ -28,9 +28,9 @@ - org.apache.geronimo.specs - geronimo-jms_1.1_spec - 1.1 + jakarta.jms + jakarta.jms-api + 2.0.3 org.apache.activemq diff --git a/assembly/src/release/examples/stomp/java/pom.xml b/assembly/src/release/examples/stomp/java/pom.xml index 50b451189d..a52ff14e0e 100644 --- a/assembly/src/release/examples/stomp/java/pom.xml +++ b/assembly/src/release/examples/stomp/java/pom.xml @@ -29,9 +29,9 @@ - org.apache.geronimo.specs - geronimo-jms_1.1_spec - 1.1 + jakarta.jms + jakarta.jms-api + 2.0.3 org.fusesource.stompjms diff --git a/pom.xml b/pom.xml index 79055fb5e4..45370de3ac 100644 --- a/pom.xml +++ b/pom.xml @@ -465,9 +465,9 @@ - org.apache.geronimo.specs - geronimo-jms_1.1_spec - 1.1.1 + jakarta.jms + jakarta.jms-api + 2.0.3