in streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/converter/TwitterDocumentClassifier.java [48:90]
public List<Class> detectClasses(Object document) {
Objects.requireNonNull(document);
ObjectMapper mapper = StreamsJacksonMapper.getInstance(Collections.singletonList(TWITTER_FORMAT));
ObjectNode objectNode;
try {
if ( document instanceof String ) {
objectNode = mapper.readValue((String) document, ObjectNode.class);
} else if ( document instanceof ObjectNode ) {
objectNode = (ObjectNode) document;
} else {
objectNode = mapper.convertValue(document, ObjectNode.class);
}
} catch (IOException ex) {
return new ArrayList<>();
}
List<Class> classList = new ArrayList<>();
if ( objectNode.findValue("retweeted_status") != null
&& objectNode.get("retweeted_status") != null) {
classList.add(Retweet.class);
} else if ( objectNode.findValue("delete") != null ) {
classList.add(Delete.class);
} else if ( objectNode.findValue("friends") != null
|| objectNode.findValue("friends_str") != null ) {
classList.add(FriendList.class);
} else if ( objectNode.findValue("target_object") != null ) {
classList.add(UserstreamEvent.class);
} else if ( objectNode.findValue("follower") != null
&& objectNode.findValue("followee") != null) {
classList.add(Follow.class);
} else if ( objectNode.findValue("location") != null
&& objectNode.findValue("user") == null) {
classList.add(User.class);
} else {
classList.add(Tweet.class);
}
return classList;
}