diff options
Diffstat (limited to 'src/io/StreamImpl.java')
-rw-r--r-- | src/io/StreamImpl.java | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/io/StreamImpl.java b/src/io/StreamImpl.java index d9f2875..b6be055 100644 --- a/src/io/StreamImpl.java +++ b/src/io/StreamImpl.java @@ -1,7 +1,9 @@ package io; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; @@ -13,6 +15,9 @@ import java.util.zip.GZIPInputStream; import mining.Stream; import org.apache.commons.io.Charsets; import org.apache.commons.lang.StringUtils; +import org.json.JSONException; +import org.json.JSONObject; +import org.json.JSONTokener; import provider.ExceptionListener; import provider.ResultListener; @@ -213,13 +218,29 @@ public class StreamImpl implements Stream { } private void parseMainLoop(InputStream is) throws IOException { + InputStreamReader isr = new InputStreamReader(is, Charsets.UTF_8); + BufferedReader reader = new BufferedReader(isr); + JSONTokener jsonTokener = new JSONTokener(reader); while (running.get()) { - /* TODO: read responses and parse JSON */ + try { + Object obj = jsonTokener.nextValue(); + if (obj instanceof JSONObject) { + processReceivedObject((JSONObject) obj); + } else { + getLogger().severe("Got unexpected object: " + obj); + throw new IOException("Got unexpected type from stream"); + } + } catch (JSONException ex) { + throw new IOException(ex); + } } } - } - private Logger getLogger() { - return Logger.getLogger(getClass().getName()); + private void processReceivedObject(JSONObject obj) { + } + + private Logger getLogger() { + return Logger.getLogger(getClass().getName()); + } } } |