diff options
author | Peter Wu <peter@lekensteyn.nl> | 2014-05-02 23:31:37 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2014-05-02 23:31:37 +0200 |
commit | 36fdc062cafa69b1ebf2e48e27b6103919464d3b (patch) | |
tree | 7fc8623dc56f89be9a6cfa8c6476cd4ebf8333a0 /src/main/TweetShell.java | |
parent | 768c3cf1c235dedbd6fd7cc140fcec5a2c7b086b (diff) | |
download | TwitterDataAnalytics-36fdc062cafa69b1ebf2e48e27b6103919464d3b.tar.gz |
Properly close files and stream on exit
Diffstat (limited to 'src/main/TweetShell.java')
-rw-r--r-- | src/main/TweetShell.java | 21 |
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; } |