jakarta.json.JsonWriter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aem-sdk-api Show documentation
Show all versions of aem-sdk-api Show documentation
The Adobe Experience Manager SDK
/*
* 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;
/**
* Writes a JSON {@link JsonObject object} or {@link JsonArray array} structure
* to an output source.
*
* The class {@link jakarta.json.Json} contains methods to create writers from
* output sources ({@link java.io.OutputStream} and {@link java.io.Writer}).
*
*
* The following example demonstrates how write an empty JSON object:
*
*
* JsonWriter jsonWriter = Json.createWriter(...);
* jsonWriter.writeObject(Json.createObjectBuilder().build());
* jsonWriter.close();
*
*
*
*
* The class {@link JsonWriterFactory} also contains methods to create
* {@code JsonWriter} instances. A factory instance can be used to create
* multiple writer instances with the same configuration. This the preferred
* way to create multiple instances. A sample usage is shown in the following
* example:
*
*
* JsonWriterFactory factory = Json.createWriterFactory(config);
* JsonWriter writer1 = factory.createWriter(...);
* JsonWriter writer2 = factory.createWriter(...);
*
*
*/
public interface JsonWriter extends /*Auto*/Closeable {
/**
* Writes the specified JSON {@link JsonArray array} to the output
* source. This method needs to be called only once for a writer instance.
*
* @param array JSON array that is to be written to the output source
* @throws JsonException if the specified JSON object cannot be
* written due to i/o error (IOException would be cause of
* JsonException)
* @throws IllegalStateException if writeArray, writeObject, write or close
* method is already called
*/
void writeArray(JsonArray array);
/**
* Writes the specified JSON {@link JsonObject object} to the output
* source. This method needs to be called only once for a writer instance.
*
* @param object JSON object that is to be written to the output source
* @throws JsonException if the specified JSON object cannot be
* written due to i/o error (IOException would be cause of JsonException)
* @throws IllegalStateException if writeArray, writeObject, write or close
* method is already called
*/
void writeObject(JsonObject object);
/**
* Writes the specified JSON {@link JsonObject object} or
* {@link JsonArray array} to the output source. This method needs
* to be called only once for a writer instance.
*
* @param value JSON array or object that is to be written to the output
* source
* @throws JsonException if the specified JSON object cannot be
* written due to i/o error (IOException would be cause of
* JsonException)
* @throws IllegalStateException if writeArray, writeObject, write
* or close method is already called
*/
void write(JsonStructure value);
/**
* Closes this JSON writer and frees any resources associated with the
* writer. This method closes the underlying output source.
*
* @throws JsonException if an i/o error occurs (IOException would be
* cause of JsonException)
*/
/**
* Writes the specified {@link JsonValue} to the output source.
* method needs to be called only once for a write instance.
*
* @param value a {@code JsonValue} to be written to the output
* source
* @throws JsonException if the specified JSON object cannot be
* written due to i/o error (IOException would be cause of
* JsonException)
* @throws IllegalStateException if writeArray, writeObject, write
* or close method is already called
*
* @since 1.1
*/
default void write(JsonValue value) {
throw new UnsupportedOperationException();
}
@Override
void close();
}