summaryrefslogtreecommitdiff
path: root/src/main/TweetShell.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/TweetShell.java')
-rw-r--r--src/main/TweetShell.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/main/TweetShell.java b/src/main/TweetShell.java
index be4124b..818c693 100644
--- a/src/main/TweetShell.java
+++ b/src/main/TweetShell.java
@@ -4,6 +4,7 @@ import io.CompressableDataWriter;
import io.DataWriter;
import io.OAuthRequester;
import io.StreamImpl;
+import java.io.Closeable;
import java.io.IOException;
import java.util.Arrays;
import java.util.Map;
@@ -15,6 +16,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import mining.Stream;
import mining.TwitterApi;
+import org.apache.commons.io.IOUtils;
import org.json.JSONException;
import org.json.JSONObject;
import provider.CompositeResultListener;
@@ -278,7 +280,7 @@ public class TweetShell implements TwitterApi.PinSupplier {
System.out.println("Unique users: " + tc.getUsers().size());
break;
case close:
- getStream().close();
+ safeClose();
break;
case help:
for (String line : HELP) {
@@ -298,6 +300,7 @@ public class TweetShell implements TwitterApi.PinSupplier {
}
break;
case exit:
+ safeClose();
throw new NoSuchElementException();
case target:
if (params.length > 0) {
@@ -326,6 +329,18 @@ public class TweetShell implements TwitterApi.PinSupplier {
}
}
+ private void safeClose() {
+ if (stream_cached != null) {
+ try {
+ getStream().close();
+ } catch (IOException ex) {
+ // should not happen because getStream exists
+ System.err.println("getStream().close() -- " + ex.getMessage());
+ }
+ }
+ resultListeners.close();
+ }
+
/**
* @return All targets that can be disabled or enabled.
*/
@@ -430,8 +445,8 @@ public class TweetShell implements TwitterApi.PinSupplier {
resultListeners.unregister(oldListener);
// do we need to cleanup something?
- if (oldListener instanceof DataWriter) {
- ((DataWriter) oldListener).close();
+ if (oldListener instanceof Closeable) {
+ IOUtils.closeQuietly((Closeable) oldListener);
}
return true;
}