com.github.fge.jsonpatch.mergepatch
Class JsonMergePatch

java.lang.Object
  extended by com.github.fge.jsonpatch.mergepatch.JsonMergePatch
All Implemented Interfaces:
JsonSerializable

@ParametersAreNonnullByDefault
public abstract class JsonMergePatch
extends Object
implements JsonSerializable

Implementation of JSON Merge Patch (RFC 7386)

JSON Merge Patch is a "toned down" version of JSON Patch. However, it covers a very large number of use cases for JSON value modifications; its focus is mostly on patching JSON Objects, which are by far the most common type of JSON texts exchanged on the Internet.

Applying a JSON Merge Patch is defined by a single, pseudo code function as follows (quoted from the RFC; indentation fixed):

     define MergePatch(Target, Patch):
         if Patch is an Object:
             if Target is not an Object:
                 Target = {} # Ignore the contents and set it to an empty Object
             for each Name/Value pair in Patch:
                 if Value is null:
                     if Name exists in Target:
                         remove the Name/Value pair from Target
                 else:
                     Target[Name] = MergePatch(Target[Name], Value)
             return Target
         else:
             return Patch
 


Field Summary
protected static MessageBundle BUNDLE
           
 
Constructor Summary
JsonMergePatch()
           
 
Method Summary
abstract  JsonNode apply(JsonNode input)
          Apply the patch to a given JSON value
static JsonMergePatch fromJson(JsonNode node)
          Build an instance from a JSON input
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.fasterxml.jackson.databind.JsonSerializable
serialize, serializeWithType
 

Field Detail

BUNDLE

protected static final MessageBundle BUNDLE
Constructor Detail

JsonMergePatch

public JsonMergePatch()
Method Detail

fromJson

public static JsonMergePatch fromJson(JsonNode node)
                               throws JsonPatchException
Build an instance from a JSON input

Parameters:
node - the input
Returns:
a JSON Merge Patch instance
Throws:
JsonPatchException - failed to deserialize
NullPointerException - node is null

apply

public abstract JsonNode apply(JsonNode input)
                        throws JsonPatchException
Apply the patch to a given JSON value

Parameters:
input - the value to patch
Returns:
the patched value
Throws:
JsonPatchException - never thrown; only for consistency with JsonPatch
NullPointerException - value is null