public List detectClasses()

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;
  }