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