Package org.forgerock.json
Class JsonPatch
java.lang.Object
org.forgerock.json.JsonPatch
Processes partial modifications to JSON values.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final JsonPointer
Path to the "from" attribute of a patch entry.static final String
Internet media type for the JSON Patch format.static final JsonPointer
Path to the "op" attribute of a patch entry.static final JsonPointer
Path to the "path" attribute of a patch entry.static final JsonPointer
Path to the "value" attribute of a patch entry. -
Method Summary
Modifier and TypeMethodDescriptionstatic JsonValue
Compares two JSON values, and produces a JSON Patch value, which contains the operations necessary to modify theoriginal
value to arrive at thetarget
value.static boolean
Compares two JSON values, and returns whether the two objects are identical.static JsonValue
Creates a new JSON value which combines the contents two JSON values.static void
Applies a set of modifications in a JSON patch value to an original value, resulting in the intended target value.static void
patch
(JsonValue original, JsonValue patch, JsonPatchValueTransformer transform) Applies a set of modifications in a JSON patch value to an original value, resulting in the intended target value.
-
Field Details
-
MEDIA_TYPE
Internet media type for the JSON Patch format.- See Also:
-
OP_PTR
Path to the "op" attribute of a patch entry. Required. -
PATH_PTR
Path to the "path" attribute of a patch entry. Required. -
FROM_PTR
Path to the "from" attribute of a patch entry. Required only for "move" and "copy" operations. Ignored for all others. -
VALUE_PTR
Path to the "value" attribute of a patch entry. Required for "add", "replace" and "test" operations; Ignored for all others. This is public to allow for alternate implementations ofJsonPatchValueTransformer
.
-
-
Method Details
-
diff
Compares two JSON values, and produces a JSON Patch value, which contains the operations necessary to modify theoriginal
value to arrive at thetarget
value.- Parameters:
original
- the original value.target
- the intended target value.- Returns:
- the resulting JSON Patch value.
- Throws:
NullPointerException
- if either oforiginal
ortarget
arenull
.
-
merge
Creates a new JSON value which combines the contents two JSON values.If there are any matching pointers in the two JSON values, then the value in
second
overrides the value in thefirst
.- Parameters:
first
- the first JSON value.second
- the second JSON value.- Returns:
- a new JSON value which combines the contents of
first
andsecond
. - Throws:
NullPointerException
- if either offirst
orsecond
arenull
.
-
isEqual
Compares two JSON values, and returns whether the two objects are identical. Fails fast in that afalse
is returned as soon as a difference is detected.- Parameters:
value
- a value.other
- another value.- Returns:
- whether the two inputs are equal.
- Throws:
NullPointerException
- if either ofvalue
orother
arenull
.IllegalArgumentException
- if theJsonValue
contains non-JSON primitive values.
-
patch
Applies a set of modifications in a JSON patch value to an original value, resulting in the intended target value. In the event of a failure, this method does not revert any modifications applied up to the point of failure.- Parameters:
original
- the original value on which to apply the modifications.patch
- the JSON Patch value, specifying the modifications to apply to the original value.- Throws:
JsonValueException
- if application of the patch failed.
-
patch
Applies a set of modifications in a JSON patch value to an original value, resulting in the intended target value. In the event of a failure, this method does not revert any modifications applied up to the point of failure.- Parameters:
original
- the original value on which to apply the modifications.patch
- the JSON Patch value, specifying the modifications to apply to the original value.transform
- a custom transform used to determine the target value.- Throws:
JsonValueException
- if application of the patch failed.
-