/* * Copyright 2011 the original author or authors. * Licensed 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 com.jayway.jsonpath; public interface WriteContext { /** * Returns the configuration used for reading * * @return an immutable configuration */ Configuration configuration(); /** * Returns the JSON model that this context is operating on * * @return json model */ T json(); /** * Returns the JSON model that this context is operating on as a JSON string * * @return json model as string */ String jsonString(); /** * Set the value a the given path * * @param path path to set * @param newValue new value * @param filters filters * @return a document context */ DocumentContext set(String path, Object newValue, Predicate... filters); /** * Set the value a the given path * * @param path path to set * @param newValue new value * @return a document context */ DocumentContext set(JsonPath path, Object newValue); /** * Replaces the value on the given path with the result of the {@link MapFunction}. * * @param path path to be converted set * @param mapFunction Converter object to be invoked * @param filters filters * @return a document context */ DocumentContext map(String path, MapFunction mapFunction, Predicate... filters); /** * Replaces the value on the given path with the result of the {@link MapFunction}. * * @param path path to be converted set * @param mapFunction Converter object to be invoked (or lambda:)) * @return a document context */ DocumentContext map(JsonPath path, MapFunction mapFunction); /** * Deletes the given path * * @param path path to delete * @param filters filters * @return a document context */ DocumentContext delete(String path, Predicate... filters); /** * Deletes the given path * * @param path path to delete * @return a document context */ DocumentContext delete(JsonPath path); /** * Add value to array * *
     * 
     * List array = new ArrayList(){{
     *      add(0);
     *      add(1);
     * }};
     *
     * JsonPath.parse(array).add("$", 2);
     *
     * assertThat(array).containsExactly(0,1,2);
     * 
     * 
* * @param path path to array * @param value value to add * @param filters filters * @return a document context */ DocumentContext add(String path, Object value, Predicate... filters); /** * Add value to array at the given path * * @param path path to array * @param value value to add * @return a document context */ DocumentContext add(JsonPath path, Object value); /** * Add or update the key with a the given value at the given path * * @param path path to object * @param key key to add * @param value value of key * @param filters filters * @return a document context */ DocumentContext put(String path, String key, Object value, Predicate... filters); /** * Add or update the key with a the given value at the given path * * @param path path to array * @param key key to add * @param value value of key * @return a document context */ DocumentContext put(JsonPath path, String key, Object value); /** * Renames the last key element of a given path. * @param path The path to the old key. Should be resolved to a map * or an array including map items. * @param oldKeyName The old key name. * @param newKeyName The new key name. * @param filters filters. * @return a document content. */ DocumentContext renameKey(String path, String oldKeyName, String newKeyName, Predicate... filters); /** * Renames the last key element of a given path. * @param path The path to the old key. Should be resolved to a map * or an array including map items. * @param oldKeyName The old key name. * @param newKeyName The new key name. * @return a document content. */ DocumentContext renameKey(JsonPath path, String oldKeyName, String newKeyName); }