From 79d67955b160929ffacc6828014d3c5ce3110fb8 Mon Sep 17 00:00:00 2001 From: "tian.ming@huawei.com" Date: Thu, 25 Aug 2016 21:13:33 +0800 Subject: adjust the code Change-Id: Id896bed917ba6730c6b5d96665ef9978cfb413de Signed-off-by: tian.ming@huawei.com --- .gitignore | 5 + CommonLibrary/.gitignore | 5 - CommonLibrary/common-util/.gitignore | 5 - CommonLibrary/common-util/pom.xml | 122 -- .../baseservice/encrypt/cbb/CipherCreator.java | 95 -- .../baseservice/encrypt/cbb/impl/AesCipher.java | 131 -- .../encrypt/cbb/impl/AesCipherFactory.java | 54 - .../encrypt/cbb/inf/AbstractCipher.java | 50 - .../encrypt/cbb/inf/AbstractCipherFactory.java | 45 - .../openo/baseservice/encrypt/cbb/sha/Sha256.java | 110 -- .../java/org/openo/baseservice/util/RestUtils.java | 82 -- .../util/impl/SystemEnvVariablesDefImpl.java | 68 -- .../util/impl/SystemEnvVariablesFactory.java | 44 - .../baseservice/util/inf/SystemEnvVariables.java | 35 - .../encrypt/cbb/impl/AesCipherTest.java | 210 ---- .../baseservice/encrypt/cbb/sha/Sha256Test.java | 193 --- .../org/openo/baseservice/util/RestUtilsTest.java | 190 --- .../util/impl/SystemEnvVariablesDefImplTest.java | 113 -- CommonLibrary/pom.xml | 319 ----- CommonLibrary/rest-client/.gitignore | 1 - CommonLibrary/rest-client/pom.xml | 89 -- .../remoteservice/exception/ExceptionArgs.java | 110 -- .../remoteservice/exception/ServiceException.java | 254 ---- .../openo/baseservice/roa/util/ReaderHelper.java | 61 - .../openo/baseservice/roa/util/ServiceUtil.java | 177 --- .../baseservice/roa/util/clientsdk/HttpUtil.java | 169 --- .../baseservice/roa/util/clientsdk/JsonUtil.java | 99 -- .../roa/util/clientsdk/RestClientUtil.java | 133 -- .../roa/util/restclient/DefaultAsyncCallback.java | 37 - .../roa/util/restclient/HttpBaseRest.java | 291 ----- .../baseservice/roa/util/restclient/HttpRest.java | 254 ---- .../util/restclient/RestHttpContentExchange.java | 234 ---- .../baseservice/roa/util/restclient/Restful.java | 298 ----- .../roa/util/restclient/RestfulAsyncCallback.java | 43 - .../roa/util/restclient/RestfulClientConst.java | 65 - .../roa/util/restclient/RestfulConfigure.java | 162 --- .../roa/util/restclient/RestfulFactory.java | 95 -- .../roa/util/restclient/RestfulOptions.java | 196 --- .../roa/util/restclient/RestfulParametes.java | 155 --- .../roa/util/restclient/RestfulResponse.java | 144 --- .../baseservice/roa/util/ReaderHelperTest.java | 116 -- .../baseservice/roa/util/TestServiceUtil.java | 92 -- .../roa/util/clientsdk/TestHttpUtil.java | 266 ---- .../roa/util/clientsdk/TestJsonUtil.java | 184 --- .../roa/util/clientsdk/TestRestClientUtil.java | 210 ---- .../roa/util/clientsdk/demo/JsonTestClass.java | 88 -- .../roa/util/restclient/TestHttpRest.java | 1289 -------------------- .../restclient/TestRestHttpContentExchange.java | 590 --------- .../roa/util/restclient/TestRestfulConfigure.java | 245 ---- .../roa/util/restclient/TestRestfulFactory.java | 106 -- .../roa/util/restclient/TestRestfulOptions.java | 315 ----- .../roa/util/restclient/TestRestfulParametes.java | 229 ---- .../roa/util/restclient/TestRestfulResponse.java | 273 ----- .../src/test/resources/etc/conf/restclient.json | 11 - .../src/test/resources/rest-client-test.json | 11 - .../rest-client/src/test/resources/sample.txt.gz | Bin 43 -> 0 bytes common-util/.gitignore | 5 + common-util/pom.xml | 122 ++ .../baseservice/encrypt/cbb/CipherCreator.java | 95 ++ .../baseservice/encrypt/cbb/impl/AesCipher.java | 131 ++ .../encrypt/cbb/impl/AesCipherFactory.java | 54 + .../encrypt/cbb/inf/AbstractCipher.java | 50 + .../encrypt/cbb/inf/AbstractCipherFactory.java | 45 + .../openo/baseservice/encrypt/cbb/sha/Sha256.java | 110 ++ .../java/org/openo/baseservice/util/RestUtils.java | 82 ++ .../util/impl/SystemEnvVariablesDefImpl.java | 68 ++ .../util/impl/SystemEnvVariablesFactory.java | 44 + .../baseservice/util/inf/SystemEnvVariables.java | 35 + .../encrypt/cbb/impl/AesCipherTest.java | 210 ++++ .../baseservice/encrypt/cbb/sha/Sha256Test.java | 193 +++ .../org/openo/baseservice/util/RestUtilsTest.java | 190 +++ .../util/impl/SystemEnvVariablesDefImplTest.java | 113 ++ pom.xml | 319 +++++ rest-client/.gitignore | 1 + rest-client/pom.xml | 89 ++ .../remoteservice/exception/ExceptionArgs.java | 110 ++ .../remoteservice/exception/ServiceException.java | 254 ++++ .../openo/baseservice/roa/util/ReaderHelper.java | 61 + .../openo/baseservice/roa/util/ServiceUtil.java | 177 +++ .../baseservice/roa/util/clientsdk/HttpUtil.java | 169 +++ .../baseservice/roa/util/clientsdk/JsonUtil.java | 99 ++ .../roa/util/clientsdk/RestClientUtil.java | 133 ++ .../roa/util/restclient/DefaultAsyncCallback.java | 37 + .../roa/util/restclient/HttpBaseRest.java | 291 +++++ .../baseservice/roa/util/restclient/HttpRest.java | 254 ++++ .../util/restclient/RestHttpContentExchange.java | 234 ++++ .../baseservice/roa/util/restclient/Restful.java | 298 +++++ .../roa/util/restclient/RestfulAsyncCallback.java | 43 + .../roa/util/restclient/RestfulClientConst.java | 65 + .../roa/util/restclient/RestfulConfigure.java | 162 +++ .../roa/util/restclient/RestfulFactory.java | 95 ++ .../roa/util/restclient/RestfulOptions.java | 196 +++ .../roa/util/restclient/RestfulParametes.java | 155 +++ .../roa/util/restclient/RestfulResponse.java | 144 +++ .../baseservice/roa/util/ReaderHelperTest.java | 116 ++ .../baseservice/roa/util/TestServiceUtil.java | 92 ++ .../roa/util/clientsdk/TestHttpUtil.java | 266 ++++ .../roa/util/clientsdk/TestJsonUtil.java | 184 +++ .../roa/util/clientsdk/TestRestClientUtil.java | 210 ++++ .../roa/util/clientsdk/demo/JsonTestClass.java | 88 ++ .../roa/util/restclient/TestHttpRest.java | 1289 ++++++++++++++++++++ .../restclient/TestRestHttpContentExchange.java | 590 +++++++++ .../roa/util/restclient/TestRestfulConfigure.java | 245 ++++ .../roa/util/restclient/TestRestfulFactory.java | 106 ++ .../roa/util/restclient/TestRestfulOptions.java | 315 +++++ .../roa/util/restclient/TestRestfulParametes.java | 229 ++++ .../roa/util/restclient/TestRestfulResponse.java | 273 +++++ .../src/test/resources/etc/conf/restclient.json | 11 + .../src/test/resources/rest-client-test.json | 11 + rest-client/src/test/resources/sample.txt.gz | Bin 0 -> 43 bytes 110 files changed, 8963 insertions(+), 8963 deletions(-) create mode 100644 .gitignore delete mode 100644 CommonLibrary/.gitignore delete mode 100644 CommonLibrary/common-util/.gitignore delete mode 100644 CommonLibrary/common-util/pom.xml delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/RestUtils.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java delete mode 100644 CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java delete mode 100644 CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java delete mode 100644 CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java delete mode 100644 CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java delete mode 100644 CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java delete mode 100644 CommonLibrary/pom.xml delete mode 100644 CommonLibrary/rest-client/.gitignore delete mode 100644 CommonLibrary/rest-client/pom.xml delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java delete mode 100644 CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java delete mode 100644 CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java delete mode 100644 CommonLibrary/rest-client/src/test/resources/etc/conf/restclient.json delete mode 100644 CommonLibrary/rest-client/src/test/resources/rest-client-test.json delete mode 100644 CommonLibrary/rest-client/src/test/resources/sample.txt.gz create mode 100644 common-util/.gitignore create mode 100644 common-util/pom.xml create mode 100644 common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java create mode 100644 common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java create mode 100644 common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java create mode 100644 common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java create mode 100644 common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java create mode 100644 common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java create mode 100644 common-util/src/main/java/org/openo/baseservice/util/RestUtils.java create mode 100644 common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java create mode 100644 common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java create mode 100644 common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java create mode 100644 common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java create mode 100644 common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java create mode 100644 common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java create mode 100644 common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java create mode 100644 pom.xml create mode 100644 rest-client/.gitignore create mode 100644 rest-client/pom.xml create mode 100644 rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java create mode 100644 rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java create mode 100644 rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java create mode 100644 rest-client/src/test/resources/etc/conf/restclient.json create mode 100644 rest-client/src/test/resources/rest-client-test.json create mode 100644 rest-client/src/test/resources/sample.txt.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be68b59 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/target/ +# Eclipse +.settings/ +.classpath +.project diff --git a/CommonLibrary/.gitignore b/CommonLibrary/.gitignore deleted file mode 100644 index be68b59..0000000 --- a/CommonLibrary/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/target/ -# Eclipse -.settings/ -.classpath -.project diff --git a/CommonLibrary/common-util/.gitignore b/CommonLibrary/common-util/.gitignore deleted file mode 100644 index be68b59..0000000 --- a/CommonLibrary/common-util/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/target/ -# Eclipse -.settings/ -.classpath -.project diff --git a/CommonLibrary/common-util/pom.xml b/CommonLibrary/common-util/pom.xml deleted file mode 100644 index b4245d0..0000000 --- a/CommonLibrary/common-util/pom.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - 4.0.0 - - org.openo.baseservice - common-setting - 1.0.1-SNAPSHOT - - commonlib-cbb - jar - - - - - com.googlecode.jmockit - jmockit - test - 1.1 - - - - junit - junit - test - 4.8.2 - - - - org.apache.commons - commons-lang3 - - - commons-io - commons-io - - - - org.slf4j - com.springsource.slf4j.log4j - - - - org.codehaus.jackson - jackson-mapper-asl - - - net.sf.json-lib - json-lib - jdk15 - - - javax.servlet - servlet-api - 2.5 - - - com.github.stephenc.jcip - jcip-annotations - 1.0-1 - test - - - - - - org.apache.maven.plugins - maven-release-plugin - 2.5.2 - - - org.apache.maven.plugins - maven-surefire-plugin - - -XX:-UseSplitVerifier - ${maven.test.skip} - ${maven.test.failure.ignore} - - ${excludesFile} - - - - - org.codehaus.mojo - cobertura-maven-plugin - 2.6 - - - xml - html - - - - - package - - cobertura - - - - - - - - - - diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java deleted file mode 100644 index c3e59b9..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb; - -import org.openo.baseservice.encrypt.cbb.impl.AesCipherFactory; -import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; -import org.openo.baseservice.encrypt.cbb.inf.AbstractCipherFactory; - -/** - * Helps create cipher instances from factory.
- *

- * Creates the cipher instances using cipher factory. By default it uses AesCipherFactory. - * Can be changed through spring. - *

