Skip to content

Commit b2bd47f

Browse files
committed
RFC 7386, part 13: package-info.java for JSON Merge Patch
1 parent c4f52cd commit b2bd47f

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright (c) 2014, Francis Galiegue (fgaliegue@gmail.com)
3+
*
4+
* This software is dual-licensed under:
5+
*
6+
* - the Lesser General Public License (LGPL) version 3.0 or, at your option, any
7+
* later version;
8+
* - the Apache Software License (ASL) version 2.0.
9+
*
10+
* The text of this file and of both licenses is available at the root of this
11+
* project or, if you have the jar distribution, in directory META-INF/, under
12+
* the names LGPL-3.0.txt and ASL-2.0.txt respectively.
13+
*
14+
* Direct link to the sources:
15+
*
16+
* - LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt
17+
* - ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
18+
*/
19+
20+
/**
21+
* JSON Merge Patch implementation
22+
*
23+
* <p>This is a complete implementation of <a
24+
* href="http://tools.ietf.org/html/rfc7386>RFC 7386 (JSON Merge Patch)</a>.</p>
25+
*
26+
* <p>You may want to use this instead of a "pure" (aka RFC 6902) JSON Patch if
27+
* you want to do simple patching of JSON Objects, where this implementation
28+
* really shines. For instance, if you want to replace a value for one
29+
* property {@code p} with JSON String {@code "bar"}, a JSON Patch will read:
30+
* </p>
31+
*
32+
* <pre>
33+
* [
34+
* { "op": "replace", "path": "/p", "value": "bar" }
35+
* ]
36+
* </pre>
37+
*
38+
* <p>whereas the equivalent JSON Merge Patch will be:</p>
39+
*
40+
* <pre>
41+
* { "p": "bar"}
42+
* </pre>
43+
*
44+
* <p>Note that this is recursive; therefore, this:</p>
45+
*
46+
* <pre>
47+
* { "a": { "b": "c" } }
48+
* </pre>
49+
*
50+
* <p>will replace (or add, if not present) the value at JSON Pointer {@code
51+
* /a/b} with JSON String {@code "c"}.</p>
52+
*
53+
* <p><b>HOWEVER:</b> while this seems attractive, there are a few traps. One
54+
* of them is that, when a value of an object member in a JSON Merge Patch is
55+
* a JSON null, the target will see the equivalent member <b>removed</b>; there
56+
* is no way to specify that a value should be set with a JSON null value (JSON
57+
* Patch allows for this).</p>
58+
*
59+
* <p>The RFC defines a pseudo code for how a JSON Merge Patch is applied; this
60+
* function is replicated in the javadoc for {@link
61+
* com.github.fge.jsonpatch.mergepatch.JsonMergePatch}, so you are encouraged to
62+
* read the javadoc for this class, and the RFC itself.</p>
63+
*/
64+
package com.github.fge.jsonpatch.mergepatch;

0 commit comments

Comments
 (0)