@Override
	protected void doSendLine(String line) {
		ObjectMapper mapper = new ObjectMapper();
		JsonSlurper jsonSlurper = new JsonSlurper();
		@SuppressWarnings("unchecked")
		Map<String, List<Map<String, ?>>> map = (Map<String, List<Map<String, ?>>>) jsonSlurper.parseText(line);
		List<Map<String, ?>> statuses = map.get("statuses");
		for (Map<String, ?> tweet : statuses) {
			StringWriter sw = new StringWriter();
			try {
				mapper.writeValue(sw, tweet);
				sendMessage(MessageBuilder.withPayload(sw.toString()).build());
			}
			catch (JsonGenerationException ex) {
				logger.error("Failed to convert tweet to json: " + ex.getMessage());
				break;
			}
			catch (JsonMappingException ex) {
				logger.error("Failed to convert tweet to json: " + ex.getMessage());
				break;
			}
			catch (IOException ex) {
				logger.error("Failed to convert tweet to json: " + ex.getMessage());
				break;
			}
		}
		if (!CollectionUtils.isEmpty(statuses)) {
			this.sinceId = ((Long) (statuses.get(statuses.size() - 1).get("id")));
			wait(2100);
		}
		else {
			wait(10000);
		}
	}
Message producer which reads form Twitter's public search endpoints.
Reads from <a href="https://api.twitter.com/1.1/search/tweets.json"/>
The available parameters map directly to those defined for the
<a href="https://dev.twitter.com/docs/api/1.1/get/search/tweets">public search</a> API.

@author Mark Fisher
@author Luke Taylor
@author David Turanski
extensions/spring-xd-extension-twitter/src/main/java/org/springframework/integration/x/twitter/TwitterSearchChannelAdapter.java