added JSON serialization and deserialization support with tests for LeaderboardSearchResult[Base]

This commit is contained in:
Axel Uhl committed 2014-06-04 21:22:27 +02:00
1 parent 1b313b9db8
commit 291360ee38
9 files changed
+226 -33

No files matched your search

@@ -8,17 +8,19 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.EventBase;
import com.sap.sailing.domain.base.LeaderboardGroupBase;
import com.sap.sailing.domain.common.dto.LeaderboardSearchResultDTO;
import com.sap.sailing.domain.base.LeaderboardSearchResultBase;
import com.sap.sailing.domain.base.impl.LeaderboardBaseImpl;
import com.sap.sailing.domain.base.impl.LeaderboardSearchResultBaseImpl;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardSearchResultJsonSerializer;
public class LeaderboardSearchResultDTOJsonDeserializer implements JsonDeserializer<StrippedLeaderboardSearchResult> {
public class LeaderboardSearchResultBaseJsonDeserializer implements JsonDeserializer<LeaderboardSearchResultBase> {
private final EventBaseJsonDeserializer eventDeserializer;
private final LeaderboardGroupBaseJsonDeserializer leaderboardGroupDeserializer;
public LeaderboardSearchResultDTOJsonDeserializer(EventBaseJsonDeserializer eventDeserializer,
public LeaderboardSearchResultBaseJsonDeserializer(EventBaseJsonDeserializer eventDeserializer,
LeaderboardGroupBaseJsonDeserializer leaderboardGroupDeserializer) {
super();
this.eventDeserializer = eventDeserializer;
@@ -26,7 +28,7 @@ public class LeaderboardSearchResultDTOJsonDeserializer implements JsonDeseriali
}
@Override
public StrippedLeaderboardSearchResult deserialize(JSONObject object) throws JsonDeserializationException {
public LeaderboardSearchResultBase deserialize(JSONObject object) throws JsonDeserializationException {
EventBase event = eventDeserializer.deserialize(Helpers.getNestedObjectSafe(object, LeaderboardSearchResultJsonSerializer.FIELD_EVENT));
JSONObject leaderboardJson = Helpers.getNestedObjectSafe(object, LeaderboardSearchResultJsonSerializer.FIELD_LEADERBOARD);
String leaderboardName = (String) leaderboardJson.get(LeaderboardSearchResultJsonSerializer.FIELD_LEADERBOARD_NAME);
@@ -38,7 +40,8 @@ public class LeaderboardSearchResultDTOJsonDeserializer implements JsonDeseriali
for (Object leaderboardGroupJson : leaderboardGroupsJson) {
leaderboardGroups.add(leaderboardGroupDeserializer.deserialize((JSONObject) leaderboardGroupJson));
}
return new StrippedLeaderboardSearchResult(event, leaderboardName, leaderboardDisplayName, boatClassName, regattaName, leaderboardGroups);
return new LeaderboardSearchResultBaseImpl(new LeaderboardBaseImpl(leaderboardName, leaderboardDisplayName),
regattaName, boatClassName, leaderboardGroups, event);
}
}
@@ -21,10 +21,10 @@ public class EventBaseJsonSerializer implements JsonSerializer<EventBase> {
public static final String FIELDS_LEADERBOARD_GROUPS = "leaderboardGroups";
private final JsonSerializer<Venue> venueSerializer;
private final JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupSerializer;
private final JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupBaseSerializer;
public EventBaseJsonSerializer(JsonSerializer<Venue> venueSerializer, JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupSerializer) {
this.leaderboardGroupSerializer = leaderboardGroupSerializer;
public EventBaseJsonSerializer(JsonSerializer<Venue> venueSerializer, JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupBaseSerializer) {
this.leaderboardGroupBaseSerializer = leaderboardGroupBaseSerializer;
this.venueSerializer = venueSerializer;
}
@@ -40,7 +40,7 @@ public class EventBaseJsonSerializer implements JsonSerializer<EventBase> {
JSONArray leaderboardGroups = new JSONArray();
result.put(FIELDS_LEADERBOARD_GROUPS, leaderboardGroups);
for (LeaderboardGroupBase lg : event.getLeaderboardGroups()) {
leaderboardGroups.add(leaderboardGroupSerializer.serialize(lg));
leaderboardGroups.add(leaderboardGroupBaseSerializer.serialize(lg));
}
return result;
}
@@ -3,7 +3,6 @@ package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.EventBase;
import com.sap.sailing.domain.base.LeaderboardGroupBase;
import com.sap.sailing.domain.base.LeaderboardSearchResult;
@@ -11,7 +10,6 @@ import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class LeaderboardSearchResultJsonSerializer implements JsonSerializer<LeaderboardSearchResult> {
@@ -44,16 +42,16 @@ public class LeaderboardSearchResultJsonSerializer implements JsonSerializer<Lea
Leaderboard leaderboard = leaderboardSearchResult.getLeaderboard();
leaderboardJson.put(FIELD_LEADERBOARD_NAME, leaderboard.getName());
leaderboardJson.put(FIELD_LEADERBOARD_DISPLAY_NAME, leaderboard.getDisplayName());
final BoatClass boatClass;
final String boatClassName;
final Regatta regatta;
if (leaderboard instanceof RegattaLeaderboard) {
regatta = ((RegattaLeaderboard) leaderboard).getRegatta();
boatClass = regatta.getBoatClass();
boatClassName = regatta.getBoatClass().getName();
} else {
regatta = null;
boatClass = getBoatClassFromTrackedRaces(leaderboard);
boatClassName = leaderboardSearchResult.getBoatClassName();
}
leaderboardJson.put(FIELD_LEADERBOARD_BOAT_CLASS_NAME, boatClass == null ? null : boatClass.getName());
leaderboardJson.put(FIELD_LEADERBOARD_BOAT_CLASS_NAME, boatClassName);
leaderboardJson.put(FIELD_LEADERBOARD_REGATTA_NAME, regatta == null ? null : regatta.getName());
JSONArray leaderboardGroupsJson = new JSONArray();
leaderboardJson.put(FIELD_LEADERBOARD_IN_LEADERBOARD_GROUPS, leaderboardGroupsJson);
@@ -62,11 +60,4 @@ public class LeaderboardSearchResultJsonSerializer implements JsonSerializer<Lea
}
return result;
}
private BoatClass getBoatClassFromTrackedRaces(Leaderboard leaderboard) {
for (TrackedRace trackedRace : leaderboard.getTrackedRaces()) {
return trackedRace.getRace().getBoatClass();
}
return null;
}
}