- * - * @author - * @version SDNO 0.5 08-Jun-2016 - */ -public final class CipherCreator { - - private static CipherCreator instance = new CipherCreator(); - - private AbstractCipherFactory factory = new AesCipherFactory(); - - /** - * Constructor
- *

- * private - *

- * - * @since SDNO 0.5 - */ - private CipherCreator() { - - } - - /** - * Singleton instance. - *
- * - * @return - * @since SDNO 0.5 - */ - public static CipherCreator instance() { - return instance; - } - - /** - * Creates cipher with default key. - *
- * - * @return cipher instance with default key. - * @since SDNO 0.5 - */ - public AbstractCipher create() { - return factory.createCipherManager(); - } - - /** - * Creates cipher instance with a key. - *
- * - * @param key the key to be used for encryption and decryption. - * @return cipher instance with specified key. - * @since SDNO 0.5 - */ - public AbstractCipher create(final String key) { - return factory.createCipherManager(key); - } - - /** - * Sets the cipher factory instance. - *
- * - * @param factory cipher factory. - * @since SDNO 0.5 - */ - public void setFactory(final AbstractCipherFactory factory) { - this.factory = factory; - } - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java deleted file mode 100644 index c9d7123..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb.impl; - -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.KeySpec; - -import javax.crypto.Cipher; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; - -import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * CipherManager implement
- *

- *

- * - * @author - * @version SDNO 0.5 31-May-2016 - */ -public class AesCipher implements AbstractCipher { - - private static final Logger LOG = LoggerFactory.getLogger(AesCipher.class); - - private static final byte[] DEFAULT_IV = {2, 1, 4, 8, 0, 3, 2, 0, 7, 9, 2, 8, 5, 11, 6, 1}; - - private static final IvParameterSpec IV_PARAMETER_SPEC = new IvParameterSpec(DEFAULT_IV); - - protected final SecretKey secretKey; - - /** - * Constructor
- *

- * Creates default key. - *

- * - * @since SDNO 0.5 - */ - public AesCipher() { - super(); - secretKey = createSecretKey("default"); - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param ckey: key. - */ - public AesCipher(final String key) { - super(); - secretKey = createSecretKey(key); - } - - private SecretKey createSecretKey(final String key) { - SecretKey secretKey = null; - try { - final SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); - final KeySpec keySpec = new PBEKeySpec(key.toCharArray(), DEFAULT_IV, 30000, 128); - - secretKey = keyFactory.generateSecret(keySpec); - return new SecretKeySpec(secretKey.getEncoded(), "AES"); - } catch(InvalidKeySpecException e) { - LOG.error("Invalid KeySpec ", e); - } catch(NoSuchAlgorithmException e) { - LOG.error("Algorithm do not support: ", e); - } - return null; - } - - @Override - public String encrypt(final String plain) { - try { - final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); - cipher.init(Cipher.ENCRYPT_MODE, secretKey, IV_PARAMETER_SPEC); - final byte[] encryptToBytes = cipher.doFinal(plain.getBytes()); - return DatatypeConverter.printBase64Binary(encryptToBytes); - } catch(final Exception e) { - LOG.error("Encrypt the plain error:", e); - return null; - } - } - - @Override - public String decrypt(final String encrypted) { - - if(encrypted == null || encrypted.length() == 0) { - return null; - } - - if(secretKey == null) { - return null; - } - - try { - final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); - cipher.init(Cipher.DECRYPT_MODE, secretKey, IV_PARAMETER_SPEC); - final byte[] tempBytes = DatatypeConverter.parseBase64Binary(encrypted); - final byte[] decrypTobytes = cipher.doFinal(tempBytes); - return new String(decrypTobytes); - } catch(final Exception e) { - LOG.error("decrypt the plain error:", e); - return null; - } - } - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java deleted file mode 100644 index 39fe605..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb.impl; - -import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; -import org.openo.baseservice.encrypt.cbb.inf.AbstractCipherFactory; - -/** - * Factory class to create CipherManager instances.
- *

- *

- * - * @author - * @version SDNO 0.5 03-Jun-2016 - */ -public class AesCipherFactory implements AbstractCipherFactory { - - /** - * Creates new CipherManager instance.
- * - * @return new cipher manager instance. - * @since SDNO 0.5 - */ - @Override - public AbstractCipher createCipherManager() { - return new AesCipher(); - } - - /** - * Creates new CipherManager instance.
- * - * @param key new cipher manager instance. - * @return - * @since SDNO 0.5 - */ - @Override - public AbstractCipher createCipherManager(final String key) { - return new AesCipher(key); - } - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java deleted file mode 100644 index 4357d86..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb.inf; - -/** - * Cipher Manager, provides the encrypt/decrypt interface - *
- *

- * It provides bi-directional encryption api. - *

- * - * @author - * @version SDNO 0.5 31-May-2016 - */ -public interface AbstractCipher { - - /** - * Encrypt a string. - *
- * - * @param plain string to be encrypted. - * @return encrypted string. - * @since SDNO 0.5 - */ - String encrypt(String plain); - - /** - * Decrypt a string. - *
- * - * @param encrypted String is encrypted by AES 128 - * @return plain after decrypt - * @since SDNO 0.5 - */ - String decrypt(String encrypted); - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java deleted file mode 100644 index 2d6f2ad..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb.inf; - -/** - * Factory class to create CipherManager instances.
- *

- *

- * - * @author - * @version SDNO 0.5 03-Jun-2016 - */ -public interface AbstractCipherFactory { - - /** - * Creates new CipherManager instance.
- * - * @return new cipher manager instance. - * @since SDNO 0.5 - */ - AbstractCipher createCipherManager(); - - /** - * Creates new CipherManager instance.
- * - * @param key new cipher manager instance. - * @return - * @since SDNO 0.5 - */ - AbstractCipher createCipherManager(final String key); - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java deleted file mode 100644 index 74cc2bb..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb.sha; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.nio.charset.StandardCharsets; -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; - -/** - * Utility to generate SHA256 digest and HMAC.
- *

- *

- * - * @author - * @version SDNO 0.5 03-Jun-2016 - */ -public final class Sha256 { - - private static final Logger LOGGER = LoggerFactory.getLogger(Sha256.class); - - private Sha256() { - - } - - /** - * Generates SHA256 digest.
- * - * @param data: The data to be digested. - * @return Hex encoded digested data. - * @since SDNO 0.5 - */ - public static String digest(final String data) { - final byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8); - MessageDigest md = null; - try { - md = MessageDigest.getInstance("SHA-256"); - } catch(final NoSuchAlgorithmException e) { - LOGGER.error("No SHA-256 support ", e); - return ""; - } - final byte[] digest = md.digest(dataBytes); - return DatatypeConverter.printHexBinary(digest); - } - - /** - * Generates hmac signature using data and key.
- * - * @param data: The data to be signed. - * @param key: The signing key. - * @return Hex encoded HMAC signature. - * @throws InvalidKeyException if the key is invalid. - * @since SDNO 0.5 - */ - public static String mac(final String data, final Key key) throws InvalidKeyException { - final byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8); - Mac mac = null; - try { - mac = Mac.getInstance("HmacSHA256"); - mac.init(key); - } catch(final NoSuchAlgorithmException e) { - LOGGER.error("SHA mac not supported", e); - return ""; - } - final byte[] digest = mac.doFinal(dataBytes); - return DatatypeConverter.printHexBinary(digest); - - } - - /** - * Generates hmac with data and secret. - *
- * - * @param data: The data to be signed. - * @param secret: The signing key. - * @return Hex encoded HMAC signature. - * @since SDNO 0.5 - */ - public static String mac(final String data, final byte[] secret) { - final Key key = new SecretKeySpec(secret, "HmacSHA256"); - try { - return mac(data, key); - } catch(final InvalidKeyException e) { - LOGGER.error("Invalid key: ", e); - return ""; - } - } - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/RestUtils.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/RestUtils.java deleted file mode 100644 index ee250b1..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/RestUtils.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - -import javax.servlet.http.HttpServletRequest; - -/** - * Utility functions for ROA.
- *

- *

- * - * @author - * @version SDNO 0.5 31-May-2016 - */ -public final class RestUtils { - - private static final Logger LOGGER = LoggerFactory.getLogger(RestUtils.class); - - private RestUtils() { - - } - - /** - * To get body from http request
- * - * @param request : request object. - * @return Request body as string. - * @since SDNO 0.5 - */ - public static String getRequestBody(final HttpServletRequest request) { - String body = null; - final StringBuilder stringBuilder = new StringBuilder(); - BufferedReader bufferedReader = null; - - try { - final InputStream inputStream = request.getInputStream(); - if(inputStream != null) { - bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); - final char[] charBuffer = new char[128]; - int bytesRead = -1; - while((bytesRead = bufferedReader.read(charBuffer)) > 0) { - stringBuilder.append(charBuffer, 0, bytesRead); - } - } - } catch(final IOException ex) { - LOGGER.error("read inputStream buffer catch exception:", ex); - } finally { - if(bufferedReader != null) { - try { - bufferedReader.close(); - } catch(final IOException ex) { - LOGGER.error("close buffer catch exception:", ex); - } - } - } - - body = stringBuilder.toString(); - return body; - } - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java deleted file mode 100644 index bd98fb9..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.util.impl; - -import org.openo.baseservice.util.inf.SystemEnvVariables; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; - -/** - * System environment variable helper implementation.
- *

- *

- * - * @author - * @version SDNO 0.5 24-Jun-2016 - */ -public class SystemEnvVariablesDefImpl extends SystemEnvVariables { - - private static final Logger LOG = LoggerFactory.getLogger(SystemEnvVariablesDefImpl.class); - - @Override - public String getAppRoot() { - String appRoot = null; - appRoot = System.getProperty("catalina.base"); - if(appRoot != null) { - appRoot = getCanonicalPath(appRoot); - } - return appRoot; - } - - /** - * Gets the canonical path
- * - * @param inPath input path - * @return the canonical path. - * @since SDNO 0.5 - */ - private String getCanonicalPath(final String inPath) { - String path = null; - try { - if(inPath != null) { - final File file = new File(inPath); - path = file.getCanonicalPath(); - } - } catch(final IOException e) { - LOG.error("file.getCanonicalPath() IOException:", e); - } - return path; - } - -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java deleted file mode 100644 index e40ab53..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.util.impl; - -import org.openo.baseservice.util.inf.SystemEnvVariables; - -/** - * SystemEnvVariables factory class - *
- *

- *

- * - * @author - * @version SDNO 0.5 2016年8月13日 - */ -public class SystemEnvVariablesFactory { - - private static SystemEnvVariables systemEnvVariablesInstance = new SystemEnvVariablesDefImpl(); - - /** - * get the SystemEnvVariables instance - *
- * - * @return SystemEnvVariables instance - * @since SDNO 0.5 - */ - public static SystemEnvVariables getInstance() { - return systemEnvVariablesInstance; - } -} diff --git a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java b/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java deleted file mode 100644 index 014cdbd..0000000 --- a/CommonLibrary/common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.util.inf; - -/** - * Dependency the system env
- *

- *

- * - * @author - * @version SDNO 0.5 31-May-2016 - */ -public abstract class SystemEnvVariables { - - /** - * Get application root path
- * - * @return application root path. - * @since SDNO 0.5 - */ - public abstract String getAppRoot(); -} diff --git a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java b/CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java deleted file mode 100644 index 3241b14..0000000 --- a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb.impl; - -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; - -import javax.crypto.Cipher; -import javax.crypto.SecretKeyFactory; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.openo.baseservice.encrypt.cbb.CipherCreator; -import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; - -import junit.framework.Assert; -import mockit.Mocked; -import mockit.NonStrictExpectations; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 02-Jun-2016 - */ -public class AesCipherTest { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - CipherCreator.instance().setFactory(new AesCipherFactory()); - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - * Test method for - * {@link org.openo.baseservice.encrypt.cbb.impl.AesCipher#encrypt(java.lang.String)}. - */ - @Test - public void testEncrypt() { - final AbstractCipher cipherManager = CipherCreator.instance().create(); - final String encrypted = cipherManager.encrypt("test-encrypt"); - final String decrypted = cipherManager.decrypt(encrypted); - - Assert.assertEquals("test-encrypt", decrypted); - } - - @Test - public void testEncryptException() throws Exception { - new NonStrictExpectations() { - - @Mocked - Cipher cipher; - - { - cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); - result = new InvalidKeySpecException(); - } - }; - final AbstractCipher cipherManager = CipherCreator.instance().create(); - final String encrypted = cipherManager.encrypt("test-encrypt"); - - Assert.assertEquals(null, encrypted); - } - - /** - * Test method for - * {@link org.openo.baseservice.encrypt.cbb.impl.AesCipher#decrypt(java.lang.String)}. - */ - @Test - public void testDecrypt() { - final AbstractCipher cipherManager = CipherCreator.instance().create(); - final String encrypted = cipherManager.encrypt("test-encrypt"); - final String decrypted = cipherManager.decrypt(encrypted); - - Assert.assertEquals("test-encrypt", decrypted); - } - - @Test - public void testDecryptNull() { - final AbstractCipher cipherManager = CipherCreator.instance().create(); - String decrypted = cipherManager.decrypt(null); - Assert.assertEquals(null, decrypted); - - decrypted = cipherManager.decrypt(""); - - Assert.assertEquals(null, decrypted); - } - - /** - * Test method for - * {@link - * org.openo.baseservice.encrypt.cbb.impl.AesCipher#CipherManagerImpl(java.lang.String)} - * . - */ - @Test - public void testCipherManagerImplString() { - final AbstractCipher cipherManager = CipherCreator.instance().create("secret-key"); - final String encrypted = cipherManager.encrypt("test-encrypt"); - final String decrypted = cipherManager.decrypt(encrypted); - - Assert.assertEquals("test-encrypt", decrypted); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testCipherManagerImplStringDiffKey() { - final String encrypted = CipherCreator.instance().create("secret-key").encrypt("test-encrypt"); - final String decrypted = CipherCreator.instance().create("wrong-key").decrypt(encrypted); - - Assert.assertNotSame("test-encrypt", decrypted); - - final String decrypt = CipherCreator.instance().create("secret-key").decrypt(encrypted); - Assert.assertEquals("test-encrypt", decrypt); - } - - @Test - public void testCreateSecretKeyNoSuchAlgorithmException() throws Exception { - new NonStrictExpectations() { - - @Mocked - SecretKeyFactory keyFactory; - - { - keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); - result = new NoSuchAlgorithmException(); - } - }; - - final AbstractCipher cipherManager = CipherCreator.instance().create("secret-key"); - final String encrypted = cipherManager.encrypt("test-encrypt"); - Assert.assertEquals(encrypted, encrypted); - - } - - @Test - public void testCreateSecretKeyInvalidKeySpecException() throws Exception { - new NonStrictExpectations() { - - @Mocked - SecretKeyFactory keyFactory; - - { - keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); - result = new InvalidKeySpecException(); - } - }; - - final AbstractCipher cipherManager = CipherCreator.instance().create("secret-key"); - final String decrypted = cipherManager.decrypt("test-encrypt"); - Assert.assertEquals(decrypted, null); - - } -} diff --git a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java b/CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java deleted file mode 100644 index 30a640e..0000000 --- a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.encrypt.cbb.sha; - -import static org.junit.Assert.fail; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.security.InvalidKeyException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; - -import mockit.Mocked; -import mockit.NonStrictExpectations; -import mockit.integration.junit4.JMockit; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 03-Jun-2016 - */ -@RunWith(JMockit.class) -public class Sha256Test { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - * Test method for {@link org.openo.baseservice.encrypt.cbb.sha.Sha256#digest(java.lang.String)} - * . - */ - @Test - public void testDigest() { - String plain = ""; - String expected = "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"; - Assert.assertEquals(expected, Sha256.digest(plain)); - - expected = "D7A8FBB307D7809469CA9ABCB0082E4F8D5651E46D3CDB762D02D0BF37C9E592"; - plain = "The quick brown fox jumps over the lazy dog"; - Assert.assertEquals(expected, Sha256.digest(plain)); - } - - @Test - public void testDigestException() throws Exception { - new NonStrictExpectations() { - - @Mocked - MessageDigest md; - - { - md = MessageDigest.getInstance("SHA-256"); - result = new NoSuchAlgorithmException(); - } - }; - final String plain = ""; - final String expected = ""; - Assert.assertEquals(expected, Sha256.digest(plain)); - - } - - /** - * Test method for - * {@link org.openo.baseservice.encrypt.cbb.sha.Sha256#mac(java.lang.String, java.security.Key)} - * . - * - * @throws InvalidKeyException - */ - @Test - public void testMacStringKey() { - final String expected = "F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8"; - final String plain = "The quick brown fox jumps over the lazy dog"; - try { - Assert.assertEquals(expected, Sha256.mac(plain, new SecretKeySpec("key".getBytes(), "HmacSHA256"))); - } catch(final InvalidKeyException e) { - e.printStackTrace(); - fail("testMacStringKey failed" + e.getMessage()); - } - try { - Assert.assertEquals(expected, Sha256.mac(plain, new SecretKeySpec("key".getBytes(), "AES"))); - } catch(final InvalidKeyException e) { - e.printStackTrace(); - fail("testMacStringKey failed" + e.getMessage()); - } - - } - - @Test - public void testMacStringKeyException() throws Exception { - new NonStrictExpectations() { - - @Mocked - Mac mac; - - { - mac = Mac.getInstance("HmacSHA256"); - result = new NoSuchAlgorithmException(); - } - }; - Sha256.mac("dummy", new SecretKeySpec("key".getBytes(), "AES")); - } - - /** - * Test method for - * {@link org.openo.baseservice.encrypt.cbb.sha.Sha256#mac(java.lang.String, byte[])}. - */ - @Test - public void testMacStringByteArray() { - final String expected = "F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8"; - final String plain = "The quick brown fox jumps over the lazy dog"; - Assert.assertEquals(expected, Sha256.mac(plain, "key".getBytes())); - } - - @Test - public void testMacStringByteArrayInvalidKeyException() throws Exception { - final String key = "key"; - new NonStrictExpectations() { - - @Mocked - Mac mac; - - { - mac = Mac.getInstance("HmacSHA256"); - result = new InvalidKeyException(); - } - }; - final String expected = ""; - final String plain = "The quick brown fox jumps over the lazy dog"; - Assert.assertEquals(expected, Sha256.mac(plain, key.getBytes())); - } - -} diff --git a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java b/CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java deleted file mode 100644 index 2cf0589..0000000 --- a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.util; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.io.ByteArrayInputStream; -import java.io.IOException; - -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; - -import junit.framework.Assert; -import mockit.Expectations; -import mockit.Mocked; -import mockit.integration.junit4.JMockit; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 08-Jun-2016 - */ -@RunWith(JMockit.class) -public class RestUtilsTest { - - @Mocked - HttpServletRequest mockHttpServletRequest; - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - * Test method for - * {@link org.openo.baseservice.util.RestUtils#getRequestBody(javax.servlet.http.HttpServletRequest)} - * . - * - * @throws IOException - */ - @Test - public void testGetRequestBody() throws IOException { - final String dummy = "this is a dummy data to test request body"; - final ServletInputStream inputStream = new ServletInputStream() { - - final ByteArrayInputStream stream = new ByteArrayInputStream(dummy.getBytes()); - - @Override - public int read() throws IOException { - return stream.read(); - } - - }; - - new Expectations() { - - { - mockHttpServletRequest.getInputStream(); - returns(inputStream); - } - }; - final String body = RestUtils.getRequestBody(mockHttpServletRequest); - - Assert.assertEquals(dummy, body); - } - - @Test - public void testGetRequestBodyNull() throws IOException { - final ServletInputStream inputStream = null; - new Expectations() { - - { - mockHttpServletRequest.getInputStream(); - returns(inputStream); - } - }; - final String body = RestUtils.getRequestBody(mockHttpServletRequest); - - Assert.assertEquals("", body); - } - - @Test - public void testGetRequestBodyIOException() throws IOException { - final ServletInputStream inputStream = new ServletInputStream() { - - @Override - public int read() throws IOException { - throw new IOException(); - } - - }; - - new Expectations() { - - { - mockHttpServletRequest.getInputStream(); - returns(inputStream); - } - }; - final String body = RestUtils.getRequestBody(mockHttpServletRequest); - - Assert.assertEquals("", body); - } - - @Test - public void testGetRequestBodyCloseIOException() throws IOException { - final ServletInputStream inputStream = new ServletInputStream() { - - final ByteArrayInputStream stream = new ByteArrayInputStream("dummy".getBytes()); - - @Override - public int read() throws IOException { - return stream.read(); - } - - @Override - public void close() throws IOException { - throw new IOException(); - } - }; - - new Expectations() { - - { - mockHttpServletRequest.getInputStream(); - returns(inputStream); - } - }; - final String body = RestUtils.getRequestBody(mockHttpServletRequest); - - Assert.assertEquals("dummy", body); - } - -} diff --git a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java b/CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java deleted file mode 100644 index 97a8d11..0000000 --- a/CommonLibrary/common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.util.impl; - -import java.io.File; -import java.io.IOException; - -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.openo.baseservice.util.inf.SystemEnvVariables; - -import junit.framework.Assert; -import mockit.Mocked; -import mockit.NonStrictExpectations; -import mockit.integration.junit4.JMockit; -import net.jcip.annotations.NotThreadSafe; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 08-Jun-2016 - */ -@RunWith(JMockit.class) -@NotThreadSafe -public class SystemEnvVariablesDefImplTest { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - @Test - public void testGetAppRootException() throws Exception { - new NonStrictExpectations() { - - @Mocked - File file; - - { - file = new File("."); - file.getCanonicalPath(); - result = new IOException(); - } - - }; - final SystemEnvVariables envVars =new SystemEnvVariablesDefImpl(); - System.setProperty("catalina.base", "."); - final String actual = envVars.getAppRoot(); - Assert.assertEquals(null, actual); - } - - - /** - * Test method for - * {@link org.openo.baseservice.util.impl.SystemEnvVariablesDefImpl#getAppRoot()}. - * - * @throws Exception - */ - @Test - public void testGetAppRoot() throws Exception { - final SystemEnvVariables envVars = new SystemEnvVariablesDefImpl(); - final File file = new File("."); - final String expected = file.getCanonicalPath(); - System.setProperty("catalina.base", "."); - final String actual = envVars.getAppRoot(); - Assert.assertEquals(expected, actual); - } - -} diff --git a/CommonLibrary/pom.xml b/CommonLibrary/pom.xml deleted file mode 100644 index 2ff9e92..0000000 --- a/CommonLibrary/pom.xml +++ /dev/null @@ -1,319 +0,0 @@ - - - - 4.0.0 - org.openo.baseservice - common-setting - 1.0.1-SNAPSHOT - pom - common-setting - - - UTF-8 - false - false - ${project.artifactId}-${project.version} - ${basedir}/target - 1.6.1 - - - ${project.artifactId}-${project.version} - ${basedir}/../release/pkgzip - **/*$* - - - common-util - rest-client - - - - - releases - http://113.200.115.170:4096/nexus/content/repositories/OPEN-O_Release - - - snapshots - http://113.200.115.170:4096/nexus/content/repositories/OPEN-O_SnapShots - - - - - - commons-io - commons-io - 2.4 - - - org.apache.commons - com.springsource.org.apache.commons.lang - 2.6.0 - - - org.apache.commons - com.springsource.org.apache.commons.logging - 1.1.1 - - - org.apache.commons - com.springsource.org.apache.commons.codec - 1.9.0 - - - - org.slf4j - slf4j-api - ${slf4j.version} - - - org.slf4j - com.springsource.slf4j.log4j - ${slf4j.version} - - - org.apache.log4j - com.springsource.org.apache.log4j - 1.2.16 - - - org.mybatis - mybatis-spring - 1.2.0 - - - org.mybatis - mybatis - 3.2.7 - - - org.apache.commons - commons-lang3 - 3.1 - - - org.codehaus.jackson - jackson-mapper-asl - 1.9.2 - - - net.sf.json-lib - json-lib - 2.4 - jdk15 - - - org.eclipse.jetty.aggregate - jetty-all - 8.1.16.v20140903 - - - org.eclipse.jetty.orbit - javax.servlet - 3.0.0.v201112011016 - provided - - - redis.clients - jedis - 2.8.0 - - - org.apache.commons - commons-dbcp2 - 2.0.1 - - - org.codehaus.jackson - jackson-mapper-asl - 1.9.2 - - - - - - - - ${resources.dir} - - - ${project.build.directory}/generated-resources - - - ${basedir}/src/main/java - - **/*.java - - - - ${basedir}/src/main/resources - - - - - ${basedir}/src/test/java - - **/*.java - - - - ${basedir}/src/test/resources - - - - - - org.apache.maven.plugins - maven-antrun-plugin - 1.6 - - - ant-contrib - ant-contrib - 1.0b3 - - - ant - ant - - - - - com.google.js - closure-compiler - 1.0.0 - - - com.google.closure-stylesheets - closure-stylesheets - 20140426 - - - - - org.apache.maven.plugins - maven-clean-plugin - 2.4.1 - - - org.apache.maven.plugins - maven-release-plugin - 2.5.2 - - - **/*.java - - true - - - - - - - - - org.apache.maven.plugins - maven-release-plugin - - - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.7 - - 2 - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.6.1 - - true - ${javadoc.loc}/javadoc.css - ${javadoc.loc}/overview.html - org.apache.*,*.impl - true - true - false - false - protected - 1.5 - gb2312 - UTF-8 - gb2312 - 256M - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.3 - - 1.7 - 1.7 - - - - org.apache.maven.plugins - maven-jar-plugin - 2.3.1 - - ${bundle.name} - ${release.dir} - - - - - maven-clean-plugin - - false - - - ${release.dir} - - ${bundle.name}.${project.packaging} - - - - - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.6.1 - - true - true - public - - - - - - diff --git a/CommonLibrary/rest-client/.gitignore b/CommonLibrary/rest-client/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/CommonLibrary/rest-client/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/CommonLibrary/rest-client/pom.xml b/CommonLibrary/rest-client/pom.xml deleted file mode 100644 index 33f24c3..0000000 --- a/CommonLibrary/rest-client/pom.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - 4.0.0 - - org.openo.baseservice - common-setting - 1.0.1-SNAPSHOT - - commonlib-restclient - - - - - org.openo.baseservice - commonlib-cbb - 1.0.1-SNAPSHOT - - - org.eclipse.jetty.aggregate - jetty-all - - - junit - junit - test - 4.8.2 - - - org.jmockit - jmockit - test - 1.18 - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - always - -XX:-UseSplitVerifier - ${maven.test.skip} - ${maven.test.failure.ignore} - - ${excludesFile} - - - - - org.codehaus.mojo - cobertura-maven-plugin - 2.6 - - - xml - html - - - - - package - - cobertura - - - - - - - diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java deleted file mode 100644 index 40dd2b1..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.remoteservice.exception; - -/** - * ROA exception handling parameters. - *
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class ExceptionArgs { - - /** - * Exception descriptions. - */ - private String[] descArgs = null; - - /** - * Exception reasons. - */ - private String[] reasonArgs = null; - - /** - * Exception detals. - */ - private String[] detailArgs = null; - - /** - * Exception advices. - */ - private String[] adviceArgs = null; - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - */ - public ExceptionArgs() { - // default constructor. - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param descArgs: descriptions. - * @param reasonArgs: reasons. - * @param detailArgs: details. - * @param adviceArgs: advices. - */ - public ExceptionArgs(final String[] descArgs, final String[] reasonArgs, final String[] detailArgs, - final String[] adviceArgs) { - this.descArgs = descArgs; - this.reasonArgs = reasonArgs; - this.detailArgs = detailArgs; - this.adviceArgs = adviceArgs; - } - - public String[] getDescArgs() { - return descArgs; - } - - public void setDescArgs(final String[] descArgs) { - this.descArgs = descArgs; - } - - public String[] getReasonArgs() { - return reasonArgs; - } - - public void setReasonArgs(final String[] reasonArgs) { - this.reasonArgs = reasonArgs; - } - - public String[] getDetailArgs() { - return detailArgs; - } - - public void setDetailArgs(final String[] detailArgs) { - this.detailArgs = detailArgs; - } - - public String[] getAdviceArgs() { - return adviceArgs; - } - - public void setAdviceArgs(final String[] adviceArgs) { - this.adviceArgs = adviceArgs; - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java deleted file mode 100644 index e64d914..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.remoteservice.exception; - -import java.text.MessageFormat; - -/** - * The base class for all common exception.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class ServiceException extends Exception { - - /** - * default exception id. - */ - public static final String DEFAULT_ID = "framwork.remote.SystemError"; - - /** - * Serial number. - */ - private static final long serialVersionUID = 5703294364555144738L; - - /** - * Exception id. - */ - private String id = DEFAULT_ID; - - private Object[] args = null; - - private int httpCode = 500; - - private ExceptionArgs exceptionArgs = null; - - /** - * The default constructor
- *

- * This method is only used as deserialized, in other cases, use parameterized constructor. - *

- * - * @since SDNO 0.5 - */ - public ServiceException() { - super(""); - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param id: details. - * @param cause: reason. - */ - public ServiceException(final String id, final Throwable cause) { - super(cause); - this.setId(id); - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param message: details. - */ - public ServiceException(final String message) { - super(message); - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param id: exception id. - * @param message: details. - */ - public ServiceException(final String id, final String message) { - super(message); - this.setId(id); - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param id: exception id. - * @param httpCode: http status code. - */ - public ServiceException(final String id, final int httpCode) { - super(); - this.setId(id); - this.setHttpCode(httpCode); - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param id: exception id. - * @param httpCode: http code. - * @param exceptionArgs: Exception handling frame parameters. - */ - public ServiceException(final String id, final int httpCode, final ExceptionArgs exceptionArgs) { - super(); - this.setId(id); - this.setHttpCode(httpCode); - this.setExceptionArgs(exceptionArgs); - } - - /** - * Constructor
- *

- * Have a placeholder exception, use args formatted message. - *

- * - * @since SDNO 0.5 - * @param id: exception id. - * @param message: details. - * @param args: Placeholders for parameters - */ - public ServiceException(final String id, final String message, final Object... args) { - super(MessageFormat.format(message, args)); - this.setId(id); - this.args = args; - } - - /** - * Constructor
- *

- * Have a placeholder exception, use args formatted message - *

- * - * @since SDNO 0.5 - * @param id: exception id. - * @param message: details. - * @param cause: reason. - * @param args: placeholder for parameters - */ - public ServiceException(final String id, final String message, final Throwable cause, final Object... args) { - super(MessageFormat.format(message, args), cause); - this.setId(id); - this.args = args; - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param id: exception id. - * @param message: details. - * @param cause: reason. - */ - public ServiceException(final String id, final String message, final Throwable cause) { - super(message, cause); - this.setId(id); - } - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param cause: reason. - */ - public ServiceException(final Throwable cause) { - super(cause); - } - - /** - * Get exceptoin id.
- * - * @return - * @since SDNO 0.5 - */ - public String getId() { - if(id == null || id.isEmpty()) { - return DEFAULT_ID; - } - return id; - } - - public void setId(final String id) { - this.id = id; - } - - public int getHttpCode() { - return this.httpCode; - } - - public void setHttpCode(final int httpCode) { - this.httpCode = httpCode; - } - - /** - * Obtain the ROA exception handling framework parameters
- * - * @return exception args. - * @since SDNO 0.5 - */ - public ExceptionArgs getExceptionArgs() { - return exceptionArgs; - } - - public void setExceptionArgs(final ExceptionArgs exceptionArgs) { - this.exceptionArgs = exceptionArgs; - } - - /** - * Gets the parameter information
- * - * @return parameter list. - * @since SDNO 0.5 - */ - protected Object[] getArgs() { - if(args == null || args.length == 0 || DEFAULT_ID.equals(getId())) { - return new Object[] {}; - } - return args; - } - - @Override - public String toString() { - return "exception.id: " + getId() + "; " + super.toString(); - } - -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java deleted file mode 100644 index 86124cf..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util; - -import org.apache.commons.io.LineIterator; - -import java.io.Reader; - -/** - * Helper for read line.
- *

- *

- * - * @author - * @version SDNO 0.5 31-May-2016 - */ -public class ReaderHelper { - - private LineIterator ite = null; - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param reader - */ - public ReaderHelper(final Reader reader) { - if(reader != null) { - ite = new LineIterator(reader); - } - - } - - /** - * Gets the next line.
- * - * @return line if present else null. - * @since SDNO 0.5 - */ - public String getLine() { - if(ite != null && ite.hasNext()) { - return ite.nextLine(); - } - return null; - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java deleted file mode 100644 index aca60c0..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.Properties; - -/** - * Service connection configuration util.
- *

- * Get host and port from the Client Configure the connection environment and service Configure - * profile - *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class ServiceUtil { - - private static final Logger LOG = LoggerFactory.getLogger(ServiceUtil.class); - - private final Properties allConfigure = new Properties(); - - private final Properties serviceConfigure; - - private String serviceStage; - - private String serviceName; - - /** - * Constructor
- *

- * Load profile information. - *

- * - * @since SDNO 0.5 - * @param serviceName user-specified service name. - * @param url invoked service url. - */ - public ServiceUtil(final String serviceName, final String url) { - final String fomattedUrl = formatUrl(url); - serviceConfigure = loadProperties("service-configure.properties"); - if(null == serviceName || serviceName.isEmpty()) { - this.serviceName = getServiceNameWhitUrl(fomattedUrl); - } else { - this.serviceName = serviceName; - } - loadPropertyFile(); - } - - /** - * Get the service user-specified host. - *
- * - * @return host - * @since SDNO 0.5 - */ - public String getServiceHost() { - final String host = allConfigure.getProperty(serviceName + "." + serviceStage + ".host"); - if(null == host) { - return ""; - } - return host; - } - - /** - * Get the service user-specified port. - *
- * - * @return port - * @since SDNO 0.5 - */ - public int getServicePort() { - final String portStr = allConfigure.getProperty(serviceName + "." + serviceStage + ".port"); - if(null == portStr) { - return -1; - } - return Integer.parseInt(portStr); - } - - private String getServiceNameWhitUrl(final String url) { - final Enumeration keys = serviceConfigure.propertyNames(); - while(keys.hasMoreElements()) { - final String key = (String)keys.nextElement(); - if(key.endsWith("urls")) { - final String urls = serviceConfigure.getProperty(key); - for(String tempUrl : urls.split(",")) { - tempUrl = formatUrl(tempUrl); - if(url.startsWith(tempUrl)) { - return key.split("\\.")[0]; - } - } - - } - } - return ""; - } - - private static String formatUrl(final String url) { - String outUrl = url; - if(outUrl.contains("?")) { - outUrl = outUrl.split("\\?")[0]; - } - outUrl = outUrl.replace("\\", "/"); - outUrl = outUrl.replaceAll("[/]{2,}", "/"); - outUrl = outUrl.endsWith("/") ? outUrl.substring(0, outUrl.length() - 1) : outUrl; - outUrl = outUrl.endsWith("/*") ? outUrl.substring(0, outUrl.length() - 2) : outUrl; - return outUrl; - } - - /** - * Loads the client and service configuration files. - *
- * - * @since SDNO 0.5 - */ - private void loadPropertyFile() { - final Properties clientConfigure = loadProperties(serviceName + "-client-configure.properties"); - allConfigure.putAll(clientConfigure); - allConfigure.putAll(serviceConfigure); - serviceStage = allConfigure.getProperty(serviceName + ".stage"); - } - - /** - * Loads the client and service configuration files. - *
- * - * @param classProperties: service profile file name. - * @return Service configuration. - * @since SDNO 0.5 - */ - private Properties loadProperties(final String classProperties) { - final Properties properties = new Properties(); - InputStream inputStream = null; - ClassLoader classloader = null; - try { - classloader = this.getClass().getClassLoader(); - if(classloader != null) { - inputStream = classloader.getResourceAsStream(classProperties); - } - if(inputStream != null) { - properties.load(inputStream); - inputStream.close(); - } - } catch(final IOException e) { - LOG.error("load file error: ", e); - } finally { - if(inputStream != null) { - try { - inputStream.close(); - } catch(final IOException ee) { - LOG.error("close inputStream error: ", ee); - } - inputStream = null; - } - } - return properties; - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java deleted file mode 100644 index 3c6493c..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.clientsdk; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.Collection; -import java.util.Date; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Http utilities. - *
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class HttpUtil { - - /** - * - */ - private static final String APPLICATION_JSON = "application/json"; - - private static final Logger LOGGER = LoggerFactory.getLogger(HttpUtil.class); - - private HttpUtil() { - - } - - /** - * Check if the given array contains the given value (with case-insensitive comparison). - *
- * - * @param array The array - * @param value The value to search - * @return true if the array contains the value - * @since SDNO 0.5 - */ - public static boolean containsIgnoreCase(final String[] array, final String value) { - for(final String str : array) { - if(value == null && str == null) { - return true; - } - if(value != null && value.equalsIgnoreCase(str)) { - return true; - } - } - return false; - } - - /** - * Join an array of strings with the given separator. - *
- * - * @param array The array of strings - * @param separator The separator - * @return the resulting string - * @since SDNO 0.5 - */ - public static String join(final String[] array, final String separator) { - final int len = array.length; - if(len == 0) { - return ""; - } - final StringBuilder out = new StringBuilder(); - out.append(array[0]); - for(int i = 1; i < len; i++) { - out.append(separator).append(array[i]); - } - return out.toString(); - } - - /** - * Format the given parameter object into string. - *
- * - * @param param param input - * @return query param string - * @since SDNO 0.5 - */ - public static String parameterToString(final Object param) { - if(param == null) { - return ""; - } else if(param instanceof Date) { - return Long.toString(((Date)param).getTime()); - } else if(param instanceof Collection) { - final StringBuilder b = new StringBuilder(); - for(final Object o : (Collection)param) { - if(b.length() > 0) { - b.append(','); - } - b.append(String.valueOf(o)); - } - return b.toString(); - } else { - return String.valueOf(param); - } - } - - /** - * get accept header - *
- * - * @param accepts accepts accept types - * @return the accepts string - * @since SDNO 0.5 - */ - public static String selectHeaderAccept(final String[] accepts) { - if(accepts.length == 0) { - return null; - } - if(HttpUtil.containsIgnoreCase(accepts, APPLICATION_JSON)) { - return APPLICATION_JSON; - } - return HttpUtil.join(accepts, ","); - } - - /** - * select head content type - *
- * - * @param contentTypes contentTypes content types - * @return the json string or the first content type - * @since SDNO 0.5 - */ - public static String selectHeaderContentType(final String[] contentTypes) { - if(contentTypes.length == 0) { - return APPLICATION_JSON; - } - if(HttpUtil.containsIgnoreCase(contentTypes, APPLICATION_JSON)) { - return APPLICATION_JSON; - } - return contentTypes[0]; - } - - /** - * Escape the given string to be used as URL query value.
- * - * @param str str param str - * @return escape string - * @since SDNO 0.5 - */ - public static String escapeString(final String str) { - try { - return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); - } catch(final UnsupportedEncodingException e) { - LOGGER.info("UTF8 is not supported", e); - return str; - } - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java deleted file mode 100644 index 2234e19..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.clientsdk; - -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.type.TypeReference; - -import net.sf.json.JSON; - -import java.io.IOException; - -/** - * JSON parse utilities. - *
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public final class JsonUtil { - - private static final ObjectMapper MAPPER = new ObjectMapper(); - - static { - MAPPER.setDeserializationConfig(MAPPER.getDeserializationConfig() - .without(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES)); - } - - private JsonUtil() { - } - - /** - * Parse JSON formated string.
- * - * @param jsonstr: JSON formated string. - * @param type: result type. - * @return parsed object. - * @throws IOException incase error. - * @since SDNO 0.5 - */ - public static T unMarshal(final String jsonstr, final Class type) throws IOException { - return MAPPER.readValue(jsonstr, type); - } - - /** - * Parse JSON formatted string (for a generic target type). - *
- * - * @param jsonstr request data. - * @param type target type. - * @return result object. - * @throws IOException incase error. - * @since SDNO 0.5 - */ - public static T unMarshal(final String jsonstr, final TypeReference type) throws IOException { - return MAPPER.readValue(jsonstr, type); - } - - /** - * Convert object to JSON format string. - *
- * - * @param srcObj source object. - * @return JSON format string. - * @throws IOException incase of error. - * @since SDNO 0.5 - */ - public static String marshal(final Object srcObj) throws IOException { - if(srcObj instanceof JSON) { - return srcObj.toString(); - } - return MAPPER.writeValueAsString(srcObj); - } - - /** - * Get parsing mapper - *
- * - * @return parsing mapper - * @since SDNO 0.5 - */ - public static ObjectMapper getMapper() { - return MAPPER; - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java deleted file mode 100644 index b769f0a..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.clientsdk; - -import org.openo.baseservice.remoteservice.exception.ServiceException; -import org.openo.baseservice.roa.util.restclient.Restful; -import org.openo.baseservice.roa.util.restclient.RestfulAsyncCallback; -import org.openo.baseservice.roa.util.restclient.RestfulParametes; -import org.openo.baseservice.roa.util.restclient.RestfulResponse; - -import java.util.HashSet; -import java.util.Set; - -/** - * Rest Client Tools. - *
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class RestClientUtil { - - private static Set> ret = new HashSet<>(); - - static { - ret.add(Boolean.class); - ret.add(Character.class); - ret.add(Byte.class); - ret.add(Short.class); - ret.add(Integer.class); - ret.add(Long.class); - ret.add(Float.class); - ret.add(Double.class); - ret.add(Void.class); - ret.add(String.class); - } - - private RestClientUtil() { - - } - - /** - * Processing HTTP requests. - *
- * - * @param method method name. - * @param path request path. - * @param parameters parameters. - * @param restFull ReST request instance - * @return The ReST response. - * @throws ServiceException Exception information. - * @since SDNO 0.5 - */ - public static RestfulResponse invokeMethod(final String method, final String path, - final RestfulParametes parameters, final Restful restFull) throws ServiceException { - RestfulResponse response; - if("get".equalsIgnoreCase(method)) { - response = restFull.get(path, parameters); - } else if("put".equalsIgnoreCase(method)) { - response = restFull.put(path, parameters); - } else if("post".equalsIgnoreCase(method)) { - response = restFull.post(path, parameters); - } else if("delete".equalsIgnoreCase(method)) { - response = restFull.delete(path, parameters); - } else if("patch".equalsIgnoreCase(method)) { - response = restFull.patch(path, parameters); - } else { - throw new ServiceException("NotSuppertMethod", 400); - } - return response; - } - - /** - * An asynchronous HTTP request. - *
- * - * @param method http method. - * @param path request path. - * @param parameters request parameters. - * @param restFull restFull instance. - * @param callback callback function. - * @throws ServiceException in case error. - * @since SDNO 0.5 - */ - public static void invokeAsyncMethod(final String method, final String path, final RestfulParametes parameters, - final Restful restFull, final RestfulAsyncCallback callback) throws ServiceException { - if("get".equalsIgnoreCase(method)) { - restFull.asyncGet(path, parameters, callback); - } else if("put".equalsIgnoreCase(method)) { - restFull.asyncPut(path, parameters, callback); - } else if("post".equalsIgnoreCase(method)) { - restFull.asyncPost(path, parameters, callback); - } else if("delete".equalsIgnoreCase(method)) { - restFull.asyncDelete(path, parameters, callback); - } else if("patch".equalsIgnoreCase(method)) { - restFull.asyncPatch(path, parameters, callback); - } else { - throw new ServiceException("NotSuppertMethod", 400); - } - } - - /** - * Determine whether a class is a native.
- * - * @param clazz: class type. - * @return whether primitive or not. - * @since SDNO 0.5 - */ - public static boolean isPrimitive(final Class clazz) { - if(clazz.isPrimitive()) { - return true; - } - if(ret.contains(clazz)) { - return true; - } - return false; - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java deleted file mode 100644 index 8195b0d..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -/** - * Restful Asynchronous call back implentation.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class DefaultAsyncCallback implements RestfulAsyncCallback { - - @Override - public void callback(final RestfulResponse response) { - // default implementation. - } - - @Override - public void handleExcepion(final Throwable e) { - // default implementation - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java deleted file mode 100644 index 4f58778..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; - -import org.eclipse.jetty.client.Address; -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.HttpExchange; -import org.eclipse.jetty.http.HttpMethods; -import org.openo.baseservice.remoteservice.exception.ServiceException; -import org.openo.baseservice.roa.util.ServiceUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 Aug 9, 2016 - */ -public abstract class HttpBaseRest implements Restful { - - private static final Logger LOG = LoggerFactory.getLogger(HttpRest.class); - - final AtomicInteger requestId = new AtomicInteger(0); - - protected HttpClient client = null; - - private static final String LOCAL_HOST = "127.0.0.1"; - - static final String HTTP_PATCH = "PATCH"; - - String defaultIP = LOCAL_HOST; - - int defaultPort = -10000; - - int defaultTimeout = 30000; - - final String procenameRouteID = "RouteID-" + System.currentTimeMillis() + "-"; - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - */ - public HttpBaseRest() { - super(); - } - - protected void createHttpClient() { - client = new HttpClient(); - } - - protected RestHttpContentExchange createRestHttpContentExchange(final RestfulAsyncCallback callback) { - final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); - exchange.setScheme("http"); - return exchange; - } - - private String encodeParams(final RestfulParametes restParametes) throws ServiceException { - final Map parm = restParametes.getParamMap(); - String value = null; - boolean bHasParma = false; - final StringBuilder builder = new StringBuilder(); - try { - for(final String key : parm.keySet()) { - value = parm.get(key); - if(value == null) { - value = ""; - } - String str; - if(bHasParma) { - str = String.format("&%s=%s", URLEncoder.encode(key, RestfulClientConst.ENCODING), - URLEncoder.encode(value, RestfulClientConst.ENCODING)); - } else { - bHasParma = true; - str = String.format("%s=%s", URLEncoder.encode(key, RestfulClientConst.ENCODING), - URLEncoder.encode(value, RestfulClientConst.ENCODING)); - } - builder.append(str); - } - } catch(final UnsupportedEncodingException ex) { - LOG.error("unsupported encoding: ", ex); - throw new ServiceException("Broken VM does not support UTF-8"); - } - return builder.toString(); - } - - private void processHeader(final RestHttpContentExchange contentExchange, final Map headerMap) { - for(final String key : headerMap.keySet()) { - final String value = headerMap.get(key); - contentExchange.addRequestHeader(key, value); - } - - } - - private void setContentExchangeParams(final RestHttpContentExchange contentExchange) { - final String contentType = contentExchange.getRequestFields().getStringField("Content-Type"); - if(null == contentType || contentType.isEmpty()) { - // application/json;charset=utf-8 - contentExchange.setRequestContentType(RestfulClientConst.APPLICATION_FORM_URLENCODED); - } - final String encoding = contentExchange.getRequestFields().getStringField("Accept-Encoding"); - if(null == encoding || encoding.isEmpty()) { - // compress,gzip - contentExchange.setRequestHeader("Accept-Encoding", "*/*"); - } - contentExchange.setVersion(11); - } - - /** - *
- * - * @param method - * @param servicePath - * @param restParametes - * @param options - * @param callback - * @return - * @throws ServiceException - * @since SDNO 0.5 - */ - protected RestfulResponse sendHttpRequest(final String method, final String servicePath, - final RestfulParametes restParametes, final RestfulOptions options, final RestfulAsyncCallback callback) - throws ServiceException { - final RestHttpContentExchange contentExchange = createRestHttpContentExchange(callback); - if(null == restParametes) { - return new RestfulResponse(); - } - final String requestTrace = this.getReuqestIdString(); - restParametes.putHttpContextHeader(RestfulClientConst.REQUEST_ID, requestTrace); - - RestfulResponse rsp = null; - try { - contentExchange.setMethod(method); - final String str = encodeParams(restParametes); - final StringBuilder builder = new StringBuilder(); - builder.append(servicePath); - if(str.length() > 0 && (method.equals(HttpMethods.GET) || method.equals(HttpMethods.DELETE) - || method.equals(HttpMethods.HEAD))) { - builder.append('?'); - builder.append(str); - } - setDefaultUrl(contentExchange, options, builder); - processHeader(contentExchange, restParametes.getHeaderMap()); - setContentExchangeParams(contentExchange); - - setPostPutParam(method, restParametes, contentExchange, str); - setTimeout(options, contentExchange); - - client.send(contentExchange); - rsp = callbackExecute(callback, contentExchange); - } catch(final Exception e) { - LOG.error("request reply message have exception:status is " - + RestHttpContentExchange.toState(contentExchange.getStatus())); - throw new ServiceException(e); - } - return rsp; - } - - private void setDefaultUrl(final RestHttpContentExchange contentExchange, final RestfulOptions options, - final StringBuilder url) { - // server - if(url.toString().startsWith("http")) { - contentExchange.setURL(url.toString()); - } else { - String host = defaultIP; - int iPort = defaultPort; - String calledServiceName = null; - if(options != null) { - calledServiceName = options.getCalledServicName(); - } - final ServiceUtil serviceUtil = new ServiceUtil(calledServiceName, url.toString()); - final String configHost = serviceUtil.getServiceHost(); - final int configPort = serviceUtil.getServicePort(); - if(!configHost.isEmpty() && configPort > 0) { - if(options != null) { - options.setHost(configHost); - options.setPort(configPort); - } else { - host = configHost; - - iPort = configPort; - } - } - if(options != null) { - host = options.getHost(); - if(host.isEmpty()) { - host = defaultIP; - } - iPort = options.getPort(); - if(iPort == 0) { - iPort = defaultPort; - } - } - // Integer.getInteger(".http.client.maxThread",30) - contentExchange.setAddress(new Address(host, iPort)); - contentExchange.setRequestURI(url.toString()); - } - } - - private String getReuqestIdString() { - if(this.requestId.get() == 0x7FFFFFFF) { - this.requestId.set(1); - } - final int reqId = this.requestId.getAndIncrement(); - final StringBuilder builder = new StringBuilder(this.procenameRouteID); - // time - final SimpleDateFormat dateFormate = new SimpleDateFormat("yyMMdd"); - final SimpleDateFormat timeFormate = new SimpleDateFormat("HHmmss"); - final Date date = Calendar.getInstance().getTime(); - builder.append(dateFormate.format(date) + timeFormate.format(date)); - builder.append('-'); - builder.append(reqId); - return builder.toString(); - } - - private void setPostPutParam(final String method, final RestfulParametes restParametes, - final RestHttpContentExchange contentExchange, final String str) throws UnsupportedEncodingException { - if(HttpMethods.POST.equals(method) || HttpMethods.PUT.equals(method) || HTTP_PATCH.equals(method)) { - ByteArrayInputStream buff; - final String tmpRaw = restParametes.getRawData(); - if(tmpRaw == null) { - buff = new ByteArrayInputStream(str.getBytes(RestfulClientConst.ENCODING)); - } else { - buff = new ByteArrayInputStream(tmpRaw.getBytes(RestfulClientConst.ENCODING)); - } - final int len = buff.available(); - contentExchange.setRequestContentSource(buff); - contentExchange.setRequestHeader("content-length", String.valueOf(len)); - } - } - - private void setTimeout(final RestfulOptions options, final RestHttpContentExchange contentExchange) { - if(options != null) { - final long timeout = options.getRestTimeout(); - if(timeout != 0) { - contentExchange.setTimeout(timeout); - } else { - contentExchange.setTimeout(defaultTimeout); - } - } else { - contentExchange.setTimeout(defaultTimeout); - } - } - - private RestfulResponse callbackExecute(final RestfulAsyncCallback callback, - final RestHttpContentExchange contentExchange) throws InterruptedException, IOException, ServiceException { - if(callback == null) { - final int exchangeState = contentExchange.waitForDone(); - if(exchangeState == HttpExchange.STATUS_COMPLETED) { - return contentExchange.getResponse(); - } else if(exchangeState == HttpExchange.STATUS_EXCEPTED) { - throw new ServiceException( - "request is exception: " + RestHttpContentExchange.toState(HttpExchange.STATUS_EXCEPTED)); - } else if(exchangeState == HttpExchange.STATUS_EXPIRED) { - throw new ServiceException( - "request is expierd: " + RestHttpContentExchange.toState(HttpExchange.STATUS_EXPIRED)); - } - } - return null; - } - -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java deleted file mode 100644 index 50a3538..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.http.HttpMethods; -import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.openo.baseservice.remoteservice.exception.ServiceException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 Aug 9, 2016 - */ -public class HttpRest extends HttpBaseRest { - - private static final Logger LOG = LoggerFactory.getLogger(HttpRest.class); - - /** - * Initializing Rest options.
- * - * @param options: rest options. - * @throws ServiceException - * @since SDNO 0.5 - */ - public void initHttpRest(final RestfulOptions option) throws ServiceException { - if(option == null) { - client = null; - throw new ServiceException("option is null."); - } - createHttpClient(); - try { - int iValue; - iValue = option.getIntOption(RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME); - // max 200 concurrent,connections to every address - client.setMaxConnectionsPerAddress(iValue); - - iValue = option.getIntOption(RestfulClientConst.THREAD_KEY_NAME); - // max threads - client.setThreadPool(new QueuedThreadPool(iValue)); - iValue = option.getIntOption(RestfulClientConst.CONN_TIMEOUT_KEY_NAME); - client.setConnectTimeout(iValue); - iValue = option.getRestTimeout(); - defaultTimeout = iValue; - client.setTimeout(iValue); - - iValue = option.getIntOption(RestfulClientConst.IDLE_TIMEOUT_KEY_NAME); - client.setIdleTimeout(iValue); - iValue = option.getIntOption(RestfulClientConst.MAX_RESPONSE_HEADER_SIZE); - client.setResponseHeaderSize(iValue); - iValue = option.getIntOption(RestfulClientConst.MAX_REQUEST_HEADER_SIZE); - client.setRequestHeaderSize(iValue); - // HttpClient.CONNECTOR_SOCKET - client.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL); - client.start(); - defaultIP = option.getStringOption(RestfulClientConst.HOST_KEY_NAME); - defaultPort = option.getIntOption(RestfulClientConst.PORT_KEY_NAME); - } catch(final Exception e) { - LOG.error("start httpclient error", e); - client = null; - throw new ServiceException("http client init failed."); - } - } - - @Override - public RestfulResponse get(final String servicePath, final RestfulParametes restParametes) throws ServiceException { - return this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, null, null); - } - - @Override - public RestfulResponse get(final String servicePath, final RestfulParametes restParametes, - final RestfulOptions option) throws ServiceException { - return this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, option, null); - } - - @Override - public RestfulResponse head(final String servicePath, final RestfulParametes restParametes) - throws ServiceException { - return this.sendHttpRequest(HttpMethods.HEAD, servicePath, restParametes, null, null); - } - - @Override - public RestfulResponse head(final String servicePath, final RestfulParametes restParametes, - final RestfulOptions option) throws ServiceException { - return this.sendHttpRequest(HttpMethods.HEAD, servicePath, restParametes, option, null); - } - - @Override - public void asyncGet(final String servicePath, final RestfulParametes restParametes, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, null, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, null, callback); - } - } - - @Override - public void asyncGet(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, option, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, option, callback); - } - } - - @Override - public RestfulResponse put(final String servicePath, final RestfulParametes restParametes) throws ServiceException { - return this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, null, null); - } - - @Override - public RestfulResponse put(final String servicePath, final RestfulParametes restParametes, - final RestfulOptions option) throws ServiceException { - return this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, option, null); - } - - @Override - public void asyncPut(final String servicePath, final RestfulParametes restParametes, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, null, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, null, callback); - } - } - - @Override - public void asyncPut(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, option, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, option, callback); - } - } - - @Override - public RestfulResponse post(final String servicePath, final RestfulParametes restParametes) - throws ServiceException { - return this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, null, null); - } - - @Override - public RestfulResponse post(final String servicePath, final RestfulParametes restParametes, - final RestfulOptions option) throws ServiceException { - return this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, option, null); - } - - @Override - public void asyncPost(final String servicePath, final RestfulParametes restParametes, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, null, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, null, callback); - } - } - - @Override - public void asyncPost(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, option, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, option, callback); - } - } - - @Override - public RestfulResponse delete(final String servicePath, final RestfulParametes restParametes) - throws ServiceException { - return this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, null, null); - } - - @Override - public RestfulResponse delete(final String servicePath, final RestfulParametes restParametes, - final RestfulOptions option) throws ServiceException { - return this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, option, null); - } - - @Override - public void asyncDelete(final String servicePath, final RestfulParametes restParametes, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, null, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, null, callback); - } - } - - @Override - public void asyncDelete(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, option, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, option, callback); - } - } - - @Override - public RestfulResponse patch(final String servicePath, final RestfulParametes restParametes) - throws ServiceException { - return this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, null, null); - } - - @Override - public RestfulResponse patch(final String servicePath, final RestfulParametes restParametes, - final RestfulOptions option) throws ServiceException { - return this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, option, null); - } - - @Override - public void asyncPatch(final String servicePath, final RestfulParametes restParametes, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, null, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, null, callback); - } - } - - @Override - public void asyncPatch(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, - final RestfulAsyncCallback callback) throws ServiceException { - if(callback == null) { - this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, option, new DefaultAsyncCallback()); - } else { - this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, option, callback); - } - } - -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java deleted file mode 100644 index 85118ce..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import org.openo.baseservice.remoteservice.exception.ServiceException; - -import org.apache.commons.lang.StringUtils; -import org.eclipse.jetty.client.ContentExchange; -import org.eclipse.jetty.client.HttpDestination; -import org.eclipse.jetty.http.HttpFields; -import org.eclipse.jetty.http.HttpHeaders; -import org.eclipse.jetty.io.Buffer; -import org.eclipse.jetty.util.StringUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.Charset; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; -import java.util.zip.GZIPInputStream; - -/** - * ContentExchange implementation classe to provide access to response. - *
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class RestHttpContentExchange extends ContentExchange { - - private static final Logger LOGGER = LoggerFactory.getLogger(RestHttpContentExchange.class); - - private boolean gzip = false; - - private RestfulAsyncCallback callback = null; - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - * @param cacheFields whether to cache response header. - * @param asyncCallback callback method. - */ - RestHttpContentExchange(final boolean cacheFields, final RestfulAsyncCallback asyncCallback) { - super(cacheFields); - this.callback = asyncCallback; - } - - /** - * Extract message. - *
- * - * @param data GZipped data. - * @return Uncompressed data. - * @throws IOException - * @since SDNO 0.5 - */ - public String decompressGzipToStr(final byte[] data) throws IOException { - if(data == null) { - return ""; - } - ByteArrayInputStream input = null; - GZIPInputStream gzis = null; - InputStreamReader reader = null; - final StringBuilder out = new StringBuilder(); - try { - input = new ByteArrayInputStream(data); - gzis = new GZIPInputStream(input); - reader = new InputStreamReader(gzis, Charset.forName(RestfulClientConst.ENCODING)); - final char[] buff = new char[1024]; - for(int n; (n = reader.read(buff)) != -1;) { - out.append(new String(buff, 0, n)); - } - } finally { - if(reader != null) { - try { - reader.close(); - } catch(final IOException e) { - LOGGER.error("decompress Gzip reader exception:", e); - } - } - if(gzis != null) { - try { - gzis.close(); - } catch(final IOException e) { - LOGGER.error("decompress Gzip exception:", e); - } - } - if(input != null) { - try { - input.close(); - } catch(final IOException e) { - LOGGER.error("decompress Gzip input exception:", e); - } - } - } - return out.toString(); - - } - - /** - * View response headers Content-Encoding values if you need to extract data.
- * - * @param name buffer - * @param value value - * @throws IOException - * @since SDNO 0.5 - */ - @Override - protected synchronized void onResponseHeader(final Buffer name, final Buffer value) throws IOException { - super.onResponseHeader(name, value); - final int header = HttpHeaders.CACHE.getOrdinal(name); - if(header == HttpHeaders.CONTENT_ENCODING_ORDINAL) { - final String encoding = StringUtil.asciiToLowerCase(value.toString()); - gzip = encoding != null && StringUtils.contains(encoding, "gzip"); - } - - } - - @Override - protected void onResponseComplete() throws IOException { - if(LOGGER.isInfoEnabled()) { - LOGGER.info("Response has Complete:" + "path:" + this.getRequestURI().replace("\n", "0x0A")); - } - super.onResponseComplete(); - if(callback != null) { - final RestfulResponse rsp = getResponse(); - callback.callback(rsp); - } - } - - @Override - protected void onRequestCommitted() throws IOException { - if(LOGGER.isInfoEnabled()) { - LOGGER.info("Request Header has been send:" + "path:" + this.getRequestURI().replace("\n", "0x0A")); - } - super.onRequestCommitted(); - } - - @Override - protected void onRequestComplete() throws IOException { - if(LOGGER.isInfoEnabled()) { - LOGGER.info("Request has bend send complete:" + "path:" + this.getRequestURI().replace("\n", "0x0A")); - } - super.onRequestComplete(); - } - - @Override - protected void onException(final Throwable x) { - LOGGER.warn("onException:", x); - super.onException(x); - if(callback != null) { - callback.handleExcepion(x); - } - } - - @Override - protected void onConnectionFailed(final Throwable x) { - LOGGER.warn("onConnectionFailed:", x); - super.onConnectionFailed(x); - if(callback != null) { - callback.handleExcepion(x); - } - - } - - @Override - protected void expire(final HttpDestination destination) { - super.expire(destination); - if(callback != null) { - callback.handleExcepion(new ServiceException("request is expired, status:" + toState(getStatus()))); - } - } - - public boolean isGzip() { - return gzip; - } - - /** - * Get the response as RestfulResponse. - *
- * - * @return response object. - * @throws IOException - * @since SDNO 0.5 - */ - public RestfulResponse getResponse() throws IOException { - final RestfulResponse rsp = new RestfulResponse(); - rsp.setStatus(this.getResponseStatus()); - if(isGzip()) { - final String responseString = decompressGzipToStr(getResponseContentBytes()); - rsp.setResponseJson(responseString); - } else { - rsp.setResponseJson(this.getResponseContent()); - } - - final HttpFields field = this.getResponseFields(); - if(field != null) { - final Map header = new HashMap<>(); - - final Enumeration names = field.getFieldNames(); - for(final Enumeration e = names; e.hasMoreElements();) { - final String fieldName = e.nextElement(); - final String fieldValue = field.getStringField(fieldName); - header.put(fieldName, fieldValue); - } - - rsp.setRespHeaderMap(header); - } - return rsp; - } - -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java deleted file mode 100644 index 7a7c11e..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import org.openo.baseservice.remoteservice.exception.ServiceException; - -/** - * ReSTful method interface.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public interface Restful { - - /** - * Http GET method.
- * - * @param servicePath: request path. - * @param restParametes: query parameters. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse get(String servicePath, RestfulParametes restParametes) throws ServiceException; - - /** - * Http HEAD method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse head(String servicePath, RestfulParametes restParametes, RestfulOptions options) - throws ServiceException; - - /** - * Http HEAD method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse head(String servicePath, RestfulParametes restParametes) throws ServiceException; - - /** - * Http GET method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse get(String servicePath, RestfulParametes restParametes, RestfulOptions options) - throws ServiceException; - - /** - * Asynchronouse GET request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncGet(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) - throws ServiceException; - - /** - * Asynchronouse GET request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncGet(String servicePath, RestfulParametes restParametes, RestfulOptions options, - RestfulAsyncCallback callback) throws ServiceException; - - /** - * Http PUT method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse put(String servicePath, RestfulParametes restParametes) throws ServiceException; - - /** - * Http PUT method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse put(String servicePath, RestfulParametes restParametes, RestfulOptions options) - throws ServiceException; - - /** - * Asynchronouse PUT request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncPut(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) - throws ServiceException; - - /** - * Asynchronouse PUT request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncPut(String servicePath, RestfulParametes restParametes, RestfulOptions options, - RestfulAsyncCallback callback) throws ServiceException; - - /** - * Http POST method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse post(String servicePath, RestfulParametes restParametes) throws ServiceException; - - /** - * Http POST method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse post(String servicePath, RestfulParametes restParametes, RestfulOptions options) - throws ServiceException; - - /** - * Asynchronouse POST request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncPost(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) - throws ServiceException; - - /** - * Asynchronouse POST request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncPost(String servicePath, RestfulParametes restParametes, RestfulOptions options, - RestfulAsyncCallback callback) throws ServiceException; - - /** - * Http DELETE method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse delete(String servicePath, RestfulParametes restParametes) throws ServiceException; - - /** - * Http DELETE method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse delete(String servicePath, RestfulParametes restParametes, RestfulOptions options) - throws ServiceException; - - /** - * Asynchronouse DELETE request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncDelete(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) - throws ServiceException; - - /** - * Asynchronouse DELETE request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncDelete(String servicePath, RestfulParametes restParametes, RestfulOptions options, - RestfulAsyncCallback callback) throws ServiceException; - - /** - * Http PATCH method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse patch(String servicePath, RestfulParametes restParametes) throws ServiceException; - - /** - * Http PATCH method.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @return response. - * @throws ServiceException - * @since SDNO 0.5 - */ - RestfulResponse patch(String servicePath, RestfulParametes restParametes, RestfulOptions options) - throws ServiceException; - - /** - * Asynchronouse PATCH request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncPatch(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) - throws ServiceException; - - /** - * Asynchronouse PATCH request.
- * - * @param servicePath: request path. - * @param restParametes: request parameters. - * @param options: request options. - * @param callback: response callback method. - * @throws ServiceException - * @since SDNO 0.5 - */ - void asyncPatch(String servicePath, RestfulParametes restParametes, RestfulOptions options, - RestfulAsyncCallback callback) throws ServiceException; -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java deleted file mode 100644 index bf11c16..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -/** - * Callback interface for ReST calls.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public interface RestfulAsyncCallback { - - /** - * Response callback.
- * - * @param response: response of ReST call. - * @since SDNO 0.5 - */ - void callback(RestfulResponse response); - - /** - * Exceptoin callback.
- * - * @param e: ReST call exception. - * @since SDNO 0.5 - */ - void handleExcepion(Throwable e); -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java deleted file mode 100644 index ef02b7d..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -/** - * Constants for ReST client.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class RestfulClientConst { - - /** -- json Ecode -- **/ - public static final String APPLICATION_FORM_JSON_EBCIDED = "application/json"; - - /** - * urlencode - */ - public static final String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded; charset=UTF-8"; - - public static final String ENCODING = "UTF-8"; - - public static final String SERVER_KEY_NAME = "defaulServer"; - - public static final String CALLED_SERVICE_NAME = "serviceName"; - - public static final String HOST_KEY_NAME = "host"; - - public static final String PORT_KEY_NAME = "port"; - - public static final String CONN_TIMEOUT_KEY_NAME = "ConnectTimeout"; - - public static final String THREAD_KEY_NAME = "thread"; - - public static final String IDLE_TIMEOUT_KEY_NAME = "idletimeout"; - - public static final String TIMEOUT_KEY_NAME = "timeout"; - - public static final String MAX_CONN_PER_ADDR_KEY_NAME = "maxConnectionPerAddr"; - - public static final String REQUEST_ID = "x-request-id"; - - public static final String MAX_RESPONSE_HEADER_SIZE = "responseHeaderSize"; - - public static final String MAX_REQUEST_HEADER_SIZE = "requestHeaderSize"; - - private RestfulClientConst() { - - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java deleted file mode 100644 index 3d0a0ff..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; - -import org.openo.baseservice.roa.util.ReaderHelper; -import org.openo.baseservice.util.impl.SystemEnvVariablesFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import net.sf.json.JSONObject; - -/** - * Rest client options.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class RestfulConfigure { - - private static final Logger LOG = LoggerFactory.getLogger(RestfulConfigure.class); - - private RestfulOptions options = null; - - /** - * Constructor
- *

- * Use the default path initialization http Rest options. - *

- * - * @since SDNO 0.5 - */ - public RestfulConfigure() { - final String config = "/etc/conf/restclient.json"; - final String approot = SystemEnvVariablesFactory.getInstance().getAppRoot(); - final StringBuilder extendSetting = new StringBuilder(); - - if(approot != null) { - extendSetting.append(approot); - extendSetting.append(config); - } else { - extendSetting.append(System.getProperty("user.dir")); - extendSetting.append(config); - } - - final String configfile = extendSetting.toString(); - initRestConf(configfile); - } - - /** - * Constructor
- *

- * Use the specified file to initialize http Rest options. - *

- * - * @since SDNO 0.5 - * @param configfile - */ - public RestfulConfigure(final String configfile) { - initRestConf(configfile); - } - - public RestfulOptions getOptions() { - return options; - } - - private void initRestConf(final String configfile) { - options = getDefaultOptions(); - - final JSONObject obj = loadJsonFromFile(configfile); - if(obj != null) { - if(obj.has(RestfulClientConst.SERVER_KEY_NAME)) { - final JSONObject server = obj.getJSONObject(RestfulClientConst.SERVER_KEY_NAME); - setStringOption(server, RestfulClientConst.HOST_KEY_NAME); - setIntOption(server, RestfulClientConst.PORT_KEY_NAME); - } - setIntOption(obj, RestfulClientConst.CONN_TIMEOUT_KEY_NAME); - setIntOption(obj, RestfulClientConst.THREAD_KEY_NAME); - setIntOption(obj, RestfulClientConst.IDLE_TIMEOUT_KEY_NAME); - setIntOption(obj, RestfulClientConst.TIMEOUT_KEY_NAME); - setIntOption(obj, RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME); - setIntOption(obj, RestfulClientConst.MAX_RESPONSE_HEADER_SIZE); - setIntOption(obj, RestfulClientConst.MAX_REQUEST_HEADER_SIZE); - } else { - LOG.error("failed to load json from " + configfile); - } - } - - private void setStringOption(final JSONObject json, final String key) { - if(json.has(key)) { - options.setOption(key, json.getString(key)); - } - } - - private void setIntOption(final JSONObject json, final String key) { - if(json.has(key)) { - options.setOption(key, json.getInt(key)); - } - } - - private RestfulOptions getDefaultOptions() { - options = new RestfulOptions(); - options.setOption(RestfulClientConst.CONN_TIMEOUT_KEY_NAME, 3000); - options.setOption(RestfulClientConst.THREAD_KEY_NAME, 200); - options.setOption(RestfulClientConst.IDLE_TIMEOUT_KEY_NAME, 30000); - options.setOption(RestfulClientConst.TIMEOUT_KEY_NAME, 30000); - options.setOption(RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME, 50); - options.setOption(RestfulClientConst.MAX_RESPONSE_HEADER_SIZE, 20 * 1024); - options.setOption(RestfulClientConst.MAX_REQUEST_HEADER_SIZE, 20 * 1024); - return options; - } - - private JSONObject loadJsonFromFile(final String filePath) { - final File file = new File(filePath); - if((!file.exists()) || (!file.isFile())) { - LOG.error(filePath + "isn't exist."); - return null; - } - BufferedReader reader = null; - final StringBuilder jsonstr = new StringBuilder(); - JSONObject jo = null; - try { - reader = new BufferedReader(new FileReader(file)); - final ReaderHelper rHelpper = new ReaderHelper(reader); - String tempString = null; - while((tempString = rHelpper.getLine()) != null) { - jsonstr.append(tempString); - } - jo = JSONObject.fromObject(jsonstr.toString()); - } catch(final IOException e) { - LOG.error("load file exception:" + e); - } finally { - if(reader != null) { - try { - reader.close(); - } catch(final IOException e) { - LOG.error("close error.", e); - } - } - } - return jo; - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java deleted file mode 100644 index e53bab1..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import org.openo.baseservice.remoteservice.exception.ServiceException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.Map; - -/** - * RestFul instance factory.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class RestfulFactory { - - /** - * https protocol. - */ - public static final String PROTO_HTTPS = "https"; - - /** - * http protocol. - */ - public static final String PROTO_HTTP = "http"; - - private static final Logger LOG = LoggerFactory.getLogger(RestfulFactory.class); - - private static final Map INSTANCES = new HashMap<>(2); - - private RestfulFactory() { - - } - - /** - * Get RESTful instance. This method returns a singleton instance. - *
- * - * @param protocol protocol. currently only support 'http'. - * @return restful instance. - * @since SDNO 0.5 - */ - public static synchronized Restful getRestInstance(final String protocol) { - Restful rest = INSTANCES.get(protocol); - if(rest != null) { - return rest; - } - if(PROTO_HTTP.equals(protocol)) { - rest = createHttpRest(); - INSTANCES.put(protocol, rest); - } - return rest; - } - - private static Restful createHttpRest() { - final HttpRest rest = new HttpRest(); - setRestOption(rest, null); - return rest; - } - - private static void setRestOption(final HttpRest rest, final String restoptionfile) { - try { - RestfulConfigure config; - if(restoptionfile == null || restoptionfile.isEmpty()) { - config = new RestfulConfigure(); - } else { - config = new RestfulConfigure(restoptionfile); - } - - final RestfulOptions option = config.getOptions(); - rest.initHttpRest(option); - } catch(final ServiceException e) { - LOG.error("init http client exception: ", e); - } - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java deleted file mode 100644 index 912abf5..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import java.util.HashMap; -import java.util.Map; - -/** - * Options for Rest communication.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class RestfulOptions { - - public static final String REST_OPTIONS_NAME_TIMEOUT = "timeout"; - - public static final int REST_OPTIONS_TIMEOUT_MAXTIMEOUT = 1800000; - - private final Map optionsMap = new HashMap<>(); - - /** - * Set called service name.
- * - * @param serviceName service name. - * @return true. - * @since SDNO 0.5 - */ - public boolean setCalledServiceName(final String serviceName) { - this.setOption(RestfulClientConst.CALLED_SERVICE_NAME, serviceName); - return true; - } - - /** - * Get called service name.
- * - * @return - * @since SDNO 0.5 - */ - public String getCalledServicName() { - final Object obj = this.getOption(RestfulClientConst.CALLED_SERVICE_NAME); - if(null == obj) { - return ""; - } - return (String)obj; - } - - /** - * Get port.
- * - * @return port. - * @since SDNO 0.5 - */ - public int getPort() { - final Object obj = this.getOption(RestfulClientConst.PORT_KEY_NAME); - if(null == obj) { - return 0; - } - return ((Integer)obj).intValue(); - } - - /** - * Set port.
- * - * @param port port to set. - * @return - * @since SDNO 0.5 - */ - public boolean setPort(final int port) { - this.setOption(RestfulClientConst.PORT_KEY_NAME, port); - return true; - } - - /** - * Get host.
- * - * @return the host. - * @since SDNO 0.5 - */ - public String getHost() { - final Object obj = this.getOption(RestfulClientConst.HOST_KEY_NAME); - if(null == obj) { - return ""; - } - return (String)obj; - } - - /** - * Set host.
- * - * @param host host to set. - * @return - * @since SDNO 0.5 - */ - public boolean setHost(final String host) { - this.setOption(RestfulClientConst.HOST_KEY_NAME, host); - return true; - } - - /** - * Set rest time-out.
- * - * @param timeout time-out to set in seconds. - * @return - * @since SDNO 0.5 - */ - public boolean setRestTimeout(final int timeout) { - if(0 < timeout && REST_OPTIONS_TIMEOUT_MAXTIMEOUT >= timeout) { - this.setOption(REST_OPTIONS_NAME_TIMEOUT, timeout); - return true; - } - return false; - } - - /** - * Get time-out.
- * - * @return time-out in seconds. - * @since SDNO 0.5 - */ - public int getRestTimeout() { - final Object obj = this.getOption(REST_OPTIONS_NAME_TIMEOUT); - if(null == obj) { - return 0; - } - return ((Integer)obj).intValue(); - } - - /** - * Get specified option.
- * - * @param optionName option name. - * @return option - * @since SDNO 0.5 - */ - public Object getOption(final String optionName) { - return optionsMap.get(optionName); - } - - /** - * Get option value as integer.
- * - * @param optionName option name. - * @return option value as int. - * @since SDNO 0.5 - */ - public int getIntOption(final String optionName) { - final Object obj = this.getOption(optionName); - if(null == obj) { - return 0; - } - return ((Integer)obj).intValue(); - } - - /** - * Get option value as string.
- * - * @param optionName option name. - * @return option value as string. - * @since SDNO 0.5 - */ - public String getStringOption(final String optionName) { - final Object obj = this.getOption(optionName); - if(null == obj) { - return ""; - } - return (String)obj; - } - - /** - * Set option.
- * - * @param option option name. - * @param optionsValue option value. - * @return - * @since SDNO 0.5 - */ - public Object setOption(final String option, final Object optionsValue) { - return optionsMap.put(option, optionsValue); - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java deleted file mode 100644 index c6c5933..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import java.util.HashMap; -import java.util.Map; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 Aug 9, 2016 - */ -public class RestfulParametes { - - private Map paramMap = new HashMap<>(); - - private Map headerMap = new HashMap<>(); - - private String rawData = null; - - /** - *
- * - * @param key - * @return - * @since SDNO 0.5 - */ - public String get(final String key) { - return paramMap.get(key); - } - - /** - *
- * - * @param data - * @since SDNO 0.5 - */ - public void setRawData(final String data) { - this.rawData = data; - } - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public String getRawData() { - return this.rawData; - } - - /** - *
- * - * @param key - * @param value - * @return - * @since SDNO 0.5 - */ - public String put(final String key, final String value) { - return paramMap.put(key, value); - } - - /** - *
- * - * @param key - * @param value - * @return - * @since SDNO 0.5 - */ - public String putHttpContextHeader(final String key, final String value) { - return headerMap.put(key, value); - } - - /** - *
- * - * @param key - * @param value - * @return - * @since SDNO 0.5 - */ - public String putHttpContextHeader(final String key, final int value) { - return this.putHttpContextHeader(key, String.valueOf(value)); - } - - /** - *
- * - * @param key - * @return - * @since SDNO 0.5 - */ - public String getHttpContextHeader(final String key) { - return headerMap.get(key); - } - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public Map getParamMap() { - return paramMap; - } - - /** - *
- * - * @param paramMap - * @since SDNO 0.5 - */ - public void setParamMap(final Map paramMap) { - this.paramMap = paramMap; - } - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public Map getHeaderMap() { - return this.headerMap; - } - - /** - *
- * - * @param headerMap - * @since SDNO 0.5 - */ - public void setHeaderMap(final Map headerMap) { - this.headerMap = headerMap; - } -} diff --git a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java b/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java deleted file mode 100644 index 28a0c6d..0000000 --- a/CommonLibrary/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import java.util.Map; - -/** - * Response for RestFul requests.
- *

- *

- * - * @author - * @version SDNO 0.5 28-May-2016 - */ -public class RestfulResponse { - - private String responseContent; - - private int status = -1; - - private Map respHeaderMap = null; - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public int getStatus() { - return status; - } - - /** - *
- * - * @param status - * @since SDNO 0.5 - */ - public void setStatus(final int status) { - this.status = status; - } - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public Map getRespHeaderMap() { - return respHeaderMap; - } - - /** - *
- * - * @param header - * @since SDNO 0.5 - */ - public void setRespHeaderMap(final Map header) { - this.respHeaderMap = header; - } - - /** - * Get response header value as integer.
- * - * @param key header param name. - * @return header param value as integer. (-1 if error) - * @since SDNO 0.5 - */ - public int getRespHeaderInt(final String key) { - if(respHeaderMap != null) { - final String result = respHeaderMap.get(key); - if(result != null) { - return Integer.parseInt(result); - } - } - return -1; - } - - /** - * Get response header value as long.
- * - * @param key header param name. - * @return value as long. -1 if no value. - * @since SDNO 0.5 - */ - public long getRespHeaderLong(final String key) { - if(respHeaderMap != null) { - final String result = respHeaderMap.get(key); - if(result != null) { - return Long.parseLong(result); - } - } - return -1; - } - - /** - * Get http header as string.
- * - * @param key header name. - * @return header value. - * @since SDNO 0.5 - */ - public String getRespHeaderStr(final String key) { - if(respHeaderMap != null) { - return respHeaderMap.get(key); - } - return null; - } - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public String getResponseContent() { - return responseContent; - } - - /** - *
- * - * @param responseString - * @since SDNO 0.5 - */ - public void setResponseJson(final String responseString) { - this.responseContent = responseString; - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java deleted file mode 100644 index 78f08da..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import java.io.Reader; -import java.io.StringReader; - -import junit.framework.Assert; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 12-Jun-2016 - */ -public class ReaderHelperTest { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - * Test method for {@link org.openo.baseservice.util.inf.ReaderHelper#getLine()}. - */ - @Test - public void testGetLine() { - final String message = "hello.. how are you?"; - final Reader reader = new StringReader(message); - final ReaderHelper helper = new ReaderHelper(reader); - final String actual = helper.getLine(); - Assert.assertEquals(message, actual); - } - - /** - * Test method for {@link org.openo.baseservice.util.inf.ReaderHelper#getLine()}. - */ - @Test - public void testGetLineMultiLine() { - final String line1 = "hello.. how are you?"; - final String line2 = "I am fine."; - final Reader reader = new StringReader(line1 + System.lineSeparator() + line2); - final ReaderHelper helper = new ReaderHelper(reader); - String actual = helper.getLine(); - Assert.assertEquals(line1, actual); - actual = helper.getLine(); - Assert.assertEquals(line2, actual); - actual = helper.getLine(); - Assert.assertEquals(null, actual); - } - - @Test - public void testGetLineNull() { - final ReaderHelper helper = new ReaderHelper(null); - final String actual = helper.getLine(); - Assert.assertEquals(null, actual); - - } - -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java deleted file mode 100644 index f4f93e4..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 13-Jun-2016 - */ -public class TestServiceUtil { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetServiceHost() { - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetServicePort() { - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java deleted file mode 100644 index 419d4d0..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.clientsdk; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.Arrays; -import java.util.Date; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; - -import mockit.Mocked; -import mockit.NonStrictExpectations; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 13-Jun-2016 - */ -public class TestHttpUtil { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testContainsIgnoreCase() { - final String[] array = {"hello", "how", "are", "you", "?"}; - final String toFind = "Hello"; - Assert.assertTrue(HttpUtil.containsIgnoreCase(array, toFind)); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testContainsIgnoreCaseNull() { - final String[] array = {"hello", "how", "are", "you", "?"}; - final String toFind = "Hello"; - Assert.assertFalse(HttpUtil.containsIgnoreCase(array, null)); - - array[0] = null; - Assert.assertFalse(HttpUtil.containsIgnoreCase(array, toFind)); - - Assert.assertTrue(HttpUtil.containsIgnoreCase(array, null)); - array[0] = "hello"; - array[array.length - 1] = null; - Assert.assertTrue(HttpUtil.containsIgnoreCase(array, null)); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testJoin() { - final String[] array = {"hello", "how", "are", "you", "?"}; - String actual = HttpUtil.join(array, ","); - String expected = "hello,how,are,you,?"; - Assert.assertEquals(actual, expected); - - actual = HttpUtil.join(array, "#"); - expected = expected.replaceAll(",", "#"); - Assert.assertEquals(actual, expected); - actual = HttpUtil.join(new String[] {}, ","); - Assert.assertEquals(actual, ""); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testParameterToString() { - // with param string. - Object param = new String("String Param"); - String actual = HttpUtil.parameterToString(param); - String expected = "String Param"; - Assert.assertEquals(expected, actual); - - // with param date. - final Date date = new Date(); - param = date; - expected = "" + date.getTime(); - actual = HttpUtil.parameterToString(param); - Assert.assertEquals(expected, actual); - - // with param collection. - final String[] array = {"hello", "how", "are", "you", "?"}; - param = Arrays.asList(array); - expected = HttpUtil.join(array, ","); - actual = HttpUtil.parameterToString(param); - Assert.assertEquals(expected, actual); - - // with param any - param = new Object() { - - @Override - public String toString() { - return "test object"; - } - }; - expected = "test object"; - actual = HttpUtil.parameterToString(param); - Assert.assertEquals(expected, actual); - - // with param null. - expected = ""; - actual = HttpUtil.parameterToString(null); - Assert.assertEquals(expected, actual); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSelectHeaderAccept() { - final String[] accepts = {"application/json", "text/plain", "application/xml"}; - String expected = "application/json"; - String actual = HttpUtil.selectHeaderAccept(accepts); - Assert.assertEquals(expected, actual); - - accepts[0] = "application/x-www-form-urlencoded"; - expected = HttpUtil.join(accepts, ","); - actual = HttpUtil.selectHeaderAccept(accepts); - Assert.assertEquals(expected, actual); - - expected = null; - actual = HttpUtil.selectHeaderAccept(new String[] {}); - Assert.assertEquals(expected, actual); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSelectHeaderContentType() { - final String[] accepts = {"application/json", "text/plain", "application/xml"}; - String expected = "application/json"; - String actual = HttpUtil.selectHeaderContentType(accepts); - Assert.assertEquals(expected, actual); - - accepts[0] = "application/x-www-form-urlencoded"; - expected = "application/x-www-form-urlencoded"; - actual = HttpUtil.selectHeaderContentType(accepts); - Assert.assertEquals(expected, actual); - - expected = "application/json"; - actual = HttpUtil.selectHeaderContentType(new String[] {}); - Assert.assertEquals(expected, actual); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testEscapeString() throws Exception { - final String str = "/this/url/to be encoded"; - final String actual = HttpUtil.escapeString(str); - final String expected = "%2Fthis%2Furl%2Fto%20be%20encoded"; - Assert.assertEquals(expected, actual); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testEscapeStringException() throws Exception { - - final String str = "/this/url/to be encoded"; - new NonStrictExpectations() { - - @Mocked - URLEncoder encoder; - - { - URLEncoder.encode(str, "utf8"); - result = new UnsupportedEncodingException(); - } - }; - - final String actual = HttpUtil.escapeString(str); - Assert.assertEquals(str, actual); - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java deleted file mode 100644 index d532b94..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.clientsdk; - -import org.openo.baseservice.roa.util.clientsdk.demo.JsonTestClass; - -import org.codehaus.jackson.JsonParseException; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.type.TypeReference; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import net.sf.json.JSONObject; - -import junit.framework.Assert; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 13-Jun-2016 - */ -public class TestJsonUtil { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testUnMarshalStringClassOfT() throws Exception { - final String name = "myname"; - final int id = 25; - final String jsonstr = "{\"name\": \"" + name + "\", \"id\": " + id + "}"; - - final JsonTestClass jsonObj = JsonUtil.unMarshal(jsonstr, JsonTestClass.class); - - Assert.assertNotNull(jsonObj); - Assert.assertEquals(name, jsonObj.getName()); - Assert.assertEquals(id, jsonObj.getId()); - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testUnMarshalStringTypeReferenceOfT() throws Exception { - final String name = "myname"; - final int id = 25; - final String jsonstr = "{\"name\": \"" + name + "\", \"id\": " + id + "}"; - - final JsonTestClass jsonObj = JsonUtil.unMarshal(jsonstr, new TypeReference() {}); - - Assert.assertNotNull(jsonObj); - Assert.assertEquals(name, jsonObj.getName()); - Assert.assertEquals(id, jsonObj.getId()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testMarshal() throws Exception { - final JsonTestClass jsonObj = new JsonTestClass(); - jsonObj.setId(1); - jsonObj.setName("somename"); - final String str = JsonUtil.marshal(jsonObj); - final JSONObject json = JSONObject.fromObject(str); - Assert.assertNotNull(json); - Assert.assertEquals(json.getString("name"), jsonObj.getName()); - Assert.assertEquals(json.getInt("id"), jsonObj.getId()); - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testMarshalJsonObj() throws Exception { - final JSONObject jsonObj = new JSONObject(); - jsonObj.put("id", 10); - jsonObj.put("name", "some-name"); - final String str = JsonUtil.marshal(jsonObj); - final JSONObject json = JSONObject.fromObject(str); - Assert.assertNotNull(json); - Assert.assertEquals(json.getString("name"), "some-name"); - Assert.assertEquals(json.getInt("id"), 10); - - } - - /** - *
- * - * @throws JsonParseException - * @throws JsonMappingException - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testGetMapper() throws JsonParseException, JsonMappingException, Exception { - final String name = "myname"; - final int id = 25; - final ObjectMapper mapper = JsonUtil.getMapper(); - Assert.assertNotNull(mapper); - final JSONObject json = new JSONObject(); - json.put("name", name); - json.put("id", id); - final JsonTestClass jsonObj = mapper.readValue(json.toString(), JsonTestClass.class); - Assert.assertNotNull(jsonObj); - Assert.assertEquals(name, jsonObj.getName()); - Assert.assertEquals(id, jsonObj.getId()); - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java deleted file mode 100644 index 0fcaf40..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.clientsdk; - -import org.openo.baseservice.remoteservice.exception.ServiceException; -import org.openo.baseservice.roa.util.restclient.Restful; -import org.openo.baseservice.roa.util.restclient.RestfulAsyncCallback; -import org.openo.baseservice.roa.util.restclient.RestfulParametes; -import org.openo.baseservice.roa.util.restclient.RestfulResponse; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.util.Arrays; -import java.util.Date; - -import junit.framework.Assert; -import mockit.Expectations; -import mockit.Mocked; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 13-Jun-2016 - */ -public class TestRestClientUtil { - - @Mocked - Restful restFullMock; - - ExpectedException thrown = ExpectedException.none();; - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testInvokeMethod() throws ServiceException { - final String path = "test/path"; - final RestfulParametes parameters = null; - final RestfulResponse expected = new RestfulResponse(); - expected.setStatus(200); - - new Expectations() { - - { - restFullMock.get(path, parameters); - returns(expected); - - restFullMock.post(path, parameters); - returns(expected); - - restFullMock.patch(path, parameters); - returns(expected); - - restFullMock.delete(path, parameters); - returns(expected); - - restFullMock.put(path, parameters); - returns(expected); - } - }; - RestfulResponse actual = RestClientUtil.invokeMethod("GET", path, parameters, restFullMock); - Assert.assertEquals(200, actual.getStatus()); - - actual = RestClientUtil.invokeMethod("POST", path, parameters, restFullMock); - Assert.assertEquals(200, actual.getStatus()); - - actual = RestClientUtil.invokeMethod("PATCH", path, parameters, restFullMock); - Assert.assertEquals(200, actual.getStatus()); - - actual = RestClientUtil.invokeMethod("DELETE", path, parameters, restFullMock); - Assert.assertEquals(200, actual.getStatus()); - - actual = RestClientUtil.invokeMethod("PUT", path, parameters, restFullMock); - Assert.assertEquals(200, actual.getStatus()); - } - - @Ignore - @Test(expected = ServiceException.class) - public void testInvokeMethodException() throws ServiceException { - RestClientUtil.invokeMethod("UNKNOWN-METHOD", "some/path", null, restFullMock); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test(expected = ServiceException.class) - public void testInvokeAsyncMethod() throws ServiceException { - final String path = "test/path"; - final RestfulParametes parameters = null; - final RestfulAsyncCallback callback = null; - - RestClientUtil.invokeAsyncMethod("GET", path, parameters, restFullMock, callback); - - RestClientUtil.invokeAsyncMethod("POST", path, parameters, restFullMock, callback); - - RestClientUtil.invokeAsyncMethod("PATCH", path, parameters, restFullMock, callback); - - RestClientUtil.invokeAsyncMethod("DELETE", path, parameters, restFullMock, callback); - - RestClientUtil.invokeAsyncMethod("PUT", path, parameters, restFullMock, callback); - - RestClientUtil.invokeAsyncMethod("UNKNOWN", path, parameters, restFullMock, callback); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testIsPrimitive() { - - Assert.assertTrue(RestClientUtil.isPrimitive(Integer.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Long.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Double.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Void.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(String.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Boolean.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Byte.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Character.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Short.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(Float.class)); - - Assert.assertTrue(RestClientUtil.isPrimitive(int.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(long.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(double.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(void.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(boolean.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(byte.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(char.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(short.class)); - Assert.assertTrue(RestClientUtil.isPrimitive(float.class)); - - Assert.assertFalse(RestClientUtil.isPrimitive(Object.class)); - Assert.assertFalse(RestClientUtil.isPrimitive(Date.class)); - Assert.assertFalse(RestClientUtil.isPrimitive(Arrays.class)); - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java deleted file mode 100644 index 5833bca..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.clientsdk.demo; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 13-Jun-2016 - */ -public class JsonTestClass { - - /** - * - */ - private String name; - - /** - * - */ - private int id; - - /** - * Constructor
- *

- *

- * - * @since SDNO 0.5 - */ - public JsonTestClass() { - } - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public String getName() { - return name; - } - - /** - *
- * - * @param name - * @since SDNO 0.5 - */ - public void setName(String name) { - this.name = name; - } - - /** - *
- * - * @return - * @since SDNO 0.5 - */ - public int getId() { - return id; - } - - /** - *
- * - * @param id - * @since SDNO 0.5 - */ - public void setId(int id) { - this.id = id; - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java deleted file mode 100644 index ac8b4a8..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java +++ /dev/null @@ -1,1289 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import org.openo.baseservice.remoteservice.exception.ServiceException; -import org.openo.baseservice.roa.util.ServiceUtil; - -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.HttpExchange; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.Field; -import java.net.URLEncoder; - -import mockit.Expectations; -import mockit.Mock; -import mockit.MockUp; -import mockit.Mocked; -import mockit.NonStrictExpectations; -import mockit.integration.junit4.JMockit; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 13-Jun-2016 - */ -@RunWith(JMockit.class) -public class TestHttpRest { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testInitHttpRest() throws Exception { - final RestfulOptions options = new RestfulOptions(); - new MockUp() { - - @Mock - public void doStart() { - System.out.println("started"); - } - }; - final HttpRest httpRest = new HttpRest(); - httpRest.initHttpRest(options); - final Field httpClient = HttpBaseRest.class.getDeclaredField("client"); - httpClient.setAccessible(true); - Assert.assertNotNull(httpClient.get(httpRest)); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testInitHttpRestExcpetion() throws Exception { - final RestfulOptions options = new RestfulOptions(); - new MockUp() { - - @Mock - public void doStart() throws Exception { - throw new Exception(); - } - }; - final HttpRest httpRest = new HttpRest(); - thrown.expect(ServiceException.class); - thrown.expectMessage("http client init failed."); - httpRest.initHttpRest(options); - final Field httpClient = HttpRest.class.getDeclaredField("client"); - httpClient.setAccessible(true); - Assert.assertNull(httpClient.get(httpRest)); - System.out.println("finished"); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testInitHttpRestNull() throws Exception { - final HttpRest httpRest = new HttpRest(); - thrown.expect(ServiceException.class); - thrown.expectMessage("option is null."); - httpRest.initHttpRest(null); - } - - /** - *
- * - * @throws NoSuchFieldException - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testCreateRestHttpContentExchange() throws NoSuchFieldException, Exception { - final HttpBaseRest httpRest = new HttpRest(); - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - - } - - @Override - public void handleExcepion(final Throwable e) { - - } - - }; - final RestHttpContentExchange exchange = httpRest.createRestHttpContentExchange(callback); - assertNotNull(exchange); - final Field callbackField = RestHttpContentExchange.class.getDeclaredField("callback"); - assertNotNull(callbackField); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testGetStringRestfulParametes() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parametes = new RestfulParametes(); - parametes.put("id", "1234"); - parametes.put("name", "some-name"); - parametes.put("address", null); - parametes.putHttpContextHeader("Content-Type", "application/json"); - parametes.putHttpContextHeader("Accept-Encoding", "*/*"); - final RestfulResponse response = httpRest.get("path/to/service", parametes); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testGetStringRestfulParametesRestfulOptions() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulResponse response = httpRest.get("path/to/service", new RestfulParametes(), options); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testGetStringRestfulParametesEncodeError() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - new NonStrictExpectations() { - - @Mocked - URLEncoder encoder; - - { - URLEncoder.encode(anyString, RestfulClientConst.ENCODING); - result = new UnsupportedEncodingException(); - } - - }; - - thrown.expect(ServiceException.class); - thrown.expectMessage("Broken VM does not support"); - - final RestfulParametes parametes = new RestfulParametes(); - parametes.put("id", "1234"); - parametes.put("name", "some-name"); - parametes.put("address", null); - parametes.putHttpContextHeader("Content-Type", "application/json"); - parametes.putHttpContextHeader("Accept-Encoding", "*/*"); - final RestfulResponse response = httpRest.get("path/to/service", parametes); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testHeadStringRestfulParametes() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parametes = new RestfulParametes(); - parametes.put("id", "1234"); - parametes.put("name", "some-name"); - parametes.put("address", null); - parametes.putHttpContextHeader("Content-Type", ""); - parametes.putHttpContextHeader("Accept-Encoding", ""); - final RestfulResponse response = httpRest.head("path/to/service", parametes); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testHeadStringRestfulParametesRestfulOptions() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parametes = new RestfulParametes(); - parametes.put("id", "1234"); - parametes.put("name", "some-name"); - parametes.put("address", null); - parametes.putHttpContextHeader("Content-Type", ""); - parametes.putHttpContextHeader("Accept-Encoding", ""); - new Expectations() { - - ServiceUtil serviceUtil; - - { - serviceUtil = new ServiceUtil(anyString, anyString); - serviceUtil.getServiceHost(); - returns("127.0.0.1"); - - serviceUtil.getServicePort(); - returns(10); - } - - }; - final RestfulResponse response = httpRest.head("path/to/service", parametes, options); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @param options - * @return - * @throws ServiceException - * @since SDNO 0.5 - */ - private HttpRest getHttpRest(final RestfulOptions options) throws ServiceException { - final HttpRest httpRest = new HttpRest(); - { - new MockUp() { - - @Mock - public void doStart() { - System.out.println("started"); - } - - @Mock - public void send(final HttpExchange exchange) throws IOException { - System.out.println("send"); - } - }; - httpRest.initHttpRest(options); - - } - return httpRest; - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testAsyncGetStringRestfulParametesRestfulAsyncCallback() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncGet("path/to/service", new RestfulParametes(), callback); - httpRest.asyncGet("path/to/service", new RestfulParametes(), null); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testAsyncGetStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncGet("path/to/service", new RestfulParametes(), new RestfulOptions(), callback); - httpRest.asyncGet("path/to/service", new RestfulParametes(), new RestfulOptions(), null); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testPutStringRestfulParametes() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parametes = new RestfulParametes(); - parametes.put("id", "1234"); - parametes.put("name", "some-name"); - parametes.put("address", null); - parametes.putHttpContextHeader("Content-Type", ""); - parametes.putHttpContextHeader("Accept-Encoding", ""); - new Expectations() { - - ServiceUtil serviceUtil; - - { - serviceUtil = new ServiceUtil(anyString, anyString); - serviceUtil.getServiceHost(); - returns("127.0.0.1"); - - serviceUtil.getServicePort(); - returns(-1); - } - - }; - final RestfulResponse response = httpRest.put("path/to/service", parametes); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testPutStringRestfulParametesRestfulOptions() throws ServiceException { - - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parametes = new RestfulParametes(); - parametes.put("id", "1234"); - parametes.put("name", "some-name"); - parametes.put("address", null); - parametes.putHttpContextHeader("Content-Type", ""); - parametes.putHttpContextHeader("Accept-Encoding", ""); - new Expectations() { - - ServiceUtil serviceUtil; - - { - serviceUtil = new ServiceUtil(anyString, anyString); - serviceUtil.getServiceHost(); - returns("127.0.0.1"); - - serviceUtil.getServicePort(); - returns(10); - } - - }; - final RestfulResponse response = httpRest.put("path/to/service", parametes, null); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testAsyncPutStringRestfulParametesRestfulAsyncCallback() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncPut("path/to/service", new RestfulParametes(), callback); - httpRest.asyncPut("path/to/service", new RestfulParametes(), null); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testAsyncPutStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncPut("path/to/service", new RestfulParametes(), new RestfulOptions(), callback); - httpRest.asyncPut("path/to/service", new RestfulParametes(), new RestfulOptions(), null); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testPostStringRestfulParametes() throws Exception { - final RestfulOptions options = new RestfulOptions(); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone"); - return HttpExchange.STATUS_EXPIRED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_EXPIRED); - return response; - } - - }; - final RestfulParametes parameters = new RestfulParametes(); - parameters.put("id", "1234"); - parameters.put("name", "some-name"); - parameters.put("address", null); - parameters.putHttpContextHeader("Content-Type", ""); - parameters.putHttpContextHeader("Accept-Encoding", ""); - - thrown.expect(ServiceException.class); - thrown.expectMessage("request is expierd"); - final RestfulResponse response = httpRest.post("http://localhost:80/path/to/service", parameters); - assertEquals(HttpExchange.STATUS_EXPIRED, response.getStatus()); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testPostStringRestfulParametesRestfulOptions() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone" + HttpExchange.STATUS_EXCEPTED); - return HttpExchange.STATUS_EXCEPTED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parameters = new RestfulParametes(); - parameters.put("id", "1234"); - parameters.put("name", "some-name"); - parameters.put("address", null); - parameters.setRawData("{ \"data\"=\"sample JSON data\""); - parameters.putHttpContextHeader("Content-Type", ""); - parameters.putHttpContextHeader("Accept-Encoding", ""); - new Expectations() { - - ServiceUtil serviceUtil; - - { - serviceUtil = new ServiceUtil(anyString, anyString); - serviceUtil.getServiceHost(); - returns("127.0.0.1"); - - serviceUtil.getServicePort(); - returns(10); - } - - }; - thrown.expect(ServiceException.class); - thrown.expectMessage("request is exception"); - final RestfulResponse response = httpRest.post("path/to/service", parameters, null); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testAsyncPostStringRestfulParametesRestfulAsyncCallback() throws Exception { - final RestfulOptions options = new RestfulOptions(); - options.setRestTimeout(10); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone:" + HttpExchange.STATUS_EXCEPTED); - return 99; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_EXCEPTED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncPost("path/to/service", new RestfulParametes(), options, callback); - httpRest.asyncPost("path/to/service", new RestfulParametes(), options, null); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testAsyncPostStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - options.setRestTimeout(10); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncPost("path/to/service", new RestfulParametes(), options, callback); - httpRest.asyncPost("path/to/service", new RestfulParametes(), options, null); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testDeleteStringRestfulParametes() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpBaseRest httpRest = getHttpRest(options); - - final RestfulResponse response = httpRest.delete("path/to/service", null); - assertEquals(-1, response.getStatus()); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testDeleteStringRestfulParametesRestfulOptions() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parameters = new RestfulParametes(); - parameters.put("id", "1234"); - parameters.put("name", "some-name"); - parameters.put("address", null); - parameters.setRawData("{ \"data\"=\"sample JSON data\""); - parameters.putHttpContextHeader("Content-Type", ""); - parameters.putHttpContextHeader("Accept-Encoding", ""); - new Expectations() { - - ServiceUtil serviceUtil; - - { - serviceUtil = new ServiceUtil(anyString, anyString); - serviceUtil.getServiceHost(); - returns("127.0.0.1"); - - serviceUtil.getServicePort(); - returns(10); - } - - }; - final RestfulResponse response = httpRest.delete("path/to/service", parameters, options); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testAsyncDeleteStringRestfulParametesRestfulAsyncCallback() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - options.setRestTimeout(10); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncDelete("path/to/service", new RestfulParametes(), callback); - httpRest.asyncDelete("path/to/service", new RestfulParametes(), null); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testAsyncDeleteStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - options.setRestTimeout(10); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncDelete("path/to/service", new RestfulParametes(), options, callback); - httpRest.asyncDelete("path/to/service", new RestfulParametes(), options, null); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testPatchStringRestfulParametes() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parameters = new RestfulParametes(); - parameters.put("id", "1234"); - parameters.put("name", "some-name"); - parameters.put("address", null); - parameters.setRawData("{ \"data\"=\"sample JSON data\""); - parameters.putHttpContextHeader("Content-Type", ""); - parameters.putHttpContextHeader("Accept-Encoding", ""); - new Expectations() { - - ServiceUtil serviceUtil; - - { - serviceUtil = new ServiceUtil(anyString, anyString); - serviceUtil.getServiceHost(); - returns("127.0.0.1"); - - serviceUtil.getServicePort(); - returns(10); - } - - }; - final RestfulResponse response = httpRest.patch("path/to/service", parameters); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Ignore - @Test - public void testPatchStringRestfulParametesRestfulOptions() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - final RestfulParametes parameters = new RestfulParametes(); - parameters.put("id", "1234"); - parameters.put("name", "some-name"); - parameters.put("address", null); - parameters.setRawData("{ \"data\"=\"sample JSON data\""); - parameters.putHttpContextHeader("Content-Type", ""); - parameters.putHttpContextHeader("Accept-Encoding", ""); - new Expectations() { - - ServiceUtil serviceUtil; - - { - serviceUtil = new ServiceUtil(anyString, anyString); - serviceUtil.getServiceHost(); - returns("127.0.0.1"); - - serviceUtil.getServicePort(); - returns(10); - } - - }; - final RestfulResponse response = httpRest.patch("path/to/service", parameters, options); - assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testAsyncPatchStringRestfulParametesRestfulAsyncCallback() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - options.setRestTimeout(10); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncPatch("path/to/service", new RestfulParametes(), callback); - httpRest.asyncPatch("path/to/service", new RestfulParametes(), null); - } - - /** - *
- * - * @throws ServiceException - * @since SDNO 0.5 - */ - @Test - public void testAsyncPatchStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { - final RestfulOptions options = new RestfulOptions(); - options.setRestTimeout(10); - - final HttpBaseRest httpRest = getHttpRest(options); - new MockUp() { - - @Mock - public int waitForDone() { - System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); - return HttpExchange.STATUS_COMPLETED; - } - - @Mock - public RestfulResponse getResponse() throws IOException { - final RestfulResponse response = new RestfulResponse(); - response.setStatus(HttpExchange.STATUS_COMPLETED); - return response; - } - - }; - - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - System.out.println("callback called."); - - } - - @Override - public void handleExcepion(final Throwable e) { - - System.out.println("handleExcepion called."); - } - - }; - httpRest.asyncPatch("path/to/service", new RestfulParametes(), options, callback); - httpRest.asyncPatch("path/to/service", new RestfulParametes(), options, null); - } - -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java deleted file mode 100644 index 094e43d..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java +++ /dev/null @@ -1,590 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.openo.baseservice.remoteservice.exception.ServiceException; - -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; -import org.eclipse.jetty.client.Address; -import org.eclipse.jetty.client.CachedExchange; -import org.eclipse.jetty.client.HttpDestination; -import org.eclipse.jetty.client.HttpExchange; -import org.eclipse.jetty.http.HttpFields; -import org.eclipse.jetty.http.HttpHeaders; -import org.eclipse.jetty.io.Buffer; -import org.eclipse.jetty.io.ByteArrayBuffer; -import org.eclipse.jetty.util.StringUtil; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.zip.GZIPInputStream; - -import mockit.Mock; -import mockit.MockUp; -import mockit.Mocked; -import mockit.integration.junit4.JMockit; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 20-Jun-2016 - */ -@RunWith(JMockit.class) -public class TestRestHttpContentExchange { - - @Mocked - HttpDestination mockedDest; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.ERROR); - } - - /** - *
- * - * @throws IOException - * @since SDNO 0.5 - */ - @Test - public void testOnRequestCommitted() throws IOException { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.onRequestCommitted(); - - LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG); - exchange.onRequestCommitted(); - } - - /** - *
- * - * @throws IOException - * @since SDNO 0.5 - */ - @Test - public void testOnRequestComplete() throws IOException { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.onRequestComplete(); - - LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG); - exchange.onRequestComplete(); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testOnResponseComplete() throws Exception { - RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.onResponseComplete(); - - LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG); - exchange.onResponseComplete(); - - final AtomicInteger isCallback = new AtomicInteger(0); - final AtomicInteger isException = new AtomicInteger(0); - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - isCallback.set(1); - } - - @Override - public void handleExcepion(final Throwable e) { - isException.set(1); - } - - }; - - final Field statusField = HttpExchange.class.getDeclaredField("_status"); - statusField.setAccessible(true); - exchange = new RestHttpContentExchange(false, callback); - statusField.set(exchange, new AtomicInteger(200)); - exchange.setAddress(new Address("localhost", 9999)); - exchange.setRequestURI("/the/request/uri"); - exchange.onResponseComplete(); - assertEquals(1, isCallback.get()); - assertEquals(0, isException.get()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testDecompressGzipToStr() throws Exception { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - - final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz"); - final byte[] binaryData = new byte[1024]; - stream.read(binaryData); - final String expected = "sample data."; - - final String actual = exchange.decompressGzipToStr(binaryData); - - System.out.println("actual: '" + actual + "'"); - System.out.println("expected: '" + expected + "'"); - assertEquals(actual, expected); - - new MockUp() { - - @Mock - public int read() throws Exception { - throw new IOException(); - } - - @Mock - public int read(final byte abyte0[], final int i, final int j) { - - return -1; - } - - }; - - thrown.expect(IOException.class); - exchange.decompressGzipToStr(binaryData); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testDecompressGzipToStrException() throws Exception { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - - final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz"); - final byte[] binaryData = new byte[1024]; - stream.read(binaryData); - final String expected = "sample data."; - - new MockUp() { - - @Mock - public void close() throws IOException { - throw new IOException(); - } - - }; - - new MockUp() { - - @Mock - public void close() throws IOException { - throw new IOException(); - } - - }; - - new MockUp() { - - @Mock - public void close() throws IOException { - throw new IOException(); - } - - }; - - final String actual = exchange.decompressGzipToStr(binaryData); - - System.out.println("actual: '" + actual + "'"); - System.out.println("expected: '" + expected + "'"); - assertEquals(actual, expected); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testDecompressGzipToStrNull() throws Exception { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - final String expected = ""; - final String actual = exchange.decompressGzipToStr(null); - - System.out.println("actual: '" + actual + "'"); - System.out.println("expected: '" + expected + "'"); - assertEquals(actual, expected); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testOnResponseHeaderBufferBuffer() throws Exception { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - - final Buffer name = new ByteArrayBuffer("key"); - final Buffer value = new ByteArrayBuffer("value"); - exchange.onResponseHeader(name, value); - - new MockUp() { - - @Mock - public int getOrdinal(final Buffer buffer) { - return HttpHeaders.CONTENT_ENCODING_ORDINAL; - } - - }; - exchange.onResponseHeader(name, value); - - new MockUp() { - - @Mock - public String asciiToLowerCase(final String s) { - return "gzip"; - } - - }; - exchange.onResponseHeader(name, value); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testOnExceptionThrowable() { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.onException(new Exception()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testOnExceptionThrowableWithCallback() { - final AtomicInteger isCallback = new AtomicInteger(0); - final AtomicInteger isException = new AtomicInteger(0); - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - isCallback.set(1); - } - - @Override - public void handleExcepion(final Throwable e) { - isException.set(1); - } - - }; - final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.onException(new Exception()); - assertEquals(0, isCallback.get()); - assertEquals(1, isException.get()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testOnConnectionFailedThrowable() { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.onConnectionFailed(new Exception()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testOnConnectionFailedThrowableException() { - final AtomicInteger isCallback = new AtomicInteger(0); - final AtomicInteger isException = new AtomicInteger(0); - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - isCallback.set(1); - } - - @Override - public void handleExcepion(final Throwable e) { - isException.set(1); - } - - }; - final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.onConnectionFailed(new Exception()); - assertEquals(0, isCallback.get()); - assertEquals(1, isException.get()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testExpireHttpDestination() { - final RestHttpContentExchange exchange = new RestHttpContentExchange(true, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.expire(mockedDest); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testExpireHttpDestinationException() throws Exception { - final AtomicInteger isCallback = new AtomicInteger(0); - final AtomicInteger isException = new AtomicInteger(0); - final List thrSet = new ArrayList(); - final RestfulAsyncCallback callback = new RestfulAsyncCallback() { - - @Override - public void callback(final RestfulResponse response) { - isCallback.set(1); - } - - @Override - public void handleExcepion(final Throwable e) { - isException.set(1); - thrSet.add(e); - } - - }; - final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - exchange.expire(mockedDest); - assertEquals(0, isCallback.get()); - assertEquals(1, isException.get()); - assertEquals(1, thrSet.size()); - final Throwable t = thrSet.get(0); - assertEquals(ServiceException.class, t.getClass()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testIsGzip() throws Exception { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - - final Buffer name = new ByteArrayBuffer("key"); - final Buffer value = new ByteArrayBuffer("value"); - - new MockUp() { - - @Mock - public int getOrdinal(final Buffer buffer) { - return HttpHeaders.CONTENT_ENCODING_ORDINAL; - } - - }; - exchange.onResponseHeader(name, value); - assertFalse(exchange.isGzip()); - - new MockUp() { - - @Mock - public String asciiToLowerCase(final String s) { - return "gzip"; - } - - }; - exchange.onResponseHeader(name, value); - assertTrue(exchange.isGzip()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testGetResponse() throws Exception { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - - final Field statusField = HttpExchange.class.getDeclaredField("_status"); - statusField.setAccessible(true); - statusField.set(exchange, new AtomicInteger(200)); - - RestfulResponse response = exchange.getResponse(); - assertEquals(0, response.getStatus()); - - final HttpFields fields = new HttpFields(); - final Field headerFields = CachedExchange.class.getDeclaredField("_responseFields"); - headerFields.setAccessible(true); - headerFields.set(exchange, fields); - response = exchange.getResponse(); - assertEquals(0, response.getStatus()); - fields.add("Content-Type", "application/json"); - fields.add("Content-Encode", "UTF-8"); - response = exchange.getResponse(); - assertEquals(0, response.getStatus()); - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Test - public void testGetResponseGzip() throws Exception { - final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); - final Address address = new Address("localhost", 9999); - exchange.setAddress(address); - exchange.setRequestURI("/the/request/uri"); - new MockUp() { - - @Mock - public boolean isGzip() { - return true; - } - }; - final Field statusField = HttpExchange.class.getDeclaredField("_status"); - statusField.setAccessible(true); - statusField.set(exchange, new AtomicInteger(200)); - - final RestfulResponse response = exchange.getResponse(); - assertEquals(0, response.getStatus()); - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java deleted file mode 100644 index 30b5620..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import static org.junit.Assert.assertEquals; - -import org.openo.baseservice.util.impl.SystemEnvVariablesDefImpl; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Ignore; -import org.junit.Test; - -import net.sf.json.JSONObject; - -import java.io.File; -import java.io.IOException; -import java.net.URL; - -import mockit.Mock; -import mockit.MockUp; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 20-Jun-2016 - */ -public class TestRestfulConfigure { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - setAppRoot(); - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - private static void setAppRoot() { - final URL resource = ClassLoader.getSystemResource("etc/conf/restclient.json"); - final String urlPath = resource.getPath().replace("etc/conf/restclient.json", ""); - - try { - final String path = new File(urlPath).getCanonicalPath(); - System.out.println("path: " + path); - - System.setProperty("catalina.base", path); - System.out.println("approot:" + System.getProperty("catalina.base")); - } catch(final IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Ignore - @Test - public final void testRestfulConfigure() throws Exception { - final RestfulConfigure configure = new RestfulConfigure(); - final RestfulOptions options = configure.getOptions(); - assertEquals("127.0.0.1", options.getHost()); - assertEquals(8080, options.getPort()); - assertEquals(1000, options.getIntOption("ConnectTimeout")); - assertEquals(10, options.getIntOption("thread")); - assertEquals(500000, options.getIntOption("idletimeout")); - assertEquals(10000, options.getIntOption("timeout")); - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Ignore - @Test - public final void testRestfulConfigureAppRootNull() throws Exception { - new MockUp() { - - @Mock - public String getAppRoot() { - return null; - } - - }; - final RestfulConfigure configure = new RestfulConfigure(); - final RestfulOptions options = configure.getOptions(); - - assertEquals("", options.getHost()); - assertEquals(0, options.getPort()); - assertEquals(3000, options.getIntOption("ConnectTimeout")); - assertEquals(200, options.getIntOption("thread")); - assertEquals(30000, options.getIntOption("idletimeout")); - assertEquals(30000, options.getIntOption("timeout")); - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Ignore - @Test - public final void testRestfulConfigureDefault() throws Exception { - - { - - new MockUp() { - - @Mock - public boolean isFile() { - return false; - } - }; - final RestfulConfigure configure = new RestfulConfigure(); - final RestfulOptions options = configure.getOptions(); - assertEquals("", options.getHost()); - assertEquals(0, options.getPort()); - assertEquals(3000, options.getIntOption("ConnectTimeout")); - assertEquals(200, options.getIntOption("thread")); - assertEquals(30000, options.getIntOption("idletimeout")); - assertEquals(30000, options.getIntOption("timeout")); - } - - } - - /** - *
- * - * @throws Exception - * @since SDNO 0.5 - */ - @Ignore - @Test - public final void testRestfulConfigureException() throws Exception { - - new MockUp() { - - @Mock - JSONObject fromObject(final Object object) throws IOException { - throw new IOException(); - } - }; - - final RestfulConfigure configure = new RestfulConfigure(); - final RestfulOptions options = configure.getOptions(); - assertEquals("", options.getHost()); - assertEquals(0, options.getPort()); - assertEquals(3000, options.getIntOption("ConnectTimeout")); - assertEquals(200, options.getIntOption("thread")); - assertEquals(30000, options.getIntOption("idletimeout")); - assertEquals(30000, options.getIntOption("timeout")); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Ignore - @Test - public final void testRestfulConfigureString() { - final String configFile = "rest-client-test.json"; - final String appRoot = System.getProperty("catalina.base"); - final RestfulConfigure configure = new RestfulConfigure(appRoot + File.separator + configFile); - final RestfulOptions options = configure.getOptions(); - assertEquals("10.10.10.10", options.getHost()); - assertEquals(443, options.getPort()); - assertEquals(10, options.getIntOption("ConnectTimeout")); - assertEquals(100, options.getIntOption("thread")); - assertEquals(30, options.getIntOption("idletimeout")); - assertEquals(60, options.getIntOption("timeout")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Ignore - @Test - public final void testGetOptions() { - } -} \ No newline at end of file diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java deleted file mode 100644 index 70c7dea..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import org.openo.baseservice.remoteservice.exception.ServiceException; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import mockit.Mock; -import mockit.MockUp; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 21-Jun-2016 - */ -public class TestRestfulFactory { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetRestInstance() { - Restful instance = RestfulFactory.getRestInstance("https"); - assertNull(instance); - new MockUp() { - - @Mock - public void initHttpRest(final RestfulOptions option) throws ServiceException { - throw new ServiceException(); - } - - }; - instance = RestfulFactory.getRestInstance("http"); - assertNotNull(instance); - - instance = RestfulFactory.getRestInstance("http"); - assertNotNull(instance); - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java deleted file mode 100644 index 624f54c..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; - -import java.util.ArrayList; -import java.util.List; - -import mockit.integration.junit4.JMockit; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 20-Jun-2016 - */ -@RunWith(JMockit.class) -public class TestRestfulOptions { - - @Rule - final public ExpectedException thrown = ExpectedException.none(); - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetCalledServiceName() { - final RestfulOptions options = new RestfulOptions(); - final String serviceName = "sample-service"; - assertTrue(options.setCalledServiceName(serviceName)); - assertEquals(serviceName, options.getCalledServicName()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetCalledServicName() { - final RestfulOptions options = new RestfulOptions(); - final String serviceName = "sample-service"; - assertEquals("", options.getCalledServicName()); - options.setCalledServiceName(serviceName); - assertEquals(serviceName, options.getCalledServicName()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetPort() { - final RestfulOptions options = new RestfulOptions(); - final int port = 9091; - assertEquals(0, options.getPort()); - options.setPort(port); - assertEquals(port, options.getPort()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetPort() { - final RestfulOptions options = new RestfulOptions(); - final int port = 9091; - assertTrue(options.setPort(port)); - assertEquals(port, options.getPort()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetHost() { - final RestfulOptions options = new RestfulOptions(); - final String host = "localhost"; - assertEquals("", options.getHost()); - options.setHost(host); - assertEquals(host, options.getHost()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetHost() { - final RestfulOptions options = new RestfulOptions(); - final String host = "localhost"; - assertTrue(options.setHost(host)); - assertEquals(host, options.getHost()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetRestTimeout() { - final RestfulOptions options = new RestfulOptions(); - int timeout = 0; - assertFalse(options.setRestTimeout(timeout)); - assertEquals(0, options.getRestTimeout()); - - timeout = 1; - assertTrue(options.setRestTimeout(timeout)); - assertEquals(timeout, options.getRestTimeout()); - - timeout = 10; - assertTrue(options.setRestTimeout(timeout)); - assertEquals(timeout, options.getRestTimeout()); - - timeout = RestfulOptions.REST_OPTIONS_TIMEOUT_MAXTIMEOUT - 1; - assertTrue(options.setRestTimeout(timeout)); - assertEquals(timeout, options.getRestTimeout()); - - timeout = RestfulOptions.REST_OPTIONS_TIMEOUT_MAXTIMEOUT; - assertTrue(options.setRestTimeout(timeout)); - assertEquals(timeout, options.getRestTimeout()); - - timeout = RestfulOptions.REST_OPTIONS_TIMEOUT_MAXTIMEOUT + 1; - assertFalse(options.setRestTimeout(timeout)); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetRestTimeout() { - final RestfulOptions options = new RestfulOptions(); - int timeout = 0; - assertEquals(0, options.getRestTimeout()); - - timeout = 1; - assertTrue(options.setRestTimeout(timeout)); - assertEquals(timeout, options.getRestTimeout()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetOption() { - final RestfulOptions options = new RestfulOptions(); - assertNull(options.getOption("invalid")); - - options.setHost("localhost"); - Object obj = options.getOption(RestfulClientConst.HOST_KEY_NAME); - assertNotNull(obj); - assertTrue(obj instanceof String); - assertEquals("localhost", obj); - - final List list = new ArrayList(); - list.add("data"); - options.setOption("list", list); - obj = options.getOption("list"); - assertNotNull(obj); - assertTrue(obj instanceof List); - assertSame(list, obj); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetIntOption() { - final RestfulOptions options = new RestfulOptions(); - - assertEquals(0, options.getIntOption("count")); - - options.setOption("count", 1); - assertEquals(1, options.getIntOption("count")); - - thrown.expect(RuntimeException.class); - - options.setOption("string-count", "two"); - final int value = options.getIntOption("string-count"); - assertEquals(2, value); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetStringOption() { - final RestfulOptions options = new RestfulOptions(); - - assertEquals("", options.getStringOption("count")); - - options.setOption("string-count", "one"); - assertEquals("one", options.getStringOption("string-count")); - - thrown.expect(RuntimeException.class); - - options.setOption("count", 2); - final String value = options.getStringOption("count"); - assertEquals(2, value); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetOption() { - final RestfulOptions options = new RestfulOptions(); - assertNull(options.getOption("invalid")); - - options.setHost("localhost"); - Object obj = options.getOption(RestfulClientConst.HOST_KEY_NAME); - assertNotNull(obj); - assertTrue(obj instanceof String); - assertEquals("localhost", obj); - - final List list = new ArrayList(); - list.add("data"); - options.setOption("list", list); - obj = options.getOption("list"); - assertNotNull(obj); - assertTrue(obj instanceof List); - assertSame(list, obj); - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java deleted file mode 100644 index fd6fd9f..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 21-Jun-2016 - */ -public class TestRestfulParametes { - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGet() { - final RestfulParametes params = new RestfulParametes(); - assertNull(params.get("param")); - final Map paramMap = new HashMap(); - params.setParamMap(paramMap); - paramMap.put("param", "value"); - assertEquals("value", params.get("param")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetRawData() { - final RestfulParametes params = new RestfulParametes(); - final String data = "Sample data."; - params.setRawData(data); - assertEquals(data, params.getRawData()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetRawData() { - final RestfulParametes params = new RestfulParametes(); - assertNull(params.getRawData()); - final String data = "Sample data."; - params.setRawData(data); - assertEquals(data, params.getRawData()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testPut() { - final RestfulParametes params = new RestfulParametes(); - params.put("somekey", "somevalue"); - params.put("otherkey", "othervalue"); - assertEquals("somevalue", params.get("somekey")); - assertEquals("othervalue", params.get("otherkey")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testPutHttpContextHeaderStringString() { - final RestfulParametes params = new RestfulParametes(); - params.putHttpContextHeader("Context-Encoding", "UTF-8"); - assertEquals("UTF-8", params.getHttpContextHeader("Context-Encoding")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testPutHttpContextHeaderStringInt() { - final RestfulParametes params = new RestfulParametes(); - params.putHttpContextHeader("Expire-At", 1000); - assertEquals("1000", params.getHttpContextHeader("Expire-At")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetHttpContextHeader() { - final RestfulParametes params = new RestfulParametes(); - params.putHttpContextHeader("Expire-At", 1000); - params.putHttpContextHeader("Context-Encoding", "UTF-8"); - assertEquals("1000", params.getHttpContextHeader("Expire-At")); - assertEquals("UTF-8", params.getHttpContextHeader("Context-Encoding")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetParamMap() { - final RestfulParametes params = new RestfulParametes(); - params.put("key", "value"); - final Map map = params.getParamMap(); - assertEquals("value", map.get("key")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetParamMap() { - final RestfulParametes params = new RestfulParametes(); - final Map map = new HashMap(); - map.put("key", "value"); - params.setParamMap(map); - assertEquals("value", params.get("key")); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetHeaderMap() { - final RestfulParametes params = new RestfulParametes(); - params.putHttpContextHeader("key", "value"); - final Map map = params.getHeaderMap(); - assertEquals("value", map.get("key")); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetHeaderMap() { - final RestfulParametes params = new RestfulParametes(); - final Map map = new HashMap(); - map.put("key", "value"); - params.setHeaderMap(map); - assertEquals("value", params.getHttpContextHeader("key")); - } -} diff --git a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java b/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java deleted file mode 100644 index c837aec..0000000 --- a/CommonLibrary/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright (c) 2016, Huawei Technologies Co., Ltd. - * - * Licensed 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.openo.baseservice.roa.util.restclient; - -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; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.util.HashMap; -import java.util.Map; - -/** - *
- *

- *

- * - * @author - * @version SDNO 0.5 20-Jun-2016 - */ -public class TestRestfulResponse { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @Before - public void setUp() throws Exception { - } - - /** - *
- * - * @throws java.lang.Exception - * @since SDNO 0.5 - */ - @After - public void tearDown() throws Exception { - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetStatus() { - final RestfulResponse response = new RestfulResponse(); - int actual = response.getStatus(); - int expected = -1; - - assertEquals(expected, actual); - expected = 202; - response.setStatus(expected); - actual = response.getStatus(); - assertEquals(expected, actual); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetStatus() { - final RestfulResponse response = new RestfulResponse(); - final int expected = 10; - response.setStatus(expected); - final int actual = response.getStatus(); - assertEquals(expected, actual); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetRespHeaderMap() { - final RestfulResponse response = new RestfulResponse(); - Map expected = response.getRespHeaderMap(); - assertNull(expected); - expected = new HashMap(); - expected.put("key", "value"); - response.setRespHeaderMap(expected); - final Map actual = response.getRespHeaderMap(); - assertNotNull(actual); - assertSame(actual, expected); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetRespHeaderMap() { - final RestfulResponse response = new RestfulResponse(); - response.setRespHeaderMap(null); - Map expected = response.getRespHeaderMap(); - assertNull(expected); - expected = new HashMap(); - expected.put("key", "value"); - response.setRespHeaderMap(expected); - final Map actual = response.getRespHeaderMap(); - assertNotNull(actual); - assertSame(actual, expected); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetRespHeaderInt() { - final RestfulResponse response = new RestfulResponse(); - response.setRespHeaderMap(null); - int actual = response.getRespHeaderInt("somekey"); - assertEquals(-1, actual); - final Map headers = new HashMap(); - headers.put("key", "value"); - headers.put("count", "1"); - response.setRespHeaderMap(headers); - actual = response.getRespHeaderInt("somekey"); - assertEquals(-1, actual); - - actual = response.getRespHeaderInt("count"); - assertEquals(1, actual); - - thrown.expect(RuntimeException.class); - actual = response.getRespHeaderInt("key"); - assertEquals(1, actual); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetRespHeaderLong() { - final RestfulResponse response = new RestfulResponse(); - response.setRespHeaderMap(null); - long actual = response.getRespHeaderLong("somekey"); - assertEquals(-1, actual); - final Map headers = new HashMap(); - headers.put("key", "value"); - headers.put("count", "1"); - headers.put("max", "" + Long.MAX_VALUE); - headers.put("max++", Long.MAX_VALUE + 1 + ""); - response.setRespHeaderMap(headers); - actual = response.getRespHeaderLong("somekey"); - assertEquals(-1, actual); - - actual = response.getRespHeaderLong("count"); - assertEquals(1, actual); - - actual = response.getRespHeaderLong("max"); - assertEquals(Long.MAX_VALUE, actual); - - actual = response.getRespHeaderLong("max++"); - assertTrue(actual < 0); - - thrown.expect(RuntimeException.class); - actual = response.getRespHeaderLong("key"); - assertEquals(1, actual); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetRespHeaderStr() { - final RestfulResponse response = new RestfulResponse(); - response.setRespHeaderMap(null); - String actual = response.getRespHeaderStr("somekey"); - assertEquals(null, actual); - final Map headers = new HashMap(); - headers.put("key", "value"); - headers.put("count", "1"); - headers.put("max", "" + Long.MAX_VALUE); - response.setRespHeaderMap(headers); - actual = response.getRespHeaderStr("somekey"); - assertEquals(null, actual); - - actual = response.getRespHeaderStr("key"); - assertEquals("value", actual); - - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testGetResponseContent() { - final RestfulResponse response = new RestfulResponse(); - assertEquals(null, response.getResponseContent()); - - final String content = "{ \"content\" = \"The response content\" }"; - response.setResponseJson(content); - assertEquals(content, response.getResponseContent()); - } - - /** - *
- * - * @since SDNO 0.5 - */ - @Test - public void testSetResponseJson() { - final RestfulResponse response = new RestfulResponse(); - assertEquals(null, response.getResponseContent()); - - final String content = "{ \"content\" = \"The response content\" }"; - response.setResponseJson(content); - assertEquals(content, response.getResponseContent()); - } -} diff --git a/CommonLibrary/rest-client/src/test/resources/etc/conf/restclient.json b/CommonLibrary/rest-client/src/test/resources/etc/conf/restclient.json deleted file mode 100644 index 96b749a..0000000 --- a/CommonLibrary/rest-client/src/test/resources/etc/conf/restclient.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "defaulServer": - { - "host":"127.0.0.1", - "port":"8080", - }, - "ConnectTimeout":"1000", - "thread":"10", - "idletimeout":"500000", - "timeout":"10000" -} \ No newline at end of file diff --git a/CommonLibrary/rest-client/src/test/resources/rest-client-test.json b/CommonLibrary/rest-client/src/test/resources/rest-client-test.json deleted file mode 100644 index 230ff36..0000000 --- a/CommonLibrary/rest-client/src/test/resources/rest-client-test.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "defaulServer": - { - "host":"10.10.10.10", - "port":"443", - }, - "ConnectTimeout":"10", - "thread":"100", - "idletimeout":"30", - "timeout":"60", -} \ No newline at end of file diff --git a/CommonLibrary/rest-client/src/test/resources/sample.txt.gz b/CommonLibrary/rest-client/src/test/resources/sample.txt.gz deleted file mode 100644 index a39ad49..0000000 Binary files a/CommonLibrary/rest-client/src/test/resources/sample.txt.gz and /dev/null differ diff --git a/common-util/.gitignore b/common-util/.gitignore new file mode 100644 index 0000000..be68b59 --- /dev/null +++ b/common-util/.gitignore @@ -0,0 +1,5 @@ +/target/ +# Eclipse +.settings/ +.classpath +.project diff --git a/common-util/pom.xml b/common-util/pom.xml new file mode 100644 index 0000000..b4245d0 --- /dev/null +++ b/common-util/pom.xml @@ -0,0 +1,122 @@ + + + + 4.0.0 + + org.openo.baseservice + common-setting + 1.0.1-SNAPSHOT + + commonlib-cbb + jar + + + + + com.googlecode.jmockit + jmockit + test + 1.1 + + + + junit + junit + test + 4.8.2 + + + + org.apache.commons + commons-lang3 + + + commons-io + commons-io + + + + org.slf4j + com.springsource.slf4j.log4j + + + + org.codehaus.jackson + jackson-mapper-asl + + + net.sf.json-lib + json-lib + jdk15 + + + javax.servlet + servlet-api + 2.5 + + + com.github.stephenc.jcip + jcip-annotations + 1.0-1 + test + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.2 + + + org.apache.maven.plugins + maven-surefire-plugin + + -XX:-UseSplitVerifier + ${maven.test.skip} + ${maven.test.failure.ignore} + + ${excludesFile} + + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.6 + + + xml + html + + + + + package + + cobertura + + + + + + + + + + diff --git a/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java new file mode 100644 index 0000000..c3e59b9 --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/CipherCreator.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb; + +import org.openo.baseservice.encrypt.cbb.impl.AesCipherFactory; +import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; +import org.openo.baseservice.encrypt.cbb.inf.AbstractCipherFactory; + +/** + * Helps create cipher instances from factory.
+ *

+ * Creates the cipher instances using cipher factory. By default it uses AesCipherFactory. + * Can be changed through spring. + *

+ * + * @author + * @version SDNO 0.5 08-Jun-2016 + */ +public final class CipherCreator { + + private static CipherCreator instance = new CipherCreator(); + + private AbstractCipherFactory factory = new AesCipherFactory(); + + /** + * Constructor
+ *

+ * private + *

+ * + * @since SDNO 0.5 + */ + private CipherCreator() { + + } + + /** + * Singleton instance. + *
+ * + * @return + * @since SDNO 0.5 + */ + public static CipherCreator instance() { + return instance; + } + + /** + * Creates cipher with default key. + *
+ * + * @return cipher instance with default key. + * @since SDNO 0.5 + */ + public AbstractCipher create() { + return factory.createCipherManager(); + } + + /** + * Creates cipher instance with a key. + *
+ * + * @param key the key to be used for encryption and decryption. + * @return cipher instance with specified key. + * @since SDNO 0.5 + */ + public AbstractCipher create(final String key) { + return factory.createCipherManager(key); + } + + /** + * Sets the cipher factory instance. + *
+ * + * @param factory cipher factory. + * @since SDNO 0.5 + */ + public void setFactory(final AbstractCipherFactory factory) { + this.factory = factory; + } + +} diff --git a/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java new file mode 100644 index 0000000..c9d7123 --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipher.java @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb.impl; + +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.KeySpec; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; +import javax.xml.bind.DatatypeConverter; + +import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * CipherManager implement
+ *

+ *

+ * + * @author + * @version SDNO 0.5 31-May-2016 + */ +public class AesCipher implements AbstractCipher { + + private static final Logger LOG = LoggerFactory.getLogger(AesCipher.class); + + private static final byte[] DEFAULT_IV = {2, 1, 4, 8, 0, 3, 2, 0, 7, 9, 2, 8, 5, 11, 6, 1}; + + private static final IvParameterSpec IV_PARAMETER_SPEC = new IvParameterSpec(DEFAULT_IV); + + protected final SecretKey secretKey; + + /** + * Constructor
+ *

+ * Creates default key. + *

+ * + * @since SDNO 0.5 + */ + public AesCipher() { + super(); + secretKey = createSecretKey("default"); + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param ckey: key. + */ + public AesCipher(final String key) { + super(); + secretKey = createSecretKey(key); + } + + private SecretKey createSecretKey(final String key) { + SecretKey secretKey = null; + try { + final SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); + final KeySpec keySpec = new PBEKeySpec(key.toCharArray(), DEFAULT_IV, 30000, 128); + + secretKey = keyFactory.generateSecret(keySpec); + return new SecretKeySpec(secretKey.getEncoded(), "AES"); + } catch(InvalidKeySpecException e) { + LOG.error("Invalid KeySpec ", e); + } catch(NoSuchAlgorithmException e) { + LOG.error("Algorithm do not support: ", e); + } + return null; + } + + @Override + public String encrypt(final String plain) { + try { + final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, secretKey, IV_PARAMETER_SPEC); + final byte[] encryptToBytes = cipher.doFinal(plain.getBytes()); + return DatatypeConverter.printBase64Binary(encryptToBytes); + } catch(final Exception e) { + LOG.error("Encrypt the plain error:", e); + return null; + } + } + + @Override + public String decrypt(final String encrypted) { + + if(encrypted == null || encrypted.length() == 0) { + return null; + } + + if(secretKey == null) { + return null; + } + + try { + final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, secretKey, IV_PARAMETER_SPEC); + final byte[] tempBytes = DatatypeConverter.parseBase64Binary(encrypted); + final byte[] decrypTobytes = cipher.doFinal(tempBytes); + return new String(decrypTobytes); + } catch(final Exception e) { + LOG.error("decrypt the plain error:", e); + return null; + } + } + +} diff --git a/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java new file mode 100644 index 0000000..39fe605 --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherFactory.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb.impl; + +import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; +import org.openo.baseservice.encrypt.cbb.inf.AbstractCipherFactory; + +/** + * Factory class to create CipherManager instances.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 03-Jun-2016 + */ +public class AesCipherFactory implements AbstractCipherFactory { + + /** + * Creates new CipherManager instance.
+ * + * @return new cipher manager instance. + * @since SDNO 0.5 + */ + @Override + public AbstractCipher createCipherManager() { + return new AesCipher(); + } + + /** + * Creates new CipherManager instance.
+ * + * @param key new cipher manager instance. + * @return + * @since SDNO 0.5 + */ + @Override + public AbstractCipher createCipherManager(final String key) { + return new AesCipher(key); + } + +} diff --git a/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java new file mode 100644 index 0000000..4357d86 --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipher.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb.inf; + +/** + * Cipher Manager, provides the encrypt/decrypt interface + *
+ *

+ * It provides bi-directional encryption api. + *

+ * + * @author + * @version SDNO 0.5 31-May-2016 + */ +public interface AbstractCipher { + + /** + * Encrypt a string. + *
+ * + * @param plain string to be encrypted. + * @return encrypted string. + * @since SDNO 0.5 + */ + String encrypt(String plain); + + /** + * Decrypt a string. + *
+ * + * @param encrypted String is encrypted by AES 128 + * @return plain after decrypt + * @since SDNO 0.5 + */ + String decrypt(String encrypted); + +} diff --git a/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java new file mode 100644 index 0000000..2d6f2ad --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/inf/AbstractCipherFactory.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb.inf; + +/** + * Factory class to create CipherManager instances.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 03-Jun-2016 + */ +public interface AbstractCipherFactory { + + /** + * Creates new CipherManager instance.
+ * + * @return new cipher manager instance. + * @since SDNO 0.5 + */ + AbstractCipher createCipherManager(); + + /** + * Creates new CipherManager instance.
+ * + * @param key new cipher manager instance. + * @return + * @since SDNO 0.5 + */ + AbstractCipher createCipherManager(final String key); + +} diff --git a/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java new file mode 100644 index 0000000..74cc2bb --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/encrypt/cbb/sha/Sha256.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb.sha; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.Key; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import javax.xml.bind.DatatypeConverter; + +/** + * Utility to generate SHA256 digest and HMAC.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 03-Jun-2016 + */ +public final class Sha256 { + + private static final Logger LOGGER = LoggerFactory.getLogger(Sha256.class); + + private Sha256() { + + } + + /** + * Generates SHA256 digest.
+ * + * @param data: The data to be digested. + * @return Hex encoded digested data. + * @since SDNO 0.5 + */ + public static String digest(final String data) { + final byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8); + MessageDigest md = null; + try { + md = MessageDigest.getInstance("SHA-256"); + } catch(final NoSuchAlgorithmException e) { + LOGGER.error("No SHA-256 support ", e); + return ""; + } + final byte[] digest = md.digest(dataBytes); + return DatatypeConverter.printHexBinary(digest); + } + + /** + * Generates hmac signature using data and key.
+ * + * @param data: The data to be signed. + * @param key: The signing key. + * @return Hex encoded HMAC signature. + * @throws InvalidKeyException if the key is invalid. + * @since SDNO 0.5 + */ + public static String mac(final String data, final Key key) throws InvalidKeyException { + final byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8); + Mac mac = null; + try { + mac = Mac.getInstance("HmacSHA256"); + mac.init(key); + } catch(final NoSuchAlgorithmException e) { + LOGGER.error("SHA mac not supported", e); + return ""; + } + final byte[] digest = mac.doFinal(dataBytes); + return DatatypeConverter.printHexBinary(digest); + + } + + /** + * Generates hmac with data and secret. + *
+ * + * @param data: The data to be signed. + * @param secret: The signing key. + * @return Hex encoded HMAC signature. + * @since SDNO 0.5 + */ + public static String mac(final String data, final byte[] secret) { + final Key key = new SecretKeySpec(secret, "HmacSHA256"); + try { + return mac(data, key); + } catch(final InvalidKeyException e) { + LOGGER.error("Invalid key: ", e); + return ""; + } + } + +} diff --git a/common-util/src/main/java/org/openo/baseservice/util/RestUtils.java b/common-util/src/main/java/org/openo/baseservice/util/RestUtils.java new file mode 100644 index 0000000..ee250b1 --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/util/RestUtils.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +import javax.servlet.http.HttpServletRequest; + +/** + * Utility functions for ROA.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 31-May-2016 + */ +public final class RestUtils { + + private static final Logger LOGGER = LoggerFactory.getLogger(RestUtils.class); + + private RestUtils() { + + } + + /** + * To get body from http request
+ * + * @param request : request object. + * @return Request body as string. + * @since SDNO 0.5 + */ + public static String getRequestBody(final HttpServletRequest request) { + String body = null; + final StringBuilder stringBuilder = new StringBuilder(); + BufferedReader bufferedReader = null; + + try { + final InputStream inputStream = request.getInputStream(); + if(inputStream != null) { + bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + final char[] charBuffer = new char[128]; + int bytesRead = -1; + while((bytesRead = bufferedReader.read(charBuffer)) > 0) { + stringBuilder.append(charBuffer, 0, bytesRead); + } + } + } catch(final IOException ex) { + LOGGER.error("read inputStream buffer catch exception:", ex); + } finally { + if(bufferedReader != null) { + try { + bufferedReader.close(); + } catch(final IOException ex) { + LOGGER.error("close buffer catch exception:", ex); + } + } + } + + body = stringBuilder.toString(); + return body; + } + +} diff --git a/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java b/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java new file mode 100644 index 0000000..bd98fb9 --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImpl.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.util.impl; + +import org.openo.baseservice.util.inf.SystemEnvVariables; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; + +/** + * System environment variable helper implementation.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 24-Jun-2016 + */ +public class SystemEnvVariablesDefImpl extends SystemEnvVariables { + + private static final Logger LOG = LoggerFactory.getLogger(SystemEnvVariablesDefImpl.class); + + @Override + public String getAppRoot() { + String appRoot = null; + appRoot = System.getProperty("catalina.base"); + if(appRoot != null) { + appRoot = getCanonicalPath(appRoot); + } + return appRoot; + } + + /** + * Gets the canonical path
+ * + * @param inPath input path + * @return the canonical path. + * @since SDNO 0.5 + */ + private String getCanonicalPath(final String inPath) { + String path = null; + try { + if(inPath != null) { + final File file = new File(inPath); + path = file.getCanonicalPath(); + } + } catch(final IOException e) { + LOG.error("file.getCanonicalPath() IOException:", e); + } + return path; + } + +} diff --git a/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java b/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java new file mode 100644 index 0000000..e40ab53 --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/util/impl/SystemEnvVariablesFactory.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.util.impl; + +import org.openo.baseservice.util.inf.SystemEnvVariables; + +/** + * SystemEnvVariables factory class + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 2016年8月13日 + */ +public class SystemEnvVariablesFactory { + + private static SystemEnvVariables systemEnvVariablesInstance = new SystemEnvVariablesDefImpl(); + + /** + * get the SystemEnvVariables instance + *
+ * + * @return SystemEnvVariables instance + * @since SDNO 0.5 + */ + public static SystemEnvVariables getInstance() { + return systemEnvVariablesInstance; + } +} diff --git a/common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java b/common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java new file mode 100644 index 0000000..014cdbd --- /dev/null +++ b/common-util/src/main/java/org/openo/baseservice/util/inf/SystemEnvVariables.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.util.inf; + +/** + * Dependency the system env
+ *

+ *

+ * + * @author + * @version SDNO 0.5 31-May-2016 + */ +public abstract class SystemEnvVariables { + + /** + * Get application root path
+ * + * @return application root path. + * @since SDNO 0.5 + */ + public abstract String getAppRoot(); +} diff --git a/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java b/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java new file mode 100644 index 0000000..3241b14 --- /dev/null +++ b/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/impl/AesCipherTest.java @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb.impl; + +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; + +import javax.crypto.Cipher; +import javax.crypto.SecretKeyFactory; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.openo.baseservice.encrypt.cbb.CipherCreator; +import org.openo.baseservice.encrypt.cbb.inf.AbstractCipher; + +import junit.framework.Assert; +import mockit.Mocked; +import mockit.NonStrictExpectations; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 02-Jun-2016 + */ +public class AesCipherTest { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + CipherCreator.instance().setFactory(new AesCipherFactory()); + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + * Test method for + * {@link org.openo.baseservice.encrypt.cbb.impl.AesCipher#encrypt(java.lang.String)}. + */ + @Test + public void testEncrypt() { + final AbstractCipher cipherManager = CipherCreator.instance().create(); + final String encrypted = cipherManager.encrypt("test-encrypt"); + final String decrypted = cipherManager.decrypt(encrypted); + + Assert.assertEquals("test-encrypt", decrypted); + } + + @Test + public void testEncryptException() throws Exception { + new NonStrictExpectations() { + + @Mocked + Cipher cipher; + + { + cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + result = new InvalidKeySpecException(); + } + }; + final AbstractCipher cipherManager = CipherCreator.instance().create(); + final String encrypted = cipherManager.encrypt("test-encrypt"); + + Assert.assertEquals(null, encrypted); + } + + /** + * Test method for + * {@link org.openo.baseservice.encrypt.cbb.impl.AesCipher#decrypt(java.lang.String)}. + */ + @Test + public void testDecrypt() { + final AbstractCipher cipherManager = CipherCreator.instance().create(); + final String encrypted = cipherManager.encrypt("test-encrypt"); + final String decrypted = cipherManager.decrypt(encrypted); + + Assert.assertEquals("test-encrypt", decrypted); + } + + @Test + public void testDecryptNull() { + final AbstractCipher cipherManager = CipherCreator.instance().create(); + String decrypted = cipherManager.decrypt(null); + Assert.assertEquals(null, decrypted); + + decrypted = cipherManager.decrypt(""); + + Assert.assertEquals(null, decrypted); + } + + /** + * Test method for + * {@link + * org.openo.baseservice.encrypt.cbb.impl.AesCipher#CipherManagerImpl(java.lang.String)} + * . + */ + @Test + public void testCipherManagerImplString() { + final AbstractCipher cipherManager = CipherCreator.instance().create("secret-key"); + final String encrypted = cipherManager.encrypt("test-encrypt"); + final String decrypted = cipherManager.decrypt(encrypted); + + Assert.assertEquals("test-encrypt", decrypted); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testCipherManagerImplStringDiffKey() { + final String encrypted = CipherCreator.instance().create("secret-key").encrypt("test-encrypt"); + final String decrypted = CipherCreator.instance().create("wrong-key").decrypt(encrypted); + + Assert.assertNotSame("test-encrypt", decrypted); + + final String decrypt = CipherCreator.instance().create("secret-key").decrypt(encrypted); + Assert.assertEquals("test-encrypt", decrypt); + } + + @Test + public void testCreateSecretKeyNoSuchAlgorithmException() throws Exception { + new NonStrictExpectations() { + + @Mocked + SecretKeyFactory keyFactory; + + { + keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); + result = new NoSuchAlgorithmException(); + } + }; + + final AbstractCipher cipherManager = CipherCreator.instance().create("secret-key"); + final String encrypted = cipherManager.encrypt("test-encrypt"); + Assert.assertEquals(encrypted, encrypted); + + } + + @Test + public void testCreateSecretKeyInvalidKeySpecException() throws Exception { + new NonStrictExpectations() { + + @Mocked + SecretKeyFactory keyFactory; + + { + keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); + result = new InvalidKeySpecException(); + } + }; + + final AbstractCipher cipherManager = CipherCreator.instance().create("secret-key"); + final String decrypted = cipherManager.decrypt("test-encrypt"); + Assert.assertEquals(decrypted, null); + + } +} diff --git a/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java b/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java new file mode 100644 index 0000000..30a640e --- /dev/null +++ b/common-util/src/test/java/org/openo/baseservice/encrypt/cbb/sha/Sha256Test.java @@ -0,0 +1,193 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.encrypt.cbb.sha; + +import static org.junit.Assert.fail; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.security.InvalidKeyException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +import mockit.Mocked; +import mockit.NonStrictExpectations; +import mockit.integration.junit4.JMockit; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 03-Jun-2016 + */ +@RunWith(JMockit.class) +public class Sha256Test { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + * Test method for {@link org.openo.baseservice.encrypt.cbb.sha.Sha256#digest(java.lang.String)} + * . + */ + @Test + public void testDigest() { + String plain = ""; + String expected = "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"; + Assert.assertEquals(expected, Sha256.digest(plain)); + + expected = "D7A8FBB307D7809469CA9ABCB0082E4F8D5651E46D3CDB762D02D0BF37C9E592"; + plain = "The quick brown fox jumps over the lazy dog"; + Assert.assertEquals(expected, Sha256.digest(plain)); + } + + @Test + public void testDigestException() throws Exception { + new NonStrictExpectations() { + + @Mocked + MessageDigest md; + + { + md = MessageDigest.getInstance("SHA-256"); + result = new NoSuchAlgorithmException(); + } + }; + final String plain = ""; + final String expected = ""; + Assert.assertEquals(expected, Sha256.digest(plain)); + + } + + /** + * Test method for + * {@link org.openo.baseservice.encrypt.cbb.sha.Sha256#mac(java.lang.String, java.security.Key)} + * . + * + * @throws InvalidKeyException + */ + @Test + public void testMacStringKey() { + final String expected = "F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8"; + final String plain = "The quick brown fox jumps over the lazy dog"; + try { + Assert.assertEquals(expected, Sha256.mac(plain, new SecretKeySpec("key".getBytes(), "HmacSHA256"))); + } catch(final InvalidKeyException e) { + e.printStackTrace(); + fail("testMacStringKey failed" + e.getMessage()); + } + try { + Assert.assertEquals(expected, Sha256.mac(plain, new SecretKeySpec("key".getBytes(), "AES"))); + } catch(final InvalidKeyException e) { + e.printStackTrace(); + fail("testMacStringKey failed" + e.getMessage()); + } + + } + + @Test + public void testMacStringKeyException() throws Exception { + new NonStrictExpectations() { + + @Mocked + Mac mac; + + { + mac = Mac.getInstance("HmacSHA256"); + result = new NoSuchAlgorithmException(); + } + }; + Sha256.mac("dummy", new SecretKeySpec("key".getBytes(), "AES")); + } + + /** + * Test method for + * {@link org.openo.baseservice.encrypt.cbb.sha.Sha256#mac(java.lang.String, byte[])}. + */ + @Test + public void testMacStringByteArray() { + final String expected = "F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8"; + final String plain = "The quick brown fox jumps over the lazy dog"; + Assert.assertEquals(expected, Sha256.mac(plain, "key".getBytes())); + } + + @Test + public void testMacStringByteArrayInvalidKeyException() throws Exception { + final String key = "key"; + new NonStrictExpectations() { + + @Mocked + Mac mac; + + { + mac = Mac.getInstance("HmacSHA256"); + result = new InvalidKeyException(); + } + }; + final String expected = ""; + final String plain = "The quick brown fox jumps over the lazy dog"; + Assert.assertEquals(expected, Sha256.mac(plain, key.getBytes())); + } + +} diff --git a/common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java b/common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java new file mode 100644 index 0000000..2cf0589 --- /dev/null +++ b/common-util/src/test/java/org/openo/baseservice/util/RestUtilsTest.java @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.util; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; + +import junit.framework.Assert; +import mockit.Expectations; +import mockit.Mocked; +import mockit.integration.junit4.JMockit; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 08-Jun-2016 + */ +@RunWith(JMockit.class) +public class RestUtilsTest { + + @Mocked + HttpServletRequest mockHttpServletRequest; + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + * Test method for + * {@link org.openo.baseservice.util.RestUtils#getRequestBody(javax.servlet.http.HttpServletRequest)} + * . + * + * @throws IOException + */ + @Test + public void testGetRequestBody() throws IOException { + final String dummy = "this is a dummy data to test request body"; + final ServletInputStream inputStream = new ServletInputStream() { + + final ByteArrayInputStream stream = new ByteArrayInputStream(dummy.getBytes()); + + @Override + public int read() throws IOException { + return stream.read(); + } + + }; + + new Expectations() { + + { + mockHttpServletRequest.getInputStream(); + returns(inputStream); + } + }; + final String body = RestUtils.getRequestBody(mockHttpServletRequest); + + Assert.assertEquals(dummy, body); + } + + @Test + public void testGetRequestBodyNull() throws IOException { + final ServletInputStream inputStream = null; + new Expectations() { + + { + mockHttpServletRequest.getInputStream(); + returns(inputStream); + } + }; + final String body = RestUtils.getRequestBody(mockHttpServletRequest); + + Assert.assertEquals("", body); + } + + @Test + public void testGetRequestBodyIOException() throws IOException { + final ServletInputStream inputStream = new ServletInputStream() { + + @Override + public int read() throws IOException { + throw new IOException(); + } + + }; + + new Expectations() { + + { + mockHttpServletRequest.getInputStream(); + returns(inputStream); + } + }; + final String body = RestUtils.getRequestBody(mockHttpServletRequest); + + Assert.assertEquals("", body); + } + + @Test + public void testGetRequestBodyCloseIOException() throws IOException { + final ServletInputStream inputStream = new ServletInputStream() { + + final ByteArrayInputStream stream = new ByteArrayInputStream("dummy".getBytes()); + + @Override + public int read() throws IOException { + return stream.read(); + } + + @Override + public void close() throws IOException { + throw new IOException(); + } + }; + + new Expectations() { + + { + mockHttpServletRequest.getInputStream(); + returns(inputStream); + } + }; + final String body = RestUtils.getRequestBody(mockHttpServletRequest); + + Assert.assertEquals("dummy", body); + } + +} diff --git a/common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java b/common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java new file mode 100644 index 0000000..97a8d11 --- /dev/null +++ b/common-util/src/test/java/org/openo/baseservice/util/impl/SystemEnvVariablesDefImplTest.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.util.impl; + +import java.io.File; +import java.io.IOException; + +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.openo.baseservice.util.inf.SystemEnvVariables; + +import junit.framework.Assert; +import mockit.Mocked; +import mockit.NonStrictExpectations; +import mockit.integration.junit4.JMockit; +import net.jcip.annotations.NotThreadSafe; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 08-Jun-2016 + */ +@RunWith(JMockit.class) +@NotThreadSafe +public class SystemEnvVariablesDefImplTest { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + @Test + public void testGetAppRootException() throws Exception { + new NonStrictExpectations() { + + @Mocked + File file; + + { + file = new File("."); + file.getCanonicalPath(); + result = new IOException(); + } + + }; + final SystemEnvVariables envVars =new SystemEnvVariablesDefImpl(); + System.setProperty("catalina.base", "."); + final String actual = envVars.getAppRoot(); + Assert.assertEquals(null, actual); + } + + + /** + * Test method for + * {@link org.openo.baseservice.util.impl.SystemEnvVariablesDefImpl#getAppRoot()}. + * + * @throws Exception + */ + @Test + public void testGetAppRoot() throws Exception { + final SystemEnvVariables envVars = new SystemEnvVariablesDefImpl(); + final File file = new File("."); + final String expected = file.getCanonicalPath(); + System.setProperty("catalina.base", "."); + final String actual = envVars.getAppRoot(); + Assert.assertEquals(expected, actual); + } + +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..2ff9e92 --- /dev/null +++ b/pom.xml @@ -0,0 +1,319 @@ + + + + 4.0.0 + org.openo.baseservice + common-setting + 1.0.1-SNAPSHOT + pom + common-setting + + + UTF-8 + false + false + ${project.artifactId}-${project.version} + ${basedir}/target + 1.6.1 + + + ${project.artifactId}-${project.version} + ${basedir}/../release/pkgzip + **/*$* + + + common-util + rest-client + + + + + releases + http://113.200.115.170:4096/nexus/content/repositories/OPEN-O_Release + + + snapshots + http://113.200.115.170:4096/nexus/content/repositories/OPEN-O_SnapShots + + + + + + commons-io + commons-io + 2.4 + + + org.apache.commons + com.springsource.org.apache.commons.lang + 2.6.0 + + + org.apache.commons + com.springsource.org.apache.commons.logging + 1.1.1 + + + org.apache.commons + com.springsource.org.apache.commons.codec + 1.9.0 + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + com.springsource.slf4j.log4j + ${slf4j.version} + + + org.apache.log4j + com.springsource.org.apache.log4j + 1.2.16 + + + org.mybatis + mybatis-spring + 1.2.0 + + + org.mybatis + mybatis + 3.2.7 + + + org.apache.commons + commons-lang3 + 3.1 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + org.eclipse.jetty.aggregate + jetty-all + 8.1.16.v20140903 + + + org.eclipse.jetty.orbit + javax.servlet + 3.0.0.v201112011016 + provided + + + redis.clients + jedis + 2.8.0 + + + org.apache.commons + commons-dbcp2 + 2.0.1 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.2 + + + + + + + + ${resources.dir} + + + ${project.build.directory}/generated-resources + + + ${basedir}/src/main/java + + **/*.java + + + + ${basedir}/src/main/resources + + + + + ${basedir}/src/test/java + + **/*.java + + + + ${basedir}/src/test/resources + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.6 + + + ant-contrib + ant-contrib + 1.0b3 + + + ant + ant + + + + + com.google.js + closure-compiler + 1.0.0 + + + com.google.closure-stylesheets + closure-stylesheets + 20140426 + + + + + org.apache.maven.plugins + maven-clean-plugin + 2.4.1 + + + org.apache.maven.plugins + maven-release-plugin + 2.5.2 + + + **/*.java + + true + + + + + + + + + org.apache.maven.plugins + maven-release-plugin + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.7 + + 2 + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.6.1 + + true + ${javadoc.loc}/javadoc.css + ${javadoc.loc}/overview.html + org.apache.*,*.impl + true + true + false + false + protected + 1.5 + gb2312 + UTF-8 + gb2312 + 256M + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-jar-plugin + 2.3.1 + + ${bundle.name} + ${release.dir} + + + + + maven-clean-plugin + + false + + + ${release.dir} + + ${bundle.name}.${project.packaging} + + + + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.6.1 + + true + true + public + + + + + + diff --git a/rest-client/.gitignore b/rest-client/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/rest-client/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/rest-client/pom.xml b/rest-client/pom.xml new file mode 100644 index 0000000..33f24c3 --- /dev/null +++ b/rest-client/pom.xml @@ -0,0 +1,89 @@ + + + + 4.0.0 + + org.openo.baseservice + common-setting + 1.0.1-SNAPSHOT + + commonlib-restclient + + + + + org.openo.baseservice + commonlib-cbb + 1.0.1-SNAPSHOT + + + org.eclipse.jetty.aggregate + jetty-all + + + junit + junit + test + 4.8.2 + + + org.jmockit + jmockit + test + 1.18 + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + always + -XX:-UseSplitVerifier + ${maven.test.skip} + ${maven.test.failure.ignore} + + ${excludesFile} + + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.6 + + + xml + html + + + + + package + + cobertura + + + + + + + diff --git a/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java b/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java new file mode 100644 index 0000000..40dd2b1 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ExceptionArgs.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.remoteservice.exception; + +/** + * ROA exception handling parameters. + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class ExceptionArgs { + + /** + * Exception descriptions. + */ + private String[] descArgs = null; + + /** + * Exception reasons. + */ + private String[] reasonArgs = null; + + /** + * Exception detals. + */ + private String[] detailArgs = null; + + /** + * Exception advices. + */ + private String[] adviceArgs = null; + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + */ + public ExceptionArgs() { + // default constructor. + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param descArgs: descriptions. + * @param reasonArgs: reasons. + * @param detailArgs: details. + * @param adviceArgs: advices. + */ + public ExceptionArgs(final String[] descArgs, final String[] reasonArgs, final String[] detailArgs, + final String[] adviceArgs) { + this.descArgs = descArgs; + this.reasonArgs = reasonArgs; + this.detailArgs = detailArgs; + this.adviceArgs = adviceArgs; + } + + public String[] getDescArgs() { + return descArgs; + } + + public void setDescArgs(final String[] descArgs) { + this.descArgs = descArgs; + } + + public String[] getReasonArgs() { + return reasonArgs; + } + + public void setReasonArgs(final String[] reasonArgs) { + this.reasonArgs = reasonArgs; + } + + public String[] getDetailArgs() { + return detailArgs; + } + + public void setDetailArgs(final String[] detailArgs) { + this.detailArgs = detailArgs; + } + + public String[] getAdviceArgs() { + return adviceArgs; + } + + public void setAdviceArgs(final String[] adviceArgs) { + this.adviceArgs = adviceArgs; + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java b/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java new file mode 100644 index 0000000..e64d914 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/remoteservice/exception/ServiceException.java @@ -0,0 +1,254 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.remoteservice.exception; + +import java.text.MessageFormat; + +/** + * The base class for all common exception.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class ServiceException extends Exception { + + /** + * default exception id. + */ + public static final String DEFAULT_ID = "framwork.remote.SystemError"; + + /** + * Serial number. + */ + private static final long serialVersionUID = 5703294364555144738L; + + /** + * Exception id. + */ + private String id = DEFAULT_ID; + + private Object[] args = null; + + private int httpCode = 500; + + private ExceptionArgs exceptionArgs = null; + + /** + * The default constructor
+ *

+ * This method is only used as deserialized, in other cases, use parameterized constructor. + *

+ * + * @since SDNO 0.5 + */ + public ServiceException() { + super(""); + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param id: details. + * @param cause: reason. + */ + public ServiceException(final String id, final Throwable cause) { + super(cause); + this.setId(id); + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param message: details. + */ + public ServiceException(final String message) { + super(message); + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param id: exception id. + * @param message: details. + */ + public ServiceException(final String id, final String message) { + super(message); + this.setId(id); + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param id: exception id. + * @param httpCode: http status code. + */ + public ServiceException(final String id, final int httpCode) { + super(); + this.setId(id); + this.setHttpCode(httpCode); + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param id: exception id. + * @param httpCode: http code. + * @param exceptionArgs: Exception handling frame parameters. + */ + public ServiceException(final String id, final int httpCode, final ExceptionArgs exceptionArgs) { + super(); + this.setId(id); + this.setHttpCode(httpCode); + this.setExceptionArgs(exceptionArgs); + } + + /** + * Constructor
+ *

+ * Have a placeholder exception, use args formatted message. + *

+ * + * @since SDNO 0.5 + * @param id: exception id. + * @param message: details. + * @param args: Placeholders for parameters + */ + public ServiceException(final String id, final String message, final Object... args) { + super(MessageFormat.format(message, args)); + this.setId(id); + this.args = args; + } + + /** + * Constructor
+ *

+ * Have a placeholder exception, use args formatted message + *

+ * + * @since SDNO 0.5 + * @param id: exception id. + * @param message: details. + * @param cause: reason. + * @param args: placeholder for parameters + */ + public ServiceException(final String id, final String message, final Throwable cause, final Object... args) { + super(MessageFormat.format(message, args), cause); + this.setId(id); + this.args = args; + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param id: exception id. + * @param message: details. + * @param cause: reason. + */ + public ServiceException(final String id, final String message, final Throwable cause) { + super(message, cause); + this.setId(id); + } + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param cause: reason. + */ + public ServiceException(final Throwable cause) { + super(cause); + } + + /** + * Get exceptoin id.
+ * + * @return + * @since SDNO 0.5 + */ + public String getId() { + if(id == null || id.isEmpty()) { + return DEFAULT_ID; + } + return id; + } + + public void setId(final String id) { + this.id = id; + } + + public int getHttpCode() { + return this.httpCode; + } + + public void setHttpCode(final int httpCode) { + this.httpCode = httpCode; + } + + /** + * Obtain the ROA exception handling framework parameters
+ * + * @return exception args. + * @since SDNO 0.5 + */ + public ExceptionArgs getExceptionArgs() { + return exceptionArgs; + } + + public void setExceptionArgs(final ExceptionArgs exceptionArgs) { + this.exceptionArgs = exceptionArgs; + } + + /** + * Gets the parameter information
+ * + * @return parameter list. + * @since SDNO 0.5 + */ + protected Object[] getArgs() { + if(args == null || args.length == 0 || DEFAULT_ID.equals(getId())) { + return new Object[] {}; + } + return args; + } + + @Override + public String toString() { + return "exception.id: " + getId() + "; " + super.toString(); + } + +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java new file mode 100644 index 0000000..86124cf --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/ReaderHelper.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util; + +import org.apache.commons.io.LineIterator; + +import java.io.Reader; + +/** + * Helper for read line.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 31-May-2016 + */ +public class ReaderHelper { + + private LineIterator ite = null; + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param reader + */ + public ReaderHelper(final Reader reader) { + if(reader != null) { + ite = new LineIterator(reader); + } + + } + + /** + * Gets the next line.
+ * + * @return line if present else null. + * @since SDNO 0.5 + */ + public String getLine() { + if(ite != null && ite.hasNext()) { + return ite.nextLine(); + } + return null; + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java new file mode 100644 index 0000000..aca60c0 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/ServiceUtil.java @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.Properties; + +/** + * Service connection configuration util.
+ *

+ * Get host and port from the Client Configure the connection environment and service Configure + * profile + *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class ServiceUtil { + + private static final Logger LOG = LoggerFactory.getLogger(ServiceUtil.class); + + private final Properties allConfigure = new Properties(); + + private final Properties serviceConfigure; + + private String serviceStage; + + private String serviceName; + + /** + * Constructor
+ *

+ * Load profile information. + *

+ * + * @since SDNO 0.5 + * @param serviceName user-specified service name. + * @param url invoked service url. + */ + public ServiceUtil(final String serviceName, final String url) { + final String fomattedUrl = formatUrl(url); + serviceConfigure = loadProperties("service-configure.properties"); + if(null == serviceName || serviceName.isEmpty()) { + this.serviceName = getServiceNameWhitUrl(fomattedUrl); + } else { + this.serviceName = serviceName; + } + loadPropertyFile(); + } + + /** + * Get the service user-specified host. + *
+ * + * @return host + * @since SDNO 0.5 + */ + public String getServiceHost() { + final String host = allConfigure.getProperty(serviceName + "." + serviceStage + ".host"); + if(null == host) { + return ""; + } + return host; + } + + /** + * Get the service user-specified port. + *
+ * + * @return port + * @since SDNO 0.5 + */ + public int getServicePort() { + final String portStr = allConfigure.getProperty(serviceName + "." + serviceStage + ".port"); + if(null == portStr) { + return -1; + } + return Integer.parseInt(portStr); + } + + private String getServiceNameWhitUrl(final String url) { + final Enumeration keys = serviceConfigure.propertyNames(); + while(keys.hasMoreElements()) { + final String key = (String)keys.nextElement(); + if(key.endsWith("urls")) { + final String urls = serviceConfigure.getProperty(key); + for(String tempUrl : urls.split(",")) { + tempUrl = formatUrl(tempUrl); + if(url.startsWith(tempUrl)) { + return key.split("\\.")[0]; + } + } + + } + } + return ""; + } + + private static String formatUrl(final String url) { + String outUrl = url; + if(outUrl.contains("?")) { + outUrl = outUrl.split("\\?")[0]; + } + outUrl = outUrl.replace("\\", "/"); + outUrl = outUrl.replaceAll("[/]{2,}", "/"); + outUrl = outUrl.endsWith("/") ? outUrl.substring(0, outUrl.length() - 1) : outUrl; + outUrl = outUrl.endsWith("/*") ? outUrl.substring(0, outUrl.length() - 2) : outUrl; + return outUrl; + } + + /** + * Loads the client and service configuration files. + *
+ * + * @since SDNO 0.5 + */ + private void loadPropertyFile() { + final Properties clientConfigure = loadProperties(serviceName + "-client-configure.properties"); + allConfigure.putAll(clientConfigure); + allConfigure.putAll(serviceConfigure); + serviceStage = allConfigure.getProperty(serviceName + ".stage"); + } + + /** + * Loads the client and service configuration files. + *
+ * + * @param classProperties: service profile file name. + * @return Service configuration. + * @since SDNO 0.5 + */ + private Properties loadProperties(final String classProperties) { + final Properties properties = new Properties(); + InputStream inputStream = null; + ClassLoader classloader = null; + try { + classloader = this.getClass().getClassLoader(); + if(classloader != null) { + inputStream = classloader.getResourceAsStream(classProperties); + } + if(inputStream != null) { + properties.load(inputStream); + inputStream.close(); + } + } catch(final IOException e) { + LOG.error("load file error: ", e); + } finally { + if(inputStream != null) { + try { + inputStream.close(); + } catch(final IOException ee) { + LOG.error("close inputStream error: ", ee); + } + inputStream = null; + } + } + return properties; + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java new file mode 100644 index 0000000..3c6493c --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/HttpUtil.java @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.clientsdk; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Collection; +import java.util.Date; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Http utilities. + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class HttpUtil { + + /** + * + */ + private static final String APPLICATION_JSON = "application/json"; + + private static final Logger LOGGER = LoggerFactory.getLogger(HttpUtil.class); + + private HttpUtil() { + + } + + /** + * Check if the given array contains the given value (with case-insensitive comparison). + *
+ * + * @param array The array + * @param value The value to search + * @return true if the array contains the value + * @since SDNO 0.5 + */ + public static boolean containsIgnoreCase(final String[] array, final String value) { + for(final String str : array) { + if(value == null && str == null) { + return true; + } + if(value != null && value.equalsIgnoreCase(str)) { + return true; + } + } + return false; + } + + /** + * Join an array of strings with the given separator. + *
+ * + * @param array The array of strings + * @param separator The separator + * @return the resulting string + * @since SDNO 0.5 + */ + public static String join(final String[] array, final String separator) { + final int len = array.length; + if(len == 0) { + return ""; + } + final StringBuilder out = new StringBuilder(); + out.append(array[0]); + for(int i = 1; i < len; i++) { + out.append(separator).append(array[i]); + } + return out.toString(); + } + + /** + * Format the given parameter object into string. + *
+ * + * @param param param input + * @return query param string + * @since SDNO 0.5 + */ + public static String parameterToString(final Object param) { + if(param == null) { + return ""; + } else if(param instanceof Date) { + return Long.toString(((Date)param).getTime()); + } else if(param instanceof Collection) { + final StringBuilder b = new StringBuilder(); + for(final Object o : (Collection)param) { + if(b.length() > 0) { + b.append(','); + } + b.append(String.valueOf(o)); + } + return b.toString(); + } else { + return String.valueOf(param); + } + } + + /** + * get accept header + *
+ * + * @param accepts accepts accept types + * @return the accepts string + * @since SDNO 0.5 + */ + public static String selectHeaderAccept(final String[] accepts) { + if(accepts.length == 0) { + return null; + } + if(HttpUtil.containsIgnoreCase(accepts, APPLICATION_JSON)) { + return APPLICATION_JSON; + } + return HttpUtil.join(accepts, ","); + } + + /** + * select head content type + *
+ * + * @param contentTypes contentTypes content types + * @return the json string or the first content type + * @since SDNO 0.5 + */ + public static String selectHeaderContentType(final String[] contentTypes) { + if(contentTypes.length == 0) { + return APPLICATION_JSON; + } + if(HttpUtil.containsIgnoreCase(contentTypes, APPLICATION_JSON)) { + return APPLICATION_JSON; + } + return contentTypes[0]; + } + + /** + * Escape the given string to be used as URL query value.
+ * + * @param str str param str + * @return escape string + * @since SDNO 0.5 + */ + public static String escapeString(final String str) { + try { + return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20"); + } catch(final UnsupportedEncodingException e) { + LOGGER.info("UTF8 is not supported", e); + return str; + } + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java new file mode 100644 index 0000000..2234e19 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/JsonUtil.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.clientsdk; + +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.type.TypeReference; + +import net.sf.json.JSON; + +import java.io.IOException; + +/** + * JSON parse utilities. + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public final class JsonUtil { + + private static final ObjectMapper MAPPER = new ObjectMapper(); + + static { + MAPPER.setDeserializationConfig(MAPPER.getDeserializationConfig() + .without(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES)); + } + + private JsonUtil() { + } + + /** + * Parse JSON formated string.
+ * + * @param jsonstr: JSON formated string. + * @param type: result type. + * @return parsed object. + * @throws IOException incase error. + * @since SDNO 0.5 + */ + public static T unMarshal(final String jsonstr, final Class type) throws IOException { + return MAPPER.readValue(jsonstr, type); + } + + /** + * Parse JSON formatted string (for a generic target type). + *
+ * + * @param jsonstr request data. + * @param type target type. + * @return result object. + * @throws IOException incase error. + * @since SDNO 0.5 + */ + public static T unMarshal(final String jsonstr, final TypeReference type) throws IOException { + return MAPPER.readValue(jsonstr, type); + } + + /** + * Convert object to JSON format string. + *
+ * + * @param srcObj source object. + * @return JSON format string. + * @throws IOException incase of error. + * @since SDNO 0.5 + */ + public static String marshal(final Object srcObj) throws IOException { + if(srcObj instanceof JSON) { + return srcObj.toString(); + } + return MAPPER.writeValueAsString(srcObj); + } + + /** + * Get parsing mapper + *
+ * + * @return parsing mapper + * @since SDNO 0.5 + */ + public static ObjectMapper getMapper() { + return MAPPER; + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java new file mode 100644 index 0000000..b769f0a --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/clientsdk/RestClientUtil.java @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.clientsdk; + +import org.openo.baseservice.remoteservice.exception.ServiceException; +import org.openo.baseservice.roa.util.restclient.Restful; +import org.openo.baseservice.roa.util.restclient.RestfulAsyncCallback; +import org.openo.baseservice.roa.util.restclient.RestfulParametes; +import org.openo.baseservice.roa.util.restclient.RestfulResponse; + +import java.util.HashSet; +import java.util.Set; + +/** + * Rest Client Tools. + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class RestClientUtil { + + private static Set> ret = new HashSet<>(); + + static { + ret.add(Boolean.class); + ret.add(Character.class); + ret.add(Byte.class); + ret.add(Short.class); + ret.add(Integer.class); + ret.add(Long.class); + ret.add(Float.class); + ret.add(Double.class); + ret.add(Void.class); + ret.add(String.class); + } + + private RestClientUtil() { + + } + + /** + * Processing HTTP requests. + *
+ * + * @param method method name. + * @param path request path. + * @param parameters parameters. + * @param restFull ReST request instance + * @return The ReST response. + * @throws ServiceException Exception information. + * @since SDNO 0.5 + */ + public static RestfulResponse invokeMethod(final String method, final String path, + final RestfulParametes parameters, final Restful restFull) throws ServiceException { + RestfulResponse response; + if("get".equalsIgnoreCase(method)) { + response = restFull.get(path, parameters); + } else if("put".equalsIgnoreCase(method)) { + response = restFull.put(path, parameters); + } else if("post".equalsIgnoreCase(method)) { + response = restFull.post(path, parameters); + } else if("delete".equalsIgnoreCase(method)) { + response = restFull.delete(path, parameters); + } else if("patch".equalsIgnoreCase(method)) { + response = restFull.patch(path, parameters); + } else { + throw new ServiceException("NotSuppertMethod", 400); + } + return response; + } + + /** + * An asynchronous HTTP request. + *
+ * + * @param method http method. + * @param path request path. + * @param parameters request parameters. + * @param restFull restFull instance. + * @param callback callback function. + * @throws ServiceException in case error. + * @since SDNO 0.5 + */ + public static void invokeAsyncMethod(final String method, final String path, final RestfulParametes parameters, + final Restful restFull, final RestfulAsyncCallback callback) throws ServiceException { + if("get".equalsIgnoreCase(method)) { + restFull.asyncGet(path, parameters, callback); + } else if("put".equalsIgnoreCase(method)) { + restFull.asyncPut(path, parameters, callback); + } else if("post".equalsIgnoreCase(method)) { + restFull.asyncPost(path, parameters, callback); + } else if("delete".equalsIgnoreCase(method)) { + restFull.asyncDelete(path, parameters, callback); + } else if("patch".equalsIgnoreCase(method)) { + restFull.asyncPatch(path, parameters, callback); + } else { + throw new ServiceException("NotSuppertMethod", 400); + } + } + + /** + * Determine whether a class is a native.
+ * + * @param clazz: class type. + * @return whether primitive or not. + * @since SDNO 0.5 + */ + public static boolean isPrimitive(final Class clazz) { + if(clazz.isPrimitive()) { + return true; + } + if(ret.contains(clazz)) { + return true; + } + return false; + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java new file mode 100644 index 0000000..8195b0d --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/DefaultAsyncCallback.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +/** + * Restful Asynchronous call back implentation.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class DefaultAsyncCallback implements RestfulAsyncCallback { + + @Override + public void callback(final RestfulResponse response) { + // default implementation. + } + + @Override + public void handleExcepion(final Throwable e) { + // default implementation + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java new file mode 100644 index 0000000..4f58778 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpBaseRest.java @@ -0,0 +1,291 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; + +import org.eclipse.jetty.client.Address; +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.HttpExchange; +import org.eclipse.jetty.http.HttpMethods; +import org.openo.baseservice.remoteservice.exception.ServiceException; +import org.openo.baseservice.roa.util.ServiceUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 Aug 9, 2016 + */ +public abstract class HttpBaseRest implements Restful { + + private static final Logger LOG = LoggerFactory.getLogger(HttpRest.class); + + final AtomicInteger requestId = new AtomicInteger(0); + + protected HttpClient client = null; + + private static final String LOCAL_HOST = "127.0.0.1"; + + static final String HTTP_PATCH = "PATCH"; + + String defaultIP = LOCAL_HOST; + + int defaultPort = -10000; + + int defaultTimeout = 30000; + + final String procenameRouteID = "RouteID-" + System.currentTimeMillis() + "-"; + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + */ + public HttpBaseRest() { + super(); + } + + protected void createHttpClient() { + client = new HttpClient(); + } + + protected RestHttpContentExchange createRestHttpContentExchange(final RestfulAsyncCallback callback) { + final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); + exchange.setScheme("http"); + return exchange; + } + + private String encodeParams(final RestfulParametes restParametes) throws ServiceException { + final Map parm = restParametes.getParamMap(); + String value = null; + boolean bHasParma = false; + final StringBuilder builder = new StringBuilder(); + try { + for(final String key : parm.keySet()) { + value = parm.get(key); + if(value == null) { + value = ""; + } + String str; + if(bHasParma) { + str = String.format("&%s=%s", URLEncoder.encode(key, RestfulClientConst.ENCODING), + URLEncoder.encode(value, RestfulClientConst.ENCODING)); + } else { + bHasParma = true; + str = String.format("%s=%s", URLEncoder.encode(key, RestfulClientConst.ENCODING), + URLEncoder.encode(value, RestfulClientConst.ENCODING)); + } + builder.append(str); + } + } catch(final UnsupportedEncodingException ex) { + LOG.error("unsupported encoding: ", ex); + throw new ServiceException("Broken VM does not support UTF-8"); + } + return builder.toString(); + } + + private void processHeader(final RestHttpContentExchange contentExchange, final Map headerMap) { + for(final String key : headerMap.keySet()) { + final String value = headerMap.get(key); + contentExchange.addRequestHeader(key, value); + } + + } + + private void setContentExchangeParams(final RestHttpContentExchange contentExchange) { + final String contentType = contentExchange.getRequestFields().getStringField("Content-Type"); + if(null == contentType || contentType.isEmpty()) { + // application/json;charset=utf-8 + contentExchange.setRequestContentType(RestfulClientConst.APPLICATION_FORM_URLENCODED); + } + final String encoding = contentExchange.getRequestFields().getStringField("Accept-Encoding"); + if(null == encoding || encoding.isEmpty()) { + // compress,gzip + contentExchange.setRequestHeader("Accept-Encoding", "*/*"); + } + contentExchange.setVersion(11); + } + + /** + *
+ * + * @param method + * @param servicePath + * @param restParametes + * @param options + * @param callback + * @return + * @throws ServiceException + * @since SDNO 0.5 + */ + protected RestfulResponse sendHttpRequest(final String method, final String servicePath, + final RestfulParametes restParametes, final RestfulOptions options, final RestfulAsyncCallback callback) + throws ServiceException { + final RestHttpContentExchange contentExchange = createRestHttpContentExchange(callback); + if(null == restParametes) { + return new RestfulResponse(); + } + final String requestTrace = this.getReuqestIdString(); + restParametes.putHttpContextHeader(RestfulClientConst.REQUEST_ID, requestTrace); + + RestfulResponse rsp = null; + try { + contentExchange.setMethod(method); + final String str = encodeParams(restParametes); + final StringBuilder builder = new StringBuilder(); + builder.append(servicePath); + if(str.length() > 0 && (method.equals(HttpMethods.GET) || method.equals(HttpMethods.DELETE) + || method.equals(HttpMethods.HEAD))) { + builder.append('?'); + builder.append(str); + } + setDefaultUrl(contentExchange, options, builder); + processHeader(contentExchange, restParametes.getHeaderMap()); + setContentExchangeParams(contentExchange); + + setPostPutParam(method, restParametes, contentExchange, str); + setTimeout(options, contentExchange); + + client.send(contentExchange); + rsp = callbackExecute(callback, contentExchange); + } catch(final Exception e) { + LOG.error("request reply message have exception:status is " + + RestHttpContentExchange.toState(contentExchange.getStatus())); + throw new ServiceException(e); + } + return rsp; + } + + private void setDefaultUrl(final RestHttpContentExchange contentExchange, final RestfulOptions options, + final StringBuilder url) { + // server + if(url.toString().startsWith("http")) { + contentExchange.setURL(url.toString()); + } else { + String host = defaultIP; + int iPort = defaultPort; + String calledServiceName = null; + if(options != null) { + calledServiceName = options.getCalledServicName(); + } + final ServiceUtil serviceUtil = new ServiceUtil(calledServiceName, url.toString()); + final String configHost = serviceUtil.getServiceHost(); + final int configPort = serviceUtil.getServicePort(); + if(!configHost.isEmpty() && configPort > 0) { + if(options != null) { + options.setHost(configHost); + options.setPort(configPort); + } else { + host = configHost; + + iPort = configPort; + } + } + if(options != null) { + host = options.getHost(); + if(host.isEmpty()) { + host = defaultIP; + } + iPort = options.getPort(); + if(iPort == 0) { + iPort = defaultPort; + } + } + // Integer.getInteger(".http.client.maxThread",30) + contentExchange.setAddress(new Address(host, iPort)); + contentExchange.setRequestURI(url.toString()); + } + } + + private String getReuqestIdString() { + if(this.requestId.get() == 0x7FFFFFFF) { + this.requestId.set(1); + } + final int reqId = this.requestId.getAndIncrement(); + final StringBuilder builder = new StringBuilder(this.procenameRouteID); + // time + final SimpleDateFormat dateFormate = new SimpleDateFormat("yyMMdd"); + final SimpleDateFormat timeFormate = new SimpleDateFormat("HHmmss"); + final Date date = Calendar.getInstance().getTime(); + builder.append(dateFormate.format(date) + timeFormate.format(date)); + builder.append('-'); + builder.append(reqId); + return builder.toString(); + } + + private void setPostPutParam(final String method, final RestfulParametes restParametes, + final RestHttpContentExchange contentExchange, final String str) throws UnsupportedEncodingException { + if(HttpMethods.POST.equals(method) || HttpMethods.PUT.equals(method) || HTTP_PATCH.equals(method)) { + ByteArrayInputStream buff; + final String tmpRaw = restParametes.getRawData(); + if(tmpRaw == null) { + buff = new ByteArrayInputStream(str.getBytes(RestfulClientConst.ENCODING)); + } else { + buff = new ByteArrayInputStream(tmpRaw.getBytes(RestfulClientConst.ENCODING)); + } + final int len = buff.available(); + contentExchange.setRequestContentSource(buff); + contentExchange.setRequestHeader("content-length", String.valueOf(len)); + } + } + + private void setTimeout(final RestfulOptions options, final RestHttpContentExchange contentExchange) { + if(options != null) { + final long timeout = options.getRestTimeout(); + if(timeout != 0) { + contentExchange.setTimeout(timeout); + } else { + contentExchange.setTimeout(defaultTimeout); + } + } else { + contentExchange.setTimeout(defaultTimeout); + } + } + + private RestfulResponse callbackExecute(final RestfulAsyncCallback callback, + final RestHttpContentExchange contentExchange) throws InterruptedException, IOException, ServiceException { + if(callback == null) { + final int exchangeState = contentExchange.waitForDone(); + if(exchangeState == HttpExchange.STATUS_COMPLETED) { + return contentExchange.getResponse(); + } else if(exchangeState == HttpExchange.STATUS_EXCEPTED) { + throw new ServiceException( + "request is exception: " + RestHttpContentExchange.toState(HttpExchange.STATUS_EXCEPTED)); + } else if(exchangeState == HttpExchange.STATUS_EXPIRED) { + throw new ServiceException( + "request is expierd: " + RestHttpContentExchange.toState(HttpExchange.STATUS_EXPIRED)); + } + } + return null; + } + +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java new file mode 100644 index 0000000..50a3538 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/HttpRest.java @@ -0,0 +1,254 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.http.HttpMethods; +import org.eclipse.jetty.util.thread.QueuedThreadPool; +import org.openo.baseservice.remoteservice.exception.ServiceException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 Aug 9, 2016 + */ +public class HttpRest extends HttpBaseRest { + + private static final Logger LOG = LoggerFactory.getLogger(HttpRest.class); + + /** + * Initializing Rest options.
+ * + * @param options: rest options. + * @throws ServiceException + * @since SDNO 0.5 + */ + public void initHttpRest(final RestfulOptions option) throws ServiceException { + if(option == null) { + client = null; + throw new ServiceException("option is null."); + } + createHttpClient(); + try { + int iValue; + iValue = option.getIntOption(RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME); + // max 200 concurrent,connections to every address + client.setMaxConnectionsPerAddress(iValue); + + iValue = option.getIntOption(RestfulClientConst.THREAD_KEY_NAME); + // max threads + client.setThreadPool(new QueuedThreadPool(iValue)); + iValue = option.getIntOption(RestfulClientConst.CONN_TIMEOUT_KEY_NAME); + client.setConnectTimeout(iValue); + iValue = option.getRestTimeout(); + defaultTimeout = iValue; + client.setTimeout(iValue); + + iValue = option.getIntOption(RestfulClientConst.IDLE_TIMEOUT_KEY_NAME); + client.setIdleTimeout(iValue); + iValue = option.getIntOption(RestfulClientConst.MAX_RESPONSE_HEADER_SIZE); + client.setResponseHeaderSize(iValue); + iValue = option.getIntOption(RestfulClientConst.MAX_REQUEST_HEADER_SIZE); + client.setRequestHeaderSize(iValue); + // HttpClient.CONNECTOR_SOCKET + client.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL); + client.start(); + defaultIP = option.getStringOption(RestfulClientConst.HOST_KEY_NAME); + defaultPort = option.getIntOption(RestfulClientConst.PORT_KEY_NAME); + } catch(final Exception e) { + LOG.error("start httpclient error", e); + client = null; + throw new ServiceException("http client init failed."); + } + } + + @Override + public RestfulResponse get(final String servicePath, final RestfulParametes restParametes) throws ServiceException { + return this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, null, null); + } + + @Override + public RestfulResponse get(final String servicePath, final RestfulParametes restParametes, + final RestfulOptions option) throws ServiceException { + return this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, option, null); + } + + @Override + public RestfulResponse head(final String servicePath, final RestfulParametes restParametes) + throws ServiceException { + return this.sendHttpRequest(HttpMethods.HEAD, servicePath, restParametes, null, null); + } + + @Override + public RestfulResponse head(final String servicePath, final RestfulParametes restParametes, + final RestfulOptions option) throws ServiceException { + return this.sendHttpRequest(HttpMethods.HEAD, servicePath, restParametes, option, null); + } + + @Override + public void asyncGet(final String servicePath, final RestfulParametes restParametes, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, null, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, null, callback); + } + } + + @Override + public void asyncGet(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, option, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.GET, servicePath, restParametes, option, callback); + } + } + + @Override + public RestfulResponse put(final String servicePath, final RestfulParametes restParametes) throws ServiceException { + return this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, null, null); + } + + @Override + public RestfulResponse put(final String servicePath, final RestfulParametes restParametes, + final RestfulOptions option) throws ServiceException { + return this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, option, null); + } + + @Override + public void asyncPut(final String servicePath, final RestfulParametes restParametes, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, null, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, null, callback); + } + } + + @Override + public void asyncPut(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, option, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.PUT, servicePath, restParametes, option, callback); + } + } + + @Override + public RestfulResponse post(final String servicePath, final RestfulParametes restParametes) + throws ServiceException { + return this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, null, null); + } + + @Override + public RestfulResponse post(final String servicePath, final RestfulParametes restParametes, + final RestfulOptions option) throws ServiceException { + return this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, option, null); + } + + @Override + public void asyncPost(final String servicePath, final RestfulParametes restParametes, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, null, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, null, callback); + } + } + + @Override + public void asyncPost(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, option, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.POST, servicePath, restParametes, option, callback); + } + } + + @Override + public RestfulResponse delete(final String servicePath, final RestfulParametes restParametes) + throws ServiceException { + return this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, null, null); + } + + @Override + public RestfulResponse delete(final String servicePath, final RestfulParametes restParametes, + final RestfulOptions option) throws ServiceException { + return this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, option, null); + } + + @Override + public void asyncDelete(final String servicePath, final RestfulParametes restParametes, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, null, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, null, callback); + } + } + + @Override + public void asyncDelete(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, option, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HttpMethods.DELETE, servicePath, restParametes, option, callback); + } + } + + @Override + public RestfulResponse patch(final String servicePath, final RestfulParametes restParametes) + throws ServiceException { + return this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, null, null); + } + + @Override + public RestfulResponse patch(final String servicePath, final RestfulParametes restParametes, + final RestfulOptions option) throws ServiceException { + return this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, option, null); + } + + @Override + public void asyncPatch(final String servicePath, final RestfulParametes restParametes, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, null, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, null, callback); + } + } + + @Override + public void asyncPatch(final String servicePath, final RestfulParametes restParametes, final RestfulOptions option, + final RestfulAsyncCallback callback) throws ServiceException { + if(callback == null) { + this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, option, new DefaultAsyncCallback()); + } else { + this.sendHttpRequest(HTTP_PATCH, servicePath, restParametes, option, callback); + } + } + +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java new file mode 100644 index 0000000..85118ce --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestHttpContentExchange.java @@ -0,0 +1,234 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import org.openo.baseservice.remoteservice.exception.ServiceException; + +import org.apache.commons.lang.StringUtils; +import org.eclipse.jetty.client.ContentExchange; +import org.eclipse.jetty.client.HttpDestination; +import org.eclipse.jetty.http.HttpFields; +import org.eclipse.jetty.http.HttpHeaders; +import org.eclipse.jetty.io.Buffer; +import org.eclipse.jetty.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.GZIPInputStream; + +/** + * ContentExchange implementation classe to provide access to response. + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class RestHttpContentExchange extends ContentExchange { + + private static final Logger LOGGER = LoggerFactory.getLogger(RestHttpContentExchange.class); + + private boolean gzip = false; + + private RestfulAsyncCallback callback = null; + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + * @param cacheFields whether to cache response header. + * @param asyncCallback callback method. + */ + RestHttpContentExchange(final boolean cacheFields, final RestfulAsyncCallback asyncCallback) { + super(cacheFields); + this.callback = asyncCallback; + } + + /** + * Extract message. + *
+ * + * @param data GZipped data. + * @return Uncompressed data. + * @throws IOException + * @since SDNO 0.5 + */ + public String decompressGzipToStr(final byte[] data) throws IOException { + if(data == null) { + return ""; + } + ByteArrayInputStream input = null; + GZIPInputStream gzis = null; + InputStreamReader reader = null; + final StringBuilder out = new StringBuilder(); + try { + input = new ByteArrayInputStream(data); + gzis = new GZIPInputStream(input); + reader = new InputStreamReader(gzis, Charset.forName(RestfulClientConst.ENCODING)); + final char[] buff = new char[1024]; + for(int n; (n = reader.read(buff)) != -1;) { + out.append(new String(buff, 0, n)); + } + } finally { + if(reader != null) { + try { + reader.close(); + } catch(final IOException e) { + LOGGER.error("decompress Gzip reader exception:", e); + } + } + if(gzis != null) { + try { + gzis.close(); + } catch(final IOException e) { + LOGGER.error("decompress Gzip exception:", e); + } + } + if(input != null) { + try { + input.close(); + } catch(final IOException e) { + LOGGER.error("decompress Gzip input exception:", e); + } + } + } + return out.toString(); + + } + + /** + * View response headers Content-Encoding values if you need to extract data.
+ * + * @param name buffer + * @param value value + * @throws IOException + * @since SDNO 0.5 + */ + @Override + protected synchronized void onResponseHeader(final Buffer name, final Buffer value) throws IOException { + super.onResponseHeader(name, value); + final int header = HttpHeaders.CACHE.getOrdinal(name); + if(header == HttpHeaders.CONTENT_ENCODING_ORDINAL) { + final String encoding = StringUtil.asciiToLowerCase(value.toString()); + gzip = encoding != null && StringUtils.contains(encoding, "gzip"); + } + + } + + @Override + protected void onResponseComplete() throws IOException { + if(LOGGER.isInfoEnabled()) { + LOGGER.info("Response has Complete:" + "path:" + this.getRequestURI().replace("\n", "0x0A")); + } + super.onResponseComplete(); + if(callback != null) { + final RestfulResponse rsp = getResponse(); + callback.callback(rsp); + } + } + + @Override + protected void onRequestCommitted() throws IOException { + if(LOGGER.isInfoEnabled()) { + LOGGER.info("Request Header has been send:" + "path:" + this.getRequestURI().replace("\n", "0x0A")); + } + super.onRequestCommitted(); + } + + @Override + protected void onRequestComplete() throws IOException { + if(LOGGER.isInfoEnabled()) { + LOGGER.info("Request has bend send complete:" + "path:" + this.getRequestURI().replace("\n", "0x0A")); + } + super.onRequestComplete(); + } + + @Override + protected void onException(final Throwable x) { + LOGGER.warn("onException:", x); + super.onException(x); + if(callback != null) { + callback.handleExcepion(x); + } + } + + @Override + protected void onConnectionFailed(final Throwable x) { + LOGGER.warn("onConnectionFailed:", x); + super.onConnectionFailed(x); + if(callback != null) { + callback.handleExcepion(x); + } + + } + + @Override + protected void expire(final HttpDestination destination) { + super.expire(destination); + if(callback != null) { + callback.handleExcepion(new ServiceException("request is expired, status:" + toState(getStatus()))); + } + } + + public boolean isGzip() { + return gzip; + } + + /** + * Get the response as RestfulResponse. + *
+ * + * @return response object. + * @throws IOException + * @since SDNO 0.5 + */ + public RestfulResponse getResponse() throws IOException { + final RestfulResponse rsp = new RestfulResponse(); + rsp.setStatus(this.getResponseStatus()); + if(isGzip()) { + final String responseString = decompressGzipToStr(getResponseContentBytes()); + rsp.setResponseJson(responseString); + } else { + rsp.setResponseJson(this.getResponseContent()); + } + + final HttpFields field = this.getResponseFields(); + if(field != null) { + final Map header = new HashMap<>(); + + final Enumeration names = field.getFieldNames(); + for(final Enumeration e = names; e.hasMoreElements();) { + final String fieldName = e.nextElement(); + final String fieldValue = field.getStringField(fieldName); + header.put(fieldName, fieldValue); + } + + rsp.setRespHeaderMap(header); + } + return rsp; + } + +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java new file mode 100644 index 0000000..7a7c11e --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/Restful.java @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import org.openo.baseservice.remoteservice.exception.ServiceException; + +/** + * ReSTful method interface.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public interface Restful { + + /** + * Http GET method.
+ * + * @param servicePath: request path. + * @param restParametes: query parameters. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse get(String servicePath, RestfulParametes restParametes) throws ServiceException; + + /** + * Http HEAD method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse head(String servicePath, RestfulParametes restParametes, RestfulOptions options) + throws ServiceException; + + /** + * Http HEAD method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse head(String servicePath, RestfulParametes restParametes) throws ServiceException; + + /** + * Http GET method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse get(String servicePath, RestfulParametes restParametes, RestfulOptions options) + throws ServiceException; + + /** + * Asynchronouse GET request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncGet(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) + throws ServiceException; + + /** + * Asynchronouse GET request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncGet(String servicePath, RestfulParametes restParametes, RestfulOptions options, + RestfulAsyncCallback callback) throws ServiceException; + + /** + * Http PUT method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse put(String servicePath, RestfulParametes restParametes) throws ServiceException; + + /** + * Http PUT method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse put(String servicePath, RestfulParametes restParametes, RestfulOptions options) + throws ServiceException; + + /** + * Asynchronouse PUT request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncPut(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) + throws ServiceException; + + /** + * Asynchronouse PUT request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncPut(String servicePath, RestfulParametes restParametes, RestfulOptions options, + RestfulAsyncCallback callback) throws ServiceException; + + /** + * Http POST method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse post(String servicePath, RestfulParametes restParametes) throws ServiceException; + + /** + * Http POST method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse post(String servicePath, RestfulParametes restParametes, RestfulOptions options) + throws ServiceException; + + /** + * Asynchronouse POST request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncPost(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) + throws ServiceException; + + /** + * Asynchronouse POST request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncPost(String servicePath, RestfulParametes restParametes, RestfulOptions options, + RestfulAsyncCallback callback) throws ServiceException; + + /** + * Http DELETE method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse delete(String servicePath, RestfulParametes restParametes) throws ServiceException; + + /** + * Http DELETE method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse delete(String servicePath, RestfulParametes restParametes, RestfulOptions options) + throws ServiceException; + + /** + * Asynchronouse DELETE request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncDelete(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) + throws ServiceException; + + /** + * Asynchronouse DELETE request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncDelete(String servicePath, RestfulParametes restParametes, RestfulOptions options, + RestfulAsyncCallback callback) throws ServiceException; + + /** + * Http PATCH method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse patch(String servicePath, RestfulParametes restParametes) throws ServiceException; + + /** + * Http PATCH method.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @return response. + * @throws ServiceException + * @since SDNO 0.5 + */ + RestfulResponse patch(String servicePath, RestfulParametes restParametes, RestfulOptions options) + throws ServiceException; + + /** + * Asynchronouse PATCH request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncPatch(String servicePath, RestfulParametes restParametes, RestfulAsyncCallback callback) + throws ServiceException; + + /** + * Asynchronouse PATCH request.
+ * + * @param servicePath: request path. + * @param restParametes: request parameters. + * @param options: request options. + * @param callback: response callback method. + * @throws ServiceException + * @since SDNO 0.5 + */ + void asyncPatch(String servicePath, RestfulParametes restParametes, RestfulOptions options, + RestfulAsyncCallback callback) throws ServiceException; +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java new file mode 100644 index 0000000..bf11c16 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulAsyncCallback.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +/** + * Callback interface for ReST calls.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public interface RestfulAsyncCallback { + + /** + * Response callback.
+ * + * @param response: response of ReST call. + * @since SDNO 0.5 + */ + void callback(RestfulResponse response); + + /** + * Exceptoin callback.
+ * + * @param e: ReST call exception. + * @since SDNO 0.5 + */ + void handleExcepion(Throwable e); +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java new file mode 100644 index 0000000..ef02b7d --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulClientConst.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +/** + * Constants for ReST client.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class RestfulClientConst { + + /** -- json Ecode -- **/ + public static final String APPLICATION_FORM_JSON_EBCIDED = "application/json"; + + /** + * urlencode + */ + public static final String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded; charset=UTF-8"; + + public static final String ENCODING = "UTF-8"; + + public static final String SERVER_KEY_NAME = "defaulServer"; + + public static final String CALLED_SERVICE_NAME = "serviceName"; + + public static final String HOST_KEY_NAME = "host"; + + public static final String PORT_KEY_NAME = "port"; + + public static final String CONN_TIMEOUT_KEY_NAME = "ConnectTimeout"; + + public static final String THREAD_KEY_NAME = "thread"; + + public static final String IDLE_TIMEOUT_KEY_NAME = "idletimeout"; + + public static final String TIMEOUT_KEY_NAME = "timeout"; + + public static final String MAX_CONN_PER_ADDR_KEY_NAME = "maxConnectionPerAddr"; + + public static final String REQUEST_ID = "x-request-id"; + + public static final String MAX_RESPONSE_HEADER_SIZE = "responseHeaderSize"; + + public static final String MAX_REQUEST_HEADER_SIZE = "requestHeaderSize"; + + private RestfulClientConst() { + + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java new file mode 100644 index 0000000..3d0a0ff --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulConfigure.java @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +import org.openo.baseservice.roa.util.ReaderHelper; +import org.openo.baseservice.util.impl.SystemEnvVariablesFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import net.sf.json.JSONObject; + +/** + * Rest client options.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class RestfulConfigure { + + private static final Logger LOG = LoggerFactory.getLogger(RestfulConfigure.class); + + private RestfulOptions options = null; + + /** + * Constructor
+ *

+ * Use the default path initialization http Rest options. + *

+ * + * @since SDNO 0.5 + */ + public RestfulConfigure() { + final String config = "/etc/conf/restclient.json"; + final String approot = SystemEnvVariablesFactory.getInstance().getAppRoot(); + final StringBuilder extendSetting = new StringBuilder(); + + if(approot != null) { + extendSetting.append(approot); + extendSetting.append(config); + } else { + extendSetting.append(System.getProperty("user.dir")); + extendSetting.append(config); + } + + final String configfile = extendSetting.toString(); + initRestConf(configfile); + } + + /** + * Constructor
+ *

+ * Use the specified file to initialize http Rest options. + *

+ * + * @since SDNO 0.5 + * @param configfile + */ + public RestfulConfigure(final String configfile) { + initRestConf(configfile); + } + + public RestfulOptions getOptions() { + return options; + } + + private void initRestConf(final String configfile) { + options = getDefaultOptions(); + + final JSONObject obj = loadJsonFromFile(configfile); + if(obj != null) { + if(obj.has(RestfulClientConst.SERVER_KEY_NAME)) { + final JSONObject server = obj.getJSONObject(RestfulClientConst.SERVER_KEY_NAME); + setStringOption(server, RestfulClientConst.HOST_KEY_NAME); + setIntOption(server, RestfulClientConst.PORT_KEY_NAME); + } + setIntOption(obj, RestfulClientConst.CONN_TIMEOUT_KEY_NAME); + setIntOption(obj, RestfulClientConst.THREAD_KEY_NAME); + setIntOption(obj, RestfulClientConst.IDLE_TIMEOUT_KEY_NAME); + setIntOption(obj, RestfulClientConst.TIMEOUT_KEY_NAME); + setIntOption(obj, RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME); + setIntOption(obj, RestfulClientConst.MAX_RESPONSE_HEADER_SIZE); + setIntOption(obj, RestfulClientConst.MAX_REQUEST_HEADER_SIZE); + } else { + LOG.error("failed to load json from " + configfile); + } + } + + private void setStringOption(final JSONObject json, final String key) { + if(json.has(key)) { + options.setOption(key, json.getString(key)); + } + } + + private void setIntOption(final JSONObject json, final String key) { + if(json.has(key)) { + options.setOption(key, json.getInt(key)); + } + } + + private RestfulOptions getDefaultOptions() { + options = new RestfulOptions(); + options.setOption(RestfulClientConst.CONN_TIMEOUT_KEY_NAME, 3000); + options.setOption(RestfulClientConst.THREAD_KEY_NAME, 200); + options.setOption(RestfulClientConst.IDLE_TIMEOUT_KEY_NAME, 30000); + options.setOption(RestfulClientConst.TIMEOUT_KEY_NAME, 30000); + options.setOption(RestfulClientConst.MAX_CONN_PER_ADDR_KEY_NAME, 50); + options.setOption(RestfulClientConst.MAX_RESPONSE_HEADER_SIZE, 20 * 1024); + options.setOption(RestfulClientConst.MAX_REQUEST_HEADER_SIZE, 20 * 1024); + return options; + } + + private JSONObject loadJsonFromFile(final String filePath) { + final File file = new File(filePath); + if((!file.exists()) || (!file.isFile())) { + LOG.error(filePath + "isn't exist."); + return null; + } + BufferedReader reader = null; + final StringBuilder jsonstr = new StringBuilder(); + JSONObject jo = null; + try { + reader = new BufferedReader(new FileReader(file)); + final ReaderHelper rHelpper = new ReaderHelper(reader); + String tempString = null; + while((tempString = rHelpper.getLine()) != null) { + jsonstr.append(tempString); + } + jo = JSONObject.fromObject(jsonstr.toString()); + } catch(final IOException e) { + LOG.error("load file exception:" + e); + } finally { + if(reader != null) { + try { + reader.close(); + } catch(final IOException e) { + LOG.error("close error.", e); + } + } + } + return jo; + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java new file mode 100644 index 0000000..e53bab1 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulFactory.java @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import org.openo.baseservice.remoteservice.exception.ServiceException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; + +/** + * RestFul instance factory.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class RestfulFactory { + + /** + * https protocol. + */ + public static final String PROTO_HTTPS = "https"; + + /** + * http protocol. + */ + public static final String PROTO_HTTP = "http"; + + private static final Logger LOG = LoggerFactory.getLogger(RestfulFactory.class); + + private static final Map INSTANCES = new HashMap<>(2); + + private RestfulFactory() { + + } + + /** + * Get RESTful instance. This method returns a singleton instance. + *
+ * + * @param protocol protocol. currently only support 'http'. + * @return restful instance. + * @since SDNO 0.5 + */ + public static synchronized Restful getRestInstance(final String protocol) { + Restful rest = INSTANCES.get(protocol); + if(rest != null) { + return rest; + } + if(PROTO_HTTP.equals(protocol)) { + rest = createHttpRest(); + INSTANCES.put(protocol, rest); + } + return rest; + } + + private static Restful createHttpRest() { + final HttpRest rest = new HttpRest(); + setRestOption(rest, null); + return rest; + } + + private static void setRestOption(final HttpRest rest, final String restoptionfile) { + try { + RestfulConfigure config; + if(restoptionfile == null || restoptionfile.isEmpty()) { + config = new RestfulConfigure(); + } else { + config = new RestfulConfigure(restoptionfile); + } + + final RestfulOptions option = config.getOptions(); + rest.initHttpRest(option); + } catch(final ServiceException e) { + LOG.error("init http client exception: ", e); + } + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java new file mode 100644 index 0000000..912abf5 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulOptions.java @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import java.util.HashMap; +import java.util.Map; + +/** + * Options for Rest communication.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class RestfulOptions { + + public static final String REST_OPTIONS_NAME_TIMEOUT = "timeout"; + + public static final int REST_OPTIONS_TIMEOUT_MAXTIMEOUT = 1800000; + + private final Map optionsMap = new HashMap<>(); + + /** + * Set called service name.
+ * + * @param serviceName service name. + * @return true. + * @since SDNO 0.5 + */ + public boolean setCalledServiceName(final String serviceName) { + this.setOption(RestfulClientConst.CALLED_SERVICE_NAME, serviceName); + return true; + } + + /** + * Get called service name.
+ * + * @return + * @since SDNO 0.5 + */ + public String getCalledServicName() { + final Object obj = this.getOption(RestfulClientConst.CALLED_SERVICE_NAME); + if(null == obj) { + return ""; + } + return (String)obj; + } + + /** + * Get port.
+ * + * @return port. + * @since SDNO 0.5 + */ + public int getPort() { + final Object obj = this.getOption(RestfulClientConst.PORT_KEY_NAME); + if(null == obj) { + return 0; + } + return ((Integer)obj).intValue(); + } + + /** + * Set port.
+ * + * @param port port to set. + * @return + * @since SDNO 0.5 + */ + public boolean setPort(final int port) { + this.setOption(RestfulClientConst.PORT_KEY_NAME, port); + return true; + } + + /** + * Get host.
+ * + * @return the host. + * @since SDNO 0.5 + */ + public String getHost() { + final Object obj = this.getOption(RestfulClientConst.HOST_KEY_NAME); + if(null == obj) { + return ""; + } + return (String)obj; + } + + /** + * Set host.
+ * + * @param host host to set. + * @return + * @since SDNO 0.5 + */ + public boolean setHost(final String host) { + this.setOption(RestfulClientConst.HOST_KEY_NAME, host); + return true; + } + + /** + * Set rest time-out.
+ * + * @param timeout time-out to set in seconds. + * @return + * @since SDNO 0.5 + */ + public boolean setRestTimeout(final int timeout) { + if(0 < timeout && REST_OPTIONS_TIMEOUT_MAXTIMEOUT >= timeout) { + this.setOption(REST_OPTIONS_NAME_TIMEOUT, timeout); + return true; + } + return false; + } + + /** + * Get time-out.
+ * + * @return time-out in seconds. + * @since SDNO 0.5 + */ + public int getRestTimeout() { + final Object obj = this.getOption(REST_OPTIONS_NAME_TIMEOUT); + if(null == obj) { + return 0; + } + return ((Integer)obj).intValue(); + } + + /** + * Get specified option.
+ * + * @param optionName option name. + * @return option + * @since SDNO 0.5 + */ + public Object getOption(final String optionName) { + return optionsMap.get(optionName); + } + + /** + * Get option value as integer.
+ * + * @param optionName option name. + * @return option value as int. + * @since SDNO 0.5 + */ + public int getIntOption(final String optionName) { + final Object obj = this.getOption(optionName); + if(null == obj) { + return 0; + } + return ((Integer)obj).intValue(); + } + + /** + * Get option value as string.
+ * + * @param optionName option name. + * @return option value as string. + * @since SDNO 0.5 + */ + public String getStringOption(final String optionName) { + final Object obj = this.getOption(optionName); + if(null == obj) { + return ""; + } + return (String)obj; + } + + /** + * Set option.
+ * + * @param option option name. + * @param optionsValue option value. + * @return + * @since SDNO 0.5 + */ + public Object setOption(final String option, final Object optionsValue) { + return optionsMap.put(option, optionsValue); + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java new file mode 100644 index 0000000..c6c5933 --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulParametes.java @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import java.util.HashMap; +import java.util.Map; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 Aug 9, 2016 + */ +public class RestfulParametes { + + private Map paramMap = new HashMap<>(); + + private Map headerMap = new HashMap<>(); + + private String rawData = null; + + /** + *
+ * + * @param key + * @return + * @since SDNO 0.5 + */ + public String get(final String key) { + return paramMap.get(key); + } + + /** + *
+ * + * @param data + * @since SDNO 0.5 + */ + public void setRawData(final String data) { + this.rawData = data; + } + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public String getRawData() { + return this.rawData; + } + + /** + *
+ * + * @param key + * @param value + * @return + * @since SDNO 0.5 + */ + public String put(final String key, final String value) { + return paramMap.put(key, value); + } + + /** + *
+ * + * @param key + * @param value + * @return + * @since SDNO 0.5 + */ + public String putHttpContextHeader(final String key, final String value) { + return headerMap.put(key, value); + } + + /** + *
+ * + * @param key + * @param value + * @return + * @since SDNO 0.5 + */ + public String putHttpContextHeader(final String key, final int value) { + return this.putHttpContextHeader(key, String.valueOf(value)); + } + + /** + *
+ * + * @param key + * @return + * @since SDNO 0.5 + */ + public String getHttpContextHeader(final String key) { + return headerMap.get(key); + } + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public Map getParamMap() { + return paramMap; + } + + /** + *
+ * + * @param paramMap + * @since SDNO 0.5 + */ + public void setParamMap(final Map paramMap) { + this.paramMap = paramMap; + } + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public Map getHeaderMap() { + return this.headerMap; + } + + /** + *
+ * + * @param headerMap + * @since SDNO 0.5 + */ + public void setHeaderMap(final Map headerMap) { + this.headerMap = headerMap; + } +} diff --git a/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java new file mode 100644 index 0000000..28a0c6d --- /dev/null +++ b/rest-client/src/main/java/org/openo/baseservice/roa/util/restclient/RestfulResponse.java @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import java.util.Map; + +/** + * Response for RestFul requests.
+ *

+ *

+ * + * @author + * @version SDNO 0.5 28-May-2016 + */ +public class RestfulResponse { + + private String responseContent; + + private int status = -1; + + private Map respHeaderMap = null; + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public int getStatus() { + return status; + } + + /** + *
+ * + * @param status + * @since SDNO 0.5 + */ + public void setStatus(final int status) { + this.status = status; + } + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public Map getRespHeaderMap() { + return respHeaderMap; + } + + /** + *
+ * + * @param header + * @since SDNO 0.5 + */ + public void setRespHeaderMap(final Map header) { + this.respHeaderMap = header; + } + + /** + * Get response header value as integer.
+ * + * @param key header param name. + * @return header param value as integer. (-1 if error) + * @since SDNO 0.5 + */ + public int getRespHeaderInt(final String key) { + if(respHeaderMap != null) { + final String result = respHeaderMap.get(key); + if(result != null) { + return Integer.parseInt(result); + } + } + return -1; + } + + /** + * Get response header value as long.
+ * + * @param key header param name. + * @return value as long. -1 if no value. + * @since SDNO 0.5 + */ + public long getRespHeaderLong(final String key) { + if(respHeaderMap != null) { + final String result = respHeaderMap.get(key); + if(result != null) { + return Long.parseLong(result); + } + } + return -1; + } + + /** + * Get http header as string.
+ * + * @param key header name. + * @return header value. + * @since SDNO 0.5 + */ + public String getRespHeaderStr(final String key) { + if(respHeaderMap != null) { + return respHeaderMap.get(key); + } + return null; + } + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public String getResponseContent() { + return responseContent; + } + + /** + *
+ * + * @param responseString + * @since SDNO 0.5 + */ + public void setResponseJson(final String responseString) { + this.responseContent = responseString; + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java new file mode 100644 index 0000000..78f08da --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/ReaderHelperTest.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.Reader; +import java.io.StringReader; + +import junit.framework.Assert; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 12-Jun-2016 + */ +public class ReaderHelperTest { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + * Test method for {@link org.openo.baseservice.util.inf.ReaderHelper#getLine()}. + */ + @Test + public void testGetLine() { + final String message = "hello.. how are you?"; + final Reader reader = new StringReader(message); + final ReaderHelper helper = new ReaderHelper(reader); + final String actual = helper.getLine(); + Assert.assertEquals(message, actual); + } + + /** + * Test method for {@link org.openo.baseservice.util.inf.ReaderHelper#getLine()}. + */ + @Test + public void testGetLineMultiLine() { + final String line1 = "hello.. how are you?"; + final String line2 = "I am fine."; + final Reader reader = new StringReader(line1 + System.lineSeparator() + line2); + final ReaderHelper helper = new ReaderHelper(reader); + String actual = helper.getLine(); + Assert.assertEquals(line1, actual); + actual = helper.getLine(); + Assert.assertEquals(line2, actual); + actual = helper.getLine(); + Assert.assertEquals(null, actual); + } + + @Test + public void testGetLineNull() { + final ReaderHelper helper = new ReaderHelper(null); + final String actual = helper.getLine(); + Assert.assertEquals(null, actual); + + } + +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java new file mode 100644 index 0000000..f4f93e4 --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/TestServiceUtil.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 13-Jun-2016 + */ +public class TestServiceUtil { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetServiceHost() { + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetServicePort() { + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java new file mode 100644 index 0000000..419d4d0 --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestHttpUtil.java @@ -0,0 +1,266 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.clientsdk; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Date; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import mockit.Mocked; +import mockit.NonStrictExpectations; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 13-Jun-2016 + */ +public class TestHttpUtil { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testContainsIgnoreCase() { + final String[] array = {"hello", "how", "are", "you", "?"}; + final String toFind = "Hello"; + Assert.assertTrue(HttpUtil.containsIgnoreCase(array, toFind)); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testContainsIgnoreCaseNull() { + final String[] array = {"hello", "how", "are", "you", "?"}; + final String toFind = "Hello"; + Assert.assertFalse(HttpUtil.containsIgnoreCase(array, null)); + + array[0] = null; + Assert.assertFalse(HttpUtil.containsIgnoreCase(array, toFind)); + + Assert.assertTrue(HttpUtil.containsIgnoreCase(array, null)); + array[0] = "hello"; + array[array.length - 1] = null; + Assert.assertTrue(HttpUtil.containsIgnoreCase(array, null)); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testJoin() { + final String[] array = {"hello", "how", "are", "you", "?"}; + String actual = HttpUtil.join(array, ","); + String expected = "hello,how,are,you,?"; + Assert.assertEquals(actual, expected); + + actual = HttpUtil.join(array, "#"); + expected = expected.replaceAll(",", "#"); + Assert.assertEquals(actual, expected); + actual = HttpUtil.join(new String[] {}, ","); + Assert.assertEquals(actual, ""); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testParameterToString() { + // with param string. + Object param = new String("String Param"); + String actual = HttpUtil.parameterToString(param); + String expected = "String Param"; + Assert.assertEquals(expected, actual); + + // with param date. + final Date date = new Date(); + param = date; + expected = "" + date.getTime(); + actual = HttpUtil.parameterToString(param); + Assert.assertEquals(expected, actual); + + // with param collection. + final String[] array = {"hello", "how", "are", "you", "?"}; + param = Arrays.asList(array); + expected = HttpUtil.join(array, ","); + actual = HttpUtil.parameterToString(param); + Assert.assertEquals(expected, actual); + + // with param any + param = new Object() { + + @Override + public String toString() { + return "test object"; + } + }; + expected = "test object"; + actual = HttpUtil.parameterToString(param); + Assert.assertEquals(expected, actual); + + // with param null. + expected = ""; + actual = HttpUtil.parameterToString(null); + Assert.assertEquals(expected, actual); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSelectHeaderAccept() { + final String[] accepts = {"application/json", "text/plain", "application/xml"}; + String expected = "application/json"; + String actual = HttpUtil.selectHeaderAccept(accepts); + Assert.assertEquals(expected, actual); + + accepts[0] = "application/x-www-form-urlencoded"; + expected = HttpUtil.join(accepts, ","); + actual = HttpUtil.selectHeaderAccept(accepts); + Assert.assertEquals(expected, actual); + + expected = null; + actual = HttpUtil.selectHeaderAccept(new String[] {}); + Assert.assertEquals(expected, actual); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSelectHeaderContentType() { + final String[] accepts = {"application/json", "text/plain", "application/xml"}; + String expected = "application/json"; + String actual = HttpUtil.selectHeaderContentType(accepts); + Assert.assertEquals(expected, actual); + + accepts[0] = "application/x-www-form-urlencoded"; + expected = "application/x-www-form-urlencoded"; + actual = HttpUtil.selectHeaderContentType(accepts); + Assert.assertEquals(expected, actual); + + expected = "application/json"; + actual = HttpUtil.selectHeaderContentType(new String[] {}); + Assert.assertEquals(expected, actual); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testEscapeString() throws Exception { + final String str = "/this/url/to be encoded"; + final String actual = HttpUtil.escapeString(str); + final String expected = "%2Fthis%2Furl%2Fto%20be%20encoded"; + Assert.assertEquals(expected, actual); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testEscapeStringException() throws Exception { + + final String str = "/this/url/to be encoded"; + new NonStrictExpectations() { + + @Mocked + URLEncoder encoder; + + { + URLEncoder.encode(str, "utf8"); + result = new UnsupportedEncodingException(); + } + }; + + final String actual = HttpUtil.escapeString(str); + Assert.assertEquals(str, actual); + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java new file mode 100644 index 0000000..d532b94 --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestJsonUtil.java @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.clientsdk; + +import org.openo.baseservice.roa.util.clientsdk.demo.JsonTestClass; + +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.JsonMappingException; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.type.TypeReference; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import net.sf.json.JSONObject; + +import junit.framework.Assert; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 13-Jun-2016 + */ +public class TestJsonUtil { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testUnMarshalStringClassOfT() throws Exception { + final String name = "myname"; + final int id = 25; + final String jsonstr = "{\"name\": \"" + name + "\", \"id\": " + id + "}"; + + final JsonTestClass jsonObj = JsonUtil.unMarshal(jsonstr, JsonTestClass.class); + + Assert.assertNotNull(jsonObj); + Assert.assertEquals(name, jsonObj.getName()); + Assert.assertEquals(id, jsonObj.getId()); + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testUnMarshalStringTypeReferenceOfT() throws Exception { + final String name = "myname"; + final int id = 25; + final String jsonstr = "{\"name\": \"" + name + "\", \"id\": " + id + "}"; + + final JsonTestClass jsonObj = JsonUtil.unMarshal(jsonstr, new TypeReference() {}); + + Assert.assertNotNull(jsonObj); + Assert.assertEquals(name, jsonObj.getName()); + Assert.assertEquals(id, jsonObj.getId()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testMarshal() throws Exception { + final JsonTestClass jsonObj = new JsonTestClass(); + jsonObj.setId(1); + jsonObj.setName("somename"); + final String str = JsonUtil.marshal(jsonObj); + final JSONObject json = JSONObject.fromObject(str); + Assert.assertNotNull(json); + Assert.assertEquals(json.getString("name"), jsonObj.getName()); + Assert.assertEquals(json.getInt("id"), jsonObj.getId()); + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testMarshalJsonObj() throws Exception { + final JSONObject jsonObj = new JSONObject(); + jsonObj.put("id", 10); + jsonObj.put("name", "some-name"); + final String str = JsonUtil.marshal(jsonObj); + final JSONObject json = JSONObject.fromObject(str); + Assert.assertNotNull(json); + Assert.assertEquals(json.getString("name"), "some-name"); + Assert.assertEquals(json.getInt("id"), 10); + + } + + /** + *
+ * + * @throws JsonParseException + * @throws JsonMappingException + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testGetMapper() throws JsonParseException, JsonMappingException, Exception { + final String name = "myname"; + final int id = 25; + final ObjectMapper mapper = JsonUtil.getMapper(); + Assert.assertNotNull(mapper); + final JSONObject json = new JSONObject(); + json.put("name", name); + json.put("id", id); + final JsonTestClass jsonObj = mapper.readValue(json.toString(), JsonTestClass.class); + Assert.assertNotNull(jsonObj); + Assert.assertEquals(name, jsonObj.getName()); + Assert.assertEquals(id, jsonObj.getId()); + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java new file mode 100644 index 0000000..0fcaf40 --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/TestRestClientUtil.java @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.clientsdk; + +import org.openo.baseservice.remoteservice.exception.ServiceException; +import org.openo.baseservice.roa.util.restclient.Restful; +import org.openo.baseservice.roa.util.restclient.RestfulAsyncCallback; +import org.openo.baseservice.roa.util.restclient.RestfulParametes; +import org.openo.baseservice.roa.util.restclient.RestfulResponse; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import java.util.Arrays; +import java.util.Date; + +import junit.framework.Assert; +import mockit.Expectations; +import mockit.Mocked; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 13-Jun-2016 + */ +public class TestRestClientUtil { + + @Mocked + Restful restFullMock; + + ExpectedException thrown = ExpectedException.none();; + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testInvokeMethod() throws ServiceException { + final String path = "test/path"; + final RestfulParametes parameters = null; + final RestfulResponse expected = new RestfulResponse(); + expected.setStatus(200); + + new Expectations() { + + { + restFullMock.get(path, parameters); + returns(expected); + + restFullMock.post(path, parameters); + returns(expected); + + restFullMock.patch(path, parameters); + returns(expected); + + restFullMock.delete(path, parameters); + returns(expected); + + restFullMock.put(path, parameters); + returns(expected); + } + }; + RestfulResponse actual = RestClientUtil.invokeMethod("GET", path, parameters, restFullMock); + Assert.assertEquals(200, actual.getStatus()); + + actual = RestClientUtil.invokeMethod("POST", path, parameters, restFullMock); + Assert.assertEquals(200, actual.getStatus()); + + actual = RestClientUtil.invokeMethod("PATCH", path, parameters, restFullMock); + Assert.assertEquals(200, actual.getStatus()); + + actual = RestClientUtil.invokeMethod("DELETE", path, parameters, restFullMock); + Assert.assertEquals(200, actual.getStatus()); + + actual = RestClientUtil.invokeMethod("PUT", path, parameters, restFullMock); + Assert.assertEquals(200, actual.getStatus()); + } + + @Ignore + @Test(expected = ServiceException.class) + public void testInvokeMethodException() throws ServiceException { + RestClientUtil.invokeMethod("UNKNOWN-METHOD", "some/path", null, restFullMock); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test(expected = ServiceException.class) + public void testInvokeAsyncMethod() throws ServiceException { + final String path = "test/path"; + final RestfulParametes parameters = null; + final RestfulAsyncCallback callback = null; + + RestClientUtil.invokeAsyncMethod("GET", path, parameters, restFullMock, callback); + + RestClientUtil.invokeAsyncMethod("POST", path, parameters, restFullMock, callback); + + RestClientUtil.invokeAsyncMethod("PATCH", path, parameters, restFullMock, callback); + + RestClientUtil.invokeAsyncMethod("DELETE", path, parameters, restFullMock, callback); + + RestClientUtil.invokeAsyncMethod("PUT", path, parameters, restFullMock, callback); + + RestClientUtil.invokeAsyncMethod("UNKNOWN", path, parameters, restFullMock, callback); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testIsPrimitive() { + + Assert.assertTrue(RestClientUtil.isPrimitive(Integer.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Long.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Double.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Void.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(String.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Boolean.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Byte.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Character.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Short.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(Float.class)); + + Assert.assertTrue(RestClientUtil.isPrimitive(int.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(long.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(double.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(void.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(boolean.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(byte.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(char.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(short.class)); + Assert.assertTrue(RestClientUtil.isPrimitive(float.class)); + + Assert.assertFalse(RestClientUtil.isPrimitive(Object.class)); + Assert.assertFalse(RestClientUtil.isPrimitive(Date.class)); + Assert.assertFalse(RestClientUtil.isPrimitive(Arrays.class)); + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java new file mode 100644 index 0000000..5833bca --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/clientsdk/demo/JsonTestClass.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.clientsdk.demo; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 13-Jun-2016 + */ +public class JsonTestClass { + + /** + * + */ + private String name; + + /** + * + */ + private int id; + + /** + * Constructor
+ *

+ *

+ * + * @since SDNO 0.5 + */ + public JsonTestClass() { + } + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public String getName() { + return name; + } + + /** + *
+ * + * @param name + * @since SDNO 0.5 + */ + public void setName(String name) { + this.name = name; + } + + /** + *
+ * + * @return + * @since SDNO 0.5 + */ + public int getId() { + return id; + } + + /** + *
+ * + * @param id + * @since SDNO 0.5 + */ + public void setId(int id) { + this.id = id; + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java new file mode 100644 index 0000000..ac8b4a8 --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestHttpRest.java @@ -0,0 +1,1289 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.openo.baseservice.remoteservice.exception.ServiceException; +import org.openo.baseservice.roa.util.ServiceUtil; + +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.HttpExchange; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.net.URLEncoder; + +import mockit.Expectations; +import mockit.Mock; +import mockit.MockUp; +import mockit.Mocked; +import mockit.NonStrictExpectations; +import mockit.integration.junit4.JMockit; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 13-Jun-2016 + */ +@RunWith(JMockit.class) +public class TestHttpRest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testInitHttpRest() throws Exception { + final RestfulOptions options = new RestfulOptions(); + new MockUp() { + + @Mock + public void doStart() { + System.out.println("started"); + } + }; + final HttpRest httpRest = new HttpRest(); + httpRest.initHttpRest(options); + final Field httpClient = HttpBaseRest.class.getDeclaredField("client"); + httpClient.setAccessible(true); + Assert.assertNotNull(httpClient.get(httpRest)); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testInitHttpRestExcpetion() throws Exception { + final RestfulOptions options = new RestfulOptions(); + new MockUp() { + + @Mock + public void doStart() throws Exception { + throw new Exception(); + } + }; + final HttpRest httpRest = new HttpRest(); + thrown.expect(ServiceException.class); + thrown.expectMessage("http client init failed."); + httpRest.initHttpRest(options); + final Field httpClient = HttpRest.class.getDeclaredField("client"); + httpClient.setAccessible(true); + Assert.assertNull(httpClient.get(httpRest)); + System.out.println("finished"); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testInitHttpRestNull() throws Exception { + final HttpRest httpRest = new HttpRest(); + thrown.expect(ServiceException.class); + thrown.expectMessage("option is null."); + httpRest.initHttpRest(null); + } + + /** + *
+ * + * @throws NoSuchFieldException + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testCreateRestHttpContentExchange() throws NoSuchFieldException, Exception { + final HttpBaseRest httpRest = new HttpRest(); + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + + } + + @Override + public void handleExcepion(final Throwable e) { + + } + + }; + final RestHttpContentExchange exchange = httpRest.createRestHttpContentExchange(callback); + assertNotNull(exchange); + final Field callbackField = RestHttpContentExchange.class.getDeclaredField("callback"); + assertNotNull(callbackField); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testGetStringRestfulParametes() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parametes = new RestfulParametes(); + parametes.put("id", "1234"); + parametes.put("name", "some-name"); + parametes.put("address", null); + parametes.putHttpContextHeader("Content-Type", "application/json"); + parametes.putHttpContextHeader("Accept-Encoding", "*/*"); + final RestfulResponse response = httpRest.get("path/to/service", parametes); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testGetStringRestfulParametesRestfulOptions() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulResponse response = httpRest.get("path/to/service", new RestfulParametes(), options); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testGetStringRestfulParametesEncodeError() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + new NonStrictExpectations() { + + @Mocked + URLEncoder encoder; + + { + URLEncoder.encode(anyString, RestfulClientConst.ENCODING); + result = new UnsupportedEncodingException(); + } + + }; + + thrown.expect(ServiceException.class); + thrown.expectMessage("Broken VM does not support"); + + final RestfulParametes parametes = new RestfulParametes(); + parametes.put("id", "1234"); + parametes.put("name", "some-name"); + parametes.put("address", null); + parametes.putHttpContextHeader("Content-Type", "application/json"); + parametes.putHttpContextHeader("Accept-Encoding", "*/*"); + final RestfulResponse response = httpRest.get("path/to/service", parametes); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testHeadStringRestfulParametes() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parametes = new RestfulParametes(); + parametes.put("id", "1234"); + parametes.put("name", "some-name"); + parametes.put("address", null); + parametes.putHttpContextHeader("Content-Type", ""); + parametes.putHttpContextHeader("Accept-Encoding", ""); + final RestfulResponse response = httpRest.head("path/to/service", parametes); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testHeadStringRestfulParametesRestfulOptions() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parametes = new RestfulParametes(); + parametes.put("id", "1234"); + parametes.put("name", "some-name"); + parametes.put("address", null); + parametes.putHttpContextHeader("Content-Type", ""); + parametes.putHttpContextHeader("Accept-Encoding", ""); + new Expectations() { + + ServiceUtil serviceUtil; + + { + serviceUtil = new ServiceUtil(anyString, anyString); + serviceUtil.getServiceHost(); + returns("127.0.0.1"); + + serviceUtil.getServicePort(); + returns(10); + } + + }; + final RestfulResponse response = httpRest.head("path/to/service", parametes, options); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @param options + * @return + * @throws ServiceException + * @since SDNO 0.5 + */ + private HttpRest getHttpRest(final RestfulOptions options) throws ServiceException { + final HttpRest httpRest = new HttpRest(); + { + new MockUp() { + + @Mock + public void doStart() { + System.out.println("started"); + } + + @Mock + public void send(final HttpExchange exchange) throws IOException { + System.out.println("send"); + } + }; + httpRest.initHttpRest(options); + + } + return httpRest; + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testAsyncGetStringRestfulParametesRestfulAsyncCallback() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncGet("path/to/service", new RestfulParametes(), callback); + httpRest.asyncGet("path/to/service", new RestfulParametes(), null); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testAsyncGetStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncGet("path/to/service", new RestfulParametes(), new RestfulOptions(), callback); + httpRest.asyncGet("path/to/service", new RestfulParametes(), new RestfulOptions(), null); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testPutStringRestfulParametes() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parametes = new RestfulParametes(); + parametes.put("id", "1234"); + parametes.put("name", "some-name"); + parametes.put("address", null); + parametes.putHttpContextHeader("Content-Type", ""); + parametes.putHttpContextHeader("Accept-Encoding", ""); + new Expectations() { + + ServiceUtil serviceUtil; + + { + serviceUtil = new ServiceUtil(anyString, anyString); + serviceUtil.getServiceHost(); + returns("127.0.0.1"); + + serviceUtil.getServicePort(); + returns(-1); + } + + }; + final RestfulResponse response = httpRest.put("path/to/service", parametes); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testPutStringRestfulParametesRestfulOptions() throws ServiceException { + + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parametes = new RestfulParametes(); + parametes.put("id", "1234"); + parametes.put("name", "some-name"); + parametes.put("address", null); + parametes.putHttpContextHeader("Content-Type", ""); + parametes.putHttpContextHeader("Accept-Encoding", ""); + new Expectations() { + + ServiceUtil serviceUtil; + + { + serviceUtil = new ServiceUtil(anyString, anyString); + serviceUtil.getServiceHost(); + returns("127.0.0.1"); + + serviceUtil.getServicePort(); + returns(10); + } + + }; + final RestfulResponse response = httpRest.put("path/to/service", parametes, null); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testAsyncPutStringRestfulParametesRestfulAsyncCallback() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncPut("path/to/service", new RestfulParametes(), callback); + httpRest.asyncPut("path/to/service", new RestfulParametes(), null); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testAsyncPutStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncPut("path/to/service", new RestfulParametes(), new RestfulOptions(), callback); + httpRest.asyncPut("path/to/service", new RestfulParametes(), new RestfulOptions(), null); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testPostStringRestfulParametes() throws Exception { + final RestfulOptions options = new RestfulOptions(); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone"); + return HttpExchange.STATUS_EXPIRED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_EXPIRED); + return response; + } + + }; + final RestfulParametes parameters = new RestfulParametes(); + parameters.put("id", "1234"); + parameters.put("name", "some-name"); + parameters.put("address", null); + parameters.putHttpContextHeader("Content-Type", ""); + parameters.putHttpContextHeader("Accept-Encoding", ""); + + thrown.expect(ServiceException.class); + thrown.expectMessage("request is expierd"); + final RestfulResponse response = httpRest.post("http://localhost:80/path/to/service", parameters); + assertEquals(HttpExchange.STATUS_EXPIRED, response.getStatus()); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testPostStringRestfulParametesRestfulOptions() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone" + HttpExchange.STATUS_EXCEPTED); + return HttpExchange.STATUS_EXCEPTED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parameters = new RestfulParametes(); + parameters.put("id", "1234"); + parameters.put("name", "some-name"); + parameters.put("address", null); + parameters.setRawData("{ \"data\"=\"sample JSON data\""); + parameters.putHttpContextHeader("Content-Type", ""); + parameters.putHttpContextHeader("Accept-Encoding", ""); + new Expectations() { + + ServiceUtil serviceUtil; + + { + serviceUtil = new ServiceUtil(anyString, anyString); + serviceUtil.getServiceHost(); + returns("127.0.0.1"); + + serviceUtil.getServicePort(); + returns(10); + } + + }; + thrown.expect(ServiceException.class); + thrown.expectMessage("request is exception"); + final RestfulResponse response = httpRest.post("path/to/service", parameters, null); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testAsyncPostStringRestfulParametesRestfulAsyncCallback() throws Exception { + final RestfulOptions options = new RestfulOptions(); + options.setRestTimeout(10); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone:" + HttpExchange.STATUS_EXCEPTED); + return 99; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_EXCEPTED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncPost("path/to/service", new RestfulParametes(), options, callback); + httpRest.asyncPost("path/to/service", new RestfulParametes(), options, null); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testAsyncPostStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + options.setRestTimeout(10); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncPost("path/to/service", new RestfulParametes(), options, callback); + httpRest.asyncPost("path/to/service", new RestfulParametes(), options, null); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testDeleteStringRestfulParametes() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpBaseRest httpRest = getHttpRest(options); + + final RestfulResponse response = httpRest.delete("path/to/service", null); + assertEquals(-1, response.getStatus()); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testDeleteStringRestfulParametesRestfulOptions() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parameters = new RestfulParametes(); + parameters.put("id", "1234"); + parameters.put("name", "some-name"); + parameters.put("address", null); + parameters.setRawData("{ \"data\"=\"sample JSON data\""); + parameters.putHttpContextHeader("Content-Type", ""); + parameters.putHttpContextHeader("Accept-Encoding", ""); + new Expectations() { + + ServiceUtil serviceUtil; + + { + serviceUtil = new ServiceUtil(anyString, anyString); + serviceUtil.getServiceHost(); + returns("127.0.0.1"); + + serviceUtil.getServicePort(); + returns(10); + } + + }; + final RestfulResponse response = httpRest.delete("path/to/service", parameters, options); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testAsyncDeleteStringRestfulParametesRestfulAsyncCallback() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + options.setRestTimeout(10); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncDelete("path/to/service", new RestfulParametes(), callback); + httpRest.asyncDelete("path/to/service", new RestfulParametes(), null); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testAsyncDeleteStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + options.setRestTimeout(10); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncDelete("path/to/service", new RestfulParametes(), options, callback); + httpRest.asyncDelete("path/to/service", new RestfulParametes(), options, null); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testPatchStringRestfulParametes() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parameters = new RestfulParametes(); + parameters.put("id", "1234"); + parameters.put("name", "some-name"); + parameters.put("address", null); + parameters.setRawData("{ \"data\"=\"sample JSON data\""); + parameters.putHttpContextHeader("Content-Type", ""); + parameters.putHttpContextHeader("Accept-Encoding", ""); + new Expectations() { + + ServiceUtil serviceUtil; + + { + serviceUtil = new ServiceUtil(anyString, anyString); + serviceUtil.getServiceHost(); + returns("127.0.0.1"); + + serviceUtil.getServicePort(); + returns(10); + } + + }; + final RestfulResponse response = httpRest.patch("path/to/service", parameters); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Ignore + @Test + public void testPatchStringRestfulParametesRestfulOptions() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + final RestfulParametes parameters = new RestfulParametes(); + parameters.put("id", "1234"); + parameters.put("name", "some-name"); + parameters.put("address", null); + parameters.setRawData("{ \"data\"=\"sample JSON data\""); + parameters.putHttpContextHeader("Content-Type", ""); + parameters.putHttpContextHeader("Accept-Encoding", ""); + new Expectations() { + + ServiceUtil serviceUtil; + + { + serviceUtil = new ServiceUtil(anyString, anyString); + serviceUtil.getServiceHost(); + returns("127.0.0.1"); + + serviceUtil.getServicePort(); + returns(10); + } + + }; + final RestfulResponse response = httpRest.patch("path/to/service", parameters, options); + assertEquals(HttpExchange.STATUS_COMPLETED, response.getStatus()); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testAsyncPatchStringRestfulParametesRestfulAsyncCallback() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + options.setRestTimeout(10); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncPatch("path/to/service", new RestfulParametes(), callback); + httpRest.asyncPatch("path/to/service", new RestfulParametes(), null); + } + + /** + *
+ * + * @throws ServiceException + * @since SDNO 0.5 + */ + @Test + public void testAsyncPatchStringRestfulParametesRestfulOptionsRestfulAsyncCallback() throws ServiceException { + final RestfulOptions options = new RestfulOptions(); + options.setRestTimeout(10); + + final HttpBaseRest httpRest = getHttpRest(options); + new MockUp() { + + @Mock + public int waitForDone() { + System.out.println("waitForDone:" + HttpExchange.STATUS_COMPLETED); + return HttpExchange.STATUS_COMPLETED; + } + + @Mock + public RestfulResponse getResponse() throws IOException { + final RestfulResponse response = new RestfulResponse(); + response.setStatus(HttpExchange.STATUS_COMPLETED); + return response; + } + + }; + + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + System.out.println("callback called."); + + } + + @Override + public void handleExcepion(final Throwable e) { + + System.out.println("handleExcepion called."); + } + + }; + httpRest.asyncPatch("path/to/service", new RestfulParametes(), options, callback); + httpRest.asyncPatch("path/to/service", new RestfulParametes(), options, null); + } + +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java new file mode 100644 index 0000000..094e43d --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestHttpContentExchange.java @@ -0,0 +1,590 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.openo.baseservice.remoteservice.exception.ServiceException; + +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.eclipse.jetty.client.Address; +import org.eclipse.jetty.client.CachedExchange; +import org.eclipse.jetty.client.HttpDestination; +import org.eclipse.jetty.client.HttpExchange; +import org.eclipse.jetty.http.HttpFields; +import org.eclipse.jetty.http.HttpHeaders; +import org.eclipse.jetty.io.Buffer; +import org.eclipse.jetty.io.ByteArrayBuffer; +import org.eclipse.jetty.util.StringUtil; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.zip.GZIPInputStream; + +import mockit.Mock; +import mockit.MockUp; +import mockit.Mocked; +import mockit.integration.junit4.JMockit; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 20-Jun-2016 + */ +@RunWith(JMockit.class) +public class TestRestHttpContentExchange { + + @Mocked + HttpDestination mockedDest; + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.ERROR); + } + + /** + *
+ * + * @throws IOException + * @since SDNO 0.5 + */ + @Test + public void testOnRequestCommitted() throws IOException { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.onRequestCommitted(); + + LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG); + exchange.onRequestCommitted(); + } + + /** + *
+ * + * @throws IOException + * @since SDNO 0.5 + */ + @Test + public void testOnRequestComplete() throws IOException { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.onRequestComplete(); + + LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG); + exchange.onRequestComplete(); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testOnResponseComplete() throws Exception { + RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.onResponseComplete(); + + LogManager.getLogger(RestHttpContentExchange.class).setLevel(Level.DEBUG); + exchange.onResponseComplete(); + + final AtomicInteger isCallback = new AtomicInteger(0); + final AtomicInteger isException = new AtomicInteger(0); + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + isCallback.set(1); + } + + @Override + public void handleExcepion(final Throwable e) { + isException.set(1); + } + + }; + + final Field statusField = HttpExchange.class.getDeclaredField("_status"); + statusField.setAccessible(true); + exchange = new RestHttpContentExchange(false, callback); + statusField.set(exchange, new AtomicInteger(200)); + exchange.setAddress(new Address("localhost", 9999)); + exchange.setRequestURI("/the/request/uri"); + exchange.onResponseComplete(); + assertEquals(1, isCallback.get()); + assertEquals(0, isException.get()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testDecompressGzipToStr() throws Exception { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + + final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz"); + final byte[] binaryData = new byte[1024]; + stream.read(binaryData); + final String expected = "sample data."; + + final String actual = exchange.decompressGzipToStr(binaryData); + + System.out.println("actual: '" + actual + "'"); + System.out.println("expected: '" + expected + "'"); + assertEquals(actual, expected); + + new MockUp() { + + @Mock + public int read() throws Exception { + throw new IOException(); + } + + @Mock + public int read(final byte abyte0[], final int i, final int j) { + + return -1; + } + + }; + + thrown.expect(IOException.class); + exchange.decompressGzipToStr(binaryData); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testDecompressGzipToStrException() throws Exception { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + + final InputStream stream = ClassLoader.getSystemResourceAsStream("sample.txt.gz"); + final byte[] binaryData = new byte[1024]; + stream.read(binaryData); + final String expected = "sample data."; + + new MockUp() { + + @Mock + public void close() throws IOException { + throw new IOException(); + } + + }; + + new MockUp() { + + @Mock + public void close() throws IOException { + throw new IOException(); + } + + }; + + new MockUp() { + + @Mock + public void close() throws IOException { + throw new IOException(); + } + + }; + + final String actual = exchange.decompressGzipToStr(binaryData); + + System.out.println("actual: '" + actual + "'"); + System.out.println("expected: '" + expected + "'"); + assertEquals(actual, expected); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testDecompressGzipToStrNull() throws Exception { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + final String expected = ""; + final String actual = exchange.decompressGzipToStr(null); + + System.out.println("actual: '" + actual + "'"); + System.out.println("expected: '" + expected + "'"); + assertEquals(actual, expected); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testOnResponseHeaderBufferBuffer() throws Exception { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + + final Buffer name = new ByteArrayBuffer("key"); + final Buffer value = new ByteArrayBuffer("value"); + exchange.onResponseHeader(name, value); + + new MockUp() { + + @Mock + public int getOrdinal(final Buffer buffer) { + return HttpHeaders.CONTENT_ENCODING_ORDINAL; + } + + }; + exchange.onResponseHeader(name, value); + + new MockUp() { + + @Mock + public String asciiToLowerCase(final String s) { + return "gzip"; + } + + }; + exchange.onResponseHeader(name, value); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testOnExceptionThrowable() { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.onException(new Exception()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testOnExceptionThrowableWithCallback() { + final AtomicInteger isCallback = new AtomicInteger(0); + final AtomicInteger isException = new AtomicInteger(0); + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + isCallback.set(1); + } + + @Override + public void handleExcepion(final Throwable e) { + isException.set(1); + } + + }; + final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.onException(new Exception()); + assertEquals(0, isCallback.get()); + assertEquals(1, isException.get()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testOnConnectionFailedThrowable() { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.onConnectionFailed(new Exception()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testOnConnectionFailedThrowableException() { + final AtomicInteger isCallback = new AtomicInteger(0); + final AtomicInteger isException = new AtomicInteger(0); + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + isCallback.set(1); + } + + @Override + public void handleExcepion(final Throwable e) { + isException.set(1); + } + + }; + final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.onConnectionFailed(new Exception()); + assertEquals(0, isCallback.get()); + assertEquals(1, isException.get()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testExpireHttpDestination() { + final RestHttpContentExchange exchange = new RestHttpContentExchange(true, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.expire(mockedDest); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testExpireHttpDestinationException() throws Exception { + final AtomicInteger isCallback = new AtomicInteger(0); + final AtomicInteger isException = new AtomicInteger(0); + final List thrSet = new ArrayList(); + final RestfulAsyncCallback callback = new RestfulAsyncCallback() { + + @Override + public void callback(final RestfulResponse response) { + isCallback.set(1); + } + + @Override + public void handleExcepion(final Throwable e) { + isException.set(1); + thrSet.add(e); + } + + }; + final RestHttpContentExchange exchange = new RestHttpContentExchange(true, callback); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + exchange.expire(mockedDest); + assertEquals(0, isCallback.get()); + assertEquals(1, isException.get()); + assertEquals(1, thrSet.size()); + final Throwable t = thrSet.get(0); + assertEquals(ServiceException.class, t.getClass()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testIsGzip() throws Exception { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + + final Buffer name = new ByteArrayBuffer("key"); + final Buffer value = new ByteArrayBuffer("value"); + + new MockUp() { + + @Mock + public int getOrdinal(final Buffer buffer) { + return HttpHeaders.CONTENT_ENCODING_ORDINAL; + } + + }; + exchange.onResponseHeader(name, value); + assertFalse(exchange.isGzip()); + + new MockUp() { + + @Mock + public String asciiToLowerCase(final String s) { + return "gzip"; + } + + }; + exchange.onResponseHeader(name, value); + assertTrue(exchange.isGzip()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testGetResponse() throws Exception { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + + final Field statusField = HttpExchange.class.getDeclaredField("_status"); + statusField.setAccessible(true); + statusField.set(exchange, new AtomicInteger(200)); + + RestfulResponse response = exchange.getResponse(); + assertEquals(0, response.getStatus()); + + final HttpFields fields = new HttpFields(); + final Field headerFields = CachedExchange.class.getDeclaredField("_responseFields"); + headerFields.setAccessible(true); + headerFields.set(exchange, fields); + response = exchange.getResponse(); + assertEquals(0, response.getStatus()); + fields.add("Content-Type", "application/json"); + fields.add("Content-Encode", "UTF-8"); + response = exchange.getResponse(); + assertEquals(0, response.getStatus()); + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Test + public void testGetResponseGzip() throws Exception { + final RestHttpContentExchange exchange = new RestHttpContentExchange(false, null); + final Address address = new Address("localhost", 9999); + exchange.setAddress(address); + exchange.setRequestURI("/the/request/uri"); + new MockUp() { + + @Mock + public boolean isGzip() { + return true; + } + }; + final Field statusField = HttpExchange.class.getDeclaredField("_status"); + statusField.setAccessible(true); + statusField.set(exchange, new AtomicInteger(200)); + + final RestfulResponse response = exchange.getResponse(); + assertEquals(0, response.getStatus()); + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java new file mode 100644 index 0000000..30b5620 --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulConfigure.java @@ -0,0 +1,245 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import static org.junit.Assert.assertEquals; + +import org.openo.baseservice.util.impl.SystemEnvVariablesDefImpl; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import net.sf.json.JSONObject; + +import java.io.File; +import java.io.IOException; +import java.net.URL; + +import mockit.Mock; +import mockit.MockUp; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 20-Jun-2016 + */ +public class TestRestfulConfigure { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + setAppRoot(); + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + private static void setAppRoot() { + final URL resource = ClassLoader.getSystemResource("etc/conf/restclient.json"); + final String urlPath = resource.getPath().replace("etc/conf/restclient.json", ""); + + try { + final String path = new File(urlPath).getCanonicalPath(); + System.out.println("path: " + path); + + System.setProperty("catalina.base", path); + System.out.println("approot:" + System.getProperty("catalina.base")); + } catch(final IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Ignore + @Test + public final void testRestfulConfigure() throws Exception { + final RestfulConfigure configure = new RestfulConfigure(); + final RestfulOptions options = configure.getOptions(); + assertEquals("127.0.0.1", options.getHost()); + assertEquals(8080, options.getPort()); + assertEquals(1000, options.getIntOption("ConnectTimeout")); + assertEquals(10, options.getIntOption("thread")); + assertEquals(500000, options.getIntOption("idletimeout")); + assertEquals(10000, options.getIntOption("timeout")); + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Ignore + @Test + public final void testRestfulConfigureAppRootNull() throws Exception { + new MockUp() { + + @Mock + public String getAppRoot() { + return null; + } + + }; + final RestfulConfigure configure = new RestfulConfigure(); + final RestfulOptions options = configure.getOptions(); + + assertEquals("", options.getHost()); + assertEquals(0, options.getPort()); + assertEquals(3000, options.getIntOption("ConnectTimeout")); + assertEquals(200, options.getIntOption("thread")); + assertEquals(30000, options.getIntOption("idletimeout")); + assertEquals(30000, options.getIntOption("timeout")); + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Ignore + @Test + public final void testRestfulConfigureDefault() throws Exception { + + { + + new MockUp() { + + @Mock + public boolean isFile() { + return false; + } + }; + final RestfulConfigure configure = new RestfulConfigure(); + final RestfulOptions options = configure.getOptions(); + assertEquals("", options.getHost()); + assertEquals(0, options.getPort()); + assertEquals(3000, options.getIntOption("ConnectTimeout")); + assertEquals(200, options.getIntOption("thread")); + assertEquals(30000, options.getIntOption("idletimeout")); + assertEquals(30000, options.getIntOption("timeout")); + } + + } + + /** + *
+ * + * @throws Exception + * @since SDNO 0.5 + */ + @Ignore + @Test + public final void testRestfulConfigureException() throws Exception { + + new MockUp() { + + @Mock + JSONObject fromObject(final Object object) throws IOException { + throw new IOException(); + } + }; + + final RestfulConfigure configure = new RestfulConfigure(); + final RestfulOptions options = configure.getOptions(); + assertEquals("", options.getHost()); + assertEquals(0, options.getPort()); + assertEquals(3000, options.getIntOption("ConnectTimeout")); + assertEquals(200, options.getIntOption("thread")); + assertEquals(30000, options.getIntOption("idletimeout")); + assertEquals(30000, options.getIntOption("timeout")); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Ignore + @Test + public final void testRestfulConfigureString() { + final String configFile = "rest-client-test.json"; + final String appRoot = System.getProperty("catalina.base"); + final RestfulConfigure configure = new RestfulConfigure(appRoot + File.separator + configFile); + final RestfulOptions options = configure.getOptions(); + assertEquals("10.10.10.10", options.getHost()); + assertEquals(443, options.getPort()); + assertEquals(10, options.getIntOption("ConnectTimeout")); + assertEquals(100, options.getIntOption("thread")); + assertEquals(30, options.getIntOption("idletimeout")); + assertEquals(60, options.getIntOption("timeout")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Ignore + @Test + public final void testGetOptions() { + } +} \ No newline at end of file diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java new file mode 100644 index 0000000..70c7dea --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulFactory.java @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.openo.baseservice.remoteservice.exception.ServiceException; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import mockit.Mock; +import mockit.MockUp; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 21-Jun-2016 + */ +public class TestRestfulFactory { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetRestInstance() { + Restful instance = RestfulFactory.getRestInstance("https"); + assertNull(instance); + new MockUp() { + + @Mock + public void initHttpRest(final RestfulOptions option) throws ServiceException { + throw new ServiceException(); + } + + }; + instance = RestfulFactory.getRestInstance("http"); + assertNotNull(instance); + + instance = RestfulFactory.getRestInstance("http"); + assertNotNull(instance); + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java new file mode 100644 index 0000000..624f54c --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulOptions.java @@ -0,0 +1,315 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; + +import java.util.ArrayList; +import java.util.List; + +import mockit.integration.junit4.JMockit; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 20-Jun-2016 + */ +@RunWith(JMockit.class) +public class TestRestfulOptions { + + @Rule + final public ExpectedException thrown = ExpectedException.none(); + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetCalledServiceName() { + final RestfulOptions options = new RestfulOptions(); + final String serviceName = "sample-service"; + assertTrue(options.setCalledServiceName(serviceName)); + assertEquals(serviceName, options.getCalledServicName()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetCalledServicName() { + final RestfulOptions options = new RestfulOptions(); + final String serviceName = "sample-service"; + assertEquals("", options.getCalledServicName()); + options.setCalledServiceName(serviceName); + assertEquals(serviceName, options.getCalledServicName()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetPort() { + final RestfulOptions options = new RestfulOptions(); + final int port = 9091; + assertEquals(0, options.getPort()); + options.setPort(port); + assertEquals(port, options.getPort()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetPort() { + final RestfulOptions options = new RestfulOptions(); + final int port = 9091; + assertTrue(options.setPort(port)); + assertEquals(port, options.getPort()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetHost() { + final RestfulOptions options = new RestfulOptions(); + final String host = "localhost"; + assertEquals("", options.getHost()); + options.setHost(host); + assertEquals(host, options.getHost()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetHost() { + final RestfulOptions options = new RestfulOptions(); + final String host = "localhost"; + assertTrue(options.setHost(host)); + assertEquals(host, options.getHost()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetRestTimeout() { + final RestfulOptions options = new RestfulOptions(); + int timeout = 0; + assertFalse(options.setRestTimeout(timeout)); + assertEquals(0, options.getRestTimeout()); + + timeout = 1; + assertTrue(options.setRestTimeout(timeout)); + assertEquals(timeout, options.getRestTimeout()); + + timeout = 10; + assertTrue(options.setRestTimeout(timeout)); + assertEquals(timeout, options.getRestTimeout()); + + timeout = RestfulOptions.REST_OPTIONS_TIMEOUT_MAXTIMEOUT - 1; + assertTrue(options.setRestTimeout(timeout)); + assertEquals(timeout, options.getRestTimeout()); + + timeout = RestfulOptions.REST_OPTIONS_TIMEOUT_MAXTIMEOUT; + assertTrue(options.setRestTimeout(timeout)); + assertEquals(timeout, options.getRestTimeout()); + + timeout = RestfulOptions.REST_OPTIONS_TIMEOUT_MAXTIMEOUT + 1; + assertFalse(options.setRestTimeout(timeout)); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetRestTimeout() { + final RestfulOptions options = new RestfulOptions(); + int timeout = 0; + assertEquals(0, options.getRestTimeout()); + + timeout = 1; + assertTrue(options.setRestTimeout(timeout)); + assertEquals(timeout, options.getRestTimeout()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetOption() { + final RestfulOptions options = new RestfulOptions(); + assertNull(options.getOption("invalid")); + + options.setHost("localhost"); + Object obj = options.getOption(RestfulClientConst.HOST_KEY_NAME); + assertNotNull(obj); + assertTrue(obj instanceof String); + assertEquals("localhost", obj); + + final List list = new ArrayList(); + list.add("data"); + options.setOption("list", list); + obj = options.getOption("list"); + assertNotNull(obj); + assertTrue(obj instanceof List); + assertSame(list, obj); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetIntOption() { + final RestfulOptions options = new RestfulOptions(); + + assertEquals(0, options.getIntOption("count")); + + options.setOption("count", 1); + assertEquals(1, options.getIntOption("count")); + + thrown.expect(RuntimeException.class); + + options.setOption("string-count", "two"); + final int value = options.getIntOption("string-count"); + assertEquals(2, value); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetStringOption() { + final RestfulOptions options = new RestfulOptions(); + + assertEquals("", options.getStringOption("count")); + + options.setOption("string-count", "one"); + assertEquals("one", options.getStringOption("string-count")); + + thrown.expect(RuntimeException.class); + + options.setOption("count", 2); + final String value = options.getStringOption("count"); + assertEquals(2, value); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetOption() { + final RestfulOptions options = new RestfulOptions(); + assertNull(options.getOption("invalid")); + + options.setHost("localhost"); + Object obj = options.getOption(RestfulClientConst.HOST_KEY_NAME); + assertNotNull(obj); + assertTrue(obj instanceof String); + assertEquals("localhost", obj); + + final List list = new ArrayList(); + list.add("data"); + options.setOption("list", list); + obj = options.getOption("list"); + assertNotNull(obj); + assertTrue(obj instanceof List); + assertSame(list, obj); + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java new file mode 100644 index 0000000..fd6fd9f --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulParametes.java @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.HashMap; +import java.util.Map; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 21-Jun-2016 + */ +public class TestRestfulParametes { + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGet() { + final RestfulParametes params = new RestfulParametes(); + assertNull(params.get("param")); + final Map paramMap = new HashMap(); + params.setParamMap(paramMap); + paramMap.put("param", "value"); + assertEquals("value", params.get("param")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetRawData() { + final RestfulParametes params = new RestfulParametes(); + final String data = "Sample data."; + params.setRawData(data); + assertEquals(data, params.getRawData()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetRawData() { + final RestfulParametes params = new RestfulParametes(); + assertNull(params.getRawData()); + final String data = "Sample data."; + params.setRawData(data); + assertEquals(data, params.getRawData()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testPut() { + final RestfulParametes params = new RestfulParametes(); + params.put("somekey", "somevalue"); + params.put("otherkey", "othervalue"); + assertEquals("somevalue", params.get("somekey")); + assertEquals("othervalue", params.get("otherkey")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testPutHttpContextHeaderStringString() { + final RestfulParametes params = new RestfulParametes(); + params.putHttpContextHeader("Context-Encoding", "UTF-8"); + assertEquals("UTF-8", params.getHttpContextHeader("Context-Encoding")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testPutHttpContextHeaderStringInt() { + final RestfulParametes params = new RestfulParametes(); + params.putHttpContextHeader("Expire-At", 1000); + assertEquals("1000", params.getHttpContextHeader("Expire-At")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetHttpContextHeader() { + final RestfulParametes params = new RestfulParametes(); + params.putHttpContextHeader("Expire-At", 1000); + params.putHttpContextHeader("Context-Encoding", "UTF-8"); + assertEquals("1000", params.getHttpContextHeader("Expire-At")); + assertEquals("UTF-8", params.getHttpContextHeader("Context-Encoding")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetParamMap() { + final RestfulParametes params = new RestfulParametes(); + params.put("key", "value"); + final Map map = params.getParamMap(); + assertEquals("value", map.get("key")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetParamMap() { + final RestfulParametes params = new RestfulParametes(); + final Map map = new HashMap(); + map.put("key", "value"); + params.setParamMap(map); + assertEquals("value", params.get("key")); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetHeaderMap() { + final RestfulParametes params = new RestfulParametes(); + params.putHttpContextHeader("key", "value"); + final Map map = params.getHeaderMap(); + assertEquals("value", map.get("key")); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetHeaderMap() { + final RestfulParametes params = new RestfulParametes(); + final Map map = new HashMap(); + map.put("key", "value"); + params.setHeaderMap(map); + assertEquals("value", params.getHttpContextHeader("key")); + } +} diff --git a/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java new file mode 100644 index 0000000..c837aec --- /dev/null +++ b/rest-client/src/test/java/org/openo/baseservice/roa/util/restclient/TestRestfulResponse.java @@ -0,0 +1,273 @@ +/* + * Copyright (c) 2016, Huawei Technologies Co., Ltd. + * + * Licensed 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.openo.baseservice.roa.util.restclient; + +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; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import java.util.HashMap; +import java.util.Map; + +/** + *
+ *

+ *

+ * + * @author + * @version SDNO 0.5 20-Jun-2016 + */ +public class TestRestfulResponse { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @Before + public void setUp() throws Exception { + } + + /** + *
+ * + * @throws java.lang.Exception + * @since SDNO 0.5 + */ + @After + public void tearDown() throws Exception { + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetStatus() { + final RestfulResponse response = new RestfulResponse(); + int actual = response.getStatus(); + int expected = -1; + + assertEquals(expected, actual); + expected = 202; + response.setStatus(expected); + actual = response.getStatus(); + assertEquals(expected, actual); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetStatus() { + final RestfulResponse response = new RestfulResponse(); + final int expected = 10; + response.setStatus(expected); + final int actual = response.getStatus(); + assertEquals(expected, actual); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetRespHeaderMap() { + final RestfulResponse response = new RestfulResponse(); + Map expected = response.getRespHeaderMap(); + assertNull(expected); + expected = new HashMap(); + expected.put("key", "value"); + response.setRespHeaderMap(expected); + final Map actual = response.getRespHeaderMap(); + assertNotNull(actual); + assertSame(actual, expected); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetRespHeaderMap() { + final RestfulResponse response = new RestfulResponse(); + response.setRespHeaderMap(null); + Map expected = response.getRespHeaderMap(); + assertNull(expected); + expected = new HashMap(); + expected.put("key", "value"); + response.setRespHeaderMap(expected); + final Map actual = response.getRespHeaderMap(); + assertNotNull(actual); + assertSame(actual, expected); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetRespHeaderInt() { + final RestfulResponse response = new RestfulResponse(); + response.setRespHeaderMap(null); + int actual = response.getRespHeaderInt("somekey"); + assertEquals(-1, actual); + final Map headers = new HashMap(); + headers.put("key", "value"); + headers.put("count", "1"); + response.setRespHeaderMap(headers); + actual = response.getRespHeaderInt("somekey"); + assertEquals(-1, actual); + + actual = response.getRespHeaderInt("count"); + assertEquals(1, actual); + + thrown.expect(RuntimeException.class); + actual = response.getRespHeaderInt("key"); + assertEquals(1, actual); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetRespHeaderLong() { + final RestfulResponse response = new RestfulResponse(); + response.setRespHeaderMap(null); + long actual = response.getRespHeaderLong("somekey"); + assertEquals(-1, actual); + final Map headers = new HashMap(); + headers.put("key", "value"); + headers.put("count", "1"); + headers.put("max", "" + Long.MAX_VALUE); + headers.put("max++", Long.MAX_VALUE + 1 + ""); + response.setRespHeaderMap(headers); + actual = response.getRespHeaderLong("somekey"); + assertEquals(-1, actual); + + actual = response.getRespHeaderLong("count"); + assertEquals(1, actual); + + actual = response.getRespHeaderLong("max"); + assertEquals(Long.MAX_VALUE, actual); + + actual = response.getRespHeaderLong("max++"); + assertTrue(actual < 0); + + thrown.expect(RuntimeException.class); + actual = response.getRespHeaderLong("key"); + assertEquals(1, actual); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetRespHeaderStr() { + final RestfulResponse response = new RestfulResponse(); + response.setRespHeaderMap(null); + String actual = response.getRespHeaderStr("somekey"); + assertEquals(null, actual); + final Map headers = new HashMap(); + headers.put("key", "value"); + headers.put("count", "1"); + headers.put("max", "" + Long.MAX_VALUE); + response.setRespHeaderMap(headers); + actual = response.getRespHeaderStr("somekey"); + assertEquals(null, actual); + + actual = response.getRespHeaderStr("key"); + assertEquals("value", actual); + + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testGetResponseContent() { + final RestfulResponse response = new RestfulResponse(); + assertEquals(null, response.getResponseContent()); + + final String content = "{ \"content\" = \"The response content\" }"; + response.setResponseJson(content); + assertEquals(content, response.getResponseContent()); + } + + /** + *
+ * + * @since SDNO 0.5 + */ + @Test + public void testSetResponseJson() { + final RestfulResponse response = new RestfulResponse(); + assertEquals(null, response.getResponseContent()); + + final String content = "{ \"content\" = \"The response content\" }"; + response.setResponseJson(content); + assertEquals(content, response.getResponseContent()); + } +} diff --git a/rest-client/src/test/resources/etc/conf/restclient.json b/rest-client/src/test/resources/etc/conf/restclient.json new file mode 100644 index 0000000..96b749a --- /dev/null +++ b/rest-client/src/test/resources/etc/conf/restclient.json @@ -0,0 +1,11 @@ +{ + "defaulServer": + { + "host":"127.0.0.1", + "port":"8080", + }, + "ConnectTimeout":"1000", + "thread":"10", + "idletimeout":"500000", + "timeout":"10000" +} \ No newline at end of file diff --git a/rest-client/src/test/resources/rest-client-test.json b/rest-client/src/test/resources/rest-client-test.json new file mode 100644 index 0000000..230ff36 --- /dev/null +++ b/rest-client/src/test/resources/rest-client-test.json @@ -0,0 +1,11 @@ +{ + "defaulServer": + { + "host":"10.10.10.10", + "port":"443", + }, + "ConnectTimeout":"10", + "thread":"100", + "idletimeout":"30", + "timeout":"60", +} \ No newline at end of file diff --git a/rest-client/src/test/resources/sample.txt.gz b/rest-client/src/test/resources/sample.txt.gz new file mode 100644 index 0000000..a39ad49 Binary files /dev/null and b/rest-client/src/test/resources/sample.txt.gz differ -- cgit 1.2.3-korg