diff --git a/jmh/pom.xml b/jmh/pom.xml
index 459f04c..139f0b0 100644
--- a/jmh/pom.xml
+++ b/jmh/pom.xml
@@ -10,7 +10,7 @@
JsonToy-JMH
jsonthingy-jmhtests
- ${project.version}
+ 1.1
jar
diff --git a/lib/pom.xml b/lib/pom.xml
index 02630dd..c8edd04 100644
--- a/lib/pom.xml
+++ b/lib/pom.xml
@@ -10,7 +10,7 @@
JsonToy
jsonthingy
- ${project.version}
+ 1.1
jar
diff --git a/lib/src/main/java/nl/sanderhautvast/json/ser/Mapper.java b/lib/src/main/java/nl/sanderhautvast/json/ser/Mapper.java
index 06fbc6a..130ed97 100644
--- a/lib/src/main/java/nl/sanderhautvast/json/ser/Mapper.java
+++ b/lib/src/main/java/nl/sanderhautvast/json/ser/Mapper.java
@@ -5,6 +5,8 @@ import org.objectweb.asm.ClassWriter;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -17,16 +19,6 @@ public class Mapper {
private static final Map, BaseMapper>> mappers = new ConcurrentHashMap<>();
private static final ByteClassLoader generatedClassesLoader = new ByteClassLoader();
- private static final StringMapper stringMapper = new StringMapper();
- private static final BooleanMapper booleanMapper = new BooleanMapper();
-
- private static final IntegerMapper integerMapper = new IntegerMapper();
- private static final LongMapper longMapper = new LongMapper();
- private static final ShortMapper shortMapper = new ShortMapper();
- private static final ByteMapper byteMapper = new ByteMapper();
- private static final CharMapper charMapper = new CharMapper();
- private static final FloatMapper floatMapper = new FloatMapper();
- private static final DoubleMapper doubleMapper = new DoubleMapper();
/**
@@ -49,7 +41,7 @@ public class Mapper {
return b.toString();
}
- @SuppressWarnings({"unchecked", "rawtypes"})
+ @SuppressWarnings({"unchecked", "rawtypes", "UnnecessaryToStringCall"})
public static void json(StringBuilder b, Object value) {
if (value == null) {
b.append("null");
@@ -80,25 +72,26 @@ public class Mapper {
} else if (value instanceof Map) {
object(b, (Map) value);
} else {
- if (type.equals(String.class)) {
- stringMapper.json(b, (String) value);
- } else if (type.equals(Boolean.class)) {
-
- booleanMapper.json(b, (Boolean) value);
- } else if (type.equals(Integer.class)) {
- integerMapper.json(b, (Integer) value);
- } else if (type.equals(Long.class)) {
- longMapper.json(b, (Long) value);
- } else if (type.equals(Short.class)) {
- shortMapper.json(b, (Short) value);
- } else if (type.equals(Byte.class)) {
- byteMapper.json(b, (Byte) value);
- } else if (type.equals(Character.class)) {
- charMapper.json(b, (Character) value);
- } else if (type.equals(Float.class)) {
- floatMapper.json(b, (Float) value);
- } else if (type.equals(Double.class)) {
- doubleMapper.json(b, (Double) value);
+ if (type == String.class) {
+ b.append("\"");
+ Mapper.escape(b, (String) value);
+ b.append("\"");
+ } else if (type == Character.class) {
+ b.append("\"");
+ Mapper.escape(b, (Character) value);
+ b.append("\"");
+ } else if (type == Boolean.class
+ || type == Integer.class
+ || type == Long.class
+ || type == Float.class
+ || type == Double.class
+ || type == UUID.class
+ || type == Byte.class
+ || type == Short.class
+ || type == BigInteger.class
+ || type == BigDecimal.class
+ ) {
+ b.append(value.toString()); // prevents another nullcheck
} else {
BaseMapper mapper = mappers.computeIfAbsent(type, key -> createObjectMapper(type));
mapper.json(b, value);
@@ -402,77 +395,5 @@ public class Mapper {
}
}
-class BooleanMapper extends BaseMapper {
- @Override
- public void json(StringBuilder b, Boolean value) {
- b.append(value);
- }
-}
-class ShortMapper extends BaseMapper {
-
- @Override
- public void json(StringBuilder b, Short value) {
- b.append(value);
- }
-}
-
-class StringMapper extends BaseMapper {
- @Override
- public void json(StringBuilder b, String value) {
- b.append("\"");
- Mapper.escape(b, value);
- b.append("\"");
- }
-}
-
-class IntegerMapper extends BaseMapper {
-
- @Override
- public void json(StringBuilder b, Integer value) {
- b.append(value);
- }
-}
-
-class LongMapper extends BaseMapper {
-
- @Override
- public void json(StringBuilder b, Long value) {
- b.append(value);
- }
-}
-
-class ByteMapper extends BaseMapper {
-
- @Override
- protected void json(StringBuilder b, Byte value) {
- b.append(value);
- }
-}
-
-class CharMapper extends BaseMapper {
-
- @Override
- protected void json(StringBuilder b, Character value) {
- b.append("\"");
- Mapper.escape(b, value);
- b.append("\"");
- }
-}
-
-class FloatMapper extends BaseMapper {
-
- @Override
- protected void json(StringBuilder b, Float value) {
- b.append(value);
- }
-}
-
-class DoubleMapper extends BaseMapper {
-
- @Override
- protected void json(StringBuilder b, Double value) {
- b.append(value);
- }
-}
\ No newline at end of file
diff --git a/lib/src/test/java/nl/sanderhautvast/json/ser/JacksonComparisonTest.java b/lib/src/test/java/nl/sanderhautvast/json/ser/JacksonComparisonTest.java
index a73e3fd..f98ed63 100644
--- a/lib/src/test/java/nl/sanderhautvast/json/ser/JacksonComparisonTest.java
+++ b/lib/src/test/java/nl/sanderhautvast/json/ser/JacksonComparisonTest.java
@@ -22,7 +22,7 @@ public class JacksonComparisonTest {
ObjectMapper objectMapper = new ObjectMapper();
Bean1 bean1 = new Bean1();
Bean2 bean2 = new Bean2();
- bean1.setData1(UUID.randomUUID().toString());
+ bean1.setData1(UUID.randomUUID());
bean1.setBean2(bean2);
bean2.setData2(UUID.randomUUID().toString());
String valueAsString;
@@ -34,7 +34,7 @@ public class JacksonComparisonTest {
for (int i = 0; i < INNERLOOP_COUNT; i++) {
bean1 = new Bean1();
bean2 = new Bean2();
- bean1.setData1(UUID.randomUUID().toString());
+ bean1.setData1(UUID.randomUUID());
bean1.setBean2(bean2);
bean2.setData2(UUID.randomUUID().toString());
valueAsString = objectMapper.writeValueAsString(bean1);
@@ -47,7 +47,7 @@ public class JacksonComparisonTest {
for (int i = 0; i < INNERLOOP_COUNT; i++) {
bean1 = new Bean1();
bean2 = new Bean2();
- bean1.setData1(UUID.randomUUID().toString());
+ bean1.setData1(UUID.randomUUID());
bean1.setBean2(bean2);
bean2.setData2(UUID.randomUUID().toString());
jsonString = Mapper.json(bean1);
diff --git a/lib/src/test/java/nl/sanderhautvast/json/ser/nested/Bean1.java b/lib/src/test/java/nl/sanderhautvast/json/ser/nested/Bean1.java
index 4ac2838..a2c6d5f 100644
--- a/lib/src/test/java/nl/sanderhautvast/json/ser/nested/Bean1.java
+++ b/lib/src/test/java/nl/sanderhautvast/json/ser/nested/Bean1.java
@@ -1,16 +1,18 @@
package nl.sanderhautvast.json.ser.nested;
+import java.util.UUID;
+
@SuppressWarnings("unused")
public class Bean1 {
- private String data1;
+ private UUID data1;
private Bean2 bean2;
- public String getData1() {
+ public UUID getData1() {
return data1;
}
- public void setData1(String data1) {
+ public void setData1(UUID data1) {
this.data1 = data1;
}
diff --git a/pom.xml b/pom.xml
index 954ed33..fad778f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,15 +5,9 @@
JsonToy
nl.sander
jsonthingy-pom
- 1.0
+ 1.1
pom
-
- 9
- 9
- UTF-8
-
-
lib
jmh