@JsonIgnore public List<AppStatus> getAppStatusList() { try { ObjectMapper mapper = new ObjectMapper(); mapper.addMixIn(AppStatus.class, AppStatusMixin.class); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); SimpleModule module = new SimpleModule("CustomModel", Version.unknownVersion()); SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(AppInstanceStatus.class, AppInstanceStatusImpl.class); module.setAbstractTypes(resolver); mapper.registerModule(module); TypeReference<List<AppStatus>> typeRef = new TypeReference<List<AppStatus>>() { }; if (this.platformStatus != null) { return mapper.readValue(this.platformStatus, typeRef); } return new ArrayList<AppStatus>(); } catch (Exception e) { throw new IllegalArgumentException("Could not parse Skipper Platfrom Status JSON:" + platformStatus, e); } }
public static List<AppStatus> deserializeAppStatus(String platformStatus) { try { ObjectMapper mapper = new ObjectMapper(); mapper.addMixIn(AppStatus.class, AppStatusMixin.class); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); SimpleModule module = new SimpleModule("CustomModel", Version.unknownVersion()); SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(AppInstanceStatus.class, AppInstanceStatusImpl.class); module.setAbstractTypes(resolver); mapper.registerModule(module); TypeReference<List<AppStatus>> typeRef = new TypeReference<List<AppStatus>>() { }; List<AppStatus> result = mapper.readValue(platformStatus, typeRef); return result; } catch (Exception e) { throw new IllegalArgumentException("Could not parse Skipper Platform Status JSON:" + platformStatus, e); } }
private void validateResponse(MockSlingHttpServletResponse response, List<Map<String, String>> exected) throws IOException { ObjectMapper mapper = new ObjectMapper(); SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver(); resolver.addMapping(ListItem.class, Item.class); SimpleModule module = new SimpleModule(); module.setAbstractTypes(resolver); mapper.registerModule(module); ListItem[] listItems = mapper.readValue(response.getOutputAsString(), ListItem[].class); assertEquals(exected.size(), listItems.length); for (int i = 0; i < exected.size(); i++) { Map<String, String> expectedMap = exected.get(i); ListItem listItem = listItems[i]; assertEquals(expectedMap.get("url"), listItem.getURL()); assertEquals(expectedMap.get("title"), listItem.getTitle()); } }
/** * Initialize the default mapper. */ private static void initDefaultMapper() { defaultMapper = new ObjectMapper(); defaultMapper.setDefaultPropertyInclusion(JsonInclude.Value.construct(Include.NON_NULL, Include.ALWAYS)); defaultMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); SimpleModule module = new SimpleModule(); module.addDeserializer(AbstractRestException.class, new RestExceptionDeserializer()); module.addDeserializer(NodeFieldListItem.class, new NodeFieldListItemDeserializer()); module.addSerializer(NumberFieldImpl.class, new BasicFieldSerializer<NumberFieldImpl>()); module.addSerializer(HtmlFieldImpl.class, new BasicFieldSerializer<HtmlFieldImpl>()); module.addSerializer(StringFieldImpl.class, new BasicFieldSerializer<StringFieldImpl>()); module.addSerializer(DateFieldImpl.class, new BasicFieldSerializer<DateFieldImpl>()); module.addSerializer(BooleanFieldImpl.class, new BasicFieldSerializer<BooleanFieldImpl>()); module.addSerializer(FieldList.class, new FieldListSerializer()); module.addSerializer(JsonObject.class, new JsonObjectSerializer()); module.addSerializer(JsonArray.class, new JsonArraySerializer()); module.addSerializer(FieldMapImpl.class, new JsonSerializer<FieldMapImpl>() { @Override public void serialize(FieldMapImpl value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { gen.writeObject(value.getNode()); } }); module.addDeserializer(JsonObject.class, new JsonObjectDeserializer()); module.addDeserializer(JsonArray.class, new JsonArrayDeserializer()); module.addDeserializer(FieldMap.class, new FieldMapDeserializer()); module.addDeserializer(ExpandableNode.class, new UserNodeReferenceDeserializer()); module.addDeserializer(ListableField.class, new FieldDeserializer<ListableField>()); module.addDeserializer(FieldSchema.class, new FieldSchemaDeserializer<FieldSchema>()); defaultMapper.registerModule(module); defaultMapper.registerModule(new SimpleModule("interfaceMapping") { private static final long serialVersionUID = -4667167382238425197L; @Override public void setupModule(SetupContext context) { context.addAbstractTypeResolver(new SimpleAbstractTypeResolver().addMapping(Schema.class, SchemaModelImpl.class)); context.addAbstractTypeResolver(new SimpleAbstractTypeResolver().addMapping(Microschema.class, MicroschemaModelImpl.class)); } }); }