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 <engindu...@gmail.com> Authored: Thu Dec 1 20:21:16 2016 +0300 Committer: Andrea Cosentino <anco...@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);