/*
* 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.artemis.tests.integration.jms.jms2client;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.InvalidDestinationException;
import javax.jms.InvalidDestinationRuntimeException;
import javax.jms.JMSContext;
import javax.jms.JMSProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import java.util.HashMap;
import java.util.Map;
import org.apache.activemq.artemis.tests.util.JMSTestBase;
import org.junit.Before;
import org.junit.Test;
public class InvalidDestinationTest extends JMSTestBase {
private JMSContext context;
private Queue queue1;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
context = createContext();
queue1 = createQueue(JmsContextTest.class.getSimpleName() + "Queue");
}
@Test
public void invalidDestinationRuntimeExceptionTests() throws Exception {
JMSProducer producer = context.createProducer();
Destination invalidDestination = null;
Topic invalidTopic = null;
String message = "hello world";
byte[] bytesMsgSend = message.getBytes();
Map<String, Object> mapMsgSend = new HashMap<>();
mapMsgSend.put("s", "foo");
mapMsgSend.put("b", true);
mapMsgSend.put("i", 1);
TextMessage expTextMessage = context.createTextMessage(message);
try {
producer.send(invalidDestination, expTextMessage);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
producer.send(invalidDestination, message);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
ObjectMessage om = context.createObjectMessage();
StringBuffer sb = new StringBuffer(message);
om.setObject(sb);
try {
producer.send(invalidDestination, om);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
producer.send(invalidDestination, bytesMsgSend);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
producer.send(invalidDestination, mapMsgSend);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createConsumer(invalidDestination);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createConsumer(invalidDestination, "lastMessage = TRUE");
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createConsumer(invalidDestination, "lastMessage = TRUE", false);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createDurableConsumer(invalidTopic, "InvalidDestinationRuntimeException");
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createDurableConsumer(invalidTopic, "InvalidDestinationRuntimeException", "lastMessage = TRUE", false);
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createSharedDurableConsumer(invalidTopic, "InvalidDestinationRuntimeException");
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createSharedDurableConsumer(invalidTopic, "InvalidDestinationRuntimeException", "lastMessage = TRUE");
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.unsubscribe("InvalidSubscriptionName");
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createSharedConsumer(invalidTopic, "InvalidDestinationRuntimeException");
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
try {
context.createSharedConsumer(invalidTopic, "InvalidDestinationRuntimeException", "lastMessage = TRUE");
} catch (InvalidDestinationRuntimeException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationRuntimeException, received " + e);
}
}
@Test
public void invalidDestinationExceptionTests() throws Exception {
Destination invalidDestination = null;
Topic invalidTopic = null;
Connection conn = cf.createConnection();
try {
Session session = conn.createSession();
try {
session.createDurableSubscriber(invalidTopic, "InvalidDestinationException");
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
try {
session.createDurableSubscriber(invalidTopic, "InvalidDestinationException", "lastMessage = TRUE", false);
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
System.out.println("Testing Session.createDurableConsumer(Topic, String) for InvalidDestinationException");
try {
session.createDurableConsumer(invalidTopic, "InvalidDestinationException");
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
try {
session.createDurableConsumer(invalidTopic, "InvalidDestinationException", "lastMessage = TRUE", false);
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
try {
session.createSharedConsumer(invalidTopic, "InvalidDestinationException");
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
try {
session.createSharedConsumer(invalidTopic, "InvalidDestinationException", "lastMessage = TRUE");
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
try {
session.createSharedDurableConsumer(invalidTopic, "InvalidDestinationException");
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
try {
session.createSharedDurableConsumer(invalidTopic, "InvalidDestinationException", "lastMessage = TRUE");
} catch (InvalidDestinationException e) {
//pass
} catch (Exception e) {
fail("Expected InvalidDestinationException, received " + e);
}
} finally {
conn.close();
}
}
}