From 5b1e5b3e3069bdc512d3388f39d7666164832f19 Mon Sep 17 00:00:00 2001 From: Arne Zelasko Date: Fri, 16 Nov 2018 15:28:34 +0100 Subject: [PATCH 1/4] add BigIntegerConverter --- .../sql2o/converters/BigIntegerConverter.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 core/src/main/java/org/sql2o/converters/BigIntegerConverter.java diff --git a/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java new file mode 100644 index 00000000..eb4d2201 --- /dev/null +++ b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java @@ -0,0 +1,32 @@ +package org.sql2o.converters; + +import java.math.BigInteger; + +public class BigIntegerConverter extends NumberConverter { + + + public BigIntegerConverter(boolean primitive) { + super(primitive); + } + + @Override + protected BigInteger convertNumberValue(Number number) { + if (number instanceof BigInteger){ + return (BigInteger)number; + } + else{ + return BigInteger.valueOf(number.intValue()); + } + + } + + @Override + protected BigInteger convertStringValue(String string) { + return BigInteger.valueOf(Integer.parseInt(string)); + } + + @Override + protected String getTypeDescription() { + return BigInteger.class.toString(); + } +} From d50c25788d2a4fbb07b0bcd6fa7dbb86e3823cbf Mon Sep 17 00:00:00 2001 From: Arne Zelasko Date: Fri, 16 Nov 2018 15:34:02 +0100 Subject: [PATCH 2/4] add to DefaultConverters --- .../main/java/org/sql2o/converters/BigIntegerConverter.java | 4 ++-- core/src/main/java/org/sql2o/converters/Convert.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java index eb4d2201..7c3f0347 100644 --- a/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java +++ b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java @@ -5,8 +5,8 @@ public class BigIntegerConverter extends NumberConverter { - public BigIntegerConverter(boolean primitive) { - super(primitive); + public BigIntegerConverter() { + super(false); } @Override diff --git a/core/src/main/java/org/sql2o/converters/Convert.java b/core/src/main/java/org/sql2o/converters/Convert.java index 68bc51fc..755d8b65 100644 --- a/core/src/main/java/org/sql2o/converters/Convert.java +++ b/core/src/main/java/org/sql2o/converters/Convert.java @@ -11,6 +11,7 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; import java.math.BigDecimal; +import java.math.BigInteger; import java.util.HashMap; import java.util.Map; import java.util.ServiceLoader; @@ -54,6 +55,7 @@ private static void fillDefaults(Map, Converter> mapToFill) { mapToFill.put(byte.class, new ByteConverter(true)); mapToFill.put(BigDecimal.class, new BigDecimalConverter()); + mapToFill.put(BigInteger.class,new BigIntegerConverter()); mapToFill.put(String.class, new StringConverter()); From c5b3612a530c204ed4027ec3eeca6951b96d38d7 Mon Sep 17 00:00:00 2001 From: Arne Zelasko Date: Wed, 21 Nov 2018 09:48:22 +0100 Subject: [PATCH 3/4] add tests for BigIntegerConverter --- core/pom.xml | 8 ++++ .../converters/BigIntegerConverterTest.java | 37 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java diff --git a/core/pom.xml b/core/pom.xml index b86567b4..98a76eae 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -110,12 +110,20 @@ ${spring-jdbc.version} + org.mockito mockito-all ${mockito.version} test + + org.assertj + assertj-core + 3.11.1 + test + + diff --git a/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java new file mode 100644 index 00000000..923ae909 --- /dev/null +++ b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java @@ -0,0 +1,37 @@ +package org.sql2o.converters; + +import org.assertj.core.api.Assertions; +import org.junit.Assert; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.math.BigInteger; + +public class BigIntegerConverterTest { + + private BigIntegerConverter bigIntegerConverter = new BigIntegerConverter(); + + @Test + public void convertNumberValue(){ + BigInteger bigInteger = bigIntegerConverter.convertNumberValue(1); + assertThat(bigInteger).isEqualTo(1); + } + + @Test + public void convertBigIntegerValue(){ + BigInteger bigInteger = bigIntegerConverter.convertNumberValue(BigInteger.valueOf(1L)); + assertThat(bigInteger).isEqualTo(1); + } + + @Test + public void convertStringValue(){ + BigInteger bigInteger = bigIntegerConverter.convertStringValue("1"); + assertThat(bigInteger).isEqualTo(1); + } + + @Test + public void getTypeDescription(){ + assertThat(bigIntegerConverter.getTypeDescription()).isEqualTo("class java.math.BigInteger"); + } +} From 146a904d32c093e4d4837ef6d237130301fe6eb6 Mon Sep 17 00:00:00 2001 From: Arne Zelasko Date: Thu, 22 Nov 2018 09:37:25 +0100 Subject: [PATCH 4/4] remove assertJ, use hamcrest matcher, converting null values --- core/pom.xml | 7 +---- .../sql2o/converters/BigIntegerConverter.java | 11 +++++-- .../converters/BigIntegerConverterTest.java | 31 ++++++++++++++----- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 98a76eae..eefd2e0a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -117,12 +117,7 @@ ${mockito.version} test - - org.assertj - assertj-core - 3.11.1 - test - + diff --git a/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java index 7c3f0347..e122a0cb 100644 --- a/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java +++ b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java @@ -11,7 +11,10 @@ public BigIntegerConverter() { @Override protected BigInteger convertNumberValue(Number number) { - if (number instanceof BigInteger){ + if(null == number){ + return null; + } + else if (number instanceof BigInteger){ return (BigInteger)number; } else{ @@ -22,7 +25,11 @@ protected BigInteger convertNumberValue(Number number) { @Override protected BigInteger convertStringValue(String string) { - return BigInteger.valueOf(Integer.parseInt(string)); + if(null != string) { + return BigInteger.valueOf(Integer.parseInt(string)); + }else{ + return null; + } } @Override diff --git a/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java index 923ae909..efce6da1 100644 --- a/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java +++ b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java @@ -1,13 +1,16 @@ package org.sql2o.converters; -import org.assertj.core.api.Assertions; -import org.junit.Assert; + import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; import java.math.BigInteger; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.hamcrest.core.IsNull.nullValue; +import static org.junit.Assert.assertThat; + public class BigIntegerConverterTest { private BigIntegerConverter bigIntegerConverter = new BigIntegerConverter(); @@ -15,23 +18,35 @@ public class BigIntegerConverterTest { @Test public void convertNumberValue(){ BigInteger bigInteger = bigIntegerConverter.convertNumberValue(1); - assertThat(bigInteger).isEqualTo(1); + assertThat(bigInteger,equalTo(BigInteger.ONE)); } @Test public void convertBigIntegerValue(){ - BigInteger bigInteger = bigIntegerConverter.convertNumberValue(BigInteger.valueOf(1L)); - assertThat(bigInteger).isEqualTo(1); + BigInteger bigInteger = bigIntegerConverter.convertNumberValue(BigInteger.ONE); + assertThat(bigInteger,equalTo(BigInteger.ONE)); } @Test public void convertStringValue(){ BigInteger bigInteger = bigIntegerConverter.convertStringValue("1"); - assertThat(bigInteger).isEqualTo(1); + assertThat(bigInteger,equalTo(BigInteger.ONE)); + } + + @Test + public void convertNullValue(){ + BigInteger bigInteger; + + bigInteger = bigIntegerConverter.convertNumberValue(null); + assertThat(bigInteger,is(nullValue())); + + bigInteger = bigIntegerConverter.convertStringValue(null); + assertThat(bigInteger,is(nullValue())); + } @Test public void getTypeDescription(){ - assertThat(bigIntegerConverter.getTypeDescription()).isEqualTo("class java.math.BigInteger"); + assertThat(bigIntegerConverter.getTypeDescription(),equalTo("class java.math.BigInteger")); } }