Move JsonPatchBodyReader's StringBuilder 05/97205/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 13 Aug 2021 17:37:29 +0000 (19:37 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 13 Aug 2021 17:37:29 +0000 (19:37 +0200)
readEditDefinition() does not care how the resulting string is being
created -- move StringBuilder allocation down to readValueNode() and let
it be a contract between that method and readValueObject().

Change-Id: Ic02ffea2acbb9686066a34aaca9cec2f914d2700
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/patch/JsonPatchBodyReader.java

index 039a3de27c02222cce56a7a5e2248037a602d510..4e34e1d57bddaf84645701eac85198136fa3d092 100644 (file)
@@ -248,12 +248,9 @@ public class JsonPatchBodyReader extends AbstractPatchBodyReader {
                     checkArgument(edit.getData() == null && deferredValue == null, "Multiple value entries found");
 
                     if (edit.getTargetSchemaNode() == null) {
-                        final StringBuilder sb = new StringBuilder();
-
                         // save data defined in value node for next (later) processing, because target needs to be read
                         // always first and there is no ordering in Json input
-                        readValueNode(sb, in);
-                        deferredValue = sb.toString();
+                        deferredValue = readValueNode(in);
                     } else {
                         // We have a target schema node, reuse this reader without buffering the value.
                         edit.setData(readEditData(in, edit.getTargetSchemaNode(), path));
@@ -280,10 +277,9 @@ public class JsonPatchBodyReader extends AbstractPatchBodyReader {
      * @param in JsonReader reader
      * @throws IOException if operation fails
      */
-    private void readValueNode(final @NonNull StringBuilder sb, final @NonNull JsonReader in) throws IOException {
+    private String readValueNode(final @NonNull JsonReader in) throws IOException {
         in.beginObject();
-
-        sb.append("{\"").append(in.nextName()).append("\":");
+        final StringBuilder sb = new StringBuilder().append("{\"").append(in.nextName()).append("\":");
 
         switch (in.peek()) {
             case BEGIN_ARRAY:
@@ -310,7 +306,7 @@ public class JsonPatchBodyReader extends AbstractPatchBodyReader {
         }
 
         in.endObject();
-        sb.append('}');
+        return sb.append('}').toString();
     }
 
     /**