Repository: incubator-streams
Updated Branches:
  refs/heads/master eec3aa997 -> 42d0ab33f


STREAMS-202 | Built a GooglePlusTypeConverter, the corresponding deserializer 
and all necessary tests


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/eba9aefd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/eba9aefd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/eba9aefd

Branch: refs/heads/master
Commit: eba9aefd77273c8290324ac33370aa250da34c10
Parents: eec3aa9
Author: Robert Douglas <[email protected]>
Authored: Tue Oct 28 12:02:51 2014 -0500
Committer: Robert Douglas <[email protected]>
Committed: Tue Oct 28 12:02:51 2014 -0500

----------------------------------------------------------------------
 .../processor/GooglePlusTypeConverter.java      |   7 +
 .../util/GPlusPersonDeserializer.java           |   7 +
 .../serializer/util/GooglePlusActivityUtil.java |   7 +
 .../google/gplus/GooglePlusPersonSerDeTest.java | 139 +++++++++++++++++++
 .../processor/GooglePlusTypeConverterTest.java  |   7 +
 .../test/resources/google_plus_person_jsons.txt |   0
 6 files changed, 167 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/eba9aefd/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/processor/GooglePlusTypeConverter.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/processor/GooglePlusTypeConverter.java
 
b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/processor/GooglePlusTypeConverter.java
new file mode 100644
index 0000000..f23ca17
--- /dev/null
+++ 
b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/processor/GooglePlusTypeConverter.java
@@ -0,0 +1,7 @@
+package com.google.gplus.processor;
+
+/**
+ * Created by rdouglas on 10/27/14.
+ */
+public class GooglePlusTypeConverter {
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/eba9aefd/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusPersonDeserializer.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusPersonDeserializer.java
 
b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusPersonDeserializer.java
new file mode 100644
index 0000000..48fed99
--- /dev/null
+++ 
b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GPlusPersonDeserializer.java
@@ -0,0 +1,7 @@
+package com.google.gplus.serializer.util;
+
+/**
+ * Created by rdouglas on 10/28/14.
+ */
+public class GPlusPersonDeserializer {
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/eba9aefd/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GooglePlusActivityUtil.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GooglePlusActivityUtil.java
 
b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GooglePlusActivityUtil.java
new file mode 100644
index 0000000..a3150c8
--- /dev/null
+++ 
b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/serializer/util/GooglePlusActivityUtil.java
@@ -0,0 +1,7 @@
+package com.google.gplus.serializer.util;
+
+/**
+ * Created by rdouglas on 10/27/14.
+ */
+public class GooglePlusActivityUtil {
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/eba9aefd/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/GooglePlusPersonSerDeTest.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/GooglePlusPersonSerDeTest.java
 
b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/GooglePlusPersonSerDeTest.java
new file mode 100644
index 0000000..22cc340
--- /dev/null
+++ 
b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/GooglePlusPersonSerDeTest.java
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.google.gplus;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.node.IntNode;
+import com.google.api.client.util.Lists;
+import com.google.api.services.plus.model.Person;
+import com.google.gplus.serializer.util.GooglePlusActivityUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.streams.jackson.StreamsJacksonMapper;
+import org.apache.streams.pojo.json.Activity;
+import org.apache.streams.pojo.json.Actor;
+import org.apache.streams.pojo.json.Provider;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class GooglePlusPersonSerDeTest {
+    private final static Logger LOGGER = 
LoggerFactory.getLogger(GooglePlusPersonSerDeTest.class);
+
+    @Test
+    public void TestPersonObjects() {
+        ObjectMapper objectMapper = new StreamsJacksonMapper();
+        SimpleModule simpleModule = new SimpleModule();
+        simpleModule.addDeserializer(Person.class, new 
GPlusPersonDeserializer());
+        objectMapper.registerModule(simpleModule);
+
+        InputStream is = 
GooglePlusPersonSerDeTest.class.getResourceAsStream("/google_plus_person_jsons.txt");
+        InputStreamReader isr = new InputStreamReader(is);
+        BufferedReader br = new BufferedReader(isr);
+
+        GooglePlusActivityUtil googlePlusActivityUtil = new 
GooglePlusActivityUtil();
+
+        try {
+            while (br.ready()) {
+                String line = br.readLine();
+                if (!StringUtils.isEmpty(line)) {
+                    LOGGER.info("raw: {}", line);
+                    
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, 
false);
+                    Activity activity = new Activity();
+
+                    Person person = objectMapper.readValue(line, Person.class);
+
+                    googlePlusActivityUtil.updateActivity(person, activity);
+                    LOGGER.info("activity: {}", activity);
+
+                    assertNotNull(activity);
+                    assert(activity.getId().contains("id:googleplus:update"));
+                    assertEquals(activity.getVerb(), "update");
+
+                    Provider provider = activity.getProvider();
+                    assertEquals(provider.getId(), "id:providers:googleplus");
+                    assertEquals(provider.getDisplayName(), "GooglePlus");
+
+                    Actor actor = activity.getActor();
+                    assertNotNull(actor.getImage());
+                    assert(actor.getId().contains("id:googleplus:"));
+                    assertNotNull(actor.getUrl());
+
+                }
+            }
+        } catch (Exception e) {
+            LOGGER.error("Exception while testing serializability: {}", e);
+        }
+    }
+}
+
+class GPlusPersonDeserializer extends JsonDeserializer<Person> {
+    @Override
+    public Person deserialize(JsonParser jsonParser, DeserializationContext 
deserializationContext) throws IOException, JsonProcessingException {
+        ObjectMapper m = new StreamsJacksonMapper();
+
+        JsonNode node = jsonParser.getCodec().readTree(jsonParser);
+        Person person = new Person();
+
+        
person.setCircledByCount((Integer)((IntNode)node.get("circledByCount")).numberValue());
+        person.setDisplayName(node.get("displayName").asText());
+        person.setEtag(node.get("etag").asText());
+        person.setGender(node.get("gender").asText());
+        person.setId(node.get("id").asText());
+
+        Person.Image image = new Person.Image();
+        JsonNode imageNode = node.get("image");
+        image.setIsDefault(imageNode.get("isDefault").asBoolean());
+        image.setUrl(imageNode.get("url").asText());
+        person.setImage(image);
+
+        person.setIsPlusUser(node.get("isPlusUser").asBoolean());
+        person.setKind(node.get("kind").asText());
+
+        JsonNode nameNode = node.get("name");
+        Person.Name name = m.readValue(m.writeValueAsString(nameNode), 
Person.Name.class);
+        person.setName(name);
+
+        person.setObjectType(node.get("objectType").asText());
+
+        List<Person.Organizations> organizations = Lists.newArrayList();
+        for(JsonNode orgNode : node.get("organizations")) {
+            Person.Organizations org = 
m.readValue(m.writeValueAsString(orgNode), Person.Organizations.class);
+            organizations.add(org);
+        }
+        person.setOrganizations(organizations);
+
+        person.setUrl(node.get("url").asText());
+        person.setVerified(node.get("verified").asBoolean());
+
+        return person;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/eba9aefd/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/processor/GooglePlusTypeConverterTest.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/processor/GooglePlusTypeConverterTest.java
 
b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/processor/GooglePlusTypeConverterTest.java
new file mode 100644
index 0000000..e4923ae
--- /dev/null
+++ 
b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gplus/processor/GooglePlusTypeConverterTest.java
@@ -0,0 +1,7 @@
+package com.google.gplus.processor;
+
+/**
+ * Created by rdouglas on 10/28/14.
+ */
+public class GooglePlusTypeConverterTest {
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/eba9aefd/streams-contrib/streams-provider-google/google-gplus/src/test/resources/google_plus_person_jsons.txt
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-google/google-gplus/src/test/resources/google_plus_person_jsons.txt
 
b/streams-contrib/streams-provider-google/google-gplus/src/test/resources/google_plus_person_jsons.txt
new file mode 100644
index 0000000..e69de29

Reply via email to