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