# moved de/serializer to impl package

# easier de/serialization of rcevents
This commit is contained in:
Lukas Niemeier committed 2013-01-29 04:08:50 +01:00
1 parent e0ac319d4d
commit ad9568b0d5
34 files changed
+150 -124

No files matched your search

@@ -8,4 +8,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.json.simple
Require-Bundle: com.sap.sailing.domain;bundle-version="1.0.0",
com.sap.sailing.domain.common;bundle-version="1.0.0"
Export-Package: com.sap.sailing.server.gateway.serialization
Export-Package: com.sap.sailing.server.gateway.deserialization,
com.sap.sailing.server.gateway.deserialization.impl,
com.sap.sailing.server.gateway.serialization,
com.sap.sailing.server.gateway.serialization.impl
@@ -2,6 +2,7 @@ package com.sap.sailing.server.gateway.deserialization;
import org.json.simple.JSONObject;
public interface JsonDeserializer<T> {
T deserialize(JSONObject object) throws JsonDeserializationException;
@@ -1,33 +0,0 @@
package com.sap.sailing.server.gateway.deserialization;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
import com.sap.sailing.server.gateway.serialization.RaceCommitteeStartTimeEventSerializer;
public class RaceCommitteeEventDeserializerFactory {
protected JsonDeserializer<RaceCommitteeEvent> flagEventDeserializer;
protected JsonDeserializer<RaceCommitteeEvent> startTimeEventDeserializer;
public RaceCommitteeEventDeserializerFactory() {
flagEventDeserializer = new RaceCommitteeFlagEventDeserializer();
startTimeEventDeserializer = new RaceCommitteeStartTimeEventDeserializer();
}
public JsonDeserializer<RaceCommitteeEvent> getDeserializer(
JSONObject object) throws JsonDeserializationException {
Object type = object.get(RaceCommitteeEventSerializer.FIELD_CLASS);
if (type.equals(RaceCommitteeFlagEventSerializer.VALUE_CLASS)) {
return flagEventDeserializer;
} else if (type.equals(RaceCommitteeStartTimeEventSerializer.VALUE_CLASS)) {
return startTimeEventDeserializer;
}
throw new JsonDeserializationException(String.format(
"There is no deserializer defined for event type %s.", type));
}
}
@@ -1,4 +1,4 @@
package com.sap.sailing.server.gateway.deserialization;
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.UUID;
@@ -7,11 +7,13 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.server.gateway.serialization.EventJsonSerializer;
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.EventJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.BaseRaceCommitteeEventSerializer;
/// TODO deserialize involved boats
public abstract class RaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
public abstract class BaseRaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
protected abstract RaceCommitteeEvent deserialize(JSONObject object, UUID id, TimePoint timePoint, int passId)
throws JsonDeserializationException;
@@ -20,9 +22,9 @@ public abstract class RaceCommitteeEventDeserializer implements JsonDeserializer
public RaceCommitteeEvent deserialize(JSONObject object)
throws JsonDeserializationException {
// Factory handles class field and subclassing...
String id = object.get(RaceCommitteeEventSerializer.FIELD_ID).toString();
long timeStamp = (Long) object.get(RaceCommitteeEventSerializer.FIELD_TIMESTAMP);
int passId = (Integer) object.get(RaceCommitteeEventSerializer.FIELD_PASS_ID);
String id = object.get(BaseRaceCommitteeEventSerializer.FIELD_ID).toString();
long timeStamp = (Long) object.get(BaseRaceCommitteeEventSerializer.FIELD_TIMESTAMP);
int passId = (Integer) object.get(BaseRaceCommitteeEventSerializer.FIELD_PASS_ID);
UUID uuid = null;
try {
@@ -1,10 +1,12 @@
package com.sap.sailing.server.gateway.deserialization;
package com.sap.sailing.server.gateway.deserialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
import com.sap.sailing.server.gateway.serialization.CourseAreaJsonSerializer;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer;
public class CourseAreaJsonDeserializer implements JsonDeserializer<CourseArea> {
@@ -1,4 +1,4 @@
package com.sap.sailing.server.gateway.deserialization;
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.UUID;
@@ -7,7 +7,9 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.Venue;
import com.sap.sailing.domain.base.impl.EventImpl;
import com.sap.sailing.server.gateway.serialization.EventJsonSerializer;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.EventJsonSerializer;
public class EventJsonDeserializer implements JsonDeserializer<Event> {
private JsonDeserializer<Venue> venueDeserializer;
@@ -1,8 +1,10 @@
package com.sap.sailing.server.gateway.deserialization;
package com.sap.sailing.server.gateway.deserialization.impl;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
public class Helpers {
public static JSONObject toJSONObjectSafe(Object object)
@@ -0,0 +1,41 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.BaseRaceCommitteeEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeFlagEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeStartTimeEventSerializer;
public class RaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
protected JsonDeserializer<RaceCommitteeEvent> flagEventDeserializer;
protected JsonDeserializer<RaceCommitteeEvent> startTimeEventDeserializer;
public RaceCommitteeEventDeserializer() {
flagEventDeserializer = new RaceCommitteeFlagEventDeserializer();
startTimeEventDeserializer = new RaceCommitteeStartTimeEventDeserializer();
}
protected JsonDeserializer<RaceCommitteeEvent> getDeserializer(
JSONObject object) throws JsonDeserializationException {
Object type = object.get(BaseRaceCommitteeEventSerializer.FIELD_CLASS);
if (type.equals(RaceCommitteeFlagEventSerializer.VALUE_CLASS)) {
return flagEventDeserializer;
} else if (type.equals(RaceCommitteeStartTimeEventSerializer.VALUE_CLASS)) {
return startTimeEventDeserializer;
}
throw new JsonDeserializationException(String.format(
"There is no deserializer defined for event type %s.", type));
}
@Override
public RaceCommitteeEvent deserialize(JSONObject object)
throws JsonDeserializationException {
return getDeserializer(object).deserialize(object);
}
}
@@ -1,4 +1,4 @@
package com.sap.sailing.server.gateway.deserialization;
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.Collections;
import java.util.UUID;
@@ -10,10 +10,10 @@ import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.racecommittee.Flags;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.impl.RaceCommitteeFlagEventImpl;
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeFlagEventSerializer;
public class RaceCommitteeFlagEventDeserializer extends
RaceCommitteeEventDeserializer {
BaseRaceCommitteeEventDeserializer {
@Override
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
@@ -1,4 +1,4 @@
package com.sap.sailing.server.gateway.deserialization;
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.Collections;
import java.util.UUID;
@@ -10,9 +10,9 @@ import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.impl.RaceCommitteeStartTimeEventImpl;
import com.sap.sailing.server.gateway.serialization.RaceCommitteeStartTimeEventSerializer;
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeStartTimeEventSerializer;
public class RaceCommitteeStartTimeEventDeserializer extends RaceCommitteeEventDeserializer {
public class RaceCommitteeStartTimeEventDeserializer extends BaseRaceCommitteeEventDeserializer {
@Override
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
@@ -1,4 +1,4 @@
package com.sap.sailing.server.gateway.deserialization;
package com.sap.sailing.server.gateway.deserialization.impl;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@@ -6,7 +6,9 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.domain.base.Venue;
import com.sap.sailing.domain.base.impl.VenueImpl;
import com.sap.sailing.server.gateway.serialization.VenueJsonSerializer;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer;
public class VenueJsonDeserializer implements JsonDeserializer<Venue> {
private JsonDeserializer<CourseArea> courseAreaDeserializer;
@@ -1,11 +1,12 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
/// TODO serialize involved boats
public abstract class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
public abstract class BaseRaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
public static final String FIELD_CLASS = "@class";
public static final String FIELD_ID = "id";
public static final String FIELD_TIMESTAMP = "timestamp";
@@ -1,8 +1,9 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class BoatClassJsonSerializer implements JsonSerializer<BoatClass> {
public static final String FIELD_NAME = "name";
@@ -1,8 +1,9 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class CourseAreaJsonSerializer implements JsonSerializer<CourseArea> {
public static final String FIELD_NAME = "name";
@@ -1,9 +1,10 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.Venue;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class EventJsonSerializer implements JsonSerializer<Event> {
public static final String FIELD_ID = "id";
@@ -1,20 +1,25 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class RaceCommitteeEventSerializerFactory {
public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
private JsonSerializer<RaceCommitteeEvent> flagEventSerializer;
private JsonSerializer<RaceCommitteeEvent> startTimeSerializer;
public RaceCommitteeEventSerializerFactory() {
flagEventSerializer = new RaceCommitteeFlagEventSerializer();
startTimeSerializer = new RaceCommitteeStartTimeEventSerializer();
public RaceCommitteeEventSerializer(
JsonSerializer<RaceCommitteeEvent> flagEventSerializer,
JsonSerializer<RaceCommitteeEvent> startTimeSerializer) {
this.flagEventSerializer = flagEventSerializer;
this.startTimeSerializer = startTimeSerializer;
}
public JsonSerializer<RaceCommitteeEvent> getSerializer(
protected JsonSerializer<RaceCommitteeEvent> getSerializer(
RaceCommitteeEvent event) {
if (event instanceof RaceCommitteeFlagEvent) {
return flagEventSerializer;
@@ -27,4 +32,9 @@ public class RaceCommitteeEventSerializerFactory {
.getClass().getName()));
}
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
return getSerializer(object).serialize(object);
}
}
@@ -1,11 +1,11 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
public class RaceCommitteeFlagEventSerializer extends RaceCommitteeEventSerializer {
public class RaceCommitteeFlagEventSerializer extends BaseRaceCommitteeEventSerializer {
public static final String VALUE_CLASS = RaceCommitteeFlagEvent.class.getSimpleName();
public static final String FIELD_UPPER_FLAG = "upperFlag";
public static final String FIELD_LOWER_FLAG = "lowerFlag";
@@ -1,11 +1,11 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
public class RaceCommitteeStartTimeEventSerializer extends RaceCommitteeEventSerializer {
public class RaceCommitteeStartTimeEventSerializer extends BaseRaceCommitteeEventSerializer {
public static final String VALUE_CLASS = RaceCommitteeStartTimeEvent.class.getSimpleName();
public static final String FIELD_START_TIME = "startTime";
@@ -1,21 +1,29 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Course;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class RaceDefinitionJsonSerializer implements JsonSerializer<RaceDefinition> {
public static final String FIELD_ID = "id";
public static final String FIELD_NAME = "name";
public static final String FIELD_COURSE = "course";
private JsonSerializer<Course> courseSerializer;
public RaceDefinitionJsonSerializer(JsonSerializer<Course> courseSerializer) {
this.courseSerializer = courseSerializer;
}
@Override
public JSONObject serialize(RaceDefinition object) {
JSONObject result = new JSONObject();
result.put(FIELD_ID, object.getId().toString());
result.put(FIELD_NAME, object.getName());
result.put(FIELD_COURSE, "tbd");
result.put(FIELD_COURSE, courseSerializer.serialize(object.getCourse()));
return result;
}
@@ -1,4 +1,4 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@@ -6,6 +6,7 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class RegattaJsonSerializer implements JsonSerializer<Regatta> {
public static final String FIELD_ID = "id";
@@ -1,10 +1,11 @@
package com.sap.sailing.server.gateway.serialization;
package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.domain.base.Venue;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class VenueJsonSerializer implements JsonSerializer<Venue> {