/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2011-2017 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://oss.oracle.com/licenses/CDDL+GPL-1.1 * or LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package javax.json.spi; import javax.json.*; import javax.json.stream.JsonGenerator; import javax.json.stream.JsonGeneratorFactory; import javax.json.stream.JsonParser; import javax.json.stream.JsonParserFactory; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.io.Writer; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.ServiceLoader; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Optional; /** * Service provider for JSON processing objects. * *
All the methods in this class are safe for use by multiple concurrent
* threads.
*
* @see ServiceLoader
*/
public abstract class JsonProvider {
/**
* A constant representing the name of the default
* {@code JsonProvider} implementation class.
*/
private static final String DEFAULT_PROVIDER
= "org.glassfish.json.JsonProviderImpl";
protected JsonProvider() {
}
/**
* Creates a JSON provider object. The provider is loaded using the
* {@link ServiceLoader#load(Class)} method. If there are no available
* service providers, this method returns the default service provider.
* Users are recommended to cache the result of this method.
*
* @see ServiceLoader
* @return a JSON provider
*/
public static JsonProvider provider() {
ServiceLoader
*
*
* @param jsonPointer the JSON Pointer string
* @throws NullPointerException if {@code jsonPointer} is {@code null}
* @throws JsonException if {@code jsonPointer} is not a valid JSON Pointer
* @return a JSON Pointer
*
* @since 1.1
*/
public JsonPointer createPointer(String jsonPointer) {
throw new UnsupportedOperationException();
}
/**
* Creates a JSON Patch builder (RFC 6902).
*
* @return a JSON Patch builder
*
* @since 1.1
*/
public JsonPatchBuilder createPatchBuilder() {
throw new UnsupportedOperationException();
}
/**
* Creates a JSON Patch builder
* (RFC 6902),
* initialized with the specified operations.
*
* @param array the initial patch operations
* @return a JSON Patch builder
*
* @since 1.1
*/
public JsonPatchBuilder createPatchBuilder(JsonArray array) {
throw new UnsupportedOperationException();
}
/**
* Creates a JSON Patch (RFC 6902)
* from the specified operations.
*
* @param array patch operations
* @return a JSON Patch
*
* @since 1.1
*/
public JsonPatch createPatch(JsonArray array) {
throw new UnsupportedOperationException();
}
/**
* Generates a JSON Patch (RFC 6902)
* from the source and target {@code JsonStructure}.
* The generated JSON Patch need not be unique.
*
* @param source the source
* @param target the target, must be the same type as the source
* @return a JSON Patch which when applied to the source, yields the target
*
* @since 1.1
*/
public JsonPatch createDiff(JsonStructure source, JsonStructure target) {
throw new UnsupportedOperationException();
}
/**
* Creates JSON Merge Patch (RFC 7396)
* from specified {@code JsonValue}.
*
* @param patch the patch
* @return a JSON Merge Patch
*
* @since 1.1
*/
public JsonMergePatch createMergePatch(JsonValue patch) {
throw new UnsupportedOperationException();
}
/**
* Generates a JSON Merge Patch (RFC 7396)
* from the source and target {@code JsonValue}s
* which when applied to the {@code source}, yields the {@code target}.
*
* @param source the source
* @param target the target
* @return a JSON Merge Patch
*
* @since 1.1
*/
public JsonMergePatch createMergeDiff(JsonValue source, JsonValue target) {
throw new UnsupportedOperationException();
}
/**
* Creates a JSON array builder, initialized with the content of specified {@code collection}.
* If the @{code collection} contains {@link Optional}s then resulting JSON array builder
* contains the value from the {@code collection} only if the {@link Optional} is not empty.
*
* @param collection the initial data for the builder
* @return a JSON array builder
* @exception IllegalArgumentException if the value from the {@code collection} cannot be converted
* to the corresponding {@link JsonValue}
*
* @since 1.1
*/
public JsonArrayBuilder createArrayBuilder(Collection> collection) {
throw new UnsupportedOperationException();
}
/**
* Creates a builder factory for creating {@link JsonArrayBuilder}
* and {@link JsonObjectBuilder} objects.
* The factory is configured with the specified map of provider specific
* configuration properties. Provider implementations should ignore any
* unsupported configuration properties specified in the map.
*
* @param config a map of provider specific properties to configure the
* JSON builders. The map may be empty or null
* @return a JSON builder factory
*/
public abstract JsonBuilderFactory createBuilderFactory(Map