/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package javax.json; /** * <p>This class is an immutable representation of a JSON Pointer as specified in * <a href="http://tools.ietf.org/html/rfc6901">RFC 6901</a>. * * * <p>JSON Pointer is a string syntax for identifying a specific value * within a JavaScript Object Notation (JSON) document [RFC4627]. * JSON Pointer is intended to be easily expressed in JSON string values * as well as Uniform Resource Identifier (URI) [RFC3986] fragment identifiers. * * <p> The method {@link #getValue getValue()} returns the referenced value. * The methods {@link #add add()}, {@link #replace replace()}, * and {@link #remove remove()} executes the operations specified in * <a href="http://tools.ietf.org/html/rfc6902">RFC 6902</a>. * * @since 1.1 */ public interface JsonPointer { /** * Get the JsonValue at the position referenced by this JsonPointer. * @param target the JSON to apply this JsonPointer on * @return the * @throws JsonException if no value exists at the referenced location * @throws NullPointerException if the target is {@code null} */ JsonValue getValue(JsonStructure target); /** * Add or replace the value at the position referenced by this JsonPointer with * the new value * @param target structure in which the newValue should be added or replaced * @param newValue the new value to set * @param <T> * @return the new structure after modifying the original JsonStrucure * @throws JsonException if no value exists at the referenced location * @throws NullPointerException if the target is {@code null} */ <T extends JsonStructure> T add(T target, JsonValue newValue); /** * Remove the value from the referenced position inside the target JSON. * @param target to remove the value from * @param <T> the type of the passed JsonStructure * @return a new JsonStructure with the value removed from the target * @throws JsonException if no value exists at the referenced location * @throws NullPointerException if the target is {@code null} */ <T extends JsonStructure> T remove(T target); /** * Replace the value at the position referenced by this JsonPointer with * the newValue. * * @param target structure in which the newValue should be replaced * @param newValue the new value to set * @param <T> * @return the new structure after modifying the original JsonStrucure * @throws JsonException if no value exists at the referenced location * @throws NullPointerException if the target is {@code null} */ <T extends JsonStructure> T replace(T target, JsonValue newValue); /** * Verify if the target JSON structure contains a value at the referenced location. * @param target to check * @return {@code true} if there is a value at the referenced location, {@code false} otherwise * @throws NullPointerException if the target is {@code null} */ boolean containsValue(JsonStructure target); }