Author: cmueller Date: Sun Jun 26 15:32:00 2011 New Revision: 1139815 URL: http://svn.apache.org/viewvc?rev=1139815&view=rev Log: CAMEL-4136: Camel-smpp should be able to return ProcessRequestException to the SMSC instead of catching all exceptions
Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java?rev=1139815&r1=1139814&r2=1139815&view=diff ============================================================================== --- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java (original) +++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java Sun Jun 26 15:32:00 2011 @@ -61,7 +61,7 @@ public class MessageReceiverListenerImpl } } - public void onAcceptDeliverSm(DeliverSm deliverSm) { + public void onAcceptDeliverSm(DeliverSm deliverSm) throws ProcessRequestException { LOG.debug("Received a deliverSm {}", deliverSm); try { @@ -72,6 +72,9 @@ public class MessageReceiverListenerImpl LOG.trace("processed the new smpp exchange"); } catch (Exception e) { exceptionHandler.handleException(e); + if (e instanceof ProcessRequestException) { + throw (ProcessRequestException) e; + } } } @@ -88,6 +91,9 @@ public class MessageReceiverListenerImpl LOG.trace("processed the new smpp exchange"); } catch (Exception e) { exceptionHandler.handleException(e); + if (e instanceof ProcessRequestException) { + throw (ProcessRequestException) e; + } throw new ProcessRequestException(e.getMessage(), 255, e); } Modified: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java?rev=1139815&r1=1139814&r2=1139815&view=diff ============================================================================== --- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java (original) +++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/MessageReceiverListenerImplTest.java Sun Jun 26 15:32:00 2011 @@ -38,6 +38,7 @@ import static org.easymock.classextensio import static org.easymock.classextension.EasyMock.replay; import static org.easymock.classextension.EasyMock.verify; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.fail; @@ -70,13 +71,10 @@ public class MessageReceiverListenerImpl public void onAcceptAlertNotificationSuccess() throws Exception { AlertNotification alertNotification = createMock(AlertNotification.class); Exchange exchange = createMock(Exchange.class); - Exception exception = new Exception("forced exception for test"); expect(endpoint.createOnAcceptAlertNotificationExchange(alertNotification)) .andReturn(exchange); processor.process(exchange); - expectLastCall().andThrow(exception); - exceptionHandler.handleException(exception); replay(endpoint, processor, exceptionHandler, alertNotification, exchange); @@ -86,13 +84,16 @@ public class MessageReceiverListenerImpl } @Test - public void onAcceptAlertNotificationFailure() throws Exception { + public void onAcceptAlertNotificationException() throws Exception { AlertNotification alertNotification = createMock(AlertNotification.class); Exchange exchange = createMock(Exchange.class); + Exception exception = new Exception("forced exception for test"); expect(endpoint.createOnAcceptAlertNotificationExchange(alertNotification)) .andReturn(exchange); processor.process(exchange); + expectLastCall().andThrow(exception); + exceptionHandler.handleException(exception); replay(endpoint, processor, exceptionHandler, alertNotification, exchange); @@ -121,7 +122,7 @@ public class MessageReceiverListenerImpl } @Test - public void onAcceptDeliverSmFailure() throws Exception { + public void onAcceptDeliverSmException() throws Exception { DeliverSm deliverSm = createMock(DeliverSm.class); Exchange exchange = createMock(Exchange.class); @@ -137,6 +138,32 @@ public class MessageReceiverListenerImpl } @Test + public void onAcceptDeliverSmProcessRequestException() throws Exception { + DeliverSm deliverSm = createMock(DeliverSm.class); + Exchange exchange = createMock(Exchange.class); + ProcessRequestException exception = new ProcessRequestException("forced exception for test", 100); + + expect(endpoint.createOnAcceptDeliverSmExchange(deliverSm)) + .andReturn(exchange); + processor.process(exchange); + expectLastCall().andThrow(exception); + exceptionHandler.handleException(exception); + + replay(endpoint, processor, exceptionHandler, deliverSm, exchange); + + try { + listener.onAcceptDeliverSm(deliverSm); + fail("ProcessRequestException expected"); + } catch (ProcessRequestException e) { + assertEquals(100, e.getErrorCode()); + assertEquals("forced exception for test", e.getMessage()); + assertNull(e.getCause()); + } + + verify(endpoint, processor, exceptionHandler, deliverSm, exchange); + } + + @Test public void onAcceptDataSmSuccess() throws Exception { SMPPSession session = createMock(SMPPSession.class); DataSm dataSm = createMock(DataSm.class); @@ -160,7 +187,7 @@ public class MessageReceiverListenerImpl } @Test - public void onAcceptDataSmFailure() throws Exception { + public void onAcceptDataSmException() throws Exception { SMPPSession session = createMock(SMPPSession.class); DataSm dataSm = createMock(DataSm.class); Exchange exchange = createMock(Exchange.class); @@ -185,4 +212,31 @@ public class MessageReceiverListenerImpl verify(endpoint, processor, exceptionHandler, session, dataSm, exchange); } + + @Test + public void onAcceptDataSmProcessRequestException() throws Exception { + SMPPSession session = createMock(SMPPSession.class); + DataSm dataSm = createMock(DataSm.class); + Exchange exchange = createMock(Exchange.class); + ProcessRequestException exception = new ProcessRequestException("forced exception for test", 100); + + expect(endpoint.createOnAcceptDataSm(dataSm, "1")) + .andReturn(exchange); + processor.process(exchange); + expectLastCall().andThrow(exception); + exceptionHandler.handleException(exception); + + replay(endpoint, processor, exceptionHandler, session, dataSm, exchange); + + try { + listener.onAcceptDataSm(dataSm, session); + fail("ProcessRequestException expected"); + } catch (ProcessRequestException e) { + assertEquals(100, e.getErrorCode()); + assertEquals("forced exception for test", e.getMessage()); + assertNull(e.getCause()); + } + + verify(endpoint, processor, exceptionHandler, session, dataSm, exchange); + } } \ No newline at end of file