aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/web/EnumFactory.java20
-rw-r--r--src/org/traccar/web/JsonConverter.java20
-rw-r--r--test/org/traccar/web/JsonConverterTest.java187
3 files changed, 49 insertions, 178 deletions
diff --git a/src/org/traccar/web/EnumFactory.java b/src/org/traccar/web/EnumFactory.java
deleted file mode 100644
index efbfd4b20..000000000
--- a/src/org/traccar/web/EnumFactory.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.traccar.web;
-
-import org.traccar.model.Factory;
-
-import javax.json.JsonObject;
-
-public class EnumFactory<T extends Enum<T> & Factory> {
- private Class<T> commandTypeClass;
- private String jsonKey;
-
- public EnumFactory(Class<T> commandTypeClass, String type) {
- this.commandTypeClass = commandTypeClass;
- jsonKey = type;
- }
-
- public <K> K create(JsonObject json) {
- Factory factory = Enum.valueOf(commandTypeClass, json.getString(jsonKey));
- return (K) factory.create();
- }
-}
diff --git a/src/org/traccar/web/JsonConverter.java b/src/org/traccar/web/JsonConverter.java
index 7962ac8ab..0dc4f24eb 100644
--- a/src/org/traccar/web/JsonConverter.java
+++ b/src/org/traccar/web/JsonConverter.java
@@ -46,20 +46,9 @@ public class JsonConverter {
return objectFromJson(Json.createReader(reader).readObject(), prototype);
}
- public static <T> T enumObjectFromJson(Reader reader, EnumFactory<? extends Enum<?>> factory) throws ParseException {
- JsonObject json = Json.createReader(reader).readObject();
- T object = factory.<T>create(json);
- populateObject(json, object);
- return object;
- }
-
public static <T extends Factory> T objectFromJson(JsonObject json, T prototype) throws ParseException {
T object = (T) prototype.create();
- populateObject(json, object);
- return object;
- }
- private static void populateObject(JsonObject json, Object object) throws ParseException {
Method[] methods = object.getClass().getMethods();
for (final Method method : methods) {
@@ -86,17 +75,14 @@ public class JsonConverter {
} else if (parameterType.isEnum()) {
method.invoke(object, Enum.valueOf((Class<? extends Enum>) parameterType, json.getString(name)));
} else if (parameterType.equals(Map.class)) {
- //method.invoke(object, json.getString(name));
- } else {
- Object nestedObject = parameterType.newInstance();
- populateObject(json.getJsonObject(name), nestedObject);
- method.invoke(object, nestedObject);
+ // TODO: method.invoke(object, json.getString(name));
}
- } catch (IllegalAccessException | InvocationTargetException | InstantiationException error) {
+ } catch (IllegalAccessException | InvocationTargetException error) {
}
}
}
+ return object;
}
public static <T> JsonObject objectToJson(T object) {
diff --git a/test/org/traccar/web/JsonConverterTest.java b/test/org/traccar/web/JsonConverterTest.java
index 07d70d3f2..b02ec2d40 100644
--- a/test/org/traccar/web/JsonConverterTest.java
+++ b/test/org/traccar/web/JsonConverterTest.java
@@ -1,170 +1,75 @@
package org.traccar.web;
-import org.junit.Test;
-import org.traccar.model.Factory;
-
-import java.io.Reader;
import java.io.StringReader;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
-
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import org.junit.Test;
+import org.traccar.model.Factory;
public class JsonConverterTest {
- private <T extends Factory> T convert(String jsonString, T prototype) throws ParseException {
- Reader r = new StringReader(
- jsonString);
-
- return JsonConverter.objectFromJson(r, prototype);
- }
-
@Test
public void primitiveConversion() throws ParseException {
- AllPrimitives o = convert("{" +
- "\"aBoolean\": true, " +
- "\"anInt\": 42, " +
- "\"aDouble\": 41.99, " +
- "\"aString\": \"discworld\", " +
- "\"aDate\":\"2015-07-09T19:02:17\"" +
- "}",
- new AllPrimitives());
-
- assertEquals(true, o.getaBoolean());
- assertEquals(42, o.getAnInt());
- assertEquals(41.99, o.getaDouble(), 0.001);
- assertEquals("discworld", o.getaString());
+ Primitives o = JsonConverter.objectFromJson(new StringReader(
+ "{" +
+ "\"boolean\": true, " +
+ "\"int\": 42, " +
+ "\"double\": 41.99, " +
+ "\"string\": \"discworld\", " +
+ "\"date\":\"2015-07-09T19:02:17\"" +
+ "}"),
+ new Primitives());
+
+ assertEquals(true, o.getBoolean());
+ assertEquals(42, o.getInt());
+ assertEquals(41.99, o.getDouble(), 0.001);
+ assertEquals("discworld", o.getString());
Calendar c = Calendar.getInstance();
- c.setTime(o.getaDate());
+ c.setTime(o.getDate());
assertEquals(2015, c.get(Calendar.YEAR));
assertEquals(Calendar.JULY, c.get(Calendar.MONTH));
assertEquals(9, c.get(Calendar.DAY_OF_MONTH));
assertEquals(19, c.get(Calendar.HOUR_OF_DAY));
assertEquals(2, c.get(Calendar.MINUTE));
assertEquals(17, c.get(Calendar.SECOND));
- }
-
- public static class AllPrimitives implements Factory {
-
- private boolean aBoolean;
- private int anInt;
- private double aDouble;
- private String aString;
- private Date aDate;
-
-
- @Override
- public Object create() {
- return new AllPrimitives();
- }
-
- public boolean getaBoolean() {
- return aBoolean;
- }
-
- public void setaBoolean(boolean aBoolean) {
- this.aBoolean = aBoolean;
- }
-
- public int getAnInt() {
- return anInt;
- }
-
- public void setAnInt(int anInt) {
- this.anInt = anInt;
- }
-
- public double getaDouble() {
- return aDouble;
- }
-
- public void setaDouble(double aDouble) {
- this.aDouble = aDouble;
- }
-
- public String getaString() {
- return aString;
- }
-
- public void setaString(String aString) {
- this.aString = aString;
- }
- public Date getaDate() {
- return aDate;
- }
-
- public void setaDate(Date aDate) {
- this.aDate = aDate;
- }
- }
-
-
- @Test
- public void enumConversion() throws ParseException {
- ObjectWithEnum o = convert("{\"anEnum\": \"VALUE2\"}", new ObjectWithEnum());
- assertEquals(TestEnum.VALUE2, o.getAnEnum());
- }
-
-
- public enum TestEnum {
- VALUE1, VALUE2
}
- public static class ObjectWithEnum implements Factory {
- private TestEnum anEnum;
-
- public TestEnum getAnEnum() {
- return anEnum;
- }
-
- public void setAnEnum(TestEnum anEnum) {
- this.anEnum = anEnum;
- }
-
+ public static class Primitives implements Factory {
+
@Override
- public Object create() {
- return new ObjectWithEnum();
- }
- }
-
+ public Primitives create() {
+ return new Primitives();
+ }
+
+ private boolean b;
+ public boolean getBoolean() { return b; }
+ public void setBoolean(boolean b) { this.b = b; }
+
+ private int i;
+ public int getInt() { return i; }
+ public void setInt(int i) { this.i = i; }
+
+ private long l;
+ public long getLong() { return l; }
+ public void setLong(long l) { this.l = l; }
+
+ private double d;
+ public double getDouble() { return d; }
+ public void setDouble(double d) { this.d = d; }
+
+ private String s;
+ public String getString() { return s; }
+ public void setString(String s) { this.s = s; }
+
+ private Date t;
+ public Date getDate() { return t; }
+ public void setDate(Date t) { this.t = t; }
- @Test
- public void nestedObjectsConversion() throws ParseException {
- NestedObjects o = convert("{\"name\": \"Rincewind\", \"nestedObject\": {\"anEnum\":\"VALUE1\"}}", new NestedObjects());
- assertEquals("Rincewind", o.getName());
- assertNotNull("The nested object should be populated", o.getNestedObject());
- assertEquals(TestEnum.VALUE1, o.getNestedObject().getAnEnum());
}
- public static class NestedObjects implements Factory {
-
- private String name;
- private ObjectWithEnum nestedObject;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public ObjectWithEnum getNestedObject() {
- return nestedObject;
- }
-
- public void setNestedObject(ObjectWithEnum nestedObject) {
- this.nestedObject = nestedObject;
- }
-
- @Override
- public Object create() {
- return new NestedObjects();
- }
- }
}