/* ============ * Orson Charts * ============ * * (C)opyright 2013, 2014, by Object Refinery Limited. * * http://www.object-refinery.com/orsoncharts/index.html * * JSON.simple * ----------- * The code in this file originates from the JSON.simple project by * FangYidong<fangyidong@yahoo.com.cn>: * * https://code.google.com/p/json-simple/ * * which is licensed under the Apache Software License version 2.0. * * It has been modified locally and repackaged under * com.orsoncharts.util.json.* to avoid conflicts with any other version that * may be present on the classpath. * */ package com.orsoncharts.util.json.parser; import java.io.IOException; /** * A simplified and stoppable SAX-like content handler for stream processing of * JSON text. * * @see com.orsoncharts.util.json.parser.JSONParser#parse(java.io.Reader, * ContentHandler, boolean) */ public interface ContentHandler { /** * Receive notification of the beginning of JSON processing. * The parser will invoke this method only once. * * @throws ParseException JSONParser will stop and throw the same * exception to the caller when receiving this exception. * @throws IOException if there is an I/O problem. */ void startJSON() throws ParseException, IOException; /** * Receive notification of the end of JSON processing. * * @throws ParseException if there is a parsing problem. * @throws IOException if there is an I/O problem. */ void endJSON() throws ParseException, IOException; /** * Receive notification of the beginning of a JSON object. * * @return false if the handler wants to stop parsing after return. * @throws ParseException JSONParser will stop and throw the same * exception to the caller when receiving this exception. * @throws IOException if there is an I/O problem. * * @see #endJSON */ boolean startObject() throws ParseException, IOException; /** * Receive notification of the end of a JSON object. * * @return false if the handler wants to stop parsing after return. * @throws ParseException if there is a parsing problem. * @throws IOException if there is an I/O problem. * * @see #startObject */ boolean endObject() throws ParseException, IOException; /** * Receive notification of the beginning of a JSON object entry. * * @param key key of a JSON object entry. * * @return false if the handler wants to stop parsing after return. * @throws ParseException if there is a parsing problem. * @throws IOException if there is an I/O problem. * * @see #endObjectEntry */ boolean startObjectEntry(String key) throws ParseException, IOException; /** * Receive notification of the end of the value of previous object entry. * * @return false if the handler wants to stop parsing after return. * @throws ParseException if there is a parsing problem. * @throws IOException if there is an I/O problem. * * @see #startObjectEntry */ boolean endObjectEntry() throws ParseException, IOException; /** * Receive notification of the beginning of a JSON array. * * @return false if the handler wants to stop parsing after return. * @throws ParseException if there is a parsing problem. * @throws IOException if there is an I/O problem. * * @see #endArray */ boolean startArray() throws ParseException, IOException; /** * Receive notification of the end of a JSON array. * * @return false if the handler wants to stop parsing after return. * @throws ParseException if there is a parsing problem. * @throws IOException if there is an I/O problem. * * @see #startArray */ boolean endArray() throws ParseException, IOException; /** * Receive notification of the JSON primitive values: * java.lang.String, * java.lang.Number, * java.lang.Boolean * null * * @param value instance of the following: * java.lang.String, * java.lang.Number, * java.lang.Boolean, * null * * @return false if the handler wants to stop parsing after return. * @throws ParseException if there is a parsing problem. * @throws IOException if there is an I/O problem. */ boolean primitive(Object value) throws ParseException, IOException; }