STREAMS-203 | Broke down deserialization method into more reasonably sized chunks
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/48b8b71b Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/48b8b71b Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/48b8b71b Branch: refs/heads/STREAMS-49 Commit: 48b8b71b69e08eb08688056e1a7fa221d875b018 Parents: c921f67 Author: Robert Douglas <[email protected]> Authored: Mon Nov 3 09:50:37 2014 -0600 Committer: Robert Douglas <[email protected]> Committed: Mon Nov 3 09:50:37 2014 -0600 ---------------------------------------------------------------------- .../util/GPlusActivityDeserializer.java | 147 ++++++++++++------- 1 file changed, 90 insertions(+), 57 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/48b8b71b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusActivityDeserializer.java ---------------------------------------------------------------------- diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusActivityDeserializer.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusActivityDeserializer.java index 9cb1d61..988e138 100644 --- a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusActivityDeserializer.java +++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusActivityDeserializer.java @@ -50,7 +50,7 @@ public class GPlusActivityDeserializer extends JsonDeserializer<Activity> { * @throws JsonProcessingException */ @Override - public Activity deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + public Activity deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { JsonNode node = jsonParser.getCodec().readTree(jsonParser); Activity activity = new Activity(); @@ -64,66 +64,99 @@ public class GPlusActivityDeserializer extends JsonDeserializer<Activity> { activity.setId(node.get("id").asText()); activity.setVerb(node.get("verb").asText()); - Activity.Actor actor = new Activity.Actor(); - JsonNode actorNode = node.get("actor"); - - actor.setId(actorNode.get("id").asText()); - actor.setDisplayName(actorNode.get("displayName").asText()); - actor.setUrl(actorNode.get("url").asText()); - - Activity.Actor.Image image = new Activity.Actor.Image(); - JsonNode imageNode = actorNode.get("image"); - image.setUrl(imageNode.get("url").asText()); - - actor.setImage(image); - activity.setActor(actor); - - Activity.PlusObject object = new Activity.PlusObject(); - JsonNode objectNode = node.get("object"); - object.setObjectType(objectNode.get("objectType").asText()); - object.setContent(objectNode.get("content").asText()); - object.setUrl(objectNode.get("url").asText()); - - Activity.PlusObject.Replies replies = new Activity.PlusObject.Replies(); - JsonNode repliesNode = objectNode.get("replies"); - replies.setTotalItems(repliesNode.get("totalItems").asLong()); - replies.setSelfLink(repliesNode.get("selfLink").asText()); - object.setReplies(replies); - - Activity.PlusObject.Plusoners plusoners = new Activity.PlusObject.Plusoners(); - JsonNode plusonersNode = objectNode.get("plusoners"); - plusoners.setTotalItems(plusonersNode.get("totalItems").asLong()); - plusoners.setSelfLink(plusonersNode.get("selfLink").asText()); - object.setPlusoners(plusoners); - - Activity.PlusObject.Resharers resharers = new Activity.PlusObject.Resharers(); - JsonNode resharersNode = objectNode.get("resharers"); - resharers.setTotalItems(resharersNode.get("totalItems").asLong()); - resharers.setSelfLink(resharersNode.get("selfLink").asText()); - object.setResharers(resharers); - - List<Activity.PlusObject.Attachments> attachments = Lists.newArrayList(); - for (JsonNode attachmentNode : objectNode.get("attachments")) { - Activity.PlusObject.Attachments attachments1 = new Activity.PlusObject.Attachments(); - attachments1.setObjectType(attachmentNode.get("objectType").asText()); - attachments1.setDisplayName(attachmentNode.get("displayName").asText()); - attachments1.setContent(attachmentNode.get("content").asText()); - attachments1.setUrl(attachmentNode.get("url").asText()); - - Activity.PlusObject.Attachments.Image image1 = new Activity.PlusObject.Attachments.Image(); - JsonNode imageNode1 = attachmentNode.get("image"); - image1.setUrl(imageNode1.get("url").asText()); - attachments1.setImage(image1); - - attachments.add(attachments1); - } - object.setAttachments(attachments); - - activity.setObject(object); + activity.setActor(buildActor(node)); + + activity.setObject(buildPlusObject(node)); } catch (Exception e) { LOGGER.error("Exception while trying to deserialize activity object: {}", e); } return activity; } + + /** + * Given a raw JsonNode, build out the G+ {@link com.google.api.services.plus.model.Activity.Actor} object + * + * @param node + * @return {@link com.google.api.services.plus.model.Activity.Actor} object + */ + private Activity.Actor buildActor(JsonNode node) { + Activity.Actor actor = new Activity.Actor(); + JsonNode actorNode = node.get("actor"); + + actor.setId(actorNode.get("id").asText()); + actor.setDisplayName(actorNode.get("displayName").asText()); + actor.setUrl(actorNode.get("url").asText()); + + Activity.Actor.Image image = new Activity.Actor.Image(); + JsonNode imageNode = actorNode.get("image"); + image.setUrl(imageNode.get("url").asText()); + + actor.setImage(image); + + return actor; + } + + /** + * Given a JsonNode, build out all aspects of the {@link com.google.api.services.plus.model.Activity.PlusObject} object + * + * @param node + * @return {@link com.google.api.services.plus.model.Activity.PlusObject} object + */ + private Activity.PlusObject buildPlusObject(JsonNode node) { + Activity.PlusObject object = new Activity.PlusObject(); + JsonNode objectNode = node.get("object"); + object.setObjectType(objectNode.get("objectType").asText()); + object.setContent(objectNode.get("content").asText()); + object.setUrl(objectNode.get("url").asText()); + + Activity.PlusObject.Replies replies = new Activity.PlusObject.Replies(); + JsonNode repliesNode = objectNode.get("replies"); + replies.setTotalItems(repliesNode.get("totalItems").asLong()); + replies.setSelfLink(repliesNode.get("selfLink").asText()); + object.setReplies(replies); + + Activity.PlusObject.Plusoners plusoners = new Activity.PlusObject.Plusoners(); + JsonNode plusonersNode = objectNode.get("plusoners"); + plusoners.setTotalItems(plusonersNode.get("totalItems").asLong()); + plusoners.setSelfLink(plusonersNode.get("selfLink").asText()); + object.setPlusoners(plusoners); + + Activity.PlusObject.Resharers resharers = new Activity.PlusObject.Resharers(); + JsonNode resharersNode = objectNode.get("resharers"); + resharers.setTotalItems(resharersNode.get("totalItems").asLong()); + resharers.setSelfLink(resharersNode.get("selfLink").asText()); + object.setResharers(resharers); + + object.setAttachments(buildAttachments(objectNode));//attachments); + + return object; + } + + /** + * Given a raw JsonNode representation of an Activity's attachments, build out that + * list of {@link com.google.api.services.plus.model.Activity.PlusObject.Attachments} objects + * + * @param objectNode + * @return list of {@link com.google.api.services.plus.model.Activity.PlusObject.Attachments} objects + */ + private List<Activity.PlusObject.Attachments> buildAttachments(JsonNode objectNode) { + List<Activity.PlusObject.Attachments> attachments = Lists.newArrayList(); + for (JsonNode attachmentNode : objectNode.get("attachments")) { + Activity.PlusObject.Attachments attachments1 = new Activity.PlusObject.Attachments(); + attachments1.setObjectType(attachmentNode.get("objectType").asText()); + attachments1.setDisplayName(attachmentNode.get("displayName").asText()); + attachments1.setContent(attachmentNode.get("content").asText()); + attachments1.setUrl(attachmentNode.get("url").asText()); + + Activity.PlusObject.Attachments.Image image1 = new Activity.PlusObject.Attachments.Image(); + JsonNode imageNode1 = attachmentNode.get("image"); + image1.setUrl(imageNode1.get("url").asText()); + attachments1.setImage(image1); + + attachments.add(attachments1); + } + + return attachments; + } } \ No newline at end of file
