You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2016/12/02 09:44:25 UTC
[1/3] camel git commit: Upgrade Ribbon to version 2.2.2
Repository: camel
Updated Branches:
refs/heads/master d7416d3f4 -> 82490dbe3
Upgrade Ribbon to version 2.2.2
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/32143e8d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/32143e8d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/32143e8d
Branch: refs/heads/master
Commit: 32143e8d8414a54659b66a012674b00576eff13f
Parents: d7416d3
Author: Andrea Cosentino <an...@gmail.com>
Authored: Fri Dec 2 10:39:23 2016 +0100
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Fri Dec 2 10:39:23 2016 +0100
----------------------------------------------------------------------
parent/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/32143e8d/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index dab42f1..8f09b77 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -506,7 +506,7 @@
<restlet-joda-time-version>2.3</restlet-joda-time-version>
<rhino-bundle-version>1.7R2_3</rhino-bundle-version>
<rhino-version>1.7R2</rhino-version>
- <ribbon-version>2.2.0</ribbon-version>
+ <ribbon-version>2.2.2</ribbon-version>
<roaster-version>2.19.3.Final</roaster-version>
<rome-bundle-version>1.0_3</rome-bundle-version>
<rome-version>1.0</rome-version>
[2/3] camel git commit: SmppNLSTSplitter for sending messages using
National Language Shit Table
Posted by ac...@apache.org.
SmppNLSTSplitter for sending messages using National Language Shit Table
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b1b67bda
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b1b67bda
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b1b67bda
Branch: refs/heads/master
Commit: b1b67bdafd58ad105668e19699b8bbd27f1ec99b
Parents: 32143e8
Author: Engin Dumlu <en...@gmail.com>
Authored: Wed Nov 30 20:00:35 2016 +0300
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Fri Dec 2 10:40:51 2016 +0100
----------------------------------------------------------------------
.../camel/component/smpp/SmppConstants.java | 2 +
.../camel/component/smpp/SmppNLSTSplitter.java | 100 +++++++++++++++++++
.../camel/component/smpp/SmppSmCommand.java | 12 ++-
.../component/smpp/SmppSubmitSmCommand.java | 7 +-
.../component/smpp/SmppNLSTSplitterTest.java | 63 ++++++++++++
5 files changed, 180 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/b1b67bda/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
index 80c47d6..b9f3d08 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConstants.java
@@ -27,6 +27,7 @@ public interface SmppConstants {
String COMMAND_ID = "CamelSmppCommandId";
String COMMAND_STATUS = "CamelSmppCommandStatus";
String DATA_CODING = "CamelSmppDataCoding";
+ String DATA_SPLITTER = "CamelSmppSplitter";
String DELIVERED = "CamelSmppDelivered";
String DEST_ADDR = "CamelSmppDestAddr";
String DEST_ADDR_NPI = "CamelSmppDestAddrNpi";
@@ -34,6 +35,7 @@ public interface SmppConstants {
String DONE_DATE = "CamelSmppDoneDate";
String ENCODING = "CamelSmppEncoding";
String ERROR = "CamelSmppError";
+ String ESM_CLASS = "CamelSmppClass";
String ESME_ADDR = "CamelSmppEsmeAddr";
String ESME_ADDR_NPI = "CamelSmppEsmeAddrNpi";
String ESME_ADDR_TON = "CamelSmppEsmeAddrTon";
http://git-wip-us.apache.org/repos/asf/camel/blob/b1b67bda/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java
new file mode 100644
index 0000000..4e0bd39
--- /dev/null
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java
@@ -0,0 +1,100 @@
+package org.apache.camel.component.smpp;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by engin on 30/11/2016.
+ */
+class SmppNLSTSplitter extends SmppSplitter{
+
+ protected static final int UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH = 0x03; // header length for single message
+ protected static final int UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH = UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH + 1;
+
+ protected static final int UDHIE_NLI_MULTI_MSG_HEADER_LENGTH = 0x08; // header length for multi message
+ protected static final int UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH = UDHIE_NLI_MULTI_MSG_HEADER_LENGTH + 1;
+
+
+ protected static final int UDHIE_SAR_REF_NUM_LENGTH = 1;
+// protected static final byte UDHIE_IDENTIFIER_SAR = 0x00;
+// protected static final byte UDHIE_SAR_LENGTH = 0x03;
+// protected static final int MAX_SEG_COUNT = 255;
+
+ protected static final int UDHIE_NLI_IDENTIFIER = 0x25;
+ protected static final int UDHIE_NLI_HEADER_LENGTH = 0x01;
+
+ public static final int MAX_MSG_CHAR_SIZE = (MAX_MSG_BYTE_LENGTH * 8 / 7) - (UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH + 1); // 155 for NLST
+ public static final int MAX_SEG_BYTE_SIZE = (MAX_MSG_BYTE_LENGTH - UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH) * 8 / 7;
+
+ private byte languageIdentifier;
+ private final Logger logger = LoggerFactory.getLogger(SmppNLSTSplitter.class);
+
+ SmppNLSTSplitter(int currentLength, byte languageIdentifier) {
+ super(MAX_MSG_CHAR_SIZE, MAX_SEG_BYTE_SIZE, currentLength);
+ this.languageIdentifier = languageIdentifier;
+ }
+
+ public byte[][] split(byte[] message) {
+ if (!isSplitRequired()) {
+ byte[] nli_message = new byte[UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH + message.length];
+ nli_message[0] = (byte) UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH;
+ nli_message[1] = (byte) UDHIE_NLI_IDENTIFIER;
+ nli_message[2] = (byte) UDHIE_NLI_HEADER_LENGTH;
+ nli_message[3] = this.languageIdentifier;
+ System.arraycopy(message, 0, nli_message, 4, message.length);
+ return new byte[][]{nli_message};
+ }
+
+ int segmentLength = getSegmentLength();
+
+ // determine how many messages
+ int segmentNum = message.length / segmentLength;
+ int messageLength = message.length;
+ if (segmentNum > MAX_SEG_COUNT) {
+ // this is too long, can't fit, so chop
+ segmentNum = MAX_SEG_COUNT;
+ messageLength = segmentNum * segmentLength;
+ }
+ if ((messageLength % segmentLength) > 0) {
+ segmentNum++;
+ }
+
+ byte[][] segments = new byte[segmentNum][];
+
+ int lengthOfData;
+ byte refNum = getReferenceNumber();
+ for (int i = 0; i < segmentNum; i++) {
+ logger.info("segment number = {}", i);
+ if (segmentNum - i == 1) {
+ lengthOfData = messageLength - i * segmentLength;
+ } else {
+ lengthOfData = segmentLength;
+ }
+ logger.info("Length of data = {}", lengthOfData);
+
+ segments[i] = new byte[UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH + lengthOfData];
+ logger.info("segments[{}].length = {}", i, segments[i].length);
+
+ segments[i][0] = UDHIE_NLI_MULTI_MSG_HEADER_LENGTH; // doesn't include itself, is header length
+ // SAR identifier
+ segments[i][1] = UDHIE_IDENTIFIER_SAR;
+ // SAR length
+ segments[i][2] = UDHIE_SAR_LENGTH;
+ // DATAGRAM REFERENCE NUMBER
+ segments[i][3] = refNum;
+ // total number of segments
+ segments[i][4] = (byte) segmentNum;
+ // segment #
+ segments[i][5] = (byte) (i + 1);
+
+ // language stuff
+ segments[i][6] = (byte) UDHIE_NLI_IDENTIFIER;
+ segments[i][7] = (byte) UDHIE_NLI_HEADER_LENGTH;
+ segments[i][8] = this.languageIdentifier;
+
+ // now copy the data
+ System.arraycopy(message, i * segmentLength, segments[i], UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH, lengthOfData);
+ }
+ return segments;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/b1b67bda/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
index c308e4d..71b2171 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
@@ -76,11 +76,19 @@ public abstract class SmppSmCommand extends AbstractSmppCommand {
}
protected SmppSplitter createSplitter(Message message) {
- Alphabet alphabet = determineAlphabet(message);
+ SmppSplitter splitter;
+ // use the splitter if provided via header
+ if (message.getHeaders().containsKey(SmppConstants.DATA_SPLITTER)){
+ splitter = message.getHeader(SmppConstants.DATA_SPLITTER, SmppSplitter.class);
+ if (null != splitter){
+ return splitter;
+ }
+ logger.warn("Invalid splitter given. Must be instance of SmppSplitter");
+ }
+ Alphabet alphabet = determineAlphabet(message);
String body = message.getBody(String.class);
- SmppSplitter splitter;
if (SmppUtils.is8Bit(alphabet)) {
splitter = new Smpp8BitSplitter(body.length());
} else if (alphabet == Alphabet.ALPHA_UCS2) {
http://git-wip-us.apache.org/repos/asf/camel/blob/b1b67bda/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
index 542266f..7ac8955 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
@@ -95,8 +95,11 @@ public class SmppSubmitSmCommand extends SmppSmCommand {
SubmitSm template = createSubmitSmTemplate(exchange);
byte[][] segments = splitBody(exchange.getIn());
- // multipart message
- if (segments.length > 1) {
+ ESMClass esmClass = exchange.getIn().getHeader(SmppConstants.ESM_CLASS, ESMClass.class);
+ if (null != esmClass) {
+ template.setEsmClass(esmClass.value());
+ // multipart message
+ }else if (segments.length > 1) {
template.setEsmClass(new ESMClass(MessageMode.DEFAULT, MessageType.DEFAULT, GSMSpecificFeature.UDHI).value());
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b1b67bda/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java
new file mode 100644
index 0000000..2dfcabc
--- /dev/null
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java
@@ -0,0 +1,63 @@
+package org.apache.camel.component.smpp;
+
+import java.nio.charset.Charset;
+
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Created by engin on 30/11/2016.
+ */
+public class SmppNLSTSplitterTest {
+
+ @Test
+ public void splitTurkishShortMessageWith155Character() {
+ String message = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ + "123456789012345678901234567890123456789012345678901234567890123456789012345"; // 155 single message
+
+ byte turkishLanguageIdentifier = 0x01;
+ SmppSplitter splitter = new SmppNLSTSplitter(message.length(), turkishLanguageIdentifier);
+ SmppSplitter.resetCurrentReferenceNumber();
+ byte[][] result = splitter.split(message.getBytes());
+
+ assertEquals(1, result.length);
+ assertArrayEquals(new byte[]{SmppNLSTSplitter.UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
+ 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}, result[0]);
+ }
+
+ @Test
+ public void splitShortMessageWith156Character() {
+ String message = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" + // first part 149
+ "0123456"; // second part 7
+
+ byte turkishLanguageIdentifier = 0x01;
+ SmppSplitter splitter = new SmppNLSTSplitter(message.length(), turkishLanguageIdentifier);
+ SmppSplitter.resetCurrentReferenceNumber();
+ byte[][] result = splitter.split(message.getBytes());
+
+ assertEquals(2, result.length);
+ assertArrayEquals(new byte[]{
+ SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_IDENTIFIER_SAR, SmppNLSTSplitter.UDHIE_SAR_LENGTH, 1, 2, 1,
+ SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
+ 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}, result[0]);
+
+ assertArrayEquals(new byte[]{
+ SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_IDENTIFIER_SAR, SmppNLSTSplitter.UDHIE_SAR_LENGTH, 1, 2, 2,
+ SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
+ 48, 49, 50, 51, 52, 53, 54}, result[1]);
+
+ String firstShortMessage = new String(result[0], SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH, result[0].length - SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH);
+ String secondShortMessage = new String(result[1], SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH, result[1].length - SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH);
+ assertEquals(message, firstShortMessage + secondShortMessage);
+ }
+}
\ No newline at end of file
[3/3] camel git commit: fixed typos failing with -Psourcecheck added
ASF license headers invalid splitter throws exception
Posted by ac...@apache.org.
fixed typos failing with -Psourcecheck
added ASF license headers
invalid splitter throws exception
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/82490dbe
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/82490dbe
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/82490dbe
Branch: refs/heads/master
Commit: 82490dbe3b5969d7740c0ebd22afe86475be9a70
Parents: b1b67bd
Author: Engin Dumlu <en...@gmail.com>
Authored: Thu Dec 1 20:21:16 2016 +0300
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Fri Dec 2 10:40:52 2016 +0100
----------------------------------------------------------------------
.../camel/component/smpp/SmppNLSTSplitter.java | 97 +++++++++++++++-----
.../camel/component/smpp/SmppSmCommand.java | 9 +-
.../component/smpp/SmppSubmitSmCommand.java | 2 +-
.../component/smpp/SmppNLSTSplitterTest.java | 45 +++++----
4 files changed, 108 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/82490dbe/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java
index 4e0bd39..91cbadb 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppNLSTSplitter.java
@@ -1,48 +1,99 @@
+/**
+ * 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.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Created by engin on 30/11/2016.
+ * Splitter for messages use National Language Lock Table
+ * <p/>
+ * @see 3GPP 23.038 Reference
*/
-class SmppNLSTSplitter extends SmppSplitter{
-
+public class SmppNLSTSplitter extends SmppSplitter {
+ /**
+ * The length of the UDH for single short message in bytes.
+ * 0x25 - UDHIE_NLI_IDENTIFIER
+ * 0x01 - Length of the header
+ * 0xXX - Locking shift table indicator the Language
+ */
protected static final int UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH = 0x03; // header length for single message
+ /**
+ * The real length of the UDH for single short message
+ */
protected static final int UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH = UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH + 1;
- protected static final int UDHIE_NLI_MULTI_MSG_HEADER_LENGTH = 0x08; // header length for multi message
+ /**
+ * The length of the UDH for splitted short messages, in bytes.
+ * 0x08 Overall header length
+ * 0x00 The value that identifier length of the SAR fragment. (8bit reference number only)
+ * 0x03 The length of the SAR fragment
+ * 0xXX The reference number for SAR
+ * 0xXX Total number of splitted / segmented messages
+ * 0xXX Segment number
+ * 0x25 National language locking shift element identifier
+ * 0x01 Length of the header
+ * 0xXX Locking shift table indicator for the Language (ie: 0x01 for Turkish)
+ */
+ protected static final int UDHIE_NLI_MULTI_MSG_HEADER_LENGTH = 0x08;
+
+ /**
+ * The real length of the UDH for segmentet short messages
+ */
protected static final int UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH = UDHIE_NLI_MULTI_MSG_HEADER_LENGTH + 1;
-
- protected static final int UDHIE_SAR_REF_NUM_LENGTH = 1;
-// protected static final byte UDHIE_IDENTIFIER_SAR = 0x00;
-// protected static final byte UDHIE_SAR_LENGTH = 0x03;
-// protected static final int MAX_SEG_COUNT = 255;
-
+ /**
+ * The element identifier value for the National Language Locking Table
+ */
protected static final int UDHIE_NLI_IDENTIFIER = 0x25;
+ /**
+ * The length of the NLI header
+ */
protected static final int UDHIE_NLI_HEADER_LENGTH = 0x01;
- public static final int MAX_MSG_CHAR_SIZE = (MAX_MSG_BYTE_LENGTH * 8 / 7) - (UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH + 1); // 155 for NLST
+ /**
+ * The maximum length in chars of the NLI messages.
+ * <p/>
+ * Each letter will be represented as 7 bit (like GSM8)
+ */
+ public static final int MAX_MSG_CHAR_SIZE = (MAX_MSG_BYTE_LENGTH * 8 / 7) - (UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH + 1);
+
public static final int MAX_SEG_BYTE_SIZE = (MAX_MSG_BYTE_LENGTH - UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH) * 8 / 7;
+ /**
+ * Locking shift table indicator for the Language, single byte
+ */
private byte languageIdentifier;
private final Logger logger = LoggerFactory.getLogger(SmppNLSTSplitter.class);
- SmppNLSTSplitter(int currentLength, byte languageIdentifier) {
+ public SmppNLSTSplitter(int currentLength, byte languageIdentifier) {
super(MAX_MSG_CHAR_SIZE, MAX_SEG_BYTE_SIZE, currentLength);
this.languageIdentifier = languageIdentifier;
}
public byte[][] split(byte[] message) {
if (!isSplitRequired()) {
- byte[] nli_message = new byte[UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH + message.length];
- nli_message[0] = (byte) UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH;
- nli_message[1] = (byte) UDHIE_NLI_IDENTIFIER;
- nli_message[2] = (byte) UDHIE_NLI_HEADER_LENGTH;
- nli_message[3] = this.languageIdentifier;
- System.arraycopy(message, 0, nli_message, 4, message.length);
- return new byte[][]{nli_message};
+ byte[] nliMessage = new byte[UDHIE_NLI_SINGLE_MSG_HEADER_REAL_LENGTH + message.length];
+ nliMessage[0] = (byte) UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH;
+ nliMessage[1] = (byte) UDHIE_NLI_IDENTIFIER;
+ nliMessage[2] = (byte) UDHIE_NLI_HEADER_LENGTH;
+ nliMessage[3] = this.languageIdentifier;
+ System.arraycopy(message, 0, nliMessage, 4, message.length);
+ return new byte[][]{nliMessage};
}
int segmentLength = getSegmentLength();
@@ -64,16 +115,16 @@ class SmppNLSTSplitter extends SmppSplitter{
int lengthOfData;
byte refNum = getReferenceNumber();
for (int i = 0; i < segmentNum; i++) {
- logger.info("segment number = {}", i);
+ logger.debug("segment number = {}", i);
if (segmentNum - i == 1) {
lengthOfData = messageLength - i * segmentLength;
} else {
lengthOfData = segmentLength;
}
- logger.info("Length of data = {}", lengthOfData);
+ logger.debug("Length of data = {}", lengthOfData);
segments[i] = new byte[UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH + lengthOfData];
- logger.info("segments[{}].length = {}", i, segments[i].length);
+ logger.debug("segments[{}].length = {}", i, segments[i].length);
segments[i][0] = UDHIE_NLI_MULTI_MSG_HEADER_LENGTH; // doesn't include itself, is header length
// SAR identifier
@@ -87,7 +138,7 @@ class SmppNLSTSplitter extends SmppSplitter{
// segment #
segments[i][5] = (byte) (i + 1);
- // language stuff
+ // national language locking shift table, element identifier
segments[i][6] = (byte) UDHIE_NLI_IDENTIFIER;
segments[i][7] = (byte) UDHIE_NLI_HEADER_LENGTH;
segments[i][8] = this.languageIdentifier;
http://git-wip-us.apache.org/repos/asf/camel/blob/82490dbe/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
index 71b2171..eb9cd94 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSmCommand.java
@@ -75,16 +75,16 @@ public abstract class SmppSmCommand extends AbstractSmppCommand {
return config.getSplittingPolicy();
}
- protected SmppSplitter createSplitter(Message message) {
+ protected SmppSplitter createSplitter(Message message) throws SmppException {
SmppSplitter splitter;
// use the splitter if provided via header
- if (message.getHeaders().containsKey(SmppConstants.DATA_SPLITTER)){
+ if (message.getHeaders().containsKey(SmppConstants.DATA_SPLITTER)) {
splitter = message.getHeader(SmppConstants.DATA_SPLITTER, SmppSplitter.class);
- if (null != splitter){
+ if (null != splitter) {
return splitter;
}
- logger.warn("Invalid splitter given. Must be instance of SmppSplitter");
+ throw new SmppException("Invalid splitter given. Must be instance of SmppSplitter");
}
Alphabet alphabet = determineAlphabet(message);
String body = message.getBody(String.class);
@@ -96,7 +96,6 @@ public abstract class SmppSmCommand extends AbstractSmppCommand {
} else {
splitter = new SmppDefaultSplitter(body.length());
}
-
return splitter;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/82490dbe/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
index 7ac8955..7392cda 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppSubmitSmCommand.java
@@ -99,7 +99,7 @@ public class SmppSubmitSmCommand extends SmppSmCommand {
if (null != esmClass) {
template.setEsmClass(esmClass.value());
// multipart message
- }else if (segments.length > 1) {
+ } else if (segments.length > 1) {
template.setEsmClass(new ESMClass(MessageMode.DEFAULT, MessageType.DEFAULT, GSMSpecificFeature.UDHI).value());
}
http://git-wip-us.apache.org/repos/asf/camel/blob/82490dbe/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java
index 2dfcabc..b3cacd1 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppNLSTSplitterTest.java
@@ -1,3 +1,19 @@
+/**
+ * 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;
@@ -9,9 +25,6 @@ import org.slf4j.LoggerFactory;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
-/**
- * Created by engin on 30/11/2016.
- */
public class SmppNLSTSplitterTest {
@Test
@@ -26,10 +39,10 @@ public class SmppNLSTSplitterTest {
assertEquals(1, result.length);
assertArrayEquals(new byte[]{SmppNLSTSplitter.UDHIE_NLI_SINGLE_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
- 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}, result[0]);
+ 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}, result[0]);
}
@Test
@@ -44,17 +57,17 @@ public class SmppNLSTSplitterTest {
assertEquals(2, result.length);
assertArrayEquals(new byte[]{
- SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_IDENTIFIER_SAR, SmppNLSTSplitter.UDHIE_SAR_LENGTH, 1, 2, 1,
- SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
- 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}, result[0]);
+ SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_IDENTIFIER_SAR, SmppNLSTSplitter.UDHIE_SAR_LENGTH, 1, 2, 1,
+ SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
+ 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}, result[0]);
assertArrayEquals(new byte[]{
- SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_IDENTIFIER_SAR, SmppNLSTSplitter.UDHIE_SAR_LENGTH, 1, 2, 2,
- SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
- 48, 49, 50, 51, 52, 53, 54}, result[1]);
+ SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_LENGTH, SmppNLSTSplitter.UDHIE_IDENTIFIER_SAR, SmppNLSTSplitter.UDHIE_SAR_LENGTH, 1, 2, 2,
+ SmppNLSTSplitter.UDHIE_NLI_IDENTIFIER, SmppNLSTSplitter.UDHIE_NLI_HEADER_LENGTH, turkishLanguageIdentifier,
+ 48, 49, 50, 51, 52, 53, 54}, result[1]);
String firstShortMessage = new String(result[0], SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH, result[0].length - SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH);
String secondShortMessage = new String(result[1], SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH, result[1].length - SmppNLSTSplitter.UDHIE_NLI_MULTI_MSG_HEADER_REAL_LENGTH);