@Override public JSONObject serialize(PartialExecution pe) { return new JSONObject() .put("millis", pe.measuredExecutionTime) .put("lowerCost", pe.lowerCost) .put("upperCost", pe.upperCost) .put("execGroups", JsonSerializables.serializeAll( pe.atomicExecutionGroups, false, new AtomicExecutionGroup.Serializer(this.configuration)) ) .putOpt( "initPlatforms", JsonSerializables.serializeAll(pe.initializedPlatforms, true, Platform.jsonSerializer) ); }
@Override public PartialExecution deserialize(JSONObject json, Class<? extends PartialExecution> cls) { final long measuredExecutionTime = json.getLong("millis"); final double lowerCost = json.optDouble("lowerCost", -1); final double uppserCost = json.optDouble("upperCost", -1); final Collection<AtomicExecutionGroup> atomicExecutionGroups = JsonSerializables.deserializeAllAsList( json.getJSONArray("execGroups"), new AtomicExecutionGroup.Serializer(this.configuration), AtomicExecutionGroup.class ); final Collection<Platform> initializedPlatforms = JsonSerializables.deserializeAllAsList(json.optJSONArray("initPlatforms"), Platform.jsonSerializer); final PartialExecution partialExecution = new PartialExecution( atomicExecutionGroups, measuredExecutionTime, lowerCost, uppserCost ); partialExecution.initializedPlatforms.addAll(initializedPlatforms); return partialExecution; } }