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 2011/10/05 23:55:48 UTC
svn commit: r1179457 [2/3] - in /camel/trunk/components/camel-smpp/src:
main/java/org/apache/camel/component/smpp/
test/java/org/apache/camel/component/smpp/
test/java/org/apache/camel/component/smpp/integration/
Added: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java (added)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitMultiCommand.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,249 @@
+/**
+ * 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.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.jsmpp.bean.Address;
+import org.jsmpp.bean.Alphabet;
+import org.jsmpp.bean.DataCoding;
+import org.jsmpp.bean.ESMClass;
+import org.jsmpp.bean.GSMSpecificFeature;
+import org.jsmpp.bean.GeneralDataCoding;
+import org.jsmpp.bean.MessageClass;
+import org.jsmpp.bean.MessageMode;
+import org.jsmpp.bean.MessageType;
+import org.jsmpp.bean.NumberingPlanIndicator;
+import org.jsmpp.bean.OptionalParameter;
+import org.jsmpp.bean.RegisteredDelivery;
+import org.jsmpp.bean.ReplaceIfPresentFlag;
+import org.jsmpp.bean.SubmitMulti;
+import org.jsmpp.bean.SubmitMultiResult;
+import org.jsmpp.bean.TypeOfNumber;
+import org.jsmpp.bean.UnsuccessDelivery;
+import org.jsmpp.session.SMPPSession;
+
+public class SmppSubmitMultiCommand extends SmppSmCommand {
+
+ public SmppSubmitMultiCommand(SMPPSession session, SmppConfiguration config) {
+ super(session, config);
+ }
+
+ @Override
+ public void execute(Exchange exchange) throws SmppException {
+ SubmitMulti[] submitMulties = createSubmitMulti(exchange);
+ List<SubmitMultiResult> results = new ArrayList<SubmitMultiResult>(submitMulties.length);
+
+ for (int i = 0; i < submitMulties.length; i++) {
+ SubmitMulti submitMulti = submitMulties[i];
+ SubmitMultiResult result;
+ log.debug("Sending multiple short messages for exchange id '{}'...", exchange.getExchangeId());
+
+ try {
+ result = session.submitMultiple(
+ submitMulti.getServiceType(),
+ TypeOfNumber.valueOf(submitMulti.getSourceAddrTon()),
+ NumberingPlanIndicator.valueOf(submitMulti.getSourceAddrNpi()),
+ submitMulti.getSourceAddr(),
+ (Address[]) submitMulti.getDestAddresses(),
+ new ESMClass(submitMulti.getEsmClass()),
+ submitMulti.getProtocolId(),
+ submitMulti.getPriorityFlag(),
+ submitMulti.getScheduleDeliveryTime(),
+ submitMulti.getValidityPeriod(),
+ new RegisteredDelivery(submitMulti.getRegisteredDelivery()),
+ new ReplaceIfPresentFlag(submitMulti.getReplaceIfPresentFlag()),
+ new GeneralDataCoding(submitMulti.getDataCoding()),
+ submitMulti.getSmDefaultMsgId(),
+ submitMulti.getShortMessage(),
+ new OptionalParameter[0]);
+ results.add(result);
+ } catch (Exception e) {
+ throw new SmppException(e);
+ }
+ }
+
+ log.debug("Sent multiple short messages for exchange id '{}' and received results '{}'", exchange.getExchangeId(), results);
+
+ List<String> messageIDs = new ArrayList<String>(results.size());
+ // {messageID : [{destAddr : address, error : errorCode}]}
+ Map<String, List<Map<String, Object>>> errors = new HashMap<String, List<Map<String, Object>>>();
+
+ for (SubmitMultiResult result : results) {
+ UnsuccessDelivery[] deliveries = result.getUnsuccessDeliveries();
+
+ if (deliveries != null) {
+ List<Map<String, Object>> undelivered = new ArrayList<Map<String, Object>>();
+
+ for (UnsuccessDelivery delivery : deliveries) {
+ Map<String, Object> error = new HashMap<String, Object>();
+ error.put(SmppConstants.DEST_ADDR, delivery.getDestinationAddress().getAddress());
+ error.put(SmppConstants.ERROR, delivery.getErrorStatusCode());
+ undelivered.add(error);
+ }
+
+ if (!undelivered.isEmpty()) {
+ errors.put(result.getMessageId(), undelivered);
+ }
+ }
+
+ messageIDs.add(result.getMessageId());
+ }
+
+ Message message = getResponseMessage(exchange);
+ message.setHeader(SmppConstants.ID, messageIDs);
+ message.setHeader(SmppConstants.SENT_MESSAGE_COUNT, messageIDs.size());
+ if (!errors.isEmpty()) {
+ message.setHeader(SmppConstants.ERROR, errors);
+ }
+ }
+
+ protected SubmitMulti[] createSubmitMulti(Exchange exchange) {
+ String body = exchange.getIn().getBody(String.class);
+
+ byte providedAlphabet = getProvidedAlphabet(exchange);
+ Alphabet determinedAlphabet = determineAlphabet(exchange);
+ SmppSplitter splitter = createSplitter(exchange);
+ Charset charset = determineCharset(providedAlphabet, determinedAlphabet.value());
+
+ byte[][] segments = splitter.split(body.getBytes(charset));
+
+ DataCoding dataCoding = new GeneralDataCoding(false, true, MessageClass.CLASS1, determinedAlphabet);
+ ESMClass esmClass;
+
+ // multipart message
+ if (segments.length > 1) {
+ esmClass = new ESMClass(MessageMode.DEFAULT, MessageType.DEFAULT, GSMSpecificFeature.UDHI);
+ } else {
+ esmClass = new ESMClass();
+ }
+
+ SubmitMulti template = createSubmitMultiTemplate(exchange);
+ SubmitMulti[] submitMulties = new SubmitMulti[segments.length];
+
+ for (int i = 0; i < segments.length; i++) {
+ SubmitMulti submitMulti = SmppUtils.copySubmitMulti(template);
+ submitMulti.setEsmClass(esmClass.value());
+ submitMulti.setDataCoding(dataCoding.value());
+ submitMulti.setShortMessage(segments[i]);
+ submitMulties[i] = submitMulti;
+ }
+
+ return submitMulties;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected SubmitMulti createSubmitMultiTemplate(Exchange exchange) {
+ Message in = exchange.getIn();
+ SubmitMulti submitMulti = new SubmitMulti();
+
+ byte destAddrTon;
+ if (in.getHeaders().containsKey(SmppConstants.DEST_ADDR_TON)) {
+ destAddrTon = in.getHeader(SmppConstants.DEST_ADDR_TON, Byte.class);
+ } else {
+ destAddrTon = config.getDestAddrTon();
+ }
+
+ byte destAddrNpi;
+ if (in.getHeaders().containsKey(SmppConstants.DEST_ADDR_NPI)) {
+ destAddrNpi = in.getHeader(SmppConstants.DEST_ADDR_NPI, Byte.class);
+ } else {
+ destAddrNpi = config.getDestAddrNpi();
+ }
+
+ List<String> destAddresses;
+ if (in.getHeaders().containsKey(SmppConstants.DEST_ADDR)) {
+ destAddresses = in.getHeader(SmppConstants.DEST_ADDR, List.class);
+ } else {
+ destAddresses = Arrays.asList(config.getDestAddr());
+ }
+
+ Address[] addresses = new Address[destAddresses.size()];
+ int addrNum = 0;
+ for (String destAddr : destAddresses) {
+ Address addr = new Address(destAddrTon, destAddrNpi, destAddr);
+ addresses[addrNum++] = addr;
+ }
+ submitMulti.setDestAddresses(addresses);
+
+ if (in.getHeaders().containsKey(SmppConstants.SOURCE_ADDR)) {
+ submitMulti.setSourceAddr(in.getHeader(SmppConstants.SOURCE_ADDR, String.class));
+ } else {
+ submitMulti.setSourceAddr(config.getSourceAddr());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SOURCE_ADDR_TON)) {
+ submitMulti.setSourceAddrTon(in.getHeader(SmppConstants.SOURCE_ADDR_TON, Byte.class));
+ } else {
+ submitMulti.setSourceAddrTon(config.getSourceAddrTon());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SOURCE_ADDR_NPI)) {
+ submitMulti.setSourceAddrNpi(in.getHeader(SmppConstants.SOURCE_ADDR_NPI, Byte.class));
+ } else {
+ submitMulti.setSourceAddrNpi(config.getSourceAddrNpi());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SERVICE_TYPE)) {
+ submitMulti.setServiceType(in.getHeader(SmppConstants.SERVICE_TYPE, String.class));
+ } else {
+ submitMulti.setServiceType(config.getServiceType());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.REGISTERED_DELIVERY)) {
+ submitMulti.setRegisteredDelivery(in.getHeader(SmppConstants.REGISTERED_DELIVERY, Byte.class));
+ } else {
+ submitMulti.setRegisteredDelivery(config.getRegisteredDelivery());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.PROTOCOL_ID)) {
+ submitMulti.setProtocolId(in.getHeader(SmppConstants.PROTOCOL_ID, Byte.class));
+ } else {
+ submitMulti.setProtocolId(config.getProtocolId());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.PRIORITY_FLAG)) {
+ submitMulti.setPriorityFlag(in.getHeader(SmppConstants.PRIORITY_FLAG, Byte.class));
+ } else {
+ submitMulti.setPriorityFlag(config.getPriorityFlag());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SCHEDULE_DELIVERY_TIME)) {
+ submitMulti.setScheduleDeliveryTime(SmppUtils.formatTime(in.getHeader(SmppConstants.SCHEDULE_DELIVERY_TIME, Date.class)));
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.VALIDITY_PERIOD)) {
+ submitMulti.setValidityPeriod(SmppUtils.formatTime(in.getHeader(SmppConstants.VALIDITY_PERIOD, Date.class)));
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.REPLACE_IF_PRESENT_FLAG)) {
+ submitMulti.setReplaceIfPresentFlag(in.getHeader(SmppConstants.REPLACE_IF_PRESENT_FLAG, Byte.class));
+ } else {
+ submitMulti.setReplaceIfPresentFlag(config.getReplaceIfPresentFlag());
+ }
+
+ return submitMulti;
+ }
+}
\ No newline at end of file
Added: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java (added)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,201 @@
+/**
+ * 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.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.jsmpp.bean.Alphabet;
+import org.jsmpp.bean.ESMClass;
+import org.jsmpp.bean.GSMSpecificFeature;
+import org.jsmpp.bean.GeneralDataCoding;
+import org.jsmpp.bean.MessageClass;
+import org.jsmpp.bean.MessageMode;
+import org.jsmpp.bean.MessageType;
+import org.jsmpp.bean.NumberingPlanIndicator;
+import org.jsmpp.bean.RegisteredDelivery;
+import org.jsmpp.bean.SubmitSm;
+import org.jsmpp.bean.TypeOfNumber;
+import org.jsmpp.session.SMPPSession;
+
+public class SmppSubmitSmCommand extends SmppSmCommand {
+
+ public SmppSubmitSmCommand(SMPPSession session, SmppConfiguration config) {
+ super(session, config);
+ }
+
+ @Override
+ public void execute(Exchange exchange) throws SmppException {
+ SubmitSm[] submitSms = createSubmitSm(exchange);
+ List<String> messageIDs = new ArrayList<String>(submitSms.length);
+
+ for (int i = 0; i < submitSms.length; i++) {
+ SubmitSm submitSm = submitSms[i];
+ String messageID;
+ log.debug("Sending short message {} for exchange id '{}'...", i, exchange.getExchangeId());
+
+ try {
+ messageID = session.submitShortMessage(
+ submitSm.getServiceType(),
+ TypeOfNumber.valueOf(submitSm.getSourceAddrTon()),
+ NumberingPlanIndicator.valueOf(submitSm.getSourceAddrNpi()),
+ submitSm.getSourceAddr(),
+ TypeOfNumber.valueOf(submitSm.getDestAddrTon()),
+ NumberingPlanIndicator.valueOf(submitSm.getDestAddrNpi()),
+ submitSm.getDestAddress(),
+ new ESMClass(submitSm.getEsmClass()),
+ submitSm.getProtocolId(),
+ submitSm.getPriorityFlag(),
+ submitSm.getScheduleDeliveryTime(),
+ submitSm.getValidityPeriod(),
+ new RegisteredDelivery(submitSm.getRegisteredDelivery()),
+ submitSm.getReplaceIfPresent(),
+ new GeneralDataCoding(submitSm.getDataCoding()),
+ (byte) 0,
+ submitSm.getShortMessage(),
+ submitSm.getOptionalParametes());
+ } catch (Exception e) {
+ throw new SmppException(e);
+ }
+
+ messageIDs.add(messageID);
+ }
+
+ log.debug("Sent short message for exchange id '{}' and received message ids '{}'",
+ exchange.getExchangeId(), messageIDs);
+
+ Message message = getResponseMessage(exchange);
+ message.setHeader(SmppConstants.ID, messageIDs);
+ message.setHeader(SmppConstants.SENT_MESSAGE_COUNT, messageIDs.size());
+ }
+
+ protected SubmitSm[] createSubmitSm(Exchange exchange) {
+ String body = exchange.getIn().getBody(String.class);
+
+ byte providedAlphabet = getProvidedAlphabet(exchange);
+ Alphabet determinedAlphabet = determineAlphabet(exchange);
+ Charset charset = determineCharset(providedAlphabet, determinedAlphabet.value());
+ byte[] shortMessage = body.getBytes(charset);
+
+ SubmitSm template = createSubmitSmTemplate(exchange);
+ SmppSplitter splitter = createSplitter(exchange);
+ byte[][] segments = splitter.split(shortMessage);
+
+ template.setDataCoding(new GeneralDataCoding(false, true, MessageClass.CLASS1, determinedAlphabet).value());
+
+ // multipart message
+ if (segments.length > 1) {
+ template.setEsmClass(new ESMClass(MessageMode.DEFAULT, MessageType.DEFAULT, GSMSpecificFeature.UDHI).value());
+ }
+
+ SubmitSm[] submitSms = new SubmitSm[segments.length];
+ for (int i = 0; i < segments.length; i++) {
+ SubmitSm submitSm = SmppUtils.copySubmitSm(template);
+ submitSm.setShortMessage(segments[i]);
+ submitSms[i] = submitSm;
+ }
+
+ return submitSms;
+ }
+
+ protected SubmitSm createSubmitSmTemplate(Exchange exchange) {
+ Message in = exchange.getIn();
+ SubmitSm submitSm = new SubmitSm();
+
+ if (in.getHeaders().containsKey(SmppConstants.DEST_ADDR)) {
+ submitSm.setDestAddress(in.getHeader(SmppConstants.DEST_ADDR, String.class));
+ } else {
+ submitSm.setDestAddress(config.getDestAddr());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.DEST_ADDR_TON)) {
+ submitSm.setDestAddrTon(in.getHeader(SmppConstants.DEST_ADDR_TON, Byte.class));
+ } else {
+ submitSm.setDestAddrTon(config.getDestAddrTon());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.DEST_ADDR_NPI)) {
+ submitSm.setDestAddrNpi(in.getHeader(SmppConstants.DEST_ADDR_NPI, Byte.class));
+ } else {
+ submitSm.setDestAddrNpi(config.getDestAddrNpi());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SOURCE_ADDR)) {
+ submitSm.setSourceAddr(in.getHeader(SmppConstants.SOURCE_ADDR, String.class));
+ } else {
+ submitSm.setSourceAddr(config.getSourceAddr());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SOURCE_ADDR_TON)) {
+ submitSm.setSourceAddrTon(in.getHeader(SmppConstants.SOURCE_ADDR_TON, Byte.class));
+ } else {
+ submitSm.setSourceAddrTon(config.getSourceAddrTon());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SOURCE_ADDR_NPI)) {
+ submitSm.setSourceAddrNpi(in.getHeader(SmppConstants.SOURCE_ADDR_NPI, Byte.class));
+ } else {
+ submitSm.setSourceAddrNpi(config.getSourceAddrNpi());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SERVICE_TYPE)) {
+ submitSm.setServiceType(in.getHeader(SmppConstants.SERVICE_TYPE, String.class));
+ } else {
+ submitSm.setServiceType(config.getServiceType());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.REGISTERED_DELIVERY)) {
+ submitSm.setRegisteredDelivery(in.getHeader(SmppConstants.REGISTERED_DELIVERY, Byte.class));
+ } else {
+ submitSm.setRegisteredDelivery(config.getRegisteredDelivery());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.PROTOCOL_ID)) {
+ submitSm.setProtocolId(in.getHeader(SmppConstants.PROTOCOL_ID, Byte.class));
+ } else {
+ submitSm.setProtocolId(config.getProtocolId());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.PRIORITY_FLAG)) {
+ submitSm.setPriorityFlag(in.getHeader(SmppConstants.PRIORITY_FLAG, Byte.class));
+ } else {
+ submitSm.setPriorityFlag(config.getPriorityFlag());
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.SCHEDULE_DELIVERY_TIME)) {
+ submitSm.setScheduleDeliveryTime(SmppUtils.formatTime(in.getHeader(SmppConstants.SCHEDULE_DELIVERY_TIME, Date.class)));
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.VALIDITY_PERIOD)) {
+ submitSm.setValidityPeriod(SmppUtils.formatTime(in.getHeader(SmppConstants.VALIDITY_PERIOD, Date.class)));
+ }
+
+ if (in.getHeaders().containsKey(SmppConstants.REPLACE_IF_PRESENT_FLAG)) {
+ submitSm.setReplaceIfPresent(in.getHeader(SmppConstants.REPLACE_IF_PRESENT_FLAG, Byte.class));
+ } else {
+ submitSm.setReplaceIfPresent(config.getReplaceIfPresentFlag());
+ }
+
+ submitSm.setEsmClass(new ESMClass().value());
+
+ return submitSm;
+ }
+}
\ No newline at end of file
Added: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUcs2Splitter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUcs2Splitter.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUcs2Splitter.java (added)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUcs2Splitter.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,35 @@
+/**
+ * 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;
+
+public class SmppUcs2Splitter extends SmppSplitter {
+
+ /**
+ * The maximum length in chars of the unicode messages.
+ * <p/>
+ * Each letter requires 2 bytes.
+ */
+ public static final int MAX_MSG_CHAR_SIZE = MAX_MSG_BYTE_LENGTH / 2;
+
+ // ( / 2 * 2) is required because UDHIE_HEADER_REAL_LENGTH might be equal to 0x07 so the length of the segment
+ // is 133 = (70 * 2 - 7)and the last letter in the unicode will be damaged.
+ public static final int MAX_SEG_BYTE_SIZE = (MAX_MSG_CHAR_SIZE * 2 - UDHIE_HEADER_REAL_LENGTH) / 2 * 2;
+
+ public SmppUcs2Splitter(int segmentLength) {
+ super(MAX_MSG_CHAR_SIZE, MAX_SEG_BYTE_SIZE, segmentLength);
+ }
+}
\ No newline at end of file
Added: camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java (added)
+++ camel/trunk/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppUtils.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,262 @@
+/**
+ * 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.util.Calendar;
+import java.util.Date;
+
+import org.jsmpp.bean.Alphabet;
+import org.jsmpp.bean.DataSm;
+import org.jsmpp.bean.SubmitMulti;
+import org.jsmpp.bean.SubmitSm;
+import org.jsmpp.util.AbsoluteTimeFormatter;
+import org.jsmpp.util.TimeFormatter;
+
+public final class SmppUtils {
+
+ /**
+ * See http://unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT
+ */
+ public static final short[] ISO_GSM_0338 = {
+ 64, 163, 36, 165, 232, 233, 249, 236,
+ 242, 199, 10, 216, 248, 13, 197, 229,
+ 0, 95, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 198, 230, 223, 201,
+ 32, 33, 34, 35, 164, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63,
+ 161, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 196, 214, 209, 220, 167,
+ 191, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 228, 246, 241, 252, 224
+ };
+
+ /**
+ * See http://unicode.org/Public/MAPPINGS/ETSI/GSM0338.TXT
+ */
+ public static final short[][] ISO_GSM_0338_EXT = {
+ {10, 12}, {20, 94}, {40, 123}, {41, 125}, {47, 92},
+ {60, 91}, {61, 126}, {62, 93}, {64, 124}, {101, 164}
+ };
+
+ private static final TimeFormatter TIME_FORMATTER = new AbsoluteTimeFormatter();
+
+ private SmppUtils() {
+ }
+
+ public static String formatTime(Date date) {
+ return TIME_FORMATTER.format(date);
+ }
+
+ /**
+ * YYMMDDhhmmSS where:
+ * <ul>
+ * <li>YY = last two digits of the year (00-99)</li>
+ * <li>MM = month (01-12)</li>
+ * <li>DD = day (01-31)</li>
+ * <li>hh = hour (00-23)</li>
+ * <li>mm = minute (00-59)</li>
+ * <li>SS = second (00-59)</li>
+ * </ul>
+ *
+ * Java format is (yyMMddHHmmSS).
+ *
+ * @param date in <tt>String</tt> format.
+ * @return
+ * @throws NumberFormatException if there is contains non number on
+ * <code>date</code> parameter.
+ * @throws IndexOutOfBoundsException if the date length in <tt>String</tt>
+ * format is less than 10.
+ */
+ public static Date string2Date(String date) {
+ if (date == null) {
+ return null;
+ }
+
+ int year = Integer.parseInt(date.substring(0, 2));
+ int month = Integer.parseInt(date.substring(2, 4));
+ int day = Integer.parseInt(date.substring(4, 6));
+ int hour = Integer.parseInt(date.substring(6, 8));
+ int minute = Integer.parseInt(date.substring(8, 10));
+ int second = Integer.parseInt(date.substring(10, 12));
+ Calendar cal = Calendar.getInstance();
+ cal.set(convertTwoDigitYear(year), month - 1, day, hour, minute, second);
+ cal.set(Calendar.MILLISECOND, 0);
+ return cal.getTime();
+ }
+
+ private static int convertTwoDigitYear(int year) {
+ if (year >= 0 && year <= 37) {
+ return 2000 + year;
+ } else if (year >= 38 && year <= 99) {
+ return 1900 + year;
+ } else {
+ // should never happen
+ return year;
+ }
+ }
+
+ public static Alphabet parseAlphabetFromDataCoding(byte dataCoding) {
+ return Alphabet.valueOf((byte) (dataCoding & Alphabet.MASK_ALPHABET));
+ }
+
+ public static boolean isGsm0338Encodeable(byte[] aMessage) {
+ outer:
+ for (int i = 0; i < aMessage.length; i++) {
+ for (int j = 0; j < ISO_GSM_0338.length; j++) {
+ if (ISO_GSM_0338[j] == aMessage[i]) {
+ continue outer;
+ }
+ }
+ for (int j = 0; j < ISO_GSM_0338_EXT.length; j++) {
+ if (ISO_GSM_0338_EXT[j][1] == aMessage[i]) {
+ continue outer;
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+ public static SubmitSm copySubmitSm(SubmitSm src) {
+ SubmitSm dest = new SubmitSm();
+ dest.setCommandId(src.getCommandId());
+ dest.setCommandLength(src.getCommandLength());
+ dest.setCommandStatus(src.getCommandStatus());
+ dest.setDataCoding(src.getDataCoding());
+ dest.setDestAddress(src.getDestAddress());
+ dest.setDestAddrNpi(src.getDestAddrNpi());
+ dest.setDestAddrTon(src.getDestAddrTon());
+ dest.setEsmClass(src.getEsmClass());
+ dest.setOptionalParametes(src.getOptionalParametes());
+ dest.setPriorityFlag(src.getPriorityFlag());
+ dest.setProtocolId(src.getProtocolId());
+ dest.setRegisteredDelivery(src.getRegisteredDelivery());
+ dest.setReplaceIfPresent(src.getReplaceIfPresent());
+ dest.setScheduleDeliveryTime(src.getScheduleDeliveryTime());
+ dest.setSequenceNumber(src.getSequenceNumber());
+ dest.setServiceType(src.getServiceType());
+ dest.setShortMessage(src.getShortMessage());
+ dest.setSmDefaultMsgId(src.getSmDefaultMsgId());
+ dest.setSourceAddr(src.getSourceAddr());
+ dest.setSourceAddrNpi(src.getSourceAddrNpi());
+ dest.setSourceAddrTon(src.getSourceAddrTon());
+ dest.setValidityPeriod(src.getValidityPeriod());
+ if (src.isDatagramMode()) {
+ dest.setDatagramMode();
+ }
+ if (src.isDefaultMessageType()) {
+ dest.setDefaultMessageType();
+ }
+ if (src.isDefaultMode()) {
+ dest.setDefaultMode();
+ }
+ if (src.isEsmeDeliveryAcknowledgement()) {
+ dest.setEsmeDelivertAcknowledgement();
+ }
+ if (src.isEsmeManualAcknowledgement()) {
+ dest.setEsmeManualAcknowledgement();
+ }
+ if (src.isForwardMode()) {
+ dest.setForwardMode();
+ }
+ if (src.isReplyPath()) {
+ dest.setReplyPath();
+ }
+ if (src.isSmscDelReceiptFailureRequested()) {
+ dest.setSmscDelReceiptFailureRequested();
+ }
+ if (src.isSmscDelReceiptNotRequested()) {
+ dest.setSmscDelReceiptNotRequested();
+ }
+ if (src.isSmscDelReceiptSuccessAndFailureRequested()) {
+ dest.setSmscDelReceiptSuccessAndFailureRequested();
+ }
+ if (src.isStoreAndForwardMode()) {
+ dest.setStoreAndForwardMode();
+ }
+ if (src.isUdhi()) {
+ dest.setUdhi();
+ }
+ if (src.isUdhiAndReplyPath()) {
+ dest.setUdhiAndReplyPath();
+ }
+ return dest;
+ }
+
+ public static SubmitMulti copySubmitMulti(SubmitMulti src) {
+ SubmitMulti dest = new SubmitMulti();
+ dest.setCommandId(src.getCommandId());
+ dest.setCommandLength(src.getCommandLength());
+ dest.setCommandStatus(src.getCommandStatus());
+ dest.setDataCoding(src.getDataCoding());
+ dest.setDestAddresses(src.getDestAddresses());
+ dest.setEsmClass(src.getEsmClass());
+ dest.setOptionalParameters(src.getOptionalParameters());
+ dest.setPriorityFlag(src.getPriorityFlag());
+ dest.setProtocolId(src.getProtocolId());
+ dest.setRegisteredDelivery(src.getRegisteredDelivery());
+ dest.setReplaceIfPresentFlag(src.getReplaceIfPresentFlag());
+ dest.setScheduleDeliveryTime(src.getScheduleDeliveryTime());
+ dest.setSequenceNumber(src.getSequenceNumber());
+ dest.setServiceType(src.getServiceType());
+ dest.setShortMessage(src.getShortMessage());
+ dest.setSmDefaultMsgId(src.getSmDefaultMsgId());
+ dest.setSourceAddr(src.getSourceAddr());
+ dest.setSourceAddrNpi(src.getSourceAddrNpi());
+ dest.setSourceAddrTon(src.getSourceAddrTon());
+ dest.setValidityPeriod(src.getValidityPeriod());
+ return dest;
+ }
+
+ public static DataSm copyDataSm(DataSm src) {
+ DataSm dest = new DataSm();
+ dest.setCommandId(src.getCommandId());
+ dest.setCommandLength(src.getCommandLength());
+ dest.setCommandStatus(src.getCommandStatus());
+ dest.setDataCoding(src.getDataCoding());
+ dest.setDestAddress(src.getDestAddress());
+ dest.setDestAddrNpi(src.getDestAddrNpi());
+ dest.setDestAddrTon(src.getDestAddrTon());
+ dest.setEsmClass(src.getEsmClass());
+ dest.setOptionalParametes(src.getOptionalParametes());
+ dest.setRegisteredDelivery(src.getRegisteredDelivery());
+ dest.setSequenceNumber(src.getSequenceNumber());
+ dest.setServiceType(src.getServiceType());
+ dest.setSourceAddr(src.getSourceAddr());
+ dest.setSourceAddrNpi(src.getSourceAddrNpi());
+ dest.setSourceAddrTon(src.getSourceAddrTon());
+ if (src.isDefaultMessageType()) {
+ dest.setDefaultMessageType();
+ }
+ if (src.isReplyPath()) {
+ dest.setReplyPath();
+ }
+ if (src.isUdhi()) {
+ dest.setUdhi();
+ }
+ if (src.isUdhiAndReplyPath()) {
+ dest.setUdhiAndReplyPath();
+ }
+ return dest;
+ }
+}
\ No newline at end of file
Added: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java (added)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/AbstractSmppCommandTest.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,61 @@
+/**
+ * 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 org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.jsmpp.session.SMPPSession;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertSame;
+
+public class AbstractSmppCommandTest {
+
+ private SMPPSession session = new SMPPSession();
+ private SmppConfiguration config = new SmppConfiguration();
+ private AbstractSmppCommand command;
+
+ @Before
+ public void setUp() {
+ session = new SMPPSession();
+ config = new SmppConfiguration();
+
+ command = new AbstractSmppCommand(session, config) {
+ @Override
+ public void execute(Exchange exchange) throws SmppException {
+ }
+ };
+ }
+
+ @Test
+ public void constructor() {
+ assertSame(session, command.session);
+ assertSame(config, command.config);
+ }
+
+ @Test
+ public void getResponseMessage() {
+ Exchange inOnlyExchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOnly);
+ Exchange inOutExchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
+
+ assertSame(inOnlyExchange.getIn(), command.getResponseMessage(inOnlyExchange));
+ assertSame(inOutExchange.getOut(), command.getResponseMessage(inOutExchange));
+ }
+}
\ No newline at end of file
Added: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/Smpp8BitSplitterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/Smpp8BitSplitterTest.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/Smpp8BitSplitterTest.java (added)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/Smpp8BitSplitterTest.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,66 @@
+/**
+ * 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 org.junit.Test;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+public class Smpp8BitSplitterTest {
+
+ @Test
+ public void splitShortMessageWith160Character() {
+ String message = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ + "123456789012345678901234567890123456789012345678901234567890";
+
+ Smpp8BitSplitter splitter = new Smpp8BitSplitter(message.length());
+ Smpp8BitSplitter.resetCurrentReferenceNumber();
+ byte[][] result = splitter.split(message.getBytes());
+
+ assertEquals(1, result.length);
+ assertArrayEquals(new byte[]{49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 48}, result[0]);
+
+ assertEquals(message, new String(result[0]));
+ }
+
+ @Test
+ public void splitShortMessageWith161Character() {
+ String message = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ + "12345678901234567890123456789012345678901234567890123456789012345678901";
+
+ Smpp8BitSplitter splitter = new Smpp8BitSplitter(message.length());
+ Smpp8BitSplitter.resetCurrentReferenceNumber();
+ byte[][] result = splitter.split(message.getBytes());
+
+ assertEquals(2, result.length);
+ assertArrayEquals(new byte[]{SmppSplitter.UDHIE_HEADER_LENGTH, SmppSplitter.UDHIE_IDENTIFIER_SAR, SmppSplitter.UDHIE_SAR_LENGTH, 1, 2, 1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52}, result[0]);
+ assertArrayEquals(new byte[]{SmppSplitter.UDHIE_HEADER_LENGTH, SmppSplitter.UDHIE_IDENTIFIER_SAR, SmppSplitter.UDHIE_SAR_LENGTH, 1, 2, 2, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 48, 49}, result[1]);
+
+ String firstShortMessage = new String(result[0], SmppSplitter.UDHIE_HEADER_REAL_LENGTH, result[0].length - SmppSplitter.UDHIE_HEADER_REAL_LENGTH);
+ String secondShortMessage = new String(result[1], SmppSplitter.UDHIE_HEADER_REAL_LENGTH, result[1].length - SmppSplitter.UDHIE_HEADER_REAL_LENGTH);
+
+ assertEquals(message, firstShortMessage + secondShortMessage);
+ }
+}
\ No newline at end of file
Modified: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java?rev=1179457&r1=1179456&r2=1179457&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java (original)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppBindingTest.java Wed Oct 5 21:55:46 2011
@@ -16,7 +16,6 @@
*/
package org.apache.camel.component.smpp;
-import java.io.UnsupportedEncodingException;
import java.util.Date;
import org.apache.camel.Exchange;
@@ -28,17 +27,17 @@ import org.jsmpp.bean.DeliverSm;
import org.jsmpp.bean.NumberingPlanIndicator;
import org.jsmpp.bean.OptionalParameter;
import org.jsmpp.bean.OptionalParameter.OctetString;
-import org.jsmpp.bean.SubmitSm;
import org.jsmpp.bean.TypeOfNumber;
+import org.jsmpp.session.SMPPSession;
import org.jsmpp.util.DeliveryReceiptState;
import org.junit.Before;
import org.junit.Test;
-import static org.junit.Assert.assertArrayEquals;
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;
/**
* JUnit test class for <code>org.apache.camel.component.smpp.SmppBinding</code>
@@ -72,109 +71,6 @@ public class SmppBindingTest {
}
@Test
- public void createSubmitSmShouldCreateASubmitSmFromDefaults() throws UnsupportedEncodingException {
- Exchange exchange = new DefaultExchange(new DefaultCamelContext());
- exchange.getIn().setBody("Hello SMPP world!");
- SubmitSm submitSm = binding.createSubmitSm(exchange);
-
- assertEquals("Hello SMPP world!", new String(submitSm.getShortMessage()));
- assertEquals("1717", submitSm.getDestAddress());
- assertEquals(0x00, submitSm.getDestAddrNpi());
- assertEquals(0x00, submitSm.getDestAddrTon());
- assertEquals(0x01, submitSm.getPriorityFlag());
- assertEquals(0x00, submitSm.getProtocolId());
- assertEquals(0x01, submitSm.getRegisteredDelivery());
- assertEquals(0x00, submitSm.getReplaceIfPresent());
- // To avoid the test failure when running in different TimeZone
- //assertEquals("090830230627004+", submitSm.getScheduleDeliveryTime());
- assertEquals("CMT", submitSm.getServiceType());
- assertEquals("1616", submitSm.getSourceAddr());
- assertEquals(0x00, submitSm.getSourceAddrNpi());
- assertEquals(0x00, submitSm.getSourceAddrTon());
- assertNull(submitSm.getValidityPeriod());
- // not relevant
- //assertEquals(0, submitSm.getCommandId());
- //assertEquals(0, submitSm.getCommandStatus());
- //assertEquals(0, submitSm.getSequenceNumber());
- }
-
- @Test
- public void createSubmitSmWithDifferentEncoding() throws UnsupportedEncodingException {
- binding.getConfiguration().setEncoding("UTF-16");
-
- Exchange exchange = new DefaultExchange(new DefaultCamelContext());
- exchange.getIn().setBody("Hello SMPP world!");
- SubmitSm submitSm = binding.createSubmitSm(exchange);
-
- assertArrayEquals("Hello SMPP world!".getBytes("UTF-16"), submitSm.getShortMessage());
- }
-
- @Test
- public void createSubmitSmShouldCreateASubmitSmFromHeaders() throws UnsupportedEncodingException {
- Exchange exchange = new DefaultExchange(new DefaultCamelContext());
- exchange.getIn().setBody("Hello SMPP world!");
- exchange.getIn().setHeader(SmppBinding.DEST_ADDR, "1919");
- exchange.getIn().setHeader(SmppBinding.DEST_ADDR_NPI, NumberingPlanIndicator.NATIONAL.value());
- exchange.getIn().setHeader(SmppBinding.DEST_ADDR_TON, TypeOfNumber.NATIONAL.value());
- exchange.getIn().setHeader(SmppBinding.PRIORITY_FLAG, (byte) 0);
- exchange.getIn().setHeader(SmppBinding.PROTOCOL_ID, (byte) 1);
- exchange.getIn().setHeader(SmppBinding.REGISTERED_DELIVERY, (byte) 0);
- exchange.getIn().setHeader(SmppBinding.REPLACE_IF_PRESENT_FLAG, (byte) 1);
- exchange.getIn().setHeader(SmppBinding.SCHEDULE_DELIVERY_TIME, new Date(1251753000000L));
- exchange.getIn().setHeader(SmppBinding.SERVICE_TYPE, "XXX");
- exchange.getIn().setHeader(SmppBinding.VALIDITY_PERIOD, new Date(1251753600000L));
- exchange.getIn().setHeader(SmppBinding.SOURCE_ADDR, "1818");
- exchange.getIn().setHeader(SmppBinding.SOURCE_ADDR_NPI, NumberingPlanIndicator.NATIONAL.value());
- exchange.getIn().setHeader(SmppBinding.SOURCE_ADDR_TON, TypeOfNumber.NATIONAL.value());
- SubmitSm submitSm = binding.createSubmitSm(exchange);
-
- assertEquals("Hello SMPP world!", new String(submitSm.getShortMessage()));
- assertEquals("1919", submitSm.getDestAddress());
- assertEquals(0x08, submitSm.getDestAddrNpi());
- assertEquals(0x02, submitSm.getDestAddrTon());
- assertEquals(0x00, submitSm.getPriorityFlag());
- assertEquals(0x01, submitSm.getProtocolId());
- assertEquals(0x00, submitSm.getRegisteredDelivery());
- assertEquals(0x01, submitSm.getReplaceIfPresent());
- // To avoid the test failure when running in different TimeZone
- //assertEquals("090831231000004+", submitSm.getScheduleDeliveryTime());
- assertEquals("XXX", submitSm.getServiceType());
- assertEquals("1818", submitSm.getSourceAddr());
- assertEquals(0x08, submitSm.getSourceAddrNpi());
- assertEquals(0x02, submitSm.getSourceAddrTon());
- //assertEquals("090831232000004+", submitSm.getValidityPeriod());
- // not relevant
- //assertEquals(0, submitSm.getCommandId());
- //assertEquals(0, submitSm.getCommandStatus());
- //assertEquals(0, submitSm.getSequenceNumber());
- }
-
- @Test
- public void createSubmitSmWithLongMessageBody() throws UnsupportedEncodingException {
- String payload = "Hello SMPP World! Hello SMPP World! Hello SMPP World! Hello SMPP World! Hello SMPP World! "
- + "Hello SMPP World! Hello SMPP World! Hello SMPP World! Hello SMPP World! Hello SMPP World! "
- + "Hello SMPP World! Hello SMPP World! Hello SMPP World! Hello SMPP World! Hello SMPP World! "; // 270 chars
- Exchange exchange = new DefaultExchange(new DefaultCamelContext());
- exchange.getIn().setBody(payload);
- SubmitSm submitSm = binding.createSubmitSm(exchange);
-
- assertArrayEquals(new byte[0], submitSm.getShortMessage());
-
- OptionalParameter[] optionalParametes = submitSm.getOptionalParametes();
- assertEquals(1, optionalParametes.length);
-
- OptionalParameter messagePayloadTLV = optionalParametes[0];
- assertEquals(OptionalParameter.Tag.MESSAGE_PAYLOAD.code(), messagePayloadTLV.tag);
- byte[] expectedTLV = new byte[274];
- expectedTLV[0] = 4;
- expectedTLV[1] = 36;
- expectedTLV[2] = 1;
- expectedTLV[3] = 14;
- System.arraycopy(payload.getBytes(), 0, expectedTLV, 4, 270);
- assertArrayEquals(expectedTLV, messagePayloadTLV.serialize());
- }
-
- @Test
public void createSmppMessageFromAlertNotificationShouldReturnASmppMessage() {
AlertNotification alertNotification = new AlertNotification();
alertNotification.setCommandId(1);
@@ -189,16 +85,16 @@ public class SmppBindingTest {
assertNull(smppMessage.getBody());
assertEquals(10, smppMessage.getHeaders().size());
- assertEquals(1, smppMessage.getHeader(SmppBinding.SEQUENCE_NUMBER));
- assertEquals(1, smppMessage.getHeader(SmppBinding.COMMAND_ID));
- assertEquals(0, smppMessage.getHeader(SmppBinding.COMMAND_STATUS));
- assertEquals("1616", smppMessage.getHeader(SmppBinding.SOURCE_ADDR));
- assertEquals((byte) 8, smppMessage.getHeader(SmppBinding.SOURCE_ADDR_NPI));
- assertEquals((byte) 2, smppMessage.getHeader(SmppBinding.SOURCE_ADDR_TON));
- assertEquals("1717", smppMessage.getHeader(SmppBinding.ESME_ADDR));
- assertEquals((byte) 8, smppMessage.getHeader(SmppBinding.ESME_ADDR_NPI));
- assertEquals((byte) 2, smppMessage.getHeader(SmppBinding.ESME_ADDR_TON));
- assertEquals(SmppMessageType.AlertNotification.toString(), smppMessage.getHeader(SmppBinding.MESSAGE_TYPE));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.SEQUENCE_NUMBER));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.COMMAND_ID));
+ assertEquals(0, smppMessage.getHeader(SmppConstants.COMMAND_STATUS));
+ assertEquals("1616", smppMessage.getHeader(SmppConstants.SOURCE_ADDR));
+ assertEquals((byte) 8, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_NPI));
+ assertEquals((byte) 2, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_TON));
+ assertEquals("1717", smppMessage.getHeader(SmppConstants.ESME_ADDR));
+ assertEquals((byte) 8, smppMessage.getHeader(SmppConstants.ESME_ADDR_NPI));
+ assertEquals((byte) 2, smppMessage.getHeader(SmppConstants.ESME_ADDR_TON));
+ assertEquals(SmppMessageType.AlertNotification.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE));
}
@Test
@@ -210,15 +106,15 @@ public class SmppBindingTest {
assertEquals("Hello SMPP world!", smppMessage.getBody());
assertEquals(8, smppMessage.getHeaders().size());
- assertEquals("2", smppMessage.getHeader(SmppBinding.ID));
- assertEquals(1, smppMessage.getHeader(SmppBinding.DELIVERED));
+ assertEquals("2", smppMessage.getHeader(SmppConstants.ID));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.DELIVERED));
// To avoid the test failure when running in different TimeZone
- //assertEquals(new Date(1251753060000L), smppMessage.getHeader(SmppBinding.DONE_DATE));
- assertEquals("xxx", smppMessage.getHeader(SmppBinding.ERROR));
- //assertEquals(new Date(1251753000000L), smppMessage.getHeader(SmppBinding.SUBMIT_DATE));
- assertEquals(1, smppMessage.getHeader(SmppBinding.SUBMITTED));
- assertEquals(DeliveryReceiptState.DELIVRD, smppMessage.getHeader(SmppBinding.FINAL_STATUS));
- assertEquals(SmppMessageType.DeliveryReceipt.toString(), smppMessage.getHeader(SmppBinding.MESSAGE_TYPE));
+ //assertEquals(new Date(1251753060000L), smppMessage.getHeader(SmppConstants.DONE_DATE));
+ assertEquals("xxx", smppMessage.getHeader(SmppConstants.ERROR));
+ //assertEquals(new Date(1251753000000L), smppMessage.getHeader(SmppConstants.SUBMIT_DATE));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.SUBMITTED));
+ assertEquals(DeliveryReceiptState.DELIVRD, smppMessage.getHeader(SmppConstants.FINAL_STATUS));
+ assertEquals(SmppMessageType.DeliveryReceipt.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE));
}
@Test
@@ -236,14 +132,14 @@ public class SmppBindingTest {
assertEquals("Hello SMPP world!", smppMessage.getBody());
assertEquals(8, smppMessage.getHeaders().size());
- assertEquals(1, smppMessage.getHeader(SmppBinding.SEQUENCE_NUMBER));
- assertEquals(1, smppMessage.getHeader(SmppBinding.COMMAND_ID));
- assertEquals("1818", smppMessage.getHeader(SmppBinding.SOURCE_ADDR));
- assertEquals("1919", smppMessage.getHeader(SmppBinding.DEST_ADDR));
- assertEquals("090831230627004+", smppMessage.getHeader(SmppBinding.SCHEDULE_DELIVERY_TIME));
- assertEquals("090901230627004+", smppMessage.getHeader(SmppBinding.VALIDITY_PERIOD));
- assertEquals("WAP", smppMessage.getHeader(SmppBinding.SERVICE_TYPE));
- assertEquals(SmppMessageType.DeliverSm.toString(), smppMessage.getHeader(SmppBinding.MESSAGE_TYPE));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.SEQUENCE_NUMBER));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.COMMAND_ID));
+ assertEquals("1818", smppMessage.getHeader(SmppConstants.SOURCE_ADDR));
+ assertEquals("1919", smppMessage.getHeader(SmppConstants.DEST_ADDR));
+ assertEquals("090831230627004+", smppMessage.getHeader(SmppConstants.SCHEDULE_DELIVERY_TIME));
+ assertEquals("090901230627004+", smppMessage.getHeader(SmppConstants.VALIDITY_PERIOD));
+ assertEquals("WAP", smppMessage.getHeader(SmppConstants.SERVICE_TYPE));
+ assertEquals(SmppMessageType.DeliverSm.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE));
}
@Test
@@ -261,14 +157,14 @@ public class SmppBindingTest {
assertEquals("Hello SMPP world!", smppMessage.getBody());
assertEquals(8, smppMessage.getHeaders().size());
- assertEquals(1, smppMessage.getHeader(SmppBinding.SEQUENCE_NUMBER));
- assertEquals(1, smppMessage.getHeader(SmppBinding.COMMAND_ID));
- assertEquals("1818", smppMessage.getHeader(SmppBinding.SOURCE_ADDR));
- assertEquals("1919", smppMessage.getHeader(SmppBinding.DEST_ADDR));
- assertEquals("090831230627004+", smppMessage.getHeader(SmppBinding.SCHEDULE_DELIVERY_TIME));
- assertEquals("090901230627004+", smppMessage.getHeader(SmppBinding.VALIDITY_PERIOD));
- assertEquals("WAP", smppMessage.getHeader(SmppBinding.SERVICE_TYPE));
- assertEquals(SmppMessageType.DeliverSm.toString(), smppMessage.getHeader(SmppBinding.MESSAGE_TYPE));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.SEQUENCE_NUMBER));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.COMMAND_ID));
+ assertEquals("1818", smppMessage.getHeader(SmppConstants.SOURCE_ADDR));
+ assertEquals("1919", smppMessage.getHeader(SmppConstants.DEST_ADDR));
+ assertEquals("090831230627004+", smppMessage.getHeader(SmppConstants.SCHEDULE_DELIVERY_TIME));
+ assertEquals("090901230627004+", smppMessage.getHeader(SmppConstants.VALIDITY_PERIOD));
+ assertEquals("WAP", smppMessage.getHeader(SmppConstants.SERVICE_TYPE));
+ assertEquals(SmppMessageType.DeliverSm.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE));
}
@Test
@@ -289,20 +185,20 @@ public class SmppBindingTest {
assertNull(smppMessage.getBody());
assertEquals(14, smppMessage.getHeaders().size());
- assertEquals("1", smppMessage.getHeader(SmppBinding.ID));
- assertEquals(1, smppMessage.getHeader(SmppBinding.SEQUENCE_NUMBER));
- assertEquals(1, smppMessage.getHeader(SmppBinding.COMMAND_ID));
- assertEquals(0, smppMessage.getHeader(SmppBinding.COMMAND_STATUS));
- assertEquals("1818", smppMessage.getHeader(SmppBinding.SOURCE_ADDR));
- assertEquals((byte) 8, smppMessage.getHeader(SmppBinding.SOURCE_ADDR_NPI));
- assertEquals((byte) 2, smppMessage.getHeader(SmppBinding.SOURCE_ADDR_TON));
- assertEquals("1919", smppMessage.getHeader(SmppBinding.DEST_ADDR));
- assertEquals((byte) 8, smppMessage.getHeader(SmppBinding.DEST_ADDR_NPI));
- assertEquals((byte) 2, smppMessage.getHeader(SmppBinding.DEST_ADDR_TON));
- assertEquals("WAP", smppMessage.getHeader(SmppBinding.SERVICE_TYPE));
- assertEquals((byte) 0, smppMessage.getHeader(SmppBinding.REGISTERED_DELIVERY));
- assertEquals((byte) 0, smppMessage.getHeader(SmppBinding.DATA_CODING));
- assertEquals(SmppMessageType.DataSm.toString(), smppMessage.getHeader(SmppBinding.MESSAGE_TYPE));
+ assertEquals("1", smppMessage.getHeader(SmppConstants.ID));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.SEQUENCE_NUMBER));
+ assertEquals(1, smppMessage.getHeader(SmppConstants.COMMAND_ID));
+ assertEquals(0, smppMessage.getHeader(SmppConstants.COMMAND_STATUS));
+ assertEquals("1818", smppMessage.getHeader(SmppConstants.SOURCE_ADDR));
+ assertEquals((byte) 8, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_NPI));
+ assertEquals((byte) 2, smppMessage.getHeader(SmppConstants.SOURCE_ADDR_TON));
+ assertEquals("1919", smppMessage.getHeader(SmppConstants.DEST_ADDR));
+ assertEquals((byte) 8, smppMessage.getHeader(SmppConstants.DEST_ADDR_NPI));
+ assertEquals((byte) 2, smppMessage.getHeader(SmppConstants.DEST_ADDR_TON));
+ assertEquals("WAP", smppMessage.getHeader(SmppConstants.SERVICE_TYPE));
+ assertEquals((byte) 0, smppMessage.getHeader(SmppConstants.REGISTERED_DELIVERY));
+ assertEquals((byte) 0, smppMessage.getHeader(SmppConstants.DATA_CODING));
+ assertEquals(SmppMessageType.DataSm.toString(), smppMessage.getHeader(SmppConstants.MESSAGE_TYPE));
}
@Test
@@ -312,4 +208,69 @@ public class SmppBindingTest {
assertSame(configuration, binding.getConfiguration());
}
+
+ @Test
+ public void createSmppSubmitSmCommand() {
+ SMPPSession session = new SMPPSession();
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+
+ SmppCommand command = binding.createSmppCommand(session, exchange);
+
+ assertTrue(command instanceof SmppSubmitSmCommand);
+ }
+
+ @Test
+ public void createSmppSubmitMultiCommand() {
+ SMPPSession session = new SMPPSession();
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "SubmitMulti");
+
+ SmppCommand command = binding.createSmppCommand(session, exchange);
+
+ assertTrue(command instanceof SmppSubmitMultiCommand);
+ }
+
+ @Test
+ public void createSmppDataSmCommand() {
+ SMPPSession session = new SMPPSession();
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "DataSm");
+
+ SmppCommand command = binding.createSmppCommand(session, exchange);
+
+ assertTrue(command instanceof SmppDataSmCommand);
+ }
+
+ @Test
+ public void createSmppReplaceSmCommand() {
+ SMPPSession session = new SMPPSession();
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "ReplaceSm");
+
+ SmppCommand command = binding.createSmppCommand(session, exchange);
+
+ assertTrue(command instanceof SmppReplaceSmCommand);
+ }
+
+ @Test
+ public void createSmppQuerySmCommand() {
+ SMPPSession session = new SMPPSession();
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "QuerySm");
+
+ SmppCommand command = binding.createSmppCommand(session, exchange);
+
+ assertTrue(command instanceof SmppQuerySmCommand);
+ }
+
+ @Test
+ public void createSmppCancelSmCommand() {
+ SMPPSession session = new SMPPSession();
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "CancelSm");
+
+ SmppCommand command = binding.createSmppCommand(session, exchange);
+
+ assertTrue(command instanceof SmppCancelSmCommand);
+ }
}
\ No newline at end of file
Added: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCancelSmCommandTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCancelSmCommandTest.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCancelSmCommandTest.java (added)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCancelSmCommandTest.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,86 @@
+/**
+ * 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 org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.jsmpp.bean.NumberingPlanIndicator;
+import org.jsmpp.bean.TypeOfNumber;
+import org.jsmpp.session.SMPPSession;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.easymock.classextension.EasyMock.createMock;
+import static org.easymock.classextension.EasyMock.replay;
+import static org.easymock.classextension.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+
+public class SmppCancelSmCommandTest {
+
+ private SMPPSession session;
+ private SmppConfiguration config;
+ private SmppCancelSmCommand command;
+
+ @Before
+ public void setUp() {
+ session = createMock(SMPPSession.class);
+ config = new SmppConfiguration();
+
+ command = new SmppCancelSmCommand(session, config);
+ }
+
+ @Test
+ public void executeWithConfigurationData() throws Exception {
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "CancelSm");
+ exchange.getIn().setHeader(SmppConstants.ID, "1");
+ session.cancelShortMessage("CMT", "1", TypeOfNumber.UNKNOWN, NumberingPlanIndicator.UNKNOWN, "1616", TypeOfNumber.UNKNOWN, NumberingPlanIndicator.UNKNOWN, "1717");
+
+ replay(session);
+
+ command.execute(exchange);
+
+ verify(session);
+
+ assertEquals("1", exchange.getOut().getHeader(SmppConstants.ID));
+ }
+
+ @Test
+ public void execute() throws Exception {
+ Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "CancelSm");
+ exchange.getIn().setHeader(SmppConstants.ID, "1");
+ exchange.getIn().setHeader(SmppConstants.SERVICE_TYPE, "XXX");
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_TON, TypeOfNumber.NATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_NPI, NumberingPlanIndicator.NATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR, "1818");
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR_TON, TypeOfNumber.INTERNATIONAL.value());
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR_NPI, NumberingPlanIndicator.INTERNET.value());
+ exchange.getIn().setHeader(SmppConstants.DEST_ADDR, "1919");
+ session.cancelShortMessage("XXX", "1", TypeOfNumber.NATIONAL, NumberingPlanIndicator.NATIONAL, "1818", TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.INTERNET, "1919");
+
+ replay(session);
+
+ command.execute(exchange);
+
+ verify(session);
+
+ assertEquals("1", exchange.getOut().getHeader(SmppConstants.ID));
+ }
+}
\ No newline at end of file
Added: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCommandTypeTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCommandTypeTest.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCommandTypeTest.java (added)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppCommandTypeTest.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,75 @@
+/**
+ * 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 org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertSame;
+
+public class SmppCommandTypeTest {
+
+ private Exchange exchange;
+
+ @Before
+ public void setUp() {
+ exchange = new DefaultExchange(new DefaultCamelContext());
+ }
+
+ @Test
+ public void createSmppSubmitSmCommand() {
+ assertSame(SmppCommandType.SUBMIT_SM, SmppCommandType.fromExchange(exchange));
+ }
+
+ @Test
+ public void createSmppSubmitMultiCommand() {
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "SubmitMulti");
+
+ assertSame(SmppCommandType.SUBMIT_MULTI, SmppCommandType.fromExchange(exchange));
+ }
+
+ @Test
+ public void createSmppDataSmCommand() {
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "DataSm");
+
+ assertSame(SmppCommandType.DATA_SHORT_MESSAGE, SmppCommandType.fromExchange(exchange));
+ }
+
+ @Test
+ public void createSmppReplaceSmCommand() {
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "ReplaceSm");
+
+ assertSame(SmppCommandType.REPLACE_SM, SmppCommandType.fromExchange(exchange));
+ }
+
+ @Test
+ public void createSmppQuerySmCommand() {
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "QuerySm");
+
+ assertSame(SmppCommandType.QUERY_SM, SmppCommandType.fromExchange(exchange));
+ }
+
+ @Test
+ public void createSmppCancelSmCommand() {
+ exchange.getIn().setHeader(SmppConstants.COMMAND, "CancelSm");
+
+ assertSame(SmppCommandType.CANCEL_SM, SmppCommandType.fromExchange(exchange));
+ }
+}
\ 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=1179457&r1=1179456&r2=1179457&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 Oct 5 21:55:46 2011
@@ -150,7 +150,7 @@ public class SmppConfigurationTest {
+ "port=2775, "
+ "systemId=smppclient, "
+ "systemType=cp, "
- + "dataCoding=0, "
+ + "alphabet=0, "
+ "encoding=ISO-8859-1, "
+ "transactionTimer=10000, "
+ "registeredDelivery=1, "
Added: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDefaultSplitterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDefaultSplitterTest.java?rev=1179457&view=auto
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDefaultSplitterTest.java (added)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppDefaultSplitterTest.java Wed Oct 5 21:55:46 2011
@@ -0,0 +1,67 @@
+/**
+ * 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 org.junit.Test;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+public class SmppDefaultSplitterTest {
+
+ @Test
+ public void splitShortMessageWith160Character() {
+ String message = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ + "12345678901234567890123456789012345678901234567890123456789012345678901234567890";
+
+ SmppDefaultSplitter splitter = new SmppDefaultSplitter(message.length());
+ SmppDefaultSplitter.resetCurrentReferenceNumber();
+ byte[][] result = splitter.split(message.getBytes());
+
+ assertEquals(1, result.length);
+ assertArrayEquals(new byte[]{49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48}, result[0]);
+
+ assertEquals(message, new String(result[0]));
+ }
+
+ @Test
+ public void splitShortMessageWith161Character() {
+ String message = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ + "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901";
+
+ SmppDefaultSplitter splitter = new SmppDefaultSplitter(message.length());
+ SmppDefaultSplitter.resetCurrentReferenceNumber();
+ byte[][] result = splitter.split(message.getBytes());
+
+ assertEquals(2, result.length);
+ assertArrayEquals(new byte[]{SmppSplitter.UDHIE_HEADER_LENGTH, SmppSplitter.UDHIE_IDENTIFIER_SAR, SmppSplitter.UDHIE_SAR_LENGTH, 1, 2, 1, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 48, 49, 50, 51}, result[0]);
+ assertArrayEquals(new byte[]{SmppSplitter.UDHIE_HEADER_LENGTH, SmppSplitter.UDHIE_IDENTIFIER_SAR, SmppSplitter.UDHIE_SAR_LENGTH, 1, 2, 2, 52, 53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 48, 49}, result[1]);
+
+ String firstShortMessage = new String(result[0], SmppSplitter.UDHIE_HEADER_REAL_LENGTH, result[0].length - SmppSplitter.UDHIE_HEADER_REAL_LENGTH);
+ String secondShortMessage = new String(result[1], SmppSplitter.UDHIE_HEADER_REAL_LENGTH, result[1].length - SmppSplitter.UDHIE_HEADER_REAL_LENGTH);
+
+ assertEquals(message, firstShortMessage + secondShortMessage);
+ }
+}
\ No newline at end of file
Modified: camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppProducerLazySessionCreationTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppProducerLazySessionCreationTest.java?rev=1179457&r1=1179456&r2=1179457&view=diff
==============================================================================
--- camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppProducerLazySessionCreationTest.java (original)
+++ camel/trunk/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppProducerLazySessionCreationTest.java Wed Oct 5 21:55:46 2011
@@ -17,18 +17,8 @@
package org.apache.camel.component.smpp;
import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.jsmpp.bean.Alphabet;
import org.jsmpp.bean.BindType;
-import org.jsmpp.bean.ESMClass;
-import org.jsmpp.bean.GeneralDataCoding;
-import org.jsmpp.bean.MessageClass;
import org.jsmpp.bean.NumberingPlanIndicator;
-import org.jsmpp.bean.OptionalParameter;
-import org.jsmpp.bean.RegisteredDelivery;
-import org.jsmpp.bean.SMSCDeliveryReceipt;
-import org.jsmpp.bean.SubmitSm;
import org.jsmpp.bean.TypeOfNumber;
import org.jsmpp.session.BindParameter;
import org.jsmpp.session.SMPPSession;
@@ -36,8 +26,6 @@ import org.jsmpp.session.SessionStateLis
import org.junit.Before;
import org.junit.Test;
-import static org.easymock.EasyMock.aryEq;
-import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
import static org.easymock.classextension.EasyMock.createMock;
@@ -70,26 +58,6 @@ public class SmppProducerLazySessionCrea
};
}
- private void submitSmExpectations(Exchange exchange, SmppBinding binding, SubmitSm submitSm) throws Exception {
- expect(submitSm.getServiceType()).andReturn("CMT");
- expect(submitSm.getSourceAddrTon()).andReturn(TypeOfNumber.UNKNOWN.value());
- expect(submitSm.getSourceAddrNpi()).andReturn(NumberingPlanIndicator.UNKNOWN.value());
- expect(submitSm.getSourceAddr()).andReturn("1616");
- expect(submitSm.getDestAddrTon()).andReturn(TypeOfNumber.UNKNOWN.value());
- expect(submitSm.getDestAddrNpi()).andReturn(NumberingPlanIndicator.UNKNOWN.value());
- expect(submitSm.getDestAddress()).andReturn("1717");
- expect(submitSm.getProtocolId()).andReturn((byte) 0);
- expect(submitSm.getPriorityFlag()).andReturn((byte) 1);
- expect(submitSm.getScheduleDeliveryTime()).andReturn("090830230627004+");
- expect(submitSm.getValidityPeriod()).andReturn("090831232000004+");
- expect(submitSm.getRegisteredDelivery())
- .andReturn(SMSCDeliveryReceipt.SUCCESS_FAILURE.value());
- expect(submitSm.getReplaceIfPresent()).andReturn((byte) 0);
- expect(submitSm.getDataCoding()).andReturn((byte) 0);
- expect(submitSm.getShortMessage()).andReturn("Hello SMPP world!".getBytes("ISO-8859-1"));
- expect(submitSm.getOptionalParametes()).andReturn(new OptionalParameter[]{});
- }
-
@Test
public void doStartShouldNotCreateTheSmppSession() throws Exception {
expect(endpoint.getConnectionString()).andReturn("smpp://smppclient@localhost:2775");
@@ -123,45 +91,16 @@ public class SmppProducerLazySessionCrea
expect(endpoint.getConnectionString()).andReturn("smpp://smppclient@localhost:2775");
SmppBinding binding = createMock(SmppBinding.class);
Exchange exchange = createMock(Exchange.class);
- Message message = createMock(Message.class);
- SubmitSm submitSm = createMock(SubmitSm.class);
- expect(exchange.getExchangeId()).andReturn("ID-muellerc-macbookpro/3690-1214458315718/2-0");
+ SmppCommand command = createMock(SmppCommand.class);
expect(endpoint.getBinding()).andReturn(binding);
- expect(binding.createSubmitSm(exchange)).andReturn(submitSm);
- submitSmExpectations(exchange, binding, submitSm);
- expect(session.submitShortMessage(
- eq("CMT"),
- eq(TypeOfNumber.UNKNOWN),
- eq(NumberingPlanIndicator.UNKNOWN),
- eq("1616"),
- eq(TypeOfNumber.UNKNOWN),
- eq(NumberingPlanIndicator.UNKNOWN),
- eq("1717"),
- isA(ESMClass.class),
- eq((byte) 0),
- eq((byte) 1),
- eq("090830230627004+"),
- eq("090831232000004+"),
- eq(new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE)),
- eq((byte) 0),
- eq(new GeneralDataCoding(
- false,
- true,
- MessageClass.CLASS1,
- Alphabet.ALPHA_DEFAULT)),
- eq((byte) 0),
- aryEq("Hello SMPP world!".getBytes("ISO-8859-1"))))
- .andReturn("1");
- expect(exchange.getPattern()).andReturn(ExchangePattern.InOnly);
- expect(exchange.getIn()).andReturn(message);
- message.setHeader(SmppBinding.ID, "1"); // expectation without return value
- expect(exchange.getExchangeId()).andReturn("ID-muellerc-macbookpro/3690-1214458315718/2-0");
+ expect(binding.createSmppCommand(session, exchange)).andReturn(command);
+ command.execute(exchange);
- replay(session, endpoint, binding, exchange, message, submitSm);
+ replay(session, endpoint, binding, exchange, command);
producer.doStart();
producer.process(exchange);
- verify(session, endpoint, binding, exchange, message, submitSm);
+ verify(session, endpoint, binding, exchange, command);
}
}
\ No newline at end of file