# test for serialization (currently only events)

This commit is contained in:
Lukas Niemeier committed 2013-01-21 19:42:22 +01:00
1 parent 1e97dc8bc3
commit b2c86be849
16 files changed
+323 -34

No files matched your search

@@ -4,14 +4,18 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
public abstract class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
public static final String FIELD_CLASS = "@class";
public static final String FIELD_ID = "id";
public static final String FIELD_TIMESTAMP = "timestamp";
public static final String FIELD_PASS_ID = "passId";
protected abstract String getClassFieldValue();
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
JSONObject result = new JSONObject();
result.put(FIELD_CLASS, getClassFieldValue());
result.put(FIELD_ID, object.getId().toString());
result.put(FIELD_TIMESTAMP, object.getTimePoint().asMillis());
result.put(FIELD_PASS_ID, object.getPassId());
@@ -5,18 +5,13 @@ import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
public class RaceCommitteeEventSerializerFactory {
private JsonSerializer<RaceCommitteeEvent> baseEventSerializer;
public RaceCommitteeEventSerializerFactory() {
this.baseEventSerializer = new RaceCommitteeEventSerializer();
}
public JsonSerializer<RaceCommitteeEvent> getSerializer(RaceCommitteeEvent event) {
if (event instanceof RaceCommitteeFlagEvent) {
return new RaceCommitteeFlagEventSerializer(baseEventSerializer);
return new RaceCommitteeFlagEventSerializer();
}
if (event instanceof RaceCommitteeStartTimeEvent) {
return new RaceCommitteeStartTimeEventSerializer(baseEventSerializer);
return new RaceCommitteeStartTimeEventSerializer();
}
throw new UnsupportedOperationException(
String.format(
@@ -5,30 +5,26 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
/**
* Implements JsonSerializer<RaceCommitteeEvent> to enable a consistent interface when used
* with {@link RaceCommitteeEventSerializerFactory}, see type-safeness of generics.
*/
public class RaceCommitteeFlagEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
public class RaceCommitteeFlagEventSerializer extends RaceCommitteeEventSerializer {
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";
public static final String FIELD_DISPLAYED = "displayed";
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
public RaceCommitteeFlagEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
this.baseSerializer = baseSerializer;
@Override
protected String getClassFieldValue() {
return VALUE_CLASS;
}
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
// We have to cast here, see class comment
RaceCommitteeFlagEvent flagEvent = (RaceCommitteeFlagEvent) object;
JSONObject result = baseSerializer.serialize(flagEvent);
JSONObject result = super.serialize(flagEvent);
result.put(FIELD_UPPER_FLAG, flagEvent.getUpperFlag());
result.put(FIELD_LOWER_FLAG, flagEvent.getLowerFlag());
result.put(FIELD_DISPLAYED, flagEvent.isDisplayed());
return result;
}
@@ -1,28 +1,24 @@
package com.sap.sailing.server.gateway.serialization;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
/**
* Implements JsonSerializer<RaceCommitteeEvent> to enable a consistent interface when used
* with {@link RaceCommitteeEventSerializerFactory}, see type-safeness of generics.
*/
public class RaceCommitteeStartTimeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
public class RaceCommitteeStartTimeEventSerializer extends RaceCommitteeEventSerializer {
public static final String VALUE_CLASS = RaceCommitteeStartTimeEvent.class.getSimpleName();
public static final String FIELD_START_TIME = "startTime";
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
public RaceCommitteeStartTimeEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
this.baseSerializer = baseSerializer;
@Override
protected String getClassFieldValue() {
return VALUE_CLASS;
}
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
// We have to cast here, see class comment
RaceCommitteeStartTimeEvent startTimeEvent = (RaceCommitteeStartTimeEvent) object;
JSONObject result = baseSerializer.serialize(startTimeEvent);
JSONObject result = super.serialize(startTimeEvent);
result.put(FIELD_START_TIME, startTimeEvent.getStartTime().asMillis());
return result;
}