Serialization code for basic events

Integration in servlets
This commit is contained in:
Lukas Niemeier committed 2013-01-14 01:12:38 +01:00
1 parent cfff8bfee4
commit bfb062128c
7 files changed
+403

No files matched your search

@@ -0,0 +1,18 @@
package com.sap.sailing.server.gateway.serialization;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
JSONObject result = new JSONObject();
result.put("id", object.getId().toString());
result.put("timestamp", object.getTimePoint().asMillis());
result.put("passId", object.getPassId());
return result;
}
}
@@ -0,0 +1,28 @@
package com.sap.sailing.server.gateway.serialization;
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
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);
}
if (event instanceof RaceCommitteeStartTimeEvent) {
return new RaceCommitteeStartTimeEventSerializer(baseEventSerializer);
}
throw new UnsupportedOperationException(
String.format(
"There is no serializer defined for event type %s",
event.getClass().getName()));
}
}
@@ -0,0 +1,32 @@
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.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> {
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
public RaceCommitteeFlagEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
this.baseSerializer = baseSerializer;
}
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
// We have to cast here, see class comment
RaceCommitteeFlagEvent flagEvent = (RaceCommitteeFlagEvent) object;
JSONObject result = baseSerializer.serialize(flagEvent);
result.put("upperFlag", flagEvent.getUpperFlag());
result.put("lowerFlag", flagEvent.getLowerFlag());
result.put("displayed", flagEvent.isDisplayed());
return result;
}
}
@@ -0,0 +1,29 @@
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> {
private JsonSerializer<RaceCommitteeEvent> baseSerializer;
public RaceCommitteeStartTimeEventSerializer(JsonSerializer<RaceCommitteeEvent> baseSerializer) {
this.baseSerializer = baseSerializer;
}
@Override
public JSONObject serialize(RaceCommitteeEvent object) {
// We have to cast here, see class comment
RaceCommitteeStartTimeEvent startTimeEvent = (RaceCommitteeStartTimeEvent) object;
JSONObject result = baseSerializer.serialize(startTimeEvent);
result.put("startTime", startTimeEvent.getStartTime().asMillis());
return result;
}
}