You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by sb...@apache.org on 2014/11/14 01:28:57 UTC
[4/9] incubator-streams git commit: omni-bus update
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivityConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivityConverter.java b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivityConverter.java
new file mode 100644
index 0000000..5d77f77
--- /dev/null
+++ b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivityConverter.java
@@ -0,0 +1,240 @@
+/*
+ * 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
+ *
+ * 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 org.apache.streams.gnip.powertrack;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang.StringUtils;
+import org.apache.streams.data.ActivityConverter;
+import org.apache.streams.pojo.json.Activity;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: rebanks
+ * Date: 9/5/13
+ * Time: 3:07 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ActivityXMLActivityConverter implements ActivityConverter<String> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ActivityXMLActivityConverter.class);
+
+ private ObjectMapper mapper;
+ private XmlMapper xmlMapper;
+
+ public ActivityXMLActivityConverter() {
+ mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
+ mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+ mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+ xmlMapper = new XmlMapper();
+ xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
+ xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+ xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+ }
+
+
+ @Override
+ public String serializationFormat() {
+ return "gnip_activity_xml"; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public String serialize(Activity deserialized) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Activity deserialize(String serializedXML) {
+ Activity activity = null;
+ try {
+ activity = xmlMapper.readValue(new StringReader(setContentIfEmpty(serializedXML)), Activity.class);
+ activity = mapper.readValue(new StringReader(fixActivityXML(activity, serializedXML)), Activity.class);
+ } catch (Exception e) {
+ LOGGER.error("Exception correcting Gnip Activity Xml to Activity format.", e);
+ LOGGER.error("Xml that caused error : {}", serializedXML);
+ }
+ return activity; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public List<Activity> deserializeAll(List<String> serializedList) {
+ throw new NotImplementedException("Not currently supported by this deserializer");
+ }
+
+ private String fixActivityXML(Activity activity, String xml) throws Exception{
+ JSONObject jsonObject = new JSONObject(mapper.writeValueAsString(activity));
+ JSONObject newObject = (JSONObject) fixActivityXML(jsonObject);
+ StringReader str = new StringReader(newObject.toString());
+ newObject = formatFixedJSON(newObject);
+ newObject = fixDateFormats(newObject, xml);
+ newObject = createTopLevelConentField(newObject);
+ return newObject.toString();
+
+ }
+
+ private Object fixActivityXML(Object obj) throws Exception {
+ if(obj instanceof JSONObject) {
+ JSONObject json = new JSONObject();
+ JSONObject old = (JSONObject) obj;
+ Iterator keys = old.keys();
+ while(keys.hasNext()) {
+ String key = (String) keys.next();
+ if(StringUtils.isBlank(key)) {
+ return fixActivityXML(old.get(key));
+ }
+ else if(!key.equals("type")){
+ Object o = fixActivityXML(old.get(key));
+ if(o != null)
+ json.put(key, o);
+ }
+
+ }
+ if(json.keys().hasNext())
+ return json;
+ else
+ return null;
+ }
+ else {
+ return obj;
+ }
+
+ }
+
+ private JSONObject formatFixedJSON(JSONObject json) throws Exception{
+ JSONObject topLink = json.optJSONObject("link");
+ if(topLink != null) {
+ json.put("link", topLink.getString("href"));
+ }
+ JSONObject actor = json.optJSONObject("actor");
+ if(actor != null) {
+ JSONObject link = actor.optJSONObject("link");
+ if(link != null) {
+ actor.put("link", link.get("href"));
+ }
+ }
+ JSONObject object = json.optJSONObject("object");
+ if(object != null) {
+ JSONObject link = object.optJSONObject("link");
+ if(link != null) {
+ object.put("link", link.get("href"));
+ }
+ }
+ String generator = json.optString("generator");
+ if(generator != null) {
+ JSONObject gen = new JSONObject();
+ gen.put("displayName", generator);
+ json.put("generator", gen);
+ }
+ return json;
+ }
+
+ private JSONObject fixDateFormats(JSONObject json, String xml) throws Exception{
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ InputSource is = new InputSource(new StringReader(xml));
+ Document doc = docBuilder.parse(is);
+ //why?
+ doc.getDocumentElement().normalize();
+ if(json.optLong("published", -1L) != -1L) {
+ json.put("published", getValueFromXML("published", doc));
+ }
+ if(json.optLong("updated", -1L) != -1L) {
+ json.put("updated", getValueFromXML("updated", doc));
+ }
+ if(json.optLong("created", -1L) != -1L) {
+ json.put("created", getValueFromXML("created", doc));
+ }
+ return json;
+ }
+
+ private JSONObject createTopLevelConentField(JSONObject json) throws JSONException {
+ if(!json.isNull("content")) {
+ return json;
+ }
+ JSONObject object = json.optJSONObject("object");
+ if(object != null) {
+ String content = object.optString("content");
+ if(content == null) {
+ content = object.optString("summary");
+ }
+ if(content != null) {
+ json.put("content", content);
+ }
+ }
+ return json;
+ }
+
+ private String getValueFromXML(String tag, Document doc) throws Exception{
+ Element base = (Element) doc.getElementsByTagName("entry").item(0);
+ return base.getElementsByTagName(tag).item(0).getTextContent();
+ }
+
+ private String setContentIfEmpty(String xml) throws Exception {
+ DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ InputSource is = new InputSource(new StringReader(xml));
+ Document doc = docBuilder.parse(is);
+ doc.getDocumentElement().normalize();
+ Element base = (Element) doc.getElementsByTagName("entry").item(0);
+ NodeList nodeList = base.getChildNodes();
+// for(int i=0; i < nodeList.getLength(); ++i) {
+// System.out.println(nodeList.item(i).getNodeName());
+// }
+ Element obj = (Element)base.getElementsByTagName("activity:object").item(0);
+ Element content = (Element)obj.getElementsByTagName("content").item(0);
+// System.out.println("Number of child nodes : "+content.getChildNodes().getLength());
+// System.out.println("Text content before : "+content.getTextContent());
+ if(content.getTextContent() == null || content.getTextContent().equals("")) {
+ content.setTextContent(" ");
+ }
+// System.out.println("Number of child nodes after : "+content.getChildNodes().getLength());
+// System.out.println("Text content after : "+content.getTextContent());
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Transformer transformer = tf.newTransformer();
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ StringWriter writer = new StringWriter();
+ transformer.transform(new DOMSource(doc), new StreamResult(writer));
+ String output = writer.getBuffer().toString().replaceAll("\n|\r", "");
+// System.out.println(output);
+// System.out.println(output);
+// System.out.println(content);
+ return output;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java
deleted file mode 100644
index e75927f..0000000
--- a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * 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
- *
- * 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 org.apache.streams.gnip.powertrack;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.commons.lang.StringUtils;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 9/5/13
- * Time: 3:07 PM
- * To change this template use File | Settings | File Templates.
- */
-public class ActivityXMLActivitySerializer implements ActivitySerializer<String> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ActivityXMLActivitySerializer.class);
-
- private ObjectMapper mapper;
- private XmlMapper xmlMapper;
-
- public ActivityXMLActivitySerializer() {
- mapper = new ObjectMapper();
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
- mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
- mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
- xmlMapper = new XmlMapper();
- xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
- xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
- xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
- }
-
-
- @Override
- public String serializationFormat() {
- return "gnip_activity_xml"; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- @Override
- public String serialize(Activity deserialized) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public Activity deserialize(String serializedXML) {
- Activity activity = null;
- try {
- activity = xmlMapper.readValue(new StringReader(setContentIfEmpty(serializedXML)), Activity.class);
- activity = mapper.readValue(new StringReader(fixActivityXML(activity, serializedXML)), Activity.class);
- } catch (Exception e) {
- LOGGER.error("Exception correcting Gnip Activity Xml to Activity format.", e);
- LOGGER.error("Xml that caused error : {}", serializedXML);
- }
- return activity; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- @Override
- public List<Activity> deserializeAll(List<String> serializedList) {
- throw new NotImplementedException("Not currently supported by this deserializer");
- }
-
- private String fixActivityXML(Activity activity, String xml) throws Exception{
- JSONObject jsonObject = new JSONObject(mapper.writeValueAsString(activity));
- JSONObject newObject = (JSONObject) fixActivityXML(jsonObject);
- StringReader str = new StringReader(newObject.toString());
- newObject = formatFixedJSON(newObject);
- newObject = fixDateFormats(newObject, xml);
- newObject = createTopLevelConentField(newObject);
- return newObject.toString();
-
- }
-
- private Object fixActivityXML(Object obj) throws Exception {
- if(obj instanceof JSONObject) {
- JSONObject json = new JSONObject();
- JSONObject old = (JSONObject) obj;
- Iterator keys = old.keys();
- while(keys.hasNext()) {
- String key = (String) keys.next();
- if(StringUtils.isBlank(key)) {
- return fixActivityXML(old.get(key));
- }
- else if(!key.equals("type")){
- Object o = fixActivityXML(old.get(key));
- if(o != null)
- json.put(key, o);
- }
-
- }
- if(json.keys().hasNext())
- return json;
- else
- return null;
- }
- else {
- return obj;
- }
-
- }
-
- private JSONObject formatFixedJSON(JSONObject json) throws Exception{
- JSONObject topLink = json.optJSONObject("link");
- if(topLink != null) {
- json.put("link", topLink.getString("href"));
- }
- JSONObject actor = json.optJSONObject("actor");
- if(actor != null) {
- JSONObject link = actor.optJSONObject("link");
- if(link != null) {
- actor.put("link", link.get("href"));
- }
- }
- JSONObject object = json.optJSONObject("object");
- if(object != null) {
- JSONObject link = object.optJSONObject("link");
- if(link != null) {
- object.put("link", link.get("href"));
- }
- }
- String generator = json.optString("generator");
- if(generator != null) {
- JSONObject gen = new JSONObject();
- gen.put("displayName", generator);
- json.put("generator", gen);
- }
- return json;
- }
-
- private JSONObject fixDateFormats(JSONObject json, String xml) throws Exception{
- DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- InputSource is = new InputSource(new StringReader(xml));
- Document doc = docBuilder.parse(is);
- //why?
- doc.getDocumentElement().normalize();
- if(json.optLong("published", -1L) != -1L) {
- json.put("published", getValueFromXML("published", doc));
- }
- if(json.optLong("updated", -1L) != -1L) {
- json.put("updated", getValueFromXML("updated", doc));
- }
- if(json.optLong("created", -1L) != -1L) {
- json.put("created", getValueFromXML("created", doc));
- }
- return json;
- }
-
- private JSONObject createTopLevelConentField(JSONObject json) throws JSONException {
- if(!json.isNull("content")) {
- return json;
- }
- JSONObject object = json.optJSONObject("object");
- if(object != null) {
- String content = object.optString("content");
- if(content == null) {
- content = object.optString("summary");
- }
- if(content != null) {
- json.put("content", content);
- }
- }
- return json;
- }
-
- private String getValueFromXML(String tag, Document doc) throws Exception{
- Element base = (Element) doc.getElementsByTagName("entry").item(0);
- return base.getElementsByTagName(tag).item(0).getTextContent();
- }
-
- private String setContentIfEmpty(String xml) throws Exception {
- DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- InputSource is = new InputSource(new StringReader(xml));
- Document doc = docBuilder.parse(is);
- doc.getDocumentElement().normalize();
- Element base = (Element) doc.getElementsByTagName("entry").item(0);
- NodeList nodeList = base.getChildNodes();
-// for(int i=0; i < nodeList.getLength(); ++i) {
-// System.out.println(nodeList.item(i).getNodeName());
-// }
- Element obj = (Element)base.getElementsByTagName("activity:object").item(0);
- Element content = (Element)obj.getElementsByTagName("content").item(0);
-// System.out.println("Number of child nodes : "+content.getChildNodes().getLength());
-// System.out.println("Text content before : "+content.getTextContent());
- if(content.getTextContent() == null || content.getTextContent().equals("")) {
- content.setTextContent(" ");
- }
-// System.out.println("Number of child nodes after : "+content.getChildNodes().getLength());
-// System.out.println("Text content after : "+content.getTextContent());
- TransformerFactory tf = TransformerFactory.newInstance();
- Transformer transformer = tf.newTransformer();
- transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
- StringWriter writer = new StringWriter();
- transformer.transform(new DOMSource(doc), new StreamResult(writer));
- String output = writer.getBuffer().toString().replaceAll("\n|\r", "");
-// System.out.println(output);
-// System.out.println(output);
-// System.out.println(content);
- return output;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivityConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivityConverter.java b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivityConverter.java
new file mode 100644
index 0000000..3f8409b
--- /dev/null
+++ b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivityConverter.java
@@ -0,0 +1,121 @@
+/*
+ * 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
+ *
+ * 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 org.apache.streams.gnip.powertrack;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivityConverter;
+import org.apache.streams.pojo.json.Activity;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.StringReader;
+import java.util.List;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: rebanks
+ * Date: 9/5/13
+ * Time: 2:29 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class PowerTrackActivityConverter implements ActivityConverter<String> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(PowerTrackActivityConverter.class);
+
+ private ObjectMapper mapper;
+
+ public PowerTrackActivityConverter() {
+ mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
+ mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+ mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+ }
+
+
+
+ @Override
+ public String serializationFormat() {
+ return "gnip_powertrack"; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public String serialize(Activity deserialized) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Activity deserialize(String serialized) {
+ Activity activity = null;
+ try {
+ JSONObject jsonObject = new JSONObject(serialized);
+ String content = jsonObject.optString("content", null);
+ if(content == null) {
+ content = jsonObject.optString("body", null);
+ if(content == null) {
+ content = jsonObject.optString("summary", null);
+ if(content == null) {
+ JSONObject object = jsonObject.optJSONObject("object");
+ if(object != null) {
+ content = object.optString("content", null);
+ if(content == null) {
+ content = object.optString("body", null);
+ if(content == null) {
+ content = object.optString("summary", null);
+ }
+ }
+ }
+ }
+ }
+
+ }
+ if(content != null) {
+ jsonObject.put("content", content);
+ }
+ String dateTime = jsonObject.optString("postedTime");
+ if(dateTime != null) {
+ jsonObject.put("published", dateTime);
+ }
+ JSONObject actor = jsonObject.optJSONObject("actor");
+ if(actor != null) {
+ String url = actor.optString("image");
+ if(url != null) {
+ JSONObject media = new JSONObject();
+ media.put("url", url);
+ actor.put("image", media);
+ }
+ }
+ serialized = jsonObject.toString();
+ StringReader reader = new StringReader(serialized);
+ activity = this.mapper.readValue(reader, Activity.class);
+ } catch (Exception e) {
+ LOGGER.error("Exception deserializing powertrack string to Activity Object.", e);
+ LOGGER.error("Exception on json : {}", serialized);
+ }
+ return activity;
+ }
+
+ @Override
+ public List<Activity> deserializeAll(List<String> serializedList) {
+ throw new NotImplementedException("Not currently supported by this deserializer");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java
deleted file mode 100644
index 55b1423..0000000
--- a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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
- *
- * 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 org.apache.streams.gnip.powertrack;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.StringReader;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 9/5/13
- * Time: 2:29 PM
- * To change this template use File | Settings | File Templates.
- */
-public class PowerTrackActivitySerializer implements ActivitySerializer<String> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(PowerTrackActivitySerializer.class);
-
- private ObjectMapper mapper;
-
- public PowerTrackActivitySerializer() {
- mapper = new ObjectMapper();
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
- mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
- mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
- }
-
-
-
- @Override
- public String serializationFormat() {
- return "gnip_powertrack"; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- @Override
- public String serialize(Activity deserialized) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public Activity deserialize(String serialized) {
- Activity activity = null;
- try {
- JSONObject jsonObject = new JSONObject(serialized);
- String content = jsonObject.optString("content", null);
- if(content == null) {
- content = jsonObject.optString("body", null);
- if(content == null) {
- content = jsonObject.optString("summary", null);
- if(content == null) {
- JSONObject object = jsonObject.optJSONObject("object");
- if(object != null) {
- content = object.optString("content", null);
- if(content == null) {
- content = object.optString("body", null);
- if(content == null) {
- content = object.optString("summary", null);
- }
- }
- }
- }
- }
-
- }
- if(content != null) {
- jsonObject.put("content", content);
- }
- String dateTime = jsonObject.optString("postedTime");
- if(dateTime != null) {
- jsonObject.put("published", dateTime);
- }
- JSONObject actor = jsonObject.optJSONObject("actor");
- if(actor != null) {
- String url = actor.optString("image");
- if(url != null) {
- JSONObject media = new JSONObject();
- media.put("url", url);
- actor.put("image", media);
- }
- }
- serialized = jsonObject.toString();
- StringReader reader = new StringReader(serialized);
- activity = this.mapper.readValue(reader, Activity.class);
- } catch (Exception e) {
- LOGGER.error("Exception deserializing powertrack string to Activity Object.", e);
- LOGGER.error("Exception on json : {}", serialized);
- }
- return activity;
- }
-
- @Override
- public List<Activity> deserializeAll(List<String> serializedList) {
- throw new NotImplementedException("Not currently supported by this deserializer");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
index 6ff7f6e..047d200 100644
--- a/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
+++ b/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
@@ -18,7 +18,7 @@
package org.apache.streams.gnip.powertrack.test;
-import org.apache.streams.gnip.powertrack.PowerTrackActivitySerializer;
+import org.apache.streams.gnip.powertrack.PowerTrackActivityConverter;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
@@ -33,14 +33,14 @@ import org.slf4j.LoggerFactory;
*/
public class PowerTrackDeserializationTest {
- private static final Logger LOGGER = LoggerFactory.getLogger(PowerTrackActivitySerializer.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(PowerTrackActivityConverter.class);
private static final String ptData1= "{\"gnip\":{\"matching_rules\":[{\"tag\":\"toujours_DE_DE_de\"}],\"klout_score\":32,\"klout_profile\":{\"topics\":[],\"klout_user_id\":\"141018977628748348\",\"link\":\"http://klout.com/user/id/141018977628748348\"},\"language\":{\"value\":\"fr\"}},\"body\":\"RT @Albayraakkk: J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se par\\u201a??\",\"favoritesCount\":0,\"link\":\"http://twitter.com/alexandragriett/statuses/375760903104638976\",\"retweetCount\":168,\"twitter_lang\":\"fr\",\"postedTime\":\"2013-09-05T23:22:35.000Z\",\"provider\":{\"link\":\"http://www.twitter.com\",\"displayName\":\"Twitter\",\"objectType\":\"service\"},\"actor\":{\"summary\":null,\"twitterTimeZone\":null,\"friendsCount\":68,\"favoritesCount\":3,\"link\":\"http://www.twitter.com/alexandragriett\",\"postedTime\":\"2013-05-01T17:52:16.000Z\",\"image\":\"https://si0.twimg.com/profile_images/37880000041435
3370/ef4170ca183eed9f7f30665712baba05_normal.jpeg\",\"links\":[{\"rel\":\"me\",\"href\":null}],\"listedCount\":0,\"id\":\"id:twitter.com:1395160326\",\"languages\":[\"fr\"],\"verified\":false,\"utcOffset\":null,\"followersCount\":47,\"preferredUsername\":\"alexandragriett\",\"displayName\":\"MauvaiseIdee\",\"statusesCount\":333,\"objectType\":\"person\"},\"object\":{\"body\":\"J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se parle plus...\",\"favoritesCount\":24,\"link\":\"http://twitter.com/Albayraakkk/statuses/370496182172540928\",\"twitter_lang\":\"fr\",\"postedTime\":\"2013-08-22T10:42:27.000Z\",\"provider\":{\"link\":\"http://www.twitter.com\",\"displayName\":\"Twitter\",\"objectType\":\"service\"},\"actor\":{\"summary\":\"Le meilleur est dans mes favoris ! J'followback sur Instagram : http://instagram.com/Albayraakkk Kik : Cihan69200 #TeamBooba #TeamLacrim\",\"twitterTimeZone\":\"Athens\",\"friendsCount\":24
998,\"favoritesCount\":677,\"location\":{\"displayName\":\"Dans Ta Timeline\",\"objectType\":\"place\"},\"link\":\"http://www.twitter.com/Albayraakkk\",\"postedTime\":\"2012-06-23T20:59:05.000Z\",\"image\":\"https://si0.twimg.com/profile_images/378800000410070574/26edc26ad5ccb223da8b850244b468eb_normal.jpeg\",\"links\":[{\"rel\":\"me\",\"href\":\"http://facebook.com/CihanAlbayraak\"}],\"listedCount\":69,\"id\":\"id:twitter.com:616472380\",\"languages\":[\"fr\"],\"verified\":false,\"utcOffset\":\"10800\",\"followersCount\":76068,\"preferredUsername\":\"Albayraakkk\",\"displayName\":\"LA VIRGULE \\u201a??\",\"statusesCount\":671,\"objectType\":\"person\"},\"object\":{\"summary\":\"J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se parle plus...\",\"id\":\"object:search.twitter.com,2005:370496182172540928\",\"link\":\"http://twitter.com/Albayraakkk/statuses/370496182172540928\",\"postedTime\":\"2013-08-22T10:42:27.000Z
\",\"objectType\":\"note\"},\"twitter_entities\":{\"symbols\":[],\"urls\":[],\"hashtags\":[],\"user_mentions\":[]},\"id\":\"tag:search.twitter.com,2005:370496182172540928\",\"verb\":\"post\",\"generator\":{\"link\":\"http://twitter.com/download/iphone\",\"displayName\":\"Twitter for iPhone\"},\"objectType\":\"activity\"},\"twitter_entities\":{\"symbols\":[],\"urls\":[],\"hashtags\":[],\"user_mentions\":[{\"id\":616472380,\"name\":\"LA VIRGULE \\u201a??\",\"indices\":[3,15],\"screen_name\":\"Albayraakkk\",\"id_str\":\"616472380\"}]},\"twitter_filter_level\":\"medium\",\"content\":\"RT @Albayraakkk: J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se par\\u201a??\",\"id\":\"tag:search.twitter.com,2005:375760903104638976\",\"verb\":\"share\",\"generator\":{\"link\":\"http://twitter.com/download/iphone\",\"displayName\":\"Twitter for iPhone\"},\"published\":\"2013-09-05T23:22:35.000Z\",\"objectType\":\"activity\"}";
@Test
public void deserializationTest() {
- PowerTrackActivitySerializer serializer = new PowerTrackActivitySerializer();
+ PowerTrackActivityConverter serializer = new PowerTrackActivityConverter();
try {
Object activity = serializer.deserialize(ptData1);
} catch( Exception e ) {
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
index 2beeb88..6c928ce 100644
--- a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
@@ -18,7 +18,6 @@
package com.google.gmail.provider;
-import com.googlecode.gmail4j.GmailClient;
import com.googlecode.gmail4j.GmailMessage;
import org.apache.streams.core.StreamsDatum;
import org.apache.streams.pojo.json.Activity;
@@ -26,8 +25,6 @@ import org.apache.streams.util.ComponentUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
import java.util.List;
/**
@@ -51,7 +48,7 @@ public class GMailImapProviderTask implements Runnable {
for (GmailMessage message : messages) {
Activity activity;
- GMailMessageActivitySerializer serializer = new GMailMessageActivitySerializer( this.provider );
+ GMailMessageActivityConverter serializer = new GMailMessageActivityConverter( this.provider );
activity = serializer.deserialize(message);
StreamsDatum entry = new StreamsDatum(activity);
ComponentUtils.offerUntilSuccess(entry, this.provider.providerQueue);
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivityConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivityConverter.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivityConverter.java
new file mode 100644
index 0000000..1a8a38c
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivityConverter.java
@@ -0,0 +1,202 @@
+/*
+ * 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
+ *
+ * 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.gmail.provider;
+
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+import com.googlecode.gmail4j.GmailException;
+import com.googlecode.gmail4j.GmailMessage;
+import com.googlecode.gmail4j.javamail.JavaMailGmailMessage;
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPMessage;
+import com.sun.mail.imap.IMAPSSLStore;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivityConverter;
+import org.apache.streams.pojo.json.*;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.mail.internet.MimeMultipart;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.streams.data.util.ActivityUtil.ensureExtensions;
+
+/**
+* Created with IntelliJ IDEA.
+* User: mdelaet
+* Date: 9/30/13
+* Time: 9:24 AM
+* To change this template use File | Settings | File Templates.
+*/
+public class GMailMessageActivityConverter implements ActivityConverter<GmailMessage> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(GMailMessageActivityConverter.class);
+
+ GMailProvider provider;
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ public GMailMessageActivityConverter(GMailProvider provider) {
+
+ this.provider = provider;
+
+ mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, Boolean.FALSE);
+
+ mapper.addMixInAnnotations(IMAPSSLStore.class, MessageMixIn.class);
+ mapper.addMixInAnnotations(IMAPFolder.class, MessageMixIn.class);
+ mapper.addMixInAnnotations(IMAPMessage.class, MessageMixIn.class);
+ mapper.addMixInAnnotations(MimeMultipart.class, MessageMixIn.class);
+ mapper.addMixInAnnotations(JavaMailGmailMessage.class, MessageMixIn.class);
+
+ }
+
+ public GMailMessageActivityConverter() {
+ }
+
+ @Override
+ public String serializationFormat() {
+ return "gmail.v1";
+ }
+
+ @Override
+ public GmailMessage serialize(Activity activity) {
+ return null;
+ }
+
+ @Override
+ public Activity deserialize(GmailMessage gmailMessage) {
+
+ Activity activity = new Activity();
+ activity.setId(formatId(this.provider.getConfig().getUserName(), String.valueOf(gmailMessage.getMessageNumber())));
+ activity.setPublished(new DateTime(gmailMessage.getSendDate()));
+ Provider provider = new Provider();
+ provider.setId("http://gmail.com");
+ provider.setDisplayName("GMail");
+ activity.setProvider(provider);
+ Actor actor = new Actor();
+ actor.setId(gmailMessage.getFrom().getEmail());
+ actor.setDisplayName(gmailMessage.getFrom().getName());
+ activity.setActor(actor);
+ activity.setVerb("email");
+ ActivityObject object = new ActivityObject();
+ try {
+ object.setId(gmailMessage.getTo().get(0).getEmail());
+ object.setDisplayName(gmailMessage.getTo().get(0).getName());
+ } catch( GmailException e ) {
+ LOGGER.warn(e.getMessage());
+ }
+ activity.setTitle(gmailMessage.getSubject());
+ try {
+ activity.setContent(gmailMessage.getContentText());
+ } catch( GmailException e ) {
+ LOGGER.warn(e.getMessage());
+ }
+ activity.setObject(object);
+
+// try {
+// // if jackson can't serialize the object, find out now
+// String jsonString = mapper.writeValueAsString(gmailMessage);
+// ObjectNode jsonObject = mapper.valueToTree(gmailMessage);
+// // since it can, write the entire source object to extensions.gmail
+// Map<String, Object> extensions = Maps.newHashMap();
+// extensions.put("gmail", gmailMessage);
+// activity.setAdditionalProperty("extensions", extensions);
+// } catch (JsonProcessingException e) {
+// LOGGER.debug("Failed Json Deserialization");
+// e.printStackTrace();
+// }
+
+ return activity;
+ }
+
+ @Override
+ public List<Activity> deserializeAll(List<GmailMessage> serializedList) {
+ throw new NotImplementedException("Not currently implemented");
+ }
+
+ public Activity convert(ObjectNode event) {
+ return null;
+ }
+
+ public static Generator buildGenerator(ObjectNode event) {
+ return null;
+ }
+
+ public static Icon getIcon(ObjectNode event) {
+ return null;
+ }
+
+ public static Provider buildProvider(ObjectNode event) {
+ Provider provider = new Provider();
+ provider.setId("id:providers:gmail");
+ return provider;
+ }
+
+ public static List<Object> getLinks(ObjectNode event) {
+ return null;
+ }
+
+ public static String getUrls(ObjectNode event) {
+ return null;
+ }
+
+ public static void addGMailExtension(Activity activity, GmailMessage gmailMessage) {
+ Map<String, Object> extensions = ensureExtensions(activity);
+ extensions.put("gmail", gmailMessage);
+ }
+
+ public static String formatId(String... idparts) {
+ return Joiner.on(":").join(Lists.asList("id:gmail", idparts));
+ }
+
+ interface MessageMixIn {
+ @JsonManagedReference
+ @JsonIgnore
+ IMAPSSLStore getDefaultFolder(); // we don't need it!
+ @JsonManagedReference
+ @JsonIgnore
+ IMAPSSLStore getPersonalNamespaces(); // we don't need it!
+ @JsonManagedReference
+ @JsonIgnore
+ IMAPFolder getStore(); // we don't need it!
+ // @JsonManagedReference
+// @JsonIgnore
+// @JsonBackReference
+ //IMAPFolder getParent(); // we don't need it!
+ @JsonManagedReference
+ @JsonIgnore
+ @JsonBackReference
+ IMAPMessage getFolder(); // we don't need it!
+ @JsonManagedReference
+ @JsonIgnore
+ @JsonProperty("parent")
+ @JsonBackReference
+ MimeMultipart getParent();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
deleted file mode 100644
index a53eaa5..0000000
--- a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * 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
- *
- * 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.gmail.provider;
-
-import com.fasterxml.jackson.annotation.JsonBackReference;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonManagedReference;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
-import com.google.common.base.Joiner;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.googlecode.gmail4j.GmailException;
-import com.googlecode.gmail4j.GmailMessage;
-import com.googlecode.gmail4j.javamail.JavaMailGmailMessage;
-import com.sun.mail.imap.IMAPFolder;
-import com.sun.mail.imap.IMAPMessage;
-import com.sun.mail.imap.IMAPSSLStore;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.*;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.mail.internet.MimeMultipart;
-import java.io.IOException;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.streams.data.util.ActivityUtil.ensureExtensions;
-
-/**
-* Created with IntelliJ IDEA.
-* User: mdelaet
-* Date: 9/30/13
-* Time: 9:24 AM
-* To change this template use File | Settings | File Templates.
-*/
-public class GMailMessageActivitySerializer implements ActivitySerializer<GmailMessage> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(GMailMessageActivitySerializer.class);
-
- GMailProvider provider;
-
- ObjectMapper mapper = new ObjectMapper();
-
- public GMailMessageActivitySerializer(GMailProvider provider) {
-
- this.provider = provider;
-
- mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, Boolean.FALSE);
-
- mapper.addMixInAnnotations(IMAPSSLStore.class, MessageMixIn.class);
- mapper.addMixInAnnotations(IMAPFolder.class, MessageMixIn.class);
- mapper.addMixInAnnotations(IMAPMessage.class, MessageMixIn.class);
- mapper.addMixInAnnotations(MimeMultipart.class, MessageMixIn.class);
- mapper.addMixInAnnotations(JavaMailGmailMessage.class, MessageMixIn.class);
-
- }
-
- public GMailMessageActivitySerializer() {
- }
-
- @Override
- public String serializationFormat() {
- return "gmail.v1";
- }
-
- @Override
- public GmailMessage serialize(Activity activity) {
- return null;
- }
-
- @Override
- public Activity deserialize(GmailMessage gmailMessage) {
-
- Activity activity = new Activity();
- activity.setId(formatId(this.provider.getConfig().getUserName(), String.valueOf(gmailMessage.getMessageNumber())));
- activity.setPublished(new DateTime(gmailMessage.getSendDate()));
- Provider provider = new Provider();
- provider.setId("http://gmail.com");
- provider.setDisplayName("GMail");
- activity.setProvider(provider);
- Actor actor = new Actor();
- actor.setId(gmailMessage.getFrom().getEmail());
- actor.setDisplayName(gmailMessage.getFrom().getName());
- activity.setActor(actor);
- activity.setVerb("email");
- ActivityObject object = new ActivityObject();
- try {
- object.setId(gmailMessage.getTo().get(0).getEmail());
- object.setDisplayName(gmailMessage.getTo().get(0).getName());
- } catch( GmailException e ) {
- LOGGER.warn(e.getMessage());
- }
- activity.setTitle(gmailMessage.getSubject());
- try {
- activity.setContent(gmailMessage.getContentText());
- } catch( GmailException e ) {
- LOGGER.warn(e.getMessage());
- }
- activity.setObject(object);
-
-// try {
-// // if jackson can't serialize the object, find out now
-// String jsonString = mapper.writeValueAsString(gmailMessage);
-// ObjectNode jsonObject = mapper.valueToTree(gmailMessage);
-// // since it can, write the entire source object to extensions.gmail
-// Map<String, Object> extensions = Maps.newHashMap();
-// extensions.put("gmail", gmailMessage);
-// activity.setAdditionalProperty("extensions", extensions);
-// } catch (JsonProcessingException e) {
-// LOGGER.debug("Failed Json Deserialization");
-// e.printStackTrace();
-// }
-
- return activity;
- }
-
- @Override
- public List<Activity> deserializeAll(List<GmailMessage> serializedList) {
- throw new NotImplementedException("Not currently implemented");
- }
-
- public Activity convert(ObjectNode event) {
- return null;
- }
-
- public static Generator buildGenerator(ObjectNode event) {
- return null;
- }
-
- public static Icon getIcon(ObjectNode event) {
- return null;
- }
-
- public static Provider buildProvider(ObjectNode event) {
- Provider provider = new Provider();
- provider.setId("id:providers:gmail");
- return provider;
- }
-
- public static List<Object> getLinks(ObjectNode event) {
- return null;
- }
-
- public static String getUrls(ObjectNode event) {
- return null;
- }
-
- public static void addGMailExtension(Activity activity, GmailMessage gmailMessage) {
- Map<String, Object> extensions = ensureExtensions(activity);
- extensions.put("gmail", gmailMessage);
- }
-
- public static String formatId(String... idparts) {
- return Joiner.on(":").join(Lists.asList("id:gmail", idparts));
- }
-
- interface MessageMixIn {
- @JsonManagedReference
- @JsonIgnore
- IMAPSSLStore getDefaultFolder(); // we don't need it!
- @JsonManagedReference
- @JsonIgnore
- IMAPSSLStore getPersonalNamespaces(); // we don't need it!
- @JsonManagedReference
- @JsonIgnore
- IMAPFolder getStore(); // we don't need it!
- // @JsonManagedReference
-// @JsonIgnore
-// @JsonBackReference
- //IMAPFolder getParent(); // we don't need it!
- @JsonManagedReference
- @JsonIgnore
- @JsonBackReference
- IMAPMessage getFolder(); // we don't need it!
- @JsonManagedReference
- @JsonIgnore
- @JsonProperty("parent")
- @JsonBackReference
- MimeMultipart getParent();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivityConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivityConverter.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivityConverter.java
new file mode 100644
index 0000000..e4a1f5d
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivityConverter.java
@@ -0,0 +1,67 @@
+/*
+ * 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
+ *
+ * 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.provider;
+
+import com.google.gplus.serializer.util.GooglePlusActivityUtil;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivityConverter;
+import org.apache.streams.pojo.json.Activity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+
+public class GPlusActivityConverter implements ActivityConverter<com.google.api.services.plus.model.Activity> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(GPlusActivityConverter.class);
+
+ AbstractGPlusProvider provider;
+
+ public GPlusActivityConverter(AbstractGPlusProvider provider) {
+
+ this.provider = provider;
+ }
+
+ public GPlusActivityConverter() {
+ }
+
+ @Override
+ public String serializationFormat() {
+ return "gplus.v1";
+ }
+
+ @Override
+ public com.google.api.services.plus.model.Activity serialize(Activity deserialized) {
+ throw new NotImplementedException("Not currently implemented");
+ }
+
+ @Override
+ public Activity deserialize(com.google.api.services.plus.model.Activity gplusActivity) {
+ Activity activity = new Activity();
+
+ GooglePlusActivityUtil.updateActivity(gplusActivity, activity);
+ return activity;
+ }
+
+ @Override
+ public List<Activity> deserializeAll(List<com.google.api.services.plus.model.Activity> serializedList) {
+ throw new NotImplementedException("Not currently implemented");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
deleted file mode 100644
index 4991e94..0000000
--- a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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
- *
- * 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.provider;
-
-import com.google.gplus.serializer.util.GooglePlusActivityUtil;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.Activity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-
-public class GPlusActivitySerializer implements ActivitySerializer<com.google.api.services.plus.model.Activity> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(GPlusActivitySerializer.class);
-
- AbstractGPlusProvider provider;
-
- public GPlusActivitySerializer(AbstractGPlusProvider provider) {
-
- this.provider = provider;
- }
-
- public GPlusActivitySerializer() {
- }
-
- @Override
- public String serializationFormat() {
- return "gplus.v1";
- }
-
- @Override
- public com.google.api.services.plus.model.Activity serialize(Activity deserialized) {
- throw new NotImplementedException("Not currently implemented");
- }
-
- @Override
- public Activity deserialize(com.google.api.services.plus.model.Activity gplusActivity) {
- Activity activity = new Activity();
-
- GooglePlusActivityUtil.updateActivity(gplusActivity, activity);
- return activity;
- }
-
- @Override
- public List<Activity> deserializeAll(List<com.google.api.services.plus.model.Activity> serializedList) {
- throw new NotImplementedException("Not currently implemented");
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
index 6ed2ae1..052020a 100644
--- a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
@@ -41,7 +41,7 @@ public class GPlusEventProcessor implements Runnable {
private Class inClass;
private Class outClass;
- private GPlusActivitySerializer gPlusActivitySerializer = new GPlusActivitySerializer();
+ private GPlusActivityConverter gPlusActivitySerializer = new GPlusActivityConverter();
public final static String TERMINATE = new String("TERMINATE");
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/processor/InstagramTypeConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/processor/InstagramTypeConverter.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/processor/InstagramTypeConverter.java
index f0101fd..7d3c4e9 100644
--- a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/processor/InstagramTypeConverter.java
+++ b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/processor/InstagramTypeConverter.java
@@ -21,7 +21,7 @@ package org.apache.streams.instagram.processor;
import com.google.common.collect.Lists;
import org.apache.streams.core.StreamsDatum;
import org.apache.streams.core.StreamsProcessor;
-import org.apache.streams.instagram.serializer.InstagramUserInfoSerializer;
+import org.apache.streams.instagram.serializer.InstagramUserInfoConverter;
import org.apache.streams.instagram.serializer.util.InstagramActivityUtil;
import org.apache.streams.pojo.json.Activity;
import org.jinstagram.entity.users.basicinfo.UserInfoData;
@@ -42,7 +42,7 @@ public class InstagramTypeConverter implements StreamsProcessor {
private Queue<StreamsDatum> outQueue;
private InstagramActivityUtil instagramActivityUtil;
- private InstagramUserInfoSerializer userInfoSerializer;
+ private InstagramUserInfoConverter userInfoSerializer;
private int count = 0;
@@ -99,7 +99,7 @@ public class InstagramTypeConverter implements StreamsProcessor {
@Override
public void prepare(Object o) {
instagramActivityUtil = new InstagramActivityUtil();
- this.userInfoSerializer = new InstagramUserInfoSerializer();
+ this.userInfoSerializer = new InstagramUserInfoConverter();
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivityConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivityConverter.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivityConverter.java
new file mode 100644
index 0000000..7b9dd09
--- /dev/null
+++ b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivityConverter.java
@@ -0,0 +1,78 @@
+/*
+ * 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
+ *
+ * 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 org.apache.streams.instagram.serializer;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivityConverter;
+import org.apache.streams.exceptions.ActivitySerializerException;
+import org.apache.streams.jackson.StreamsJacksonMapper;
+import org.apache.streams.pojo.json.Activity;
+import org.jinstagram.entity.users.feed.MediaFeedData;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.List;
+
+import static org.apache.streams.instagram.serializer.util.InstagramActivityUtil.updateActivity;
+
+public class InstagramJsonActivityConverter implements ActivityConverter<String>, Serializable
+{
+
+ public InstagramJsonActivityConverter() {
+
+ }
+
+ @Override
+ public String serializationFormat() {
+ return null;
+ }
+
+ @Override
+ public String serialize(Activity deserialized) throws ActivitySerializerException {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public Activity deserialize(String serialized) throws ActivitySerializerException {
+
+ ObjectMapper mapper = StreamsJacksonMapper.getInstance();
+ MediaFeedData mediaFeedData = null;
+
+ try {
+ mediaFeedData = mapper.readValue(serialized, MediaFeedData.class);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ Activity activity = new Activity();
+
+ updateActivity(mediaFeedData, activity);
+
+ return activity;
+ }
+
+ @Override
+ public List<Activity> deserializeAll(List<String> serializedList) {
+ throw new NotImplementedException();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivitySerializer.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivitySerializer.java
deleted file mode 100644
index c5bbdf1..0000000
--- a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramJsonActivitySerializer.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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
- *
- * 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 org.apache.streams.instagram.serializer;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.exceptions.ActivitySerializerException;
-import org.apache.streams.jackson.StreamsJacksonMapper;
-import org.apache.streams.pojo.json.Activity;
-import org.jinstagram.entity.users.feed.MediaFeedData;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.List;
-
-import static org.apache.streams.instagram.serializer.util.InstagramActivityUtil.updateActivity;
-
-public class InstagramJsonActivitySerializer implements ActivitySerializer<String>, Serializable
-{
-
- public InstagramJsonActivitySerializer() {
-
- }
-
- @Override
- public String serializationFormat() {
- return null;
- }
-
- @Override
- public String serialize(Activity deserialized) throws ActivitySerializerException {
- throw new NotImplementedException();
- }
-
- @Override
- public Activity deserialize(String serialized) throws ActivitySerializerException {
-
- ObjectMapper mapper = StreamsJacksonMapper.getInstance();
- MediaFeedData mediaFeedData = null;
-
- try {
- mediaFeedData = mapper.readValue(serialized, MediaFeedData.class);
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- Activity activity = new Activity();
-
- updateActivity(mediaFeedData, activity);
-
- return activity;
- }
-
- @Override
- public List<Activity> deserializeAll(List<String> serializedList) {
- throw new NotImplementedException();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoConverter.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoConverter.java
new file mode 100644
index 0000000..95456c1
--- /dev/null
+++ b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoConverter.java
@@ -0,0 +1,81 @@
+package org.apache.streams.instagram.serializer;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.apache.streams.data.ActivityConverter;
+import org.apache.streams.exceptions.ActivitySerializerException;
+import org.apache.streams.pojo.json.Activity;
+import org.apache.streams.pojo.json.Actor;
+import org.apache.streams.pojo.json.Image;
+import org.apache.streams.pojo.json.Provider;
+import org.jinstagram.entity.users.basicinfo.UserInfoData;
+import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import sun.reflect.generics.reflectiveObjects.NotImplementedException;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ */
+public class InstagramUserInfoConverter implements ActivityConverter<UserInfoData> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(InstagramUserInfoConverter.class);
+
+ private static final String STREAMS_ID_PREFIX = "id:instagram:";
+ private static final String PROVIDER_ID = "id:provider:instagram";
+ private static final String DISPLAY_NAME = "Instagram";
+
+ @Override
+ public String serializationFormat() {
+ return null;
+ }
+
+ @Override
+ public UserInfoData serialize(Activity deserialized) throws ActivitySerializerException {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public Activity deserialize(UserInfoData serialized) throws ActivitySerializerException {
+ Activity activity = new Activity();
+ Provider provider = new Provider();
+ provider.setId(PROVIDER_ID);
+ provider.setDisplayName(DISPLAY_NAME);
+ activity.setProvider(provider);
+ activity.setPublished(DateTime.now().withZone(DateTimeZone.UTC));
+ Actor actor = new Actor();
+ Image image = new Image();
+ image.setUrl(serialized.getProfile_picture());
+ actor.setImage(image);
+ actor.setId(STREAMS_ID_PREFIX+serialized.getId());
+ actor.setSummary(serialized.getBio());
+ actor.setAdditionalProperty("handle", serialized.getUsername());
+ actor.setDisplayName(serialized.getFullName());
+ Map<String, Object> extensions = Maps.newHashMap();
+ actor.setAdditionalProperty("extensions", extensions);
+ extensions.put("screenName", serialized.getUsername());
+ extensions.put("posts", serialized.getCounts().getMedia());
+ extensions.put("followers", serialized.getCounts().getFollwed_by());
+ extensions.put("website", serialized.getWebsite());
+ extensions.put("following", serialized.getCounts().getFollows());
+ return activity;
+ }
+
+ @Override
+ public List<Activity> deserializeAll(List<UserInfoData> serializedList) {
+ List<Activity> result = Lists.newLinkedList();
+ for(UserInfoData data : serializedList) {
+ try {
+ result.add(deserialize(data));
+ } catch (ActivitySerializerException ase) {
+ LOGGER.error("Caught ActivitySerializerException, dropping user info data : {}", data.getId());
+ LOGGER.error("Exception : {}", ase);
+ }
+ }
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoSerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoSerializer.java b/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoSerializer.java
deleted file mode 100644
index 055169b..0000000
--- a/streams-contrib/streams-provider-instagram/src/main/java/org/apache/streams/instagram/serializer/InstagramUserInfoSerializer.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.apache.streams.instagram.serializer;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.exceptions.ActivitySerializerException;
-import org.apache.streams.instagram.UsersInfo;
-import org.apache.streams.instagram.provider.userinfo.InstagramUserInfoProvider;
-import org.apache.streams.pojo.json.Activity;
-import org.apache.streams.pojo.json.Actor;
-import org.apache.streams.pojo.json.Image;
-import org.apache.streams.pojo.json.Provider;
-import org.jinstagram.entity.users.basicinfo.UserInfoData;
-import org.joda.time.DateTime;
-import org.joda.time.DateTimeZone;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- *
- */
-public class InstagramUserInfoSerializer implements ActivitySerializer<UserInfoData> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(InstagramUserInfoSerializer.class);
-
- private static final String STREAMS_ID_PREFIX = "id:instagram:";
- private static final String PROVIDER_ID = "id:provider:instagram";
- private static final String DISPLAY_NAME = "Instagram";
-
- @Override
- public String serializationFormat() {
- return null;
- }
-
- @Override
- public UserInfoData serialize(Activity deserialized) throws ActivitySerializerException {
- throw new NotImplementedException();
- }
-
- @Override
- public Activity deserialize(UserInfoData serialized) throws ActivitySerializerException {
- Activity activity = new Activity();
- Provider provider = new Provider();
- provider.setId(PROVIDER_ID);
- provider.setDisplayName(DISPLAY_NAME);
- activity.setProvider(provider);
- activity.setPublished(DateTime.now().withZone(DateTimeZone.UTC));
- Actor actor = new Actor();
- Image image = new Image();
- image.setUrl(serialized.getProfile_picture());
- actor.setImage(image);
- actor.setId(STREAMS_ID_PREFIX+serialized.getId());
- actor.setSummary(serialized.getBio());
- actor.setAdditionalProperty("handle", serialized.getUsername());
- actor.setDisplayName(serialized.getFullName());
- Map<String, Object> extensions = Maps.newHashMap();
- actor.setAdditionalProperty("extensions", extensions);
- extensions.put("screenName", serialized.getUsername());
- extensions.put("posts", serialized.getCounts().getMedia());
- extensions.put("followers", serialized.getCounts().getFollwed_by());
- extensions.put("website", serialized.getWebsite());
- extensions.put("following", serialized.getCounts().getFollows());
- return activity;
- }
-
- @Override
- public List<Activity> deserializeAll(List<UserInfoData> serializedList) {
- List<Activity> result = Lists.newLinkedList();
- for(UserInfoData data : serializedList) {
- try {
- result.add(deserialize(data));
- } catch (ActivitySerializerException ase) {
- LOGGER.error("Caught ActivitySerializerException, dropping user info data : {}", data.getId());
- LOGGER.error("Exception : {}", ase);
- }
- }
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivityConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivityConverter.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivityConverter.java
new file mode 100644
index 0000000..810f345
--- /dev/null
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivityConverter.java
@@ -0,0 +1,93 @@
+/*
+ * 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
+ *
+ * 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 org.apache.streams.data;
+
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
+import com.moreover.api.Article;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.util.MoreoverUtils;
+import org.apache.streams.pojo.json.Activity;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Deserializes Moreover JSON format into Activities
+ */
+public class MoreoverJsonActivityConverter implements ActivityConverter<String> {
+
+ public MoreoverJsonActivityConverter() {
+ }
+
+ @Override
+ public String serializationFormat() {
+ return "application/json+vnd.moreover.com.v1";
+ }
+
+ @Override
+ public String serialize(Activity deserialized) {
+ throw new UnsupportedOperationException("Cannot currently serialize to Moreover JSON");
+ }
+
+ @Override
+ public Activity deserialize(String serialized) {
+ serialized = serialized.replaceAll("\\[[ ]*\\]", "null");
+
+ System.out.println(serialized);
+
+ ObjectMapper mapper = new ObjectMapper();
+ AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
+ mapper.setAnnotationIntrospector(introspector);
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
+ mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, Boolean.FALSE);
+ mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+ mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+ mapper.configure(DeserializationFeature.WRAP_EXCEPTIONS, Boolean.TRUE);
+
+ Article article;
+ try {
+ ObjectNode node = (ObjectNode)mapper.readTree(serialized);
+ node.remove("tags");
+ node.remove("locations");
+ node.remove("companies");
+ node.remove("topics");
+ node.remove("media");
+ node.remove("outboundUrls");
+ ObjectNode jsonNodes = (ObjectNode) node.get("source").get("feed");
+ jsonNodes.remove("editorialTopics");
+ jsonNodes.remove("tags");
+ jsonNodes.remove("autoTopics");
+ article = mapper.convertValue(node, Article.class);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Unable to deserialize", e);
+ }
+ return MoreoverUtils.convert(article);
+ }
+
+ @Override
+ public List<Activity> deserializeAll(List<String> serializedList) {
+ throw new NotImplementedException("Not currently implemented");
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aad0e887/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java
deleted file mode 100644
index 2f2d677..0000000
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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
- *
- * 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 org.apache.streams.data;
-
-import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
-import com.moreover.api.Article;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.util.MoreoverUtils;
-import org.apache.streams.pojo.json.Activity;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * Deserializes Moreover JSON format into Activities
- */
-public class MoreoverJsonActivitySerializer implements ActivitySerializer<String> {
-
- public MoreoverJsonActivitySerializer() {
- }
-
- @Override
- public String serializationFormat() {
- return "application/json+vnd.moreover.com.v1";
- }
-
- @Override
- public String serialize(Activity deserialized) {
- throw new UnsupportedOperationException("Cannot currently serialize to Moreover JSON");
- }
-
- @Override
- public Activity deserialize(String serialized) {
- serialized = serialized.replaceAll("\\[[ ]*\\]", "null");
-
- System.out.println(serialized);
-
- ObjectMapper mapper = new ObjectMapper();
- AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
- mapper.setAnnotationIntrospector(introspector);
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
- mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, Boolean.FALSE);
- mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
- mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
- mapper.configure(DeserializationFeature.WRAP_EXCEPTIONS, Boolean.TRUE);
-
- Article article;
- try {
- ObjectNode node = (ObjectNode)mapper.readTree(serialized);
- node.remove("tags");
- node.remove("locations");
- node.remove("companies");
- node.remove("topics");
- node.remove("media");
- node.remove("outboundUrls");
- ObjectNode jsonNodes = (ObjectNode) node.get("source").get("feed");
- jsonNodes.remove("editorialTopics");
- jsonNodes.remove("tags");
- jsonNodes.remove("autoTopics");
- article = mapper.convertValue(node, Article.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("Unable to deserialize", e);
- }
- return MoreoverUtils.convert(article);
- }
-
- @Override
- public List<Activity> deserializeAll(List<String> serializedList) {
- throw new NotImplementedException("Not currently implemented");
- }
-
-
-}