You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2012/06/03 22:28:28 UTC
svn commit: r1345769 - in /camel/trunk/components/camel-smpp: ./
src/main/java/org/apache/camel/component/smpp/
src/test/java/org/apache/camel/component/smpp/
Author: cmueller
Date: Sun Jun 3 20:28:28 2012
New Revision: 1345769
URL: http://svn.apache.org/viewvc?rev=1345769&view=rev
Log:
CAMEL-5043: Provision for setting a custom SessionStateListener
Modified:
camel/trunk/components/camel-smpp/pom.xml
camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java
camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java
camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java
camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java
camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
Modified: camel/trunk/components/camel-smpp/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/pom.xml?rev=1345769&r1=1345768&r2=1345769&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/pom.xml (original)
+++ camel/trunk/components/camel-smpp/pom.xml Sun Jun 3 20:28:28 2012
@@ -69,7 +69,6 @@
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymockclassextension</artifactId>
- <version>${easymock-version}</version>
<scope>test</scope>
</dependency>
<dependency>
Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java?rev=1345769&r1=1345768&r2=1345769&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java (original)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java Sun Jun 3 20:28:28 2012
@@ -22,7 +22,6 @@ import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.util.IntrospectionSupport;
/**
* @version
@@ -53,11 +52,7 @@ public class SmppComponent extends Defau
SmppConfiguration config = this.configuration.copy();
config.configureFromURI(new URI(uri));
- if (getCamelContext() != null) {
- IntrospectionSupport.setProperties(getCamelContext().getTypeConverter(), config, parameters);
- } else {
- IntrospectionSupport.setProperties(config, parameters);
- }
+ setProperties(config, parameters);
return createEndpoint(uri, config);
}
Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java?rev=1345769&r1=1345768&r2=1345769&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java (original)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java Sun Jun 3 20:28:28 2012
@@ -24,6 +24,7 @@ import org.jsmpp.bean.NumberingPlanIndic
import org.jsmpp.bean.ReplaceIfPresentFlag;
import org.jsmpp.bean.SMSCDeliveryReceipt;
import org.jsmpp.bean.TypeOfNumber;
+import org.jsmpp.session.SessionStateListener;
/**
* Contains the SMPP component configuration properties</a>
@@ -63,6 +64,7 @@ public class SmppConfiguration implement
private Integer httpProxyPort = Integer.valueOf(3128);
private String httpProxyUsername;
private String httpProxyPassword;
+ private SessionStateListener sessionStateListener;
/**
* A POJO which contains all necessary configuration parameters for the SMPP connection
@@ -325,6 +327,14 @@ public class SmppConfiguration implement
public void setHttpProxyPassword(String httpProxyPassword) {
this.httpProxyPassword = httpProxyPassword;
}
+
+ public SessionStateListener getSessionStateListener() {
+ return sessionStateListener;
+ }
+
+ public void setSessionStateListener(SessionStateListener sessionStateListener) {
+ this.sessionStateListener = sessionStateListener;
+ }
@Override
public String toString() {
Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java?rev=1345769&r1=1345768&r2=1345769&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java (original)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConsumer.java Sun Jun 3 20:28:28 2012
@@ -48,7 +48,8 @@ public class SmppConsumer extends Defaul
private SmppConfiguration configuration;
private SMPPSession session;
private MessageReceiverListener messageReceiverListener;
- private SessionStateListener sessionStateListener;
+ private SessionStateListener internalSessionStateListener;
+
private final ReentrantLock reconnectLock = new ReentrantLock();
/**
@@ -59,11 +60,14 @@ public class SmppConsumer extends Defaul
super(endpoint, processor);
this.configuration = config;
- this.sessionStateListener = new SessionStateListener() {
+ this.internalSessionStateListener = new SessionStateListener() {
public void onStateChange(SessionState newState, SessionState oldState, Object source) {
+ if (configuration.getSessionStateListener() != null) {
+ configuration.getSessionStateListener().onStateChange(newState, oldState, source);
+ }
+
if (newState.equals(SessionState.CLOSED)) {
- LOG.warn("Lost connection to: " + getEndpoint().getConnectionString()
- + " - trying to reconnect...");
+ LOG.warn("Lost connection to: {} - trying to reconnect...", getEndpoint().getConnectionString());
closeSession();
reconnect(configuration.getInitialReconnectDelay());
}
@@ -86,7 +90,7 @@ public class SmppConsumer extends Defaul
SMPPSession session = createSMPPSession();
session.setEnquireLinkTimer(configuration.getEnquireLinkTimer());
session.setTransactionTimer(configuration.getTransactionTimer());
- session.addSessionStateListener(sessionStateListener);
+ session.addSessionStateListener(internalSessionStateListener);
session.setMessageReceiverListener(messageReceiverListener);
session.connectAndBind(this.configuration.getHost(), this.configuration.getPort(),
new BindParameter(BindType.BIND_RX, this.configuration.getSystemId(),
@@ -119,7 +123,7 @@ public class SmppConsumer extends Defaul
private void closeSession() {
if (session != null) {
- session.removeSessionStateListener(this.sessionStateListener);
+ session.removeSessionStateListener(this.internalSessionStateListener);
// remove this hack after http://code.google.com/p/jsmpp/issues/detail?id=93 is fixed
try {
Thread.sleep(1000);
Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java?rev=1345769&r1=1345768&r2=1345769&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java (original)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppProducer.java Sun Jun 3 20:28:28 2012
@@ -44,16 +44,20 @@ public class SmppProducer extends Defaul
private SmppConfiguration configuration;
private SMPPSession session;
- private SessionStateListener sessionStateListener;
+ private SessionStateListener internalSessionStateListener;
private final ReentrantLock connectLock = new ReentrantLock();
public SmppProducer(SmppEndpoint endpoint, SmppConfiguration config) {
super(endpoint);
this.configuration = config;
- this.sessionStateListener = new SessionStateListener() {
+ this.internalSessionStateListener = new SessionStateListener() {
public void onStateChange(SessionState newState, SessionState oldState, Object source) {
+ if (configuration.getSessionStateListener() != null) {
+ configuration.getSessionStateListener().onStateChange(newState, oldState, source);
+ }
+
if (newState.equals(SessionState.CLOSED)) {
- LOG.warn("Lost connection to: " + getEndpoint().getConnectionString() + " - trying to reconnect...");
+ LOG.warn("Lost connection to: {} - trying to reconnect...", getEndpoint().getConnectionString());
closeSession();
reconnect(configuration.getInitialReconnectDelay());
}
@@ -82,7 +86,7 @@ public class SmppProducer extends Defaul
SMPPSession session = createSMPPSession();
session.setEnquireLinkTimer(this.configuration.getEnquireLinkTimer());
session.setTransactionTimer(this.configuration.getTransactionTimer());
- session.addSessionStateListener(sessionStateListener);
+ session.addSessionStateListener(internalSessionStateListener);
session.connectAndBind(
this.configuration.getHost(),
this.configuration.getPort(),
@@ -147,7 +151,7 @@ public class SmppProducer extends Defaul
private void closeSession() {
if (session != null) {
- session.removeSessionStateListener(this.sessionStateListener);
+ session.removeSessionStateListener(this.internalSessionStateListener);
// remove this hack after http://code.google.com/p/jsmpp/issues/detail?id=93 is fixed
try {
Thread.sleep(1000);
Modified: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java?rev=1345769&r1=1345768&r2=1345769&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java (original)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppComponentTest.java Sun Jun 3 20:28:28 2012
@@ -23,12 +23,14 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.ExchangePattern;
import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+import org.jsmpp.extra.SessionState;
+import org.jsmpp.session.SessionStateListener;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@@ -40,10 +42,12 @@ import static org.junit.Assert.assertTru
public class SmppComponentTest {
private SmppComponent component;
+ private DefaultCamelContext context;
@Before
public void setUp() {
- component = new SmppComponent();
+ context = new DefaultCamelContext();
+ component = new SmppComponent(context);
}
@Test
@@ -117,7 +121,7 @@ public class SmppComponentTest {
assertEquals("smpp://smppclient@localhost:2775", smppEndpoint.getConnectionString());
assertEquals(ExchangePattern.InOnly, smppEndpoint.getExchangePattern());
assertTrue(smppEndpoint.getBinding() instanceof SmppBinding);
- assertNull(smppEndpoint.getCamelContext());
+ assertNotNull(smppEndpoint.getCamelContext());
}
@Test
@@ -133,7 +137,7 @@ public class SmppComponentTest {
assertEquals("smpp://smppclient@localhost:2775", smppEndpoint.getConnectionString());
assertEquals(ExchangePattern.InOnly, smppEndpoint.getExchangePattern());
assertTrue(smppEndpoint.getBinding() instanceof SmppBinding);
- assertNull(smppEndpoint.getCamelContext());
+ assertNotNull(smppEndpoint.getCamelContext());
}
@Test
@@ -149,7 +153,7 @@ public class SmppComponentTest {
assertEquals("smpp://smppclient@localhost:2775", smppEndpoint.getConnectionString());
assertEquals(ExchangePattern.InOnly, smppEndpoint.getExchangePattern());
assertTrue(smppEndpoint.getBinding() instanceof SmppBinding);
- assertNull(smppEndpoint.getCamelContext());
+ assertNotNull(smppEndpoint.getCamelContext());
}
@Test
@@ -159,4 +163,18 @@ public class SmppComponentTest {
assertSame(configuration, component.getConfiguration());
}
+
+ @Test
+ public void createEndpointWithSessionStateListener() throws Exception {
+ SimpleRegistry registry = new SimpleRegistry();
+ registry.put("sessionStateListener", new SessionStateListener() {
+ public void onStateChange(SessionState arg0, SessionState arg1, Object arg2) {
+ }
+ });
+ context.setRegistry(registry);
+ component = new SmppComponent(context);
+ SmppEndpoint endpoint = (SmppEndpoint) component.createEndpoint("smpp://smppclient@localhost:2775?password=password&sessionStateListener=#sessionStateListener");
+
+ assertNotNull(endpoint.getConfiguration().getSessionStateListener());
+ }
}
\ No newline at end of file
Modified: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java?rev=1345769&r1=1345768&r2=1345769&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java (original)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java Sun Jun 3 20:28:28 2012
@@ -22,10 +22,13 @@ import java.net.URISyntaxException;
import org.jsmpp.bean.NumberingPlanIndicator;
import org.jsmpp.bean.SMSCDeliveryReceipt;
import org.jsmpp.bean.TypeOfNumber;
+import org.jsmpp.extra.SessionState;
+import org.jsmpp.session.SessionStateListener;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
/**
* JUnit test class for <code>org.apache.camel.component.smpp.SmppConfiguration</code>
@@ -71,6 +74,7 @@ public class SmppConfigurationTest {
assertEquals(new Integer(3128), configuration.getHttpProxyPort());
assertEquals(null, configuration.getHttpProxyUsername());
assertEquals(null, configuration.getHttpProxyPassword());
+ assertEquals(null, configuration.getSessionStateListener());
}
@Test
@@ -105,6 +109,7 @@ public class SmppConfigurationTest {
assertEquals(new Integer(3129), configuration.getHttpProxyPort());
assertEquals("user", configuration.getHttpProxyUsername());
assertEquals("secret", configuration.getHttpProxyPassword());
+ assertNotNull(configuration.getSessionStateListener());
}
@Test
@@ -149,7 +154,7 @@ public class SmppConfigurationTest {
assertEquals(config.getHttpProxyPort(), configuration.getHttpProxyPort());
assertEquals(config.getHttpProxyUsername(), configuration.getHttpProxyUsername());
assertEquals(config.getHttpProxyPassword(), configuration.getHttpProxyPassword());
-
+ assertEquals(config.getSessionStateListener(), configuration.getSessionStateListener());
}
@Test
@@ -217,5 +222,9 @@ public class SmppConfigurationTest {
config.setHttpProxyPort(new Integer(3129));
config.setHttpProxyUsername("user");
config.setHttpProxyPassword("secret");
+ config.setSessionStateListener(new SessionStateListener() {
+ public void onStateChange(SessionState arg0, SessionState arg1, Object arg2) {
+ }
+ });
}
}
\ No newline at end of file