Class JsonPatchImpl

java.lang.Object
org.glassfish.json.JsonPatchImpl
All Implemented Interfaces:
JsonPatch

public class JsonPatchImpl extends Object implements JsonPatch
This class is an immutable representation of a JSON Patch as specified in RFC 6902.

A JsonPatch can be instantiated with Json.createPatch(JsonArray) by specifying the patch operations in a JSON Patch. Alternately, it can also be constructed with a JsonPatchBuilder.

The following illustrates both approaches.

1. Construct a JsonPatch with a JSON Patch.


   JsonArray contacts = ... // The target to be patched
   JsonArray patch = ...  ; // JSON Patch
   JsonPatch jsonpatch = Json.createPatch(patch);
   JsonArray result = jsonpatch.apply(contacts);
  
2. Construct a JsonPatch with JsonPatchBuilder.

   JsonPatchBuilder builder = Json.createPatchBuilder();
   JsonArray result = builder.add("/John/phones/office", "1234-567")
                             .remove("/Amy/age")
                             .build()
                             .apply(contacts);
  
Since:
1.1
  • Field Details

  • Constructor Details

    • JsonPatchImpl

      public JsonPatchImpl(JsonArray patch)
      Constructs a JsonPatchImpl
      Parameters:
      patch - the JSON Patch
  • Method Details

    • equals

      public boolean equals(Object obj)
      Compares this JsonPatchImpl with another object.
      Overrides:
      equals in class Object
      Parameters:
      obj - the object to compare this JsonPatchImpl against
      Returns:
      true if the given object is a JsonPatchImpl with the same reference tokens as this one, false otherwise.
    • hashCode

      public int hashCode()
      Returns the hash code value for this JsonPatchImpl.
      Overrides:
      hashCode in class Object
      Returns:
      the hash code value for this JsonPatchImpl object
    • toString

      public String toString()
      Returns the JSON Patch text
      Overrides:
      toString in class Object
      Returns:
      the JSON Patch text
    • apply

      public JsonStructure apply(JsonStructure target)
      Applies the patch operations to the specified target. The target is not modified by the patch.
      Specified by:
      apply in interface JsonPatch
      Parameters:
      target - the target to apply the patch operations
      Returns:
      the transformed target after the patch
      Throws:
      JsonException - if the supplied JSON Patch is malformed or if it contains references to non-existing members
    • toJsonArray

      public JsonArray toJsonArray()
      Description copied from interface: JsonPatch
      Returns the JsonPatch as JsonArray.
      Specified by:
      toJsonArray in interface JsonPatch
      Returns:
      this JsonPatch as JsonArray
    • diff

      public static JsonArray diff(JsonStructure source, JsonStructure target)
      Generates a JSON Patch from the source and target JsonStructure. The generated JSON Patch need not be unique.
      Parameters:
      source - the source
      target - the target, must be the same type as the source
      Returns:
      a JSON Patch which when applied to the source, yields the target
    • apply

      private JsonStructure apply(JsonStructure target, JsonObject operation)
      Applies a JSON Patch operation to the target.
      Parameters:
      target - the target to apply the operation
      operation - the JSON Patch operation
      Returns:
      the target after the patch
    • getPointer

      private JsonPointer getPointer(JsonObject operation, String member)
    • getValue

      private JsonValue getValue(JsonObject operation)
    • missingMember

      private void missingMember(String op, String member)