From 790355ecf24acc431b1fd60caeaef18b7ff8e32a Mon Sep 17 00:00:00 2001 From: Mohamed Kiswani Date: Sat, 26 Nov 2016 12:54:44 +0100 Subject: [PATCH 1/2] code style fixed --- .../javaff/detector/ApiDetectorUtil.java | 41 ++++++------------- .../javaff/factory/AbstractFactory.java | 20 ++++----- .../javaff/format/DefaultFormatter.java | 5 +-- .../rhkiswani/javaff/format/Formatter.java | 4 +- .../javaff/lang/AbstractObjectHelper.java | 4 +- .../javaff/security/escape/EscapeHandler.java | 4 +- .../{withEqualsAnnotation => }/Employee.java | 4 +- .../EmployeeByIdAnnotation.java | 2 +- .../withEqualsAnnotation => }/EmployeeX.java | 2 +- .../{withEqualsAnnotation => }/Person.java | 2 +- .../PersonByIdAnnotation.java | 2 +- .../withEqualsAnnotation => }/PersonX.java | 2 +- .../javaff/beans/ValuesHolderTest.java | 2 - .../ExceptionHandlersFactoryTest.java | 2 +- .../javaff/format/FormatUtilTest.java | 2 +- .../rhkiswani/javaff/http/HttpClientTest.java | 4 -- .../javaff/json/JsonHandlerFactoryTest.java | 2 +- .../javaff/lang/ObjectUtilsTest.java | 10 ++--- .../javaff/reflection/ReflectionTest.java | 2 +- 19 files changed, 47 insertions(+), 69 deletions(-) rename src/test/java/io/github/rhkiswani/javaff/beans/{withEqualsAnnotation => }/Employee.java (71%) rename src/test/java/io/github/rhkiswani/javaff/beans/{withIdAnnotation/withEqualsAnnotation => }/EmployeeByIdAnnotation.java (75%) rename src/test/java/io/github/rhkiswani/javaff/beans/{withOutAnnotation/withEqualsAnnotation => }/EmployeeX.java (72%) rename src/test/java/io/github/rhkiswani/javaff/beans/{withEqualsAnnotation => }/Person.java (88%) rename src/test/java/io/github/rhkiswani/javaff/beans/{withIdAnnotation/withEqualsAnnotation => }/PersonByIdAnnotation.java (91%) rename src/test/java/io/github/rhkiswani/javaff/beans/{withOutAnnotation/withEqualsAnnotation => }/PersonX.java (83%) diff --git a/src/main/java/io/github/rhkiswani/javaff/detector/ApiDetectorUtil.java b/src/main/java/io/github/rhkiswani/javaff/detector/ApiDetectorUtil.java index 232a704..925ae2f 100644 --- a/src/main/java/io/github/rhkiswani/javaff/detector/ApiDetectorUtil.java +++ b/src/main/java/io/github/rhkiswani/javaff/detector/ApiDetectorUtil.java @@ -28,47 +28,32 @@ public class ApiDetectorUtil { public static final ApiMetadata APACHE_HTTPCLIENT_API_METADATA = new ApiMetadata("org.apache.httpcomponents", "org.apache.http.NameValuePair"); public static final ApiMetadata GSON_METADATA = new ApiMetadata("com.google.code.gson", "com.google.gson.Gson"); + private static final Boolean isJPAAvailable = ApiDetectorFactory.getDetector().isAvailable(JPA_API_METADATA); + private static final Boolean isSlf4jAvailable = ApiDetectorFactory.getDetector().isAvailable(SLF4_API_METADATA); + private static final Boolean isJacksonAvailable = ApiDetectorFactory.getDetector().isAvailable(JACKSON_API_METADATA); + private static final Boolean isGsonAvailable = ApiDetectorFactory.getDetector().isAvailable(GSON_METADATA); + private static final Boolean isApacheHttpClientAvailable = ApiDetectorFactory.getDetector().isAvailable(APACHE_HTTPCLIENT_API_METADATA); - private ApiDetectorUtil(){} - private static Boolean isJPAAvailable = null; - private static Boolean isSlf4jAvailable = null; - private static Boolean isJacksonAvailable = null; - private static Boolean isGsonAvailable = null; - private static Boolean isApacheHttpClientAvailable = null; + private ApiDetectorUtil(){} - public static Boolean isJPAAvailable(){ - if(isJPAAvailable == null){ - isJPAAvailable = ApiDetectorFactory.getDetector().isAvailable(JPA_API_METADATA); - } + public static Boolean isJPAAvailable() { return isJPAAvailable; } - public static Boolean isSlf4jAvailable(){ - if(isSlf4jAvailable == null){ - isSlf4jAvailable = ApiDetectorFactory.getDetector().isAvailable(SLF4_API_METADATA); - } + public static Boolean isSlf4jAvailable() { return isSlf4jAvailable; } - public static Boolean isJacksonAvailable(){ - if(isJacksonAvailable == null){ - isJacksonAvailable = ApiDetectorFactory.getDetector().isAvailable(JACKSON_API_METADATA); - } + public static Boolean isJacksonAvailable() { return isJacksonAvailable; } - public static boolean isApacheHttpClientAvailable() { - if(isApacheHttpClientAvailable == null){ - isApacheHttpClientAvailable = ApiDetectorFactory.getDetector().isAvailable(APACHE_HTTPCLIENT_API_METADATA); - } - return isApacheHttpClientAvailable; + public static Boolean isGsonAvailable() { + return isGsonAvailable; } - public static boolean isGsonAvailable() { - if(isGsonAvailable == null){ - isGsonAvailable = ApiDetectorFactory.getDetector().isAvailable(GSON_METADATA); - } - return isGsonAvailable; + public static Boolean isApacheHttpClientAvailable() { + return isApacheHttpClientAvailable; } } diff --git a/src/main/java/io/github/rhkiswani/javaff/factory/AbstractFactory.java b/src/main/java/io/github/rhkiswani/javaff/factory/AbstractFactory.java index 9ee3562..d3689c3 100644 --- a/src/main/java/io/github/rhkiswani/javaff/factory/AbstractFactory.java +++ b/src/main/java/io/github/rhkiswani/javaff/factory/AbstractFactory.java @@ -29,28 +29,28 @@ * @since 0.0.1 * */ -public abstract class AbstractFactory { +public abstract class AbstractFactory { - private Map map = new LinkedHashMap<>(); + private Map map = new LinkedHashMap<>(); - private IMP_TYPE userDefaultImpl = null; + private T userDefaultImpl = null; - public void add(Class targetClass, IMP_TYPE t){ + public void add(Class targetClass, T t){ if (map.get(targetClass) != null){ throw new IllegalParamException(SmartException.ALREADY_EXIST, targetClass, "please use overrideImp method instated"); } map.put(targetClass, t); } - public void overrideImp(Class targetClass, IMP_TYPE t){ + public void overrideImp(Class targetClass, T t){ map.put(targetClass, t); } - public IMP_TYPE remove(Class targetClass){ + public T remove(Class targetClass){ return map.remove(targetClass); } - protected IMP_TYPE create(Class targetClass){ + protected T create(Class targetClass){ if (targetClass == null){ throw new IllegalParamException(SmartException.NULL_VAL, "Target Class"); } @@ -68,15 +68,15 @@ protected IMP_TYPE create(Class targetClass){ return getDefault(targetClass); } - public Collection listImplementations(){ + public Collection listImplementations(){ return map.values(); } - public void setDefault(IMP_TYPE userDefaultImpl) { + public void setDefault(T userDefaultImpl) { this.userDefaultImpl = userDefaultImpl; } - protected IMP_TYPE getDefault(Class targetClazz) { + protected T getDefault(Class targetClazz) { throw new NoImplementationFoundException(SmartException.NO_IMPLEMENTATION_FOUND, this.getClass().getSimpleName(), this.getClass().getSimpleName(), getDefaultImplementationUrl()); } diff --git a/src/main/java/io/github/rhkiswani/javaff/format/DefaultFormatter.java b/src/main/java/io/github/rhkiswani/javaff/format/DefaultFormatter.java index 3494eea..6303955 100644 --- a/src/main/java/io/github/rhkiswani/javaff/format/DefaultFormatter.java +++ b/src/main/java/io/github/rhkiswani/javaff/format/DefaultFormatter.java @@ -36,10 +36,9 @@ protected OUT format(IN in, Object[] params) throws FormatException { try { ArraysUtils.replace(params, null, ""); return formatVal(in, params); + } catch (FormatException e){ + throw e; } catch (Throwable t ){ - if (t instanceof FormatException) { - throw t; - } throw new FormatException(t.getMessage()); } diff --git a/src/main/java/io/github/rhkiswani/javaff/format/Formatter.java b/src/main/java/io/github/rhkiswani/javaff/format/Formatter.java index 5068ef0..e5f3890 100644 --- a/src/main/java/io/github/rhkiswani/javaff/format/Formatter.java +++ b/src/main/java/io/github/rhkiswani/javaff/format/Formatter.java @@ -22,8 +22,8 @@ * @since 0.0.1 * */ -public abstract class Formatter { +public abstract class Formatter { - protected abstract OUT format(IN in, Object[] params) throws FormatException; + protected abstract O format(I in, Object[] params) throws FormatException; } diff --git a/src/main/java/io/github/rhkiswani/javaff/lang/AbstractObjectHelper.java b/src/main/java/io/github/rhkiswani/javaff/lang/AbstractObjectHelper.java index 2b0424d..b183a95 100644 --- a/src/main/java/io/github/rhkiswani/javaff/lang/AbstractObjectHelper.java +++ b/src/main/java/io/github/rhkiswani/javaff/lang/AbstractObjectHelper.java @@ -29,11 +29,11 @@ * @since 0.0.1 * */ -public abstract class AbstractObjectHelper { +public abstract class AbstractObjectHelper { protected final ReflectionHelper reflectionHelper = ReflectionHelpersFactory.getReflectionHelper(this.getClass()); - protected abstract OUT doAction(INPUT input); + protected abstract O doAction(I i); protected List getFieldsByAnnotation(Object obj,Class annotation){ return getFieldsByAnnotation(obj, annotation, true); diff --git a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java b/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java index 2f3da89..55275f4 100644 --- a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java +++ b/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java @@ -22,8 +22,8 @@ * @since 0.0.1 * */ -public interface EscapeHandler { +public interface EscapeHandler { - OUT escape(IN in, Object... params) throws EncodeException; + O escape(I i, Object... params) throws EncodeException; } diff --git a/src/test/java/io/github/rhkiswani/javaff/beans/withEqualsAnnotation/Employee.java b/src/test/java/io/github/rhkiswani/javaff/beans/Employee.java similarity index 71% rename from src/test/java/io/github/rhkiswani/javaff/beans/withEqualsAnnotation/Employee.java rename to src/test/java/io/github/rhkiswani/javaff/beans/Employee.java index 6e5230d..0224ef9 100644 --- a/src/test/java/io/github/rhkiswani/javaff/beans/withEqualsAnnotation/Employee.java +++ b/src/test/java/io/github/rhkiswani/javaff/beans/Employee.java @@ -1,6 +1,6 @@ -package io.github.rhkiswani.javaff.beans.withEqualsAnnotation; +package io.github.rhkiswani.javaff.beans; -public class Employee extends Person{ +public class Employee extends Person { private int empId; diff --git a/src/test/java/io/github/rhkiswani/javaff/beans/withIdAnnotation/withEqualsAnnotation/EmployeeByIdAnnotation.java b/src/test/java/io/github/rhkiswani/javaff/beans/EmployeeByIdAnnotation.java similarity index 75% rename from src/test/java/io/github/rhkiswani/javaff/beans/withIdAnnotation/withEqualsAnnotation/EmployeeByIdAnnotation.java rename to src/test/java/io/github/rhkiswani/javaff/beans/EmployeeByIdAnnotation.java index ae56a65..14d2ebe 100644 --- a/src/test/java/io/github/rhkiswani/javaff/beans/withIdAnnotation/withEqualsAnnotation/EmployeeByIdAnnotation.java +++ b/src/test/java/io/github/rhkiswani/javaff/beans/EmployeeByIdAnnotation.java @@ -1,4 +1,4 @@ -package io.github.rhkiswani.javaff.beans.withIdAnnotation.withEqualsAnnotation; +package io.github.rhkiswani.javaff.beans; public class EmployeeByIdAnnotation extends PersonByIdAnnotation { diff --git a/src/test/java/io/github/rhkiswani/javaff/beans/withOutAnnotation/withEqualsAnnotation/EmployeeX.java b/src/test/java/io/github/rhkiswani/javaff/beans/EmployeeX.java similarity index 72% rename from src/test/java/io/github/rhkiswani/javaff/beans/withOutAnnotation/withEqualsAnnotation/EmployeeX.java rename to src/test/java/io/github/rhkiswani/javaff/beans/EmployeeX.java index 35787d7..cfc8005 100644 --- a/src/test/java/io/github/rhkiswani/javaff/beans/withOutAnnotation/withEqualsAnnotation/EmployeeX.java +++ b/src/test/java/io/github/rhkiswani/javaff/beans/EmployeeX.java @@ -1,4 +1,4 @@ -package io.github.rhkiswani.javaff.beans.withOutAnnotation.withEqualsAnnotation; +package io.github.rhkiswani.javaff.beans; public class EmployeeX extends PersonX { diff --git a/src/test/java/io/github/rhkiswani/javaff/beans/withEqualsAnnotation/Person.java b/src/test/java/io/github/rhkiswani/javaff/beans/Person.java similarity index 88% rename from src/test/java/io/github/rhkiswani/javaff/beans/withEqualsAnnotation/Person.java rename to src/test/java/io/github/rhkiswani/javaff/beans/Person.java index 1085f33..003ffe6 100644 --- a/src/test/java/io/github/rhkiswani/javaff/beans/withEqualsAnnotation/Person.java +++ b/src/test/java/io/github/rhkiswani/javaff/beans/Person.java @@ -1,4 +1,4 @@ -package io.github.rhkiswani.javaff.beans.withEqualsAnnotation; +package io.github.rhkiswani.javaff.beans; import io.github.rhkiswani.javaff.beans.ValuesHolder; import io.github.rhkiswani.javaff.lang.annotations.EqualsField; diff --git a/src/test/java/io/github/rhkiswani/javaff/beans/withIdAnnotation/withEqualsAnnotation/PersonByIdAnnotation.java b/src/test/java/io/github/rhkiswani/javaff/beans/PersonByIdAnnotation.java similarity index 91% rename from src/test/java/io/github/rhkiswani/javaff/beans/withIdAnnotation/withEqualsAnnotation/PersonByIdAnnotation.java rename to src/test/java/io/github/rhkiswani/javaff/beans/PersonByIdAnnotation.java index 1c59b36..f317dbc 100644 --- a/src/test/java/io/github/rhkiswani/javaff/beans/withIdAnnotation/withEqualsAnnotation/PersonByIdAnnotation.java +++ b/src/test/java/io/github/rhkiswani/javaff/beans/PersonByIdAnnotation.java @@ -1,4 +1,4 @@ -package io.github.rhkiswani.javaff.beans.withIdAnnotation.withEqualsAnnotation; +package io.github.rhkiswani.javaff.beans; import io.github.rhkiswani.javaff.beans.ValuesHolder; import io.github.rhkiswani.javaff.lang.annotations.HashcodeField; diff --git a/src/test/java/io/github/rhkiswani/javaff/beans/withOutAnnotation/withEqualsAnnotation/PersonX.java b/src/test/java/io/github/rhkiswani/javaff/beans/PersonX.java similarity index 83% rename from src/test/java/io/github/rhkiswani/javaff/beans/withOutAnnotation/withEqualsAnnotation/PersonX.java rename to src/test/java/io/github/rhkiswani/javaff/beans/PersonX.java index be916a1..8e48239 100644 --- a/src/test/java/io/github/rhkiswani/javaff/beans/withOutAnnotation/withEqualsAnnotation/PersonX.java +++ b/src/test/java/io/github/rhkiswani/javaff/beans/PersonX.java @@ -1,4 +1,4 @@ -package io.github.rhkiswani.javaff.beans.withOutAnnotation.withEqualsAnnotation; +package io.github.rhkiswani.javaff.beans; import io.github.rhkiswani.javaff.beans.ValuesHolder; diff --git a/src/test/java/io/github/rhkiswani/javaff/beans/ValuesHolderTest.java b/src/test/java/io/github/rhkiswani/javaff/beans/ValuesHolderTest.java index db65b76..b675da4 100644 --- a/src/test/java/io/github/rhkiswani/javaff/beans/ValuesHolderTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/beans/ValuesHolderTest.java @@ -1,7 +1,5 @@ package io.github.rhkiswani.javaff.beans; -import io.github.rhkiswani.javaff.beans.withIdAnnotation.withEqualsAnnotation.EmployeeByIdAnnotation; -import io.github.rhkiswani.javaff.beans.withIdAnnotation.withEqualsAnnotation.PersonByIdAnnotation; import io.github.rhkiswani.javaff.lang.annotations.EqualsField; import io.github.rhkiswani.javaff.lang.annotations.HashcodeField; import io.github.rhkiswani.javaff.lang.annotations.ToString; diff --git a/src/test/java/io/github/rhkiswani/javaff/exceptions/ExceptionHandlersFactoryTest.java b/src/test/java/io/github/rhkiswani/javaff/exceptions/ExceptionHandlersFactoryTest.java index ff67afa..ae42067 100644 --- a/src/test/java/io/github/rhkiswani/javaff/exceptions/ExceptionHandlersFactoryTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/exceptions/ExceptionHandlersFactoryTest.java @@ -1,6 +1,6 @@ package io.github.rhkiswani.javaff.exceptions; -import io.github.rhkiswani.javaff.beans.withOutAnnotation.withEqualsAnnotation.EmployeeX; +import io.github.rhkiswani.javaff.beans.EmployeeX; import io.github.rhkiswani.javaff.format.FormatUtil; import io.github.rhkiswani.javaff.lang.exceptions.IllegalParamException; import org.junit.Before; diff --git a/src/test/java/io/github/rhkiswani/javaff/format/FormatUtilTest.java b/src/test/java/io/github/rhkiswani/javaff/format/FormatUtilTest.java index b45b015..fc47d5e 100644 --- a/src/test/java/io/github/rhkiswani/javaff/format/FormatUtilTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/format/FormatUtilTest.java @@ -1,6 +1,6 @@ package io.github.rhkiswani.javaff.format; -import io.github.rhkiswani.javaff.beans.withOutAnnotation.withEqualsAnnotation.EmployeeX; +import io.github.rhkiswani.javaff.beans.EmployeeX; import org.assertj.core.util.Arrays; import org.junit.Test; diff --git a/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java b/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java index 5208704..7db5188 100644 --- a/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java @@ -16,10 +16,6 @@ @RunWith(PowerMockRunner.class) public class HttpClientTest { - @Before - public void setup(){ - } - @Test @PrepareForTest(ApiDetectorUtil.class) public void testFactory() throws Exception { diff --git a/src/test/java/io/github/rhkiswani/javaff/json/JsonHandlerFactoryTest.java b/src/test/java/io/github/rhkiswani/javaff/json/JsonHandlerFactoryTest.java index 99bd953..49aae1c 100644 --- a/src/test/java/io/github/rhkiswani/javaff/json/JsonHandlerFactoryTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/json/JsonHandlerFactoryTest.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; -import io.github.rhkiswani.javaff.beans.withOutAnnotation.withEqualsAnnotation.EmployeeX; +import io.github.rhkiswani.javaff.beans.EmployeeX; import io.github.rhkiswani.javaff.factory.exceptions.NoImplementationFoundException; import io.github.rhkiswani.javaff.json.annotations.GsonBean; import io.github.rhkiswani.javaff.json.annotations.JacksonBean; diff --git a/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java b/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java index af041cc..730a81f 100644 --- a/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java @@ -1,10 +1,10 @@ package io.github.rhkiswani.javaff.lang; -import io.github.rhkiswani.javaff.beans.withEqualsAnnotation.Employee; -import io.github.rhkiswani.javaff.beans.withEqualsAnnotation.Person; -import io.github.rhkiswani.javaff.beans.withIdAnnotation.withEqualsAnnotation.EmployeeByIdAnnotation; -import io.github.rhkiswani.javaff.beans.withIdAnnotation.withEqualsAnnotation.PersonByIdAnnotation; -import io.github.rhkiswani.javaff.beans.withOutAnnotation.withEqualsAnnotation.EmployeeX; +import io.github.rhkiswani.javaff.beans.Employee; +import io.github.rhkiswani.javaff.beans.Person; +import io.github.rhkiswani.javaff.beans.EmployeeByIdAnnotation; +import io.github.rhkiswani.javaff.beans.PersonByIdAnnotation; +import io.github.rhkiswani.javaff.beans.EmployeeX; import io.github.rhkiswani.javaff.lang.utils.ObjectUtils; import org.junit.Test; diff --git a/src/test/java/io/github/rhkiswani/javaff/reflection/ReflectionTest.java b/src/test/java/io/github/rhkiswani/javaff/reflection/ReflectionTest.java index e1b8661..045feda 100644 --- a/src/test/java/io/github/rhkiswani/javaff/reflection/ReflectionTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/reflection/ReflectionTest.java @@ -1,6 +1,6 @@ package io.github.rhkiswani.javaff.reflection; -import io.github.rhkiswani.javaff.beans.withOutAnnotation.withEqualsAnnotation.EmployeeX; +import io.github.rhkiswani.javaff.beans.EmployeeX; import io.github.rhkiswani.javaff.exceptions.SmartException; import org.junit.Before; import org.junit.Test; From 8ed5c2c2cddc445cd44d11c4ca1f77013720a8e1 Mon Sep 17 00:00:00 2001 From: Mohamed Kiswani Date: Sat, 26 Nov 2016 16:19:05 +0100 Subject: [PATCH 2/2] #29 #26 --- pom.xml | 38 +++++--- .../javaff/exceptions/SmartException.java | 4 +- .../javaff/httpclient/ApacheHttpClient.java | 3 +- .../javaff/httpclient/HttpClientWrapper.java | 2 +- .../javaff/json/exceptions/JsonException.java | 1 - .../javaff/lang/utils/StringUtils.java | 5 - .../rhkiswani/javaff/locale/LocaleUtil.java | 10 +- .../rhkiswani/javaff/log/LogWrapper.java | 10 +- .../reflection/DefaultReflectionHelper.java | 28 ++++-- .../security/escape/DefaultEscapeHandler.java | 47 ---------- .../javaff/security/escape/EscapeHandler.java | 29 ------ .../javaff/security/escape/EscapeUtil.java | 38 -------- .../security/escape/EscapeersFactory.java | 45 --------- .../security/escape/StringEscapeHandler.java | 50 ---------- .../escape/exception/EncodeException.java | 34 ------- .../javaff/detector/ApiMeadataTest.java | 7 ++ .../rhkiswani/javaff/http/HttpClientTest.java | 83 +++++++++++------ .../rhkiswani/javaff/http/WebTester.java | 93 +++++++++++++++++++ .../javaff/lang/ObjectUtilsTest.java | 7 -- .../javaff/lang/StringUtilsTest.java | 17 ---- .../rhkiswani/javaff/locale/LocaleTest.java | 10 +- tools/deploy.sh | 2 +- 22 files changed, 226 insertions(+), 337 deletions(-) delete mode 100644 src/main/java/io/github/rhkiswani/javaff/security/escape/DefaultEscapeHandler.java delete mode 100644 src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java delete mode 100644 src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeUtil.java delete mode 100644 src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeersFactory.java delete mode 100644 src/main/java/io/github/rhkiswani/javaff/security/escape/StringEscapeHandler.java delete mode 100644 src/main/java/io/github/rhkiswani/javaff/security/escape/exception/EncodeException.java create mode 100644 src/test/java/io/github/rhkiswani/javaff/http/WebTester.java delete mode 100644 src/test/java/io/github/rhkiswani/javaff/lang/StringUtilsTest.java diff --git a/pom.xml b/pom.xml index afe8ec7..5b0cac1 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ 1.10.19 1.6.6 2.0-alpha2 + 9.4.0.RC2 3.6.0 @@ -59,7 +60,7 @@ 2.10.4 1.6 4.3.0 - 0.7.7.201606060606 + 2.7 @@ -169,6 +170,21 @@ test + + org.eclipse.jetty + jetty-server + ${jetty.version} + test + + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + test + + + @@ -203,17 +219,15 @@ - org.jacoco - jacoco-maven-plugin - ${mvn.plugin.jacoco.version} - - - prepare-agent - - prepare-agent - - - + org.codehaus.mojo + cobertura-maven-plugin + ${mvn.plugin.cobertura.version} + + xml + 256m + + true + maven-surefire-plugin diff --git a/src/main/java/io/github/rhkiswani/javaff/exceptions/SmartException.java b/src/main/java/io/github/rhkiswani/javaff/exceptions/SmartException.java index 39ef8e7..10b9eed 100644 --- a/src/main/java/io/github/rhkiswani/javaff/exceptions/SmartException.java +++ b/src/main/java/io/github/rhkiswani/javaff/exceptions/SmartException.java @@ -58,9 +58,9 @@ public SmartException(Throwable cause) { @Override public String getMessage() { if (!ArraysUtils.isEmpty(errorMsgParams)){ - return LocaleUtil.getString(super.getMessage(), errorMsgParams); + return LocaleUtil.getString(super.getMessage(), SmartException.class, errorMsgParams); } else { - return LocaleUtil.getString(super.getMessage()); + return LocaleUtil.getString(super.getMessage(), SmartException.class, null); } } } diff --git a/src/main/java/io/github/rhkiswani/javaff/httpclient/ApacheHttpClient.java b/src/main/java/io/github/rhkiswani/javaff/httpclient/ApacheHttpClient.java index bbdf34d..d110060 100644 --- a/src/main/java/io/github/rhkiswani/javaff/httpclient/ApacheHttpClient.java +++ b/src/main/java/io/github/rhkiswani/javaff/httpclient/ApacheHttpClient.java @@ -94,7 +94,8 @@ private CloseableHttpClient prepareRequest(HttpRequestBase method, Map urlParameters = new ArrayList<>(); for (String key : params.keySet()) { - urlParameters.add(new BasicNameValuePair(key, params.get(key))); + + urlParameters.add(new BasicNameValuePair(key, params.get(key))); } if (method instanceof HttpEntityEnclosingRequestBase){ ((HttpEntityEnclosingRequestBase) method).setEntity(new UrlEncodedFormEntity(urlParameters)); diff --git a/src/main/java/io/github/rhkiswani/javaff/httpclient/HttpClientWrapper.java b/src/main/java/io/github/rhkiswani/javaff/httpclient/HttpClientWrapper.java index 9be0e03..508f18a 100644 --- a/src/main/java/io/github/rhkiswani/javaff/httpclient/HttpClientWrapper.java +++ b/src/main/java/io/github/rhkiswani/javaff/httpclient/HttpClientWrapper.java @@ -48,7 +48,7 @@ public String post(String url, Map params, Map h @Override public String put(String url, Map params, Map headers) throws HttpClientException { - return httpClient.post(url, params, headers); + return httpClient.put(url, params, headers); } @Override diff --git a/src/main/java/io/github/rhkiswani/javaff/json/exceptions/JsonException.java b/src/main/java/io/github/rhkiswani/javaff/json/exceptions/JsonException.java index 6530976..24067a8 100644 --- a/src/main/java/io/github/rhkiswani/javaff/json/exceptions/JsonException.java +++ b/src/main/java/io/github/rhkiswani/javaff/json/exceptions/JsonException.java @@ -26,5 +26,4 @@ public class JsonException extends SmartException{ public JsonException(String errorMsg, Object... errorMsgParams) { super(errorMsg, errorMsgParams); } - } diff --git a/src/main/java/io/github/rhkiswani/javaff/lang/utils/StringUtils.java b/src/main/java/io/github/rhkiswani/javaff/lang/utils/StringUtils.java index 75f5e3e..1e7d37d 100644 --- a/src/main/java/io/github/rhkiswani/javaff/lang/utils/StringUtils.java +++ b/src/main/java/io/github/rhkiswani/javaff/lang/utils/StringUtils.java @@ -16,7 +16,6 @@ package io.github.rhkiswani.javaff.lang.utils; import io.github.rhkiswani.javaff.lang.ToStringHelper; -import io.github.rhkiswani.javaff.security.escape.EscapeersFactory; /** * @author Mohamed Kiswani @@ -29,10 +28,6 @@ public static String toString(Object obj) { return new ToStringHelper().toString(obj); } - public static String escape(String input) { - return (String) EscapeersFactory.getEscapeer(String.class).escape(input); - } - public static boolean isEmpty(String input){ return input == null || input.isEmpty(); } diff --git a/src/main/java/io/github/rhkiswani/javaff/locale/LocaleUtil.java b/src/main/java/io/github/rhkiswani/javaff/locale/LocaleUtil.java index 404349b..8409a26 100644 --- a/src/main/java/io/github/rhkiswani/javaff/locale/LocaleUtil.java +++ b/src/main/java/io/github/rhkiswani/javaff/locale/LocaleUtil.java @@ -49,8 +49,16 @@ private LocaleUtil(){ DEFAULT_MSGS.put(SmartException.NO_IMPLEMENTATION_FOUND, "No implementation found for {0} you need to set implementation through {1}.instance().add or add {2} to your classpath"); } - public static String getString(String key, Object... params){ + @Deprecated + /** + * use public static String getString(String key, Class targetClass, Object[] params) instead + */ + public static String getString(String key, Object[] params){ Class targetClass = ReflectionUtil.getCallerClass(1); + return getString(key, targetClass, params); + } + + public static String getString(String key, Class targetClass, Object[] params) { LocaleWorker worker = LocaleWorkersFactory.getLocalWorker(targetClass); String label = worker.getString(key, params); if (!StringUtils.isEmpty(label) && label.equals(key) && DEFAULT_MSGS.get(key) != null){ diff --git a/src/main/java/io/github/rhkiswani/javaff/log/LogWrapper.java b/src/main/java/io/github/rhkiswani/javaff/log/LogWrapper.java index 0d16921..1e7aba1 100644 --- a/src/main/java/io/github/rhkiswani/javaff/log/LogWrapper.java +++ b/src/main/java/io/github/rhkiswani/javaff/log/LogWrapper.java @@ -33,26 +33,26 @@ public LogWrapper(Log log) { @Override public void debug(String message, Object... params) { - log.debug(LocaleUtil.getString(message, params)); + log.debug(LocaleUtil.getString(message, LogWrapper.class, params)); } @Override public void info(String message, Object... params) { - log.info(LocaleUtil.getString(message, params)); + log.info(LocaleUtil.getString(message, LogWrapper.class, params)); } @Override public void warn(String message, Object... params) { - log.warn(LocaleUtil.getString(message, params)); + log.warn(LocaleUtil.getString(message, LogWrapper.class, params)); } @Override public void error(String message, Object... params) { - log.error(LocaleUtil.getString(message, params)); + log.error(LocaleUtil.getString(message, LogWrapper.class, params)); } @Override public void error(String message, Exception e, Object... params) { - log.error(LocaleUtil.getString(message, params), e); + log.error(LocaleUtil.getString(message, LogWrapper.class, params), e); } } diff --git a/src/main/java/io/github/rhkiswani/javaff/reflection/DefaultReflectionHelper.java b/src/main/java/io/github/rhkiswani/javaff/reflection/DefaultReflectionHelper.java index 142e685..354741a 100644 --- a/src/main/java/io/github/rhkiswani/javaff/reflection/DefaultReflectionHelper.java +++ b/src/main/java/io/github/rhkiswani/javaff/reflection/DefaultReflectionHelper.java @@ -20,6 +20,7 @@ import io.github.rhkiswani.javaff.reflection.exception.ReflectionException; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -29,7 +30,13 @@ * @see io.github.rhkiswani.javaff.reflection.ReflectionHelper */ public class DefaultReflectionHelper implements ReflectionHelper{ + private static final ArrayList IGNORE_NAMES = new ArrayList<>(); + static { + IGNORE_NAMES.add("$jacocoData"); + IGNORE_NAMES.add("__cobertura_counters"); + IGNORE_NAMES.add("this$"); + } @Override public List scanFieldsByAnnotation(Class clazz, Class... annotations) throws ReflectionException { if (clazz == null){ @@ -43,8 +50,7 @@ public List scanFieldsByAnnotation(Class clazz, Class... annotations) thr for (Field field : fields) { for (Class aClass : annotations) { if (field.isAnnotationPresent(aClass)){ - if (field != null && field.getName().contains("$jacocoData")){ - // ignore jacoco:report added fields + if (isIgnored(field)){ continue; } list.add(field); @@ -80,8 +86,7 @@ public Field getField(Class clazz, String fieldName) throws ReflectionException } Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { - if (field != null && field.getName().contains("$jacocoData")){ - // ignore jacoco:report added fields + if (isIgnored(field)){ continue; } if (field.getName().equals(fieldName)){ @@ -112,11 +117,7 @@ public List getFields(Class clazz) { LinkedList list = new LinkedList(); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { - if (field.getName().contains("this$")){ - continue; - } - if (field != null && field.getName().contains("$jacocoData")){ - // ignore jacoco:report added fields + if (isIgnored(field)){ continue; } field.setAccessible(true); @@ -128,6 +129,15 @@ public List getFields(Class clazz) { return list; } + private boolean isIgnored(Field field) { + for (String ignoreName : IGNORE_NAMES) { + if (field != null && field.getName().contains(ignoreName)){ + return true; + } + } + return false; + } + public V getFieldValue(T obj, String fieldName) throws ReflectionException { try { return (V) getField(obj.getClass(), fieldName).get(obj); diff --git a/src/main/java/io/github/rhkiswani/javaff/security/escape/DefaultEscapeHandler.java b/src/main/java/io/github/rhkiswani/javaff/security/escape/DefaultEscapeHandler.java deleted file mode 100644 index daa54e1..0000000 --- a/src/main/java/io/github/rhkiswani/javaff/security/escape/DefaultEscapeHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2016 Mohamed Kiswani. - * - * 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 io.github.rhkiswani.javaff.security.escape; - -import io.github.rhkiswani.javaff.lang.utils.ArraysUtils; -import io.github.rhkiswani.javaff.security.escape.exception.EncodeException; - -/** - * @author Mohamed Kiswani - * @since 0.0.1 - * @see EscapeHandler - */ -public abstract class DefaultEscapeHandler implements EscapeHandler { - - protected abstract OUT encodeVal(IN in, Object... params); - - @Override - public OUT escape(IN in, Object... params) throws EncodeException { - if (in == null){ - return null; - } - if (params.length > 0){ - try { - ArraysUtils.replace(params, null, ""); - return encodeVal(in, params); - } catch (Throwable t ){ - throw new EncodeException(t); - } - - } - return encodeVal(in); - } - -} diff --git a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java b/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java deleted file mode 100644 index 55275f4..0000000 --- a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeHandler.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2016 Mohamed Kiswani. - * - * 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 io.github.rhkiswani.javaff.security.escape; - -import io.github.rhkiswani.javaff.security.escape.exception.EncodeException; - -/** - * @author Mohamed Kiswani - * @since 0.0.1 - * - */ -public interface EscapeHandler { - - O escape(I i, Object... params) throws EncodeException; - -} diff --git a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeUtil.java b/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeUtil.java deleted file mode 100644 index 056d6f7..0000000 --- a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeUtil.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2016 Mohamed Kiswani. - * - * 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 io.github.rhkiswani.javaff.security.escape; - -import io.github.rhkiswani.javaff.exceptions.SmartException; -import io.github.rhkiswani.javaff.lang.exceptions.IllegalParamException; - -/** - * @author Mohamed Kiswani - * @since 0.0.1 - * - */ -public class EscapeUtil { - - private EscapeUtil(){ - - } - - public static T encodeString(String obj, Object... params){ - if (obj == null){ - throw new IllegalParamException(SmartException.NULL_VAL, "String"); - } - return (T) EscapeersFactory.getEscapeer(obj.getClass()).escape(String.valueOf(obj), params); - } -} diff --git a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeersFactory.java b/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeersFactory.java deleted file mode 100644 index 0a0d040..0000000 --- a/src/main/java/io/github/rhkiswani/javaff/security/escape/EscapeersFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2016 Mohamed Kiswani. - * - * 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 io.github.rhkiswani.javaff.security.escape; - -import io.github.rhkiswani.javaff.factory.AbstractFactory; - -/** - * @author Mohamed Kiswani - * @since 0.0.1 - * @see io.github.rhkiswani.javaff.factory.AbstractFactory - */ -public class EscapeersFactory extends AbstractFactory { - - private static EscapeersFactory instance = new EscapeersFactory(); - - private EscapeersFactory(){ - - } - - public static EscapeersFactory instance(){ - return instance; - } - - @Override - public EscapeHandler getDefault(Class targetClazz) { - return new StringEscapeHandler(); - } - - public static EscapeHandler getEscapeer(Class clazz) { - return instance.create(clazz); - } -} diff --git a/src/main/java/io/github/rhkiswani/javaff/security/escape/StringEscapeHandler.java b/src/main/java/io/github/rhkiswani/javaff/security/escape/StringEscapeHandler.java deleted file mode 100644 index 1ead644..0000000 --- a/src/main/java/io/github/rhkiswani/javaff/security/escape/StringEscapeHandler.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2016 Mohamed Kiswani. - * - * 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 io.github.rhkiswani.javaff.security.escape; - -/** - * @author Mohamed Kiswani - * @since 0.0.1 - * @see DefaultEscapeHandler - * @see EscapeHandler - */ -class StringEscapeHandler extends DefaultEscapeHandler { - - @Override - protected String encodeVal(String input, Object... params) { - StringBuilder resultStr = new StringBuilder(); - for (char ch : input.toCharArray()) { - if (isUnsafe(ch)) { - resultStr.append('%'); - resultStr.append(toHex(ch / 16)); - resultStr.append(toHex(ch % 16)); - } else { - resultStr.append(ch); - } - } - return resultStr.toString(); - } - - private static char toHex(int ch) { - return (char) (ch < 10 ? '0' + ch : 'A' + ch - 10); - } - - private static boolean isUnsafe(char ch) { - if (ch > 128 || ch < 0) - return true; - return " %$&+.,/@:;=?<>#%".indexOf(ch) >= 0; - } -} diff --git a/src/main/java/io/github/rhkiswani/javaff/security/escape/exception/EncodeException.java b/src/main/java/io/github/rhkiswani/javaff/security/escape/exception/EncodeException.java deleted file mode 100644 index 69f09f9..0000000 --- a/src/main/java/io/github/rhkiswani/javaff/security/escape/exception/EncodeException.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2016 Mohamed Kiswani. - * - * 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 io.github.rhkiswani.javaff.security.escape.exception; - -import io.github.rhkiswani.javaff.exceptions.SmartException; - -/** - * @author Mohamed Kiswani - * @since 0.0.1 - * @see io.github.rhkiswani.javaff.exceptions.SmartException - */ -public class EncodeException extends SmartException{ - - public EncodeException(String errorMsg, Object... errorMsgParams) { - super(errorMsg, errorMsgParams); - } - - public EncodeException(Throwable e) { - super(e); - } -} diff --git a/src/test/java/io/github/rhkiswani/javaff/detector/ApiMeadataTest.java b/src/test/java/io/github/rhkiswani/javaff/detector/ApiMeadataTest.java index dc149e9..f4a5e57 100644 --- a/src/test/java/io/github/rhkiswani/javaff/detector/ApiMeadataTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/detector/ApiMeadataTest.java @@ -1,5 +1,6 @@ package io.github.rhkiswani.javaff.detector; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import static io.github.rhkiswani.javaff.detector.ApiDetectorUtil.*; @@ -16,6 +17,12 @@ public void setup(){ apiMetadata2 = JACKSON_API_METADATA; } + @Test(expected=IllegalAccessException.class) + public void testConstructorPrivate() throws Exception { + ApiDetectorUtil.class.newInstance(); + Assert.fail("Utility class constructor should be private"); + } + @Test public void testEquals() throws Exception { assertThat(apiMetadata.equals(apiMetadata2)).isEqualTo(false); diff --git a/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java b/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java index 7db5188..6a6d0f6 100644 --- a/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/http/HttpClientTest.java @@ -1,40 +1,69 @@ package io.github.rhkiswani.javaff.http; -import io.github.rhkiswani.javaff.detector.ApiDetectorUtil; -import io.github.rhkiswani.javaff.factory.exceptions.NoImplementationFoundException; import io.github.rhkiswani.javaff.httpclient.HttpClient; import io.github.rhkiswani.javaff.httpclient.HttpClientFactory; -import org.junit.Before; +import io.github.rhkiswani.javaff.json.JsonHandler; +import io.github.rhkiswani.javaff.json.JsonHandlerFactory; import org.junit.Test; -import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; + +import java.util.HashMap; +import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; +public class HttpClientTest extends WebTester{ + + @Test + public void testPost() throws Exception{ + HttpClient httpClient = HttpClientFactory.getHttpClient(HttpClientTest.class); + Map params = prepareParams(); + String post = httpClient.post(BASE_URL, params, null); + assertValues("POST", params, post); + } + + @Test + public void testPostJson() throws Exception{ + HttpClient httpClient = HttpClientFactory.getHttpClient(HttpClientTest.class); + String post = httpClient.postJson(BASE_URL,"{\"method\":\"POST\"}", null); + assertJsonResponse(post, "POST"); + } + + @Test + public void testPut() throws Exception{ + String method = "PUT"; + HttpClient httpClient = HttpClientFactory.getHttpClient(HttpClientTest.class); + Map params = prepareParams(); + String put = httpClient.put(BASE_URL, params, null); + assertValues(method, params, put); + } + + private Map prepareParams() { + Map params = new HashMap<>(); + params.put("paramsEmail", "rhkiswani@gmail.com"); + return params; + } -@RunWith(PowerMockRunner.class) -public class HttpClientTest { + private void assertValues(String method, Map params, String post) { + JsonHandler handler = JsonHandlerFactory.getJsonHandler(HttpClientTest.class); + Response receivedRespond = handler.fromJson(post, Response.class); + + assertThat(receivedRespond.params).isEqualTo(params); + assertThat(receivedRespond.method).isEqualTo(method); + assertThat(receivedRespond.contentType).isEqualTo("application/x-www-form-urlencoded"); + } @Test - @PrepareForTest(ApiDetectorUtil.class) - public void testFactory() throws Exception { - // check default - HttpClient httpClient = HttpClientFactory.getHttpClient(Object.class); - assertThat(httpClient).isNotNull(); - - PowerMockito.mockStatic(ApiDetectorUtil.class); - PowerMockito.when(ApiDetectorUtil.isApacheHttpClientAvailable()).thenReturn(false); - // check if the class have been cashed - HttpClientFactory.getHttpClient(Object.class); - assertThat(httpClient).isNotNull(); - HttpClientFactory.instance().remove(Object.class); - - try { - HttpClientFactory.getHttpClient(Object.class); - }catch (Exception e){ - assertThat(e).isInstanceOf(NoImplementationFoundException.class).hasMessage("No implementation found for HttpClientFactory you need to set implementation through HttpClientFactory.instance().add or add https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient to your classpath"); - } + public void testPutJson() throws Exception{ + HttpClient httpClient = HttpClientFactory.getHttpClient(HttpClientTest.class); + String put = httpClient.putJson(BASE_URL,"{\"method\":\"PUT\"}", null); + assertJsonResponse(put, "PUT"); } + private void assertJsonResponse(String response, String method) { + JsonHandler handler = JsonHandlerFactory.getJsonHandler(HttpClientTest.class); + Response receivedRespond = handler.fromJson(response, Response.class); + + assertThat(receivedRespond.jsonParams).isEqualTo("{\"method\":\""+ method +"\"}"); + assertThat(receivedRespond.method).isEqualTo(method); + assertThat(receivedRespond.contentType).isEqualTo("application/json"); + } } diff --git a/src/test/java/io/github/rhkiswani/javaff/http/WebTester.java b/src/test/java/io/github/rhkiswani/javaff/http/WebTester.java new file mode 100644 index 0000000..ec4a833 --- /dev/null +++ b/src/test/java/io/github/rhkiswani/javaff/http/WebTester.java @@ -0,0 +1,93 @@ +package io.github.rhkiswani.javaff.http; + +import io.github.rhkiswani.javaff.json.JsonHandlerFactory; +import io.github.rhkiswani.javaff.lang.exceptions.IllegalParamException; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.handler.AbstractHandler; +import org.junit.After; +import org.junit.Before; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; +import java.io.IOException; +import java.net.BindException; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +public class WebTester { + protected static final String BASE_URL = "http://localhost:9999/testHttp"; + + protected Server server = new Server(9999); + protected ServerConnector connector = null; + + @Before + public void startJetty() throws Exception { + // Create Server + server.setHandler(new MyServlet()); + // Start Server + try { + server.start(); + }catch (BindException b){ + if (b.getMessage().contains("Address already in use")){ + server.stop(); + throw b ; + } + } + } + + @After + public void stopJetty() { + try { + server.stop(); + } + catch (Exception e) { + throw new IllegalParamException(e.getMessage()); + } + } + + private class MyServlet extends AbstractHandler { + + @Override + public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException { + httpServletResponse.setContentType(request.getContentType()); + httpServletResponse.setStatus(HttpServletResponse.SC_OK); + sendWhatReceived(httpServletRequest, httpServletResponse); + request.setHandled(true); + } + + private void sendWhatReceived(HttpServletRequest req, HttpServletResponse resp) throws IOException { + Response r = new Response(); + r.method = req.getMethod(); + r.contentType = req.getContentType(); + for (String o : req.getParameterMap().keySet()) { + r.params.put(o, req.getParameter(o)); + } + Enumeration headerNames = req.getHeaderNames(); + while (headerNames.hasMoreElements()){ + String headerName = headerNames.nextElement(); + r.requestHeaders.put(headerName, req.getHeader(headerName)); + } + if (r.contentType.equalsIgnoreCase("application/json")){ + BufferedReader br = req.getReader(); + String str; + while( (str = br.readLine()) != null ){ + r.jsonParams += str; + } + } + resp.getWriter().println(JsonHandlerFactory.getJsonHandler(WebTester.class).toJson(r)); + } + } + + protected class Response { + String method; + String contentType; + Map params = new HashMap<>(); + Map requestHeaders = new HashMap<>(); + public String jsonParams = ""; + } +} diff --git a/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java b/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java index 730a81f..51bd7d2 100644 --- a/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/lang/ObjectUtilsTest.java @@ -101,17 +101,10 @@ public void testEqualsByIdAnnotation() throws Exception { assertThat(ObjectUtils.isEqual(null, e)).isEqualTo(false); } - @Test - public void testEmptyClass() throws Exception { - assertThat(ObjectUtils.isEqual(new EmptyClass(), new EmptyClass())).isEqualTo(false); - } @Test public void testHashcode() throws Exception { assertThat(ObjectUtils.toHashCode(null)).isEqualTo(-1); } - private class EmptyClass{ - - } } diff --git a/src/test/java/io/github/rhkiswani/javaff/lang/StringUtilsTest.java b/src/test/java/io/github/rhkiswani/javaff/lang/StringUtilsTest.java deleted file mode 100644 index f8d5624..0000000 --- a/src/test/java/io/github/rhkiswani/javaff/lang/StringUtilsTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.github.rhkiswani.javaff.lang; - -import io.github.rhkiswani.javaff.lang.utils.StringUtils; -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; -public class StringUtilsTest { - - @Test - public void testStringUtils() throws Exception { - assertThat(StringUtils.escape(null)).isEqualTo(null); - assertThat(StringUtils.escape("Kiswani")).isEqualTo("Kiswani"); - assertThat(StringUtils.escape("rhkiswani@gmail.com")).isEqualTo("rhkiswani%40gmail%2Ecom"); - assertThat(StringUtils.escape("%$&+.,/@:;=?<>#%")).isEqualTo("%25%24%26%2B%2E%2C%2F%40%3A%3B%3D%3F%3C%3E%23%25"); - } - -} diff --git a/src/test/java/io/github/rhkiswani/javaff/locale/LocaleTest.java b/src/test/java/io/github/rhkiswani/javaff/locale/LocaleTest.java index 3f7c904..4c6d991 100644 --- a/src/test/java/io/github/rhkiswani/javaff/locale/LocaleTest.java +++ b/src/test/java/io/github/rhkiswani/javaff/locale/LocaleTest.java @@ -39,11 +39,11 @@ public void testDefaultWorker() throws Exception { @Test public void testLocaleUtil() throws Exception { - assertThat(LocaleUtil.getString(SmartException.EXCEEDS_LIMIT, "Array", 1000)).isEqualTo("Array MaxSize is 1,000"); - assertThat(LocaleUtil.getString(SmartException.HTTP_ERROR, "google.com")).isEqualTo("failed to connect to google.com"); - assertThat(LocaleUtil.getString("LOCALIZED_MSG", "Kiswani")).isEqualTo("this is localized msg from messages_en.properties thanks for Mr Kiswani"); - assertThat(LocaleUtil.getString(null)).isNull(); - assertThat(LocaleUtil.getString("LOCALIZED_MSG", null)).isEqualTo("this is localized msg from messages_en.properties thanks for Mr {0}"); + assertThat(LocaleUtil.getString(SmartException.EXCEEDS_LIMIT, LocaleTest.class, new Object[]{"Array", 1000})).isEqualTo("Array MaxSize is 1,000"); + assertThat(LocaleUtil.getString(SmartException.HTTP_ERROR, LocaleTest.class, new Object[]{"google.com"})).isEqualTo("failed to connect to google.com"); + assertThat(LocaleUtil.getString("LOCALIZED_MSG", LocaleTest.class, new Object[]{"Kiswani"})).isEqualTo("this is localized msg from messages_en.properties thanks for Mr Kiswani"); + assertThat(LocaleUtil.getString(null, LocaleTest.class, null)).isNull(); + assertThat(LocaleUtil.getString("LOCALIZED_MSG", LocaleTest.class, null)).isEqualTo("this is localized msg from messages_en.properties thanks for Mr {0}"); } @Test diff --git a/tools/deploy.sh b/tools/deploy.sh index e3f62fc..7daa00e 100755 --- a/tools/deploy.sh +++ b/tools/deploy.sh @@ -17,7 +17,7 @@ function getVersion(){ function prepare(){ git checkout master -# git reset --hard + git reset --hard git pull origin master getVersion }