From 6f7bf5b308e3e72e962e9a1c45fab45570a4c12e Mon Sep 17 00:00:00 2001 From: iMoHax Date: Thu, 8 Oct 2015 11:59:48 +0300 Subject: [PATCH] change EDCE parser for support new format --- .../main/java/ru/trader/edce/EDCEParser.java | 1 + .../java/ru/trader/edce/entities/Ship.java | 12 +++++------- .../test/java/ru/trader/edce/ParseTest.java | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/utils/src/main/java/ru/trader/edce/EDCEParser.java b/utils/src/main/java/ru/trader/edce/EDCEParser.java index ecbe196..fc6fd0b 100644 --- a/utils/src/main/java/ru/trader/edce/EDCEParser.java +++ b/utils/src/main/java/ru/trader/edce/EDCEParser.java @@ -12,6 +12,7 @@ public class EDCEParser { public static EDPacket parseJSON(String json) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); return mapper.readValue(json, EDPacket.class); } diff --git a/utils/src/main/java/ru/trader/edce/entities/Ship.java b/utils/src/main/java/ru/trader/edce/entities/Ship.java index d379f37..839dbe7 100644 --- a/utils/src/main/java/ru/trader/edce/entities/Ship.java +++ b/utils/src/main/java/ru/trader/edce/entities/Ship.java @@ -2,15 +2,13 @@ package ru.trader.edce.entities; import com.fasterxml.jackson.annotation.JsonIgnore; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Objects; +import java.util.*; public class Ship { private String name; private Fuel fuel; private Cargo cargo; - private Map modules = new LinkedHashMap<>(); + private Map> modules = new LinkedHashMap<>(); public String getName() { return name; @@ -36,11 +34,11 @@ public class Ship { this.cargo = cargo; } - public Map getModules() { + public Map> getModules() { return modules; } - public void setModules(Map modules) { + public void setModules(Map> modules) { this.modules = modules; } @@ -67,7 +65,7 @@ public class Ship { @JsonIgnore public Module getFSD(){ if (modules == null) return null; - Slot fsd = modules.get("FrameShiftDrive"); + Slot fsd = modules.get("FrameShiftDrive").get(0); return fsd != null ? fsd.getModule() : null; } diff --git a/utils/src/test/java/ru/trader/edce/ParseTest.java b/utils/src/test/java/ru/trader/edce/ParseTest.java index e2622de..b975a97 100644 --- a/utils/src/test/java/ru/trader/edce/ParseTest.java +++ b/utils/src/test/java/ru/trader/edce/ParseTest.java @@ -167,4 +167,23 @@ public class ParseTest extends Assert { assertEquals(128064117L, fsd.getId()); assertEquals("Int_Hyperdrive_Size4_Class5", fsd.getName()); } + + @Test + public void testParse8() throws Exception { + LOG.info("Test parse json8"); + InputStream is = getClass().getResourceAsStream("/edce/edce8.json"); + String json = read(is); + LOG.trace("Parse json:"); + LOG.trace("{}", json); + EDPacket packet = EDCEParser.parseJSON(json); + Commander commander = packet.getCommander(); + assertNotNull(commander); + System system = packet.getLastSystem(); + assertNotNull(system); + Starport starport = packet.getLastStarport(); + assertNotNull(starport); + Ship ship = packet.getShip(); + assertNotNull(ship); + } + }