| /* |
| * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| package jakarta.json; |
| |
| import java.io.Closeable; |
| |
| /** |
| * Reads a JSON {@link JsonObject object} or an {@link JsonArray array} |
| * structure from an input source. |
| * |
| * <p>The class {@link jakarta.json.Json} contains methods to create readers from |
| * input sources ({@link java.io.InputStream} and {@link java.io.Reader}). |
| * |
| * <p> |
| * The following example demonstrates how to read an empty JSON array from |
| * a string: |
| * <pre> |
| * <code> |
| * JsonReader jsonReader = Json.createReader(new StringReader("[]")); |
| * JsonArray array = jsonReader.readArray(); |
| * jsonReader.close(); |
| * </code> |
| * </pre> |
| * |
| * <p> |
| * The class {@link JsonReaderFactory} also contains methods to create |
| * {@code JsonReader} instances. A factory instance can be used to create |
| * multiple reader instances with the same configuration. This the preferred |
| * way to create multiple instances. A sample usage is shown in the following |
| * example: |
| * <pre> |
| * <code> |
| * JsonReaderFactory factory = Json.createReaderFactory(config); |
| * JsonReader reader1 = factory.createReader(...); |
| * JsonReader reader2 = factory.createReader(...); |
| * </code> |
| * </pre> |
| */ |
| public interface JsonReader extends /*Auto*/Closeable { |
| |
| /** |
| * Returns a JSON array or object that is represented in |
| * the input source. This method needs to be called |
| * only once for a reader instance. |
| * |
| * @return a JSON object or array |
| * @throws JsonException if a JSON object or array cannot |
| * be created due to i/o error (IOException would be |
| * cause of JsonException) |
| * @throws jakarta.json.stream.JsonParsingException if a JSON object or array |
| * cannot be created due to incorrect representation |
| * @throws IllegalStateException if read, readObject, readArray, |
| * readValue or close method is already called |
| */ |
| JsonStructure read(); |
| |
| /** |
| * Returns a JSON object that is represented in |
| * the input source. This method needs to be called |
| * only once for a reader instance. |
| * |
| * @return a JSON object |
| * @throws JsonException if a JSON object cannot |
| * be created due to i/o error (IOException would be |
| * cause of JsonException) |
| * @throws jakarta.json.stream.JsonParsingException if a JSON object cannot |
| * be created due to incorrect representation |
| * @throws IllegalStateException if read, readObject, readArray, |
| * readValue or close method is already called |
| */ |
| JsonObject readObject(); |
| |
| /** |
| * Returns a JSON array that is represented in |
| * the input source. This method needs to be called |
| * only once for a reader instance. |
| * |
| * @return a JSON array |
| * @throws JsonException if a JSON array cannot |
| * be created due to i/o error (IOException would be |
| * cause of JsonException) |
| * @throws jakarta.json.stream.JsonParsingException if a JSON array cannot |
| * be created due to incorrect representation |
| * @throws IllegalStateException if read, readObject, readArray, |
| * readValue or close method is already called |
| */ |
| JsonArray readArray(); |
| |
| /** |
| * Returns a JSON value that is represented in |
| * the input source. This method needs to be called |
| * only once for a reader instance. |
| * |
| * @return a JSON value |
| * @throws JsonException if a JSON value |
| * be created due to i/o error (IOException would be |
| * cause of JsonException) |
| * @throws jakarta.json.stream.JsonParsingException if a JSON value |
| * cannot be created due to incorrect representation |
| * @throws IllegalStateException if read, readObject, readArray, |
| * readValue or close method is already called |
| * |
| * @since 1.1 |
| */ |
| default JsonValue readValue() { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * Closes this reader and frees any resources associated with the |
| * reader. This method closes the underlying input source. |
| * |
| * @throws JsonException if an i/o error occurs (IOException would be |
| * cause of JsonException) |
| */ |
| @Override |
| void close(); |
| |
| } |