From 56a91a004813b335b687963c786ee15d5fff7c84 Mon Sep 17 00:00:00 2001 From: Jorge Bescos Gascon Date: Thu, 5 May 2022 12:30:28 +0200 Subject: [PATCH 1/2] Add toString, equals, hashCode in JsonMergePatch Signed-off-by: Jorge Bescos Gascon --- .../eclipse/parsson/JsonMergePatchImpl.java | 35 ++++++++++++++++- .../parsson/tests/JsonMergePatch2Test.java | 38 +++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java diff --git a/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java b/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java index 5a9904da..21e67f9d 100644 --- a/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java +++ b/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2022 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -113,5 +113,38 @@ static JsonValue diff(JsonValue source, JsonValue target) { return builder.build(); } + /** + * Compares this {@code JsonMergePatchImpl} with another object. + * @param obj the object to compare this {@code JsonMergePatchImpl} against + * @return true if the given object is a {@code JsonMergePatchImpl} with the same + * reference tokens as this one, false otherwise. + */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || obj.getClass() != JsonMergePatchImpl.class) + return false; + return patch.equals(((JsonMergePatchImpl)obj).patch); + } + + /** + * Returns the hash code value for this {@code JsonMergePatchImpl}. + * + * @return the hash code value for this {@code JsonMergePatchImpl} object + */ + @Override + public int hashCode() { + return patch.hashCode(); + } + + /** + * Returns the JSON Patch text + * @return the JSON Patch text + */ + @Override + public String toString() { + return patch.toString(); + } } diff --git a/impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java b/impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java new file mode 100644 index 00000000..2e4b9576 --- /dev/null +++ b/impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package org.eclipse.parsson.tests; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import jakarta.json.Json; +import jakarta.json.JsonArray; +import jakarta.json.JsonMergePatch; +import jakarta.json.JsonPatch; + +public class JsonMergePatch2Test { + + @Test + public void testToString() { + JsonArray jsonArray = Json.createArrayBuilder().add(Json.createValue(1)).build(); + JsonPatch jsonPatch = Json.createPatchBuilder(jsonArray).build(); + assertEquals("[1]", jsonPatch.toString()); + JsonMergePatch jsonMergePatch = Json.createMergePatch(jsonArray); + assertEquals("[1]", jsonMergePatch.toString()); + } +} From fa5cf7e4ea4ff39c2bc74e06e1a7388ce336aa32 Mon Sep 17 00:00:00 2001 From: Jorge Bescos Gascon Date: Wed, 25 May 2022 11:56:19 +0200 Subject: [PATCH 2/2] Review fixes Signed-off-by: Jorge Bescos Gascon --- .../eclipse/parsson/JsonMergePatchImpl.java | 15 ++++++++--- .../parsson/tests/JsonMergePatch2Test.java | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java b/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java index 21e67f9d..cc101014 100644 --- a/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java +++ b/impl/src/main/java/org/eclipse/parsson/JsonMergePatchImpl.java @@ -16,6 +16,8 @@ package org.eclipse.parsson; +import java.util.Objects; + import jakarta.json.JsonMergePatch; import jakarta.json.JsonObject; import jakarta.json.JsonObjectBuilder; @@ -121,11 +123,16 @@ static JsonValue diff(JsonValue source, JsonValue target) { */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null || obj.getClass() != JsonMergePatchImpl.class) + } else if (obj == null) { + return false; + } else if (getClass() != JsonMergePatchImpl.class) { return false; - return patch.equals(((JsonMergePatchImpl)obj).patch); + } else { + JsonMergePatchImpl other = (JsonMergePatchImpl) obj; + return Objects.equals(patch, other.patch); + } } /** @@ -135,7 +142,7 @@ public boolean equals(Object obj) { */ @Override public int hashCode() { - return patch.hashCode(); + return Objects.hashCode(patch); } /** diff --git a/impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java b/impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java index 2e4b9576..2379d093 100644 --- a/impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java +++ b/impl/src/test/java/org/eclipse/parsson/tests/JsonMergePatch2Test.java @@ -17,7 +17,10 @@ package org.eclipse.parsson.tests; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import org.eclipse.parsson.JsonMergePatchImpl; import org.junit.Test; import jakarta.json.Json; @@ -35,4 +38,28 @@ public void testToString() { JsonMergePatch jsonMergePatch = Json.createMergePatch(jsonArray); assertEquals("[1]", jsonMergePatch.toString()); } + + @Test + public void testEquals() { + JsonMergePatchImpl j1 = new JsonMergePatchImpl(Json.createValue("test")); + JsonMergePatchImpl j2 = new JsonMergePatchImpl(Json.createValue("test")); + JsonMergePatchImpl j3 = new JsonMergePatchImpl(j1.toJsonValue()); + JsonMergePatchImpl j4 = new JsonMergePatchImpl(Json.createValue("test2")); + JsonMergePatchImpl j5 = new JsonMergePatchImpl(null); + + assertTrue(j1.equals(j1)); + + assertTrue(j1.equals(j2)); + assertTrue(j2.equals(j1)); + + assertTrue(j1.equals(j3)); + assertTrue(j3.equals(j1)); + + assertTrue(j2.equals(j3)); + assertTrue(j3.equals(j2)); + + assertFalse(j1.equals(j4)); + assertFalse(j1.equals(j5)); + assertFalse(j1.equals(null)); + } }