From acae5d7b9ef4640c1ee5217d09c83143b16b1b2c Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Wed, 30 Apr 2014 20:08:10 +0200 Subject: StreamImpl: Read JSON objects and validate --- src/io/StreamImpl.java | 29 +++++++++++++++++++++++++---- 1 file 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()); + } } } -- cgit v1.2.1