1

I am trying to create an application that will display all existing tweets of a particular user as well as new tweets. I am using StreamingOperations API of twitter to get the live tweets. Please see the code of my Spring Controller class below.

@Controller
@RequestMapping("/")
public class Controller {

    private Twitter twitter;

    private ConnectionRepository connectionRepository;

    private DisplayUser displayUser;

    @Inject
    public TweetsFetcherController(Twitter twitter, ConnectionRepository connectionRepository,
                                   DisplayUser displayUser) {
        this.twitter = twitter;
        this.connectionRepository = connectionRepository;
        this.displayUser = displayUser;
    }

    @RequestMapping(method= RequestMethod.GET)
    public String home(Model model) {
        try {
            TwitterProfile twitterProfile = twitter.userOperations().getUserProfile("shaunthomas999");
            List<Tweet> tweets= twitter.timelineOperations().getUserTimeline(twitterProfile.getId(),30);
            displayUser.setTweets(tweets);
            model.addAttribute("displayUser", displayUser);

            FilterStreamParameters filterStreamParameters = new FilterStreamParameters();
            filterStreamParameters.follow(twitterProfile.getId());
            StreamListener streamListener2 = new StreamListener() {
                @Override
                public void onTweet(Tweet tweet) {
                    List<Tweet> displayUserTweets = displayUser.getTweets();
                    displayUserTweets.add(tweet);
                    displayUser.setTweets(displayUserTweets);
                }

                @Override
                public void onDelete(StreamDeleteEvent streamDeleteEvent) {
                }

                @Override
                public void onLimit(int i) {
                }

                @Override
                public void onWarning(StreamWarningEvent streamWarningEvent) {
                }
            };
            twitter.streamingOperations().filter(filterStreamParameters, Arrays.asList(streamListener2));
            Thread.sleep(1000);

        } catch (InterruptedException interruptedException) {
            LOGGER.error(interruptedException.getMessage());
        }

        return "home";
    }
}

Here DisplayUser is my modal which contains List<Tweet> tweets as one of the property. I want to know how can I show the change in tweets list of displayUser when a new tweet is made (handled by onTweet method).

I am using spring-boot-starter-social-twitter for my implementation.

Stefan Zobel
  • 3,182
  • 7
  • 28
  • 38
shaunthomas999
  • 5,544
  • 2
  • 26
  • 30

0 Answers0