You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2010/05/05 04:03:00 UTC
svn commit: r941133 - in /camel/trunk/components/camel-smpp/src:
main/java/org/apache/camel/component/smpp/
main/resources/META-INF/services/org/apache/camel/component/
test/java/org/apache/camel/component/smpp/
Author: ningjiang
Date: Wed May 5 02:03:00 2010
New Revision: 941133
URL: http://svn.apache.org/viewvc?rev=941133&view=rev
Log:
CAMEL-2688 Added SSL support to camel-smpp by applying the patch with thanks to Cott
Added:
camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSSLConnectionFactory.java (with props)
camel/trunk/components/camel-smpp/src/main/resources/META-INF/services/org/apache/camel/component/smpps
Modified:
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/SmppEndpoint.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/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=941133&r1=941132&r2=941133&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 Wed May 5 02:03:00 2010
@@ -53,6 +53,7 @@ public class SmppConfiguration implement
private byte replaceIfPresentFlag = (byte) 0;
private byte typeOfNumber = TypeOfNumber.UNKNOWN.value();
private byte numberingPlanIndicator = NumberingPlanIndicator.UNKNOWN.value();
+ private boolean usingSSL;
/**
* A POJO which contains all necessary configuration parameters for the SMPP connection
@@ -63,6 +64,9 @@ public class SmppConfiguration implement
setSystemId(uri.getUserInfo());
setHost(uri.getHost());
setPort(uri.getPort());
+ if (uri.getScheme().startsWith("smpps")) {
+ setUsingSSL(true);
+ }
}
public SmppConfiguration copy() {
@@ -241,6 +245,14 @@ public class SmppConfiguration implement
this.numberingPlanIndicator = numberingPlanIndicator;
}
+ public boolean getUsingSSL() {
+ return usingSSL;
+ }
+
+ public void setUsingSSL(boolean usingSSL) {
+ this.usingSSL = usingSSL;
+ }
+
@Override
public String toString() {
return "SmppConfiguration[" + "enquireLinkTimer=" + enquireLinkTimer
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=941133&r1=941132&r2=941133&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 Wed May 5 02:03:00 2010
@@ -21,6 +21,9 @@ import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultConsumer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jsmpp.DefaultPDUReader;
+import org.jsmpp.DefaultPDUSender;
+import org.jsmpp.SynchronizedPDUSender;
import org.jsmpp.bean.AlertNotification;
import org.jsmpp.bean.BindType;
import org.jsmpp.bean.DeliverSm;
@@ -29,6 +32,7 @@ import org.jsmpp.bean.TypeOfNumber;
import org.jsmpp.session.BindParameter;
import org.jsmpp.session.MessageReceiverListener;
import org.jsmpp.session.SMPPSession;
+import org.jsmpp.util.DefaultComposer;
/**
* An implementation of @{link Consumer} which use the SMPP protocol
@@ -118,7 +122,12 @@ public class SmppConsumer extends Defaul
* @return the SMPPSession
*/
SMPPSession createSMPPSession() {
- return new SMPPSession();
+ if (configuration.getUsingSSL()) {
+ return new SMPPSession(new SynchronizedPDUSender(new DefaultPDUSender(new DefaultComposer())),
+ new DefaultPDUReader(), SmppSSLConnectionFactory.getInstance());
+ } else {
+ return new SMPPSession();
+ }
}
@Override
Modified: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java?rev=941133&r1=941132&r2=941133&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java (original)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java Wed May 5 02:03:00 2010
@@ -125,7 +125,8 @@ public class SmppEndpoint extends Defaul
* @return the connection string
*/
public String getConnectionString() {
- return "smpp://" + getConfiguration().getSystemId() + "@"
+ return (configuration.getUsingSSL() ? "smpps://" : "smpp://")
+ + getConfiguration().getSystemId() + "@"
+ getConfiguration().getHost() + ":"
+ getConfiguration().getPort();
}
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=941133&r1=941132&r2=941133&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 Wed May 5 02:03:00 2010
@@ -22,8 +22,11 @@ import org.apache.camel.Exchange;
import org.apache.camel.impl.DefaultProducer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jsmpp.DefaultPDUReader;
+import org.jsmpp.DefaultPDUSender;
import org.jsmpp.InvalidResponseException;
import org.jsmpp.PDUException;
+import org.jsmpp.SynchronizedPDUSender;
import org.jsmpp.bean.Alphabet;
import org.jsmpp.bean.BindType;
import org.jsmpp.bean.ESMClass;
@@ -37,6 +40,7 @@ import org.jsmpp.extra.NegativeResponseE
import org.jsmpp.extra.ResponseTimeoutException;
import org.jsmpp.session.BindParameter;
import org.jsmpp.session.SMPPSession;
+import org.jsmpp.util.DefaultComposer;
/**
* An implementation of @{link Producer} which use the SMPP protocol
@@ -88,7 +92,12 @@ public class SmppProducer extends Defaul
* @return the SMPPSession
*/
SMPPSession createSMPPSession() {
- return new SMPPSession();
+ if (configuration.getUsingSSL()) {
+ return new SMPPSession(new SynchronizedPDUSender(new DefaultPDUSender(new DefaultComposer())),
+ new DefaultPDUReader(), SmppSSLConnectionFactory.getInstance());
+ } else {
+ return new SMPPSession();
+ }
}
public void process(Exchange exchange) throws Exception {
Added: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSSLConnectionFactory.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSSLConnectionFactory.java?rev=941133&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSSLConnectionFactory.java (added)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSSLConnectionFactory.java Wed May 5 02:03:00 2010
@@ -0,0 +1,56 @@
+/**
+ * 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.camel.component.smpp;
+
+import java.io.IOException;
+import java.net.Socket;
+
+import javax.net.SocketFactory;
+import javax.net.ssl.SSLSocketFactory;
+
+import org.jsmpp.session.connection.Connection;
+import org.jsmpp.session.connection.ConnectionFactory;
+import org.jsmpp.session.connection.socket.SocketConnection;
+
+/**
+ * A Jsmpp ConnectionFactory that creates SSL Sockets.
+ *
+ * @version $Revision$
+ */
+public final class SmppSSLConnectionFactory implements ConnectionFactory {
+ private static final SmppSSLConnectionFactory CONN_FACTORY = new SmppSSLConnectionFactory();
+
+ private SmppSSLConnectionFactory() {
+ }
+
+ public static SmppSSLConnectionFactory getInstance() {
+ return CONN_FACTORY;
+ }
+
+ public Connection createConnection(String host, int port) throws IOException {
+ try {
+ SocketFactory socketFactory = SSLSocketFactory.getDefault();
+ Socket socket = socketFactory.createSocket(host, port);
+
+ return new SocketConnection(socket);
+
+ } catch (Exception e) {
+ throw new IOException(e.getMessage());
+ }
+
+ }
+}
Propchange: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSSLConnectionFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSSLConnectionFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-smpp/src/main/resources/META-INF/services/org/apache/camel/component/smpps
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/resources/META-INF/services/org/apache/camel/component/smpps?rev=941133&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/resources/META-INF/services/org/apache/camel/component/smpps (added)
+++ camel/trunk/components/camel-smpp/src/main/resources/META-INF/services/org/apache/camel/component/smpps Wed May 5 02:03:00 2010
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+class=org.apache.camel.component.smpp.SmppComponent
\ No newline at end of file
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=941133&r1=941132&r2=941133&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 Wed May 5 02:03:00 2010
@@ -82,6 +82,26 @@ public class SmppComponentTest {
assertTrue(smppEndpoint.getBinding() instanceof SmppBinding);
assertNotNull(smppEndpoint.getCamelContext());
}
+
+ @Test
+ public void createEndpointStringStringMapShouldReturnASmppsEndpoint() throws Exception {
+ CamelContext context = new DefaultCamelContext();
+ component = new SmppComponent(context);
+ Map<String, String> parameters = new HashMap<String, String>();
+ parameters.put("password", "secret");
+ Endpoint endpoint = component.createEndpoint("smpps://smppclient@localhost:2775", "?password=secret", parameters);
+ SmppEndpoint smppEndpoint = (SmppEndpoint) endpoint;
+
+ assertEquals("smpps://smppclient@localhost:2775", smppEndpoint.getEndpointUri());
+ assertEquals("smpps://smppclient@localhost:2775", smppEndpoint.getEndpointKey());
+ assertSame(component, smppEndpoint.getComponent());
+ assertNotNull(smppEndpoint.getConfiguration());
+ assertEquals("secret", smppEndpoint.getConfiguration().getPassword());
+ assertEquals("smpps://smppclient@localhost:2775", smppEndpoint.getConnectionString());
+ assertEquals(ExchangePattern.InOnly, smppEndpoint.getExchangePattern());
+ assertTrue(smppEndpoint.getBinding() instanceof SmppBinding);
+ assertNotNull(smppEndpoint.getCamelContext());
+ }
@Test
public void createEndpointStringStringMapWithoutACamelContextShouldReturnASmppEndpoint() throws Exception {
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=941133&r1=941132&r2=941133&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 Wed May 5 02:03:00 2010
@@ -65,6 +65,7 @@ public class SmppConfigurationTest {
assertEquals("ISO-8859-1", configuration.getEncoding());
assertEquals(0x00, configuration.getNumberingPlanIndicator());
assertEquals(0x00, configuration.getTypeOfNumber());
+ assertEquals(false, configuration.getUsingSSL());
}
@Test
@@ -92,6 +93,7 @@ public class SmppConfigurationTest {
assertEquals("UTF-8", configuration.getEncoding());
assertEquals(0x08, configuration.getNumberingPlanIndicator());
assertEquals(0x02, configuration.getTypeOfNumber());
+ assertEquals(true, configuration.getUsingSSL());
}
@Test
@@ -129,6 +131,7 @@ public class SmppConfigurationTest {
assertEquals(config.getEncoding(), configuration.getEncoding());
assertEquals(config.getNumberingPlanIndicator(), configuration.getNumberingPlanIndicator());
assertEquals(config.getTypeOfNumber(), configuration.getTypeOfNumber());
+ assertEquals(config.getUsingSSL(), configuration.getUsingSSL());
}
private void setNoneDefaultValues(SmppConfiguration config) {
@@ -153,5 +156,6 @@ public class SmppConfigurationTest {
config.setEncoding("UTF-8");
config.setNumberingPlanIndicator(NumberingPlanIndicator.NATIONAL.value());
config.setTypeOfNumber(TypeOfNumber.NATIONAL.value());
+ config.setUsingSSL(true);
}
}