38
38
import org .elasticsearch .river .RiverSettings ;
39
39
import twitter4j .*;
40
40
41
- import java .net .URL ;
42
41
import java .util .List ;
43
42
import java .util .Map ;
44
43
import java .util .concurrent .atomic .AtomicInteger ;
@@ -185,7 +184,8 @@ public class TwitterRiver extends AbstractRiverComponent implements River {
185
184
dropThreshold = 10 ;
186
185
}
187
186
188
- stream = new TwitterStreamFactory (new StatusHandler ()).getInstance (user , password );
187
+ stream = new TwitterStreamFactory ().getInstance (user , password );
188
+ stream .addListener (new StatusHandler ());
189
189
}
190
190
191
191
@ Override public void start () {
@@ -244,14 +244,15 @@ private class StatusHandler extends StatusAdapter {
244
244
builder .field ("source" , status .getSource ());
245
245
builder .field ("truncated" , status .isTruncated ());
246
246
247
-
248
- if (status .getUserMentions () != null ) {
247
+ if (status .getUserMentionEntities () != null ) {
249
248
builder .startArray ("mention" );
250
- for (User user : status .getUserMentions ()) {
249
+ for (UserMentionEntity user : status .getUserMentionEntities ()) {
251
250
builder .startObject ();
252
251
builder .field ("id" , user .getId ());
253
252
builder .field ("name" , user .getName ());
254
253
builder .field ("screen_name" , user .getScreenName ());
254
+ builder .field ("start" , user .getStart ());
255
+ builder .field ("end" , user .getEnd ());
255
256
builder .endObject ();
256
257
}
257
258
builder .endArray ();
@@ -271,8 +272,16 @@ private class StatusHandler extends StatusAdapter {
271
272
builder .endObject ();
272
273
}
273
274
274
- if (status .getHashtags () != null ) {
275
- builder .array ("hashtag" , status .getHashtags ());
275
+ if (status .getHashtagEntities () != null ) {
276
+ builder .startArray ("hashtag" );
277
+ for (HashtagEntity hashtag : status .getHashtagEntities ()) {
278
+ builder .startObject ();
279
+ builder .field ("text" , hashtag .getText ());
280
+ builder .field ("start" , hashtag .getStart ());
281
+ builder .field ("end" , hashtag .getEnd ());
282
+ builder .endObject ();
283
+ }
284
+ builder .endArray ();
276
285
}
277
286
if (status .getContributors () != null ) {
278
287
builder .array ("contributor" , status .getContributors ());
@@ -295,11 +304,21 @@ private class StatusHandler extends StatusAdapter {
295
304
builder .field ("url" , status .getPlace ().getURL ());
296
305
builder .endObject ();
297
306
}
298
- if (status .getURLs () != null ) {
307
+ if (status .getURLEntities () != null ) {
299
308
builder .startArray ("link" );
300
- for (URL url : status .getURLs ()) {
309
+ for (URLEntity url : status .getURLEntities ()) {
301
310
if (url != null ) {
302
- builder .value (url .toExternalForm ());
311
+ builder .startObject ();
312
+ builder .field ("url" , url .getURL ().toExternalForm ());
313
+ if (url .getDisplayURL () != null ) {
314
+ builder .field ("display_url" , url .getDisplayURL ());
315
+ }
316
+ if (url .getExpandedURL () != null ) {
317
+ builder .field ("expand_url" , url .getExpandedURL ());
318
+ }
319
+ builder .field ("start" , url .getStart ());
320
+ builder .field ("end" , url .getEnd ());
321
+ builder .endObject ();
303
322
}
304
323
}
305
324
builder .endArray ();
0 commit comments