/* * 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.qpid.jms.exceptions; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.io.IOException; import javax.jms.IllegalStateException; import javax.jms.IllegalStateRuntimeException; import javax.jms.InvalidClientIDException; import javax.jms.InvalidClientIDRuntimeException; import javax.jms.InvalidDestinationException; import javax.jms.InvalidDestinationRuntimeException; import javax.jms.InvalidSelectorException; import javax.jms.InvalidSelectorRuntimeException; import javax.jms.JMSException; import javax.jms.JMSRuntimeException; import javax.jms.JMSSecurityException; import javax.jms.JMSSecurityRuntimeException; import javax.jms.MessageFormatException; import javax.jms.MessageFormatRuntimeException; import javax.jms.MessageNotWriteableException; import javax.jms.MessageNotWriteableRuntimeException; import javax.jms.ResourceAllocationException; import javax.jms.ResourceAllocationRuntimeException; import javax.jms.TransactionInProgressException; import javax.jms.TransactionInProgressRuntimeException; import javax.jms.TransactionRolledBackException; import javax.jms.TransactionRolledBackRuntimeException; import org.junit.Test; /** * Tests for various utility methods in the Exception support class. */ public class JmsExceptionSupportTest { private final String ERROR_MESSAGE = "ExpectedErrorMessage"; private final String CAUSE_MESSAGE = "ExpectedCauseMessage"; private final IOException NO_MESSAGE_CAUSE = new IOException(); private final IOException EMPTY_MESSAGE_CAUSE = new IOException(""); @Test public void testCreateAssignsLinkedException() { JMSException result = JmsExceptionSupport.create(ERROR_MESSAGE, new IOException(CAUSE_MESSAGE)); assertNotNull(result.getLinkedException()); } @Test public void testCreateDoesNotFillLinkedExceptionWhenGivenNonExceptionThrowable() { JMSException result = JmsExceptionSupport.create(ERROR_MESSAGE, new AssertionError(CAUSE_MESSAGE)); assertNull(result.getLinkedException()); } @Test public void testCreateFillsMessageFromMessageParam() { JMSException result = JmsExceptionSupport.create(ERROR_MESSAGE, new IOException(CAUSE_MESSAGE)); assertEquals(ERROR_MESSAGE, result.getMessage()); } @Test public void testCreateFillsMessageFromMCauseessageParamMessage() { JMSException result = JmsExceptionSupport.create(new IOException(CAUSE_MESSAGE)); assertEquals(CAUSE_MESSAGE, result.getMessage()); } @Test public void testCreateFillsMessageFromMCauseessageParamToString() { JMSException result = JmsExceptionSupport.create(NO_MESSAGE_CAUSE); assertEquals(NO_MESSAGE_CAUSE.toString(), result.getMessage()); } @Test public void testCreateFillsMessageFromMCauseessageParamToStringWhenMessageIsEmpty() { JMSException result = JmsExceptionSupport.create(EMPTY_MESSAGE_CAUSE); assertEquals(EMPTY_MESSAGE_CAUSE.toString(), result.getMessage()); } @Test public void testCreateFillsMessageFromCauseMessageParamWhenErrorMessageIsNull() { JMSException result = JmsExceptionSupport.create(null, new IOException(CAUSE_MESSAGE)); assertEquals(CAUSE_MESSAGE, result.getMessage()); } @Test public void testCreateFillsMessageFromCauseMessageParamWhenErrorMessageIsEmpty() { JMSException result = JmsExceptionSupport.create("", new IOException(CAUSE_MESSAGE)); assertEquals(CAUSE_MESSAGE, result.getMessage()); } @Test public void testCreateMessageFormatExceptionFillsMessageFromMCauseessageParamToString() { JMSException result = JmsExceptionSupport.createMessageFormatException(NO_MESSAGE_CAUSE); assertEquals(NO_MESSAGE_CAUSE.toString(), result.getMessage()); } @Test public void testCreateMessageFormatExceptionFillsMessageFromMCauseessageParamToStringWhenMessageIsEmpty() { JMSException result = JmsExceptionSupport.createMessageFormatException(EMPTY_MESSAGE_CAUSE); assertEquals(EMPTY_MESSAGE_CAUSE.toString(), result.getMessage()); } @Test public void testCreateMessageEOFExceptionFillsMessageFromMCauseessageParamToString() { JMSException result = JmsExceptionSupport.createMessageEOFException(NO_MESSAGE_CAUSE); assertEquals(NO_MESSAGE_CAUSE.toString(), result.getMessage()); } @Test public void testCreateMessageEOFExceptionFillsMessageFromMCauseessageParamToStringWhenMessageIsEmpty() { JMSException result = JmsExceptionSupport.createMessageEOFException(EMPTY_MESSAGE_CAUSE); assertEquals(EMPTY_MESSAGE_CAUSE.toString(), result.getMessage()); } @Test public void testCreateMessageFormatExceptionAssignsLinkedException() { JMSException result = JmsExceptionSupport.createMessageFormatException(new IOException(CAUSE_MESSAGE)); assertNotNull(result.getLinkedException()); } @Test public void testCreateMessageFormatExceptionDoesNotFillLinkedExceptionWhenGivenNonExceptionThrowable() { JMSException result = JmsExceptionSupport.createMessageFormatException(new AssertionError(CAUSE_MESSAGE)); assertNull(result.getLinkedException()); } @Test public void testCreateMessageEOFExceptionAssignsLinkedException() { JMSException result = JmsExceptionSupport.createMessageEOFException(new IOException(CAUSE_MESSAGE)); assertNotNull(result.getLinkedException()); } @Test public void testCreateMessageEOFExceptionDoesNotFillLinkedExceptionWhenGivenNonExceptionThrowable() { JMSException result = JmsExceptionSupport.createMessageEOFException(new AssertionError(CAUSE_MESSAGE)); assertNull(result.getLinkedException()); } @Test(expected = JMSRuntimeException.class) public void testConvertsJMSExceptionToJMSRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new JMSException("error")); } @Test(expected = IllegalStateRuntimeException.class) public void testConvertsIllegalStateExceptionToIlleglStateRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new IllegalStateException("error")); } @Test(expected = InvalidClientIDRuntimeException.class) public void testConvertsInvalidClientIDExceptionToInvalidClientIDRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new InvalidClientIDException("error")); } @Test(expected = InvalidDestinationRuntimeException.class) public void testConvertsInvalidDestinationExceptionToInvalidDestinationRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new InvalidDestinationException("error")); } @Test(expected = InvalidSelectorRuntimeException.class) public void testConvertsInvalidSelectorExceptionToInvalidSelectorRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new InvalidSelectorException("error")); } @Test(expected = JMSSecurityRuntimeException.class) public void testConvertsJMSSecurityExceptionToJMSSecurityRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new JMSSecurityException("error")); } @Test(expected = MessageFormatRuntimeException.class) public void testConvertsMessageFormatExceptionToMessageFormatRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new MessageFormatException("error")); } @Test(expected = MessageNotWriteableRuntimeException.class) public void testConvertsMessageNotWriteableExceptionToMessageNotWriteableRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new MessageNotWriteableException("error")); } @Test(expected = ResourceAllocationRuntimeException.class) public void testConvertsResourceAllocationExceptionToResourceAllocationRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new ResourceAllocationException("error")); } @Test(expected = TransactionInProgressRuntimeException.class) public void testConvertsTransactionInProgressExceptionToTransactionInProgressRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new TransactionInProgressException("error")); } @Test(expected = TransactionRolledBackRuntimeException.class) public void testConvertsTransactionRolledBackExceptionToTransactionRolledBackRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new TransactionRolledBackException("error")); } @Test(expected = JMSRuntimeException.class) public void testConvertsNonJMSExceptionToJMSRuntimeException() { throw JmsExceptionSupport.createRuntimeException(new IOException()); } }