@SuppressWarnings("unchecked") @Override public List<PersonActivity> deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new LinkedInModule()); jp.setCodec(mapper); if (jp.hasCurrentToken()) { JsonNode dataNode = (JsonNode) jp.readValueAs(JsonNode.class).get("values"); return (List<PersonActivity>) mapper.reader(new TypeReference<List<PersonActivity>>() {}).readValue(dataNode); } return null; }
@Override public ActionItem deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectNode objectNode = jp.readValueAsTree(); JsonNode wrapped = objectNode.get("actionItemType"); JsonParser parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); ActionItemType actionItemType = parser.readValueAs(ActionItemType.class); wrapped = objectNode.get("actionItemId"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Long actionItemId = parser.getValueAsLong(); wrapped = objectNode.get("actionItemCreateDate"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Date actionItemCreateDate = new Date(parser.getValueAsLong()); wrapped = objectNode.get("actionItemName"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); String actionItemName = parser.getValueAsString(); wrapped = objectNode.get("actionItemDueDate"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Date actionItemDueDate = new Date(parser.getValueAsLong()); wrapped = objectNode.get("discussionId"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); Long discussionId = parser.getValueAsLong(); wrapped = objectNode.get("owner"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); MmrActionItemUser owner = parser.readValueAs(MmrActionItemUser.class); wrapped = objectNode.get("assignees"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); List<MmrActionItemUser> assignees = parser.readValueAs(new TypeReference<List<MmrActionItemUser>>() {}); wrapped = objectNode.get("actionItemStatus"); parser = wrapped.traverse(); parser.setCodec(jp.getCodec()); ActionItemStatus actionItemStatus = parser.readValueAs(ActionItemStatus.class); ActionItem actionItem = new UntypedActionItem(); actionItem.setActionItemType(actionItemType); actionItem.setActionItemId(actionItemId); actionItem.setActionItemStatus(actionItemStatus); actionItem.setAssignees(assignees); actionItem.setActionItemCreateDate(actionItemCreateDate); actionItem.setActionItemDueDate(actionItemDueDate); actionItem.setActionItemName(actionItemName); actionItem.setDiscussionId(discussionId); actionItem.setOwner(owner); return actionItem; }