address code review feedback:
- fix copyright in unit test
- add hashCode method for Form class
- swap asMap to parameters in Form equality check
- fix Boolean warning in Form unit test
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java b/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java
index 0ba06d5..908b849 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/core/Form.java
@@ -106,6 +106,16 @@
if (object == this) return true;
if (getClass() != object.getClass()) return false;
Form form = (Form) object;
- return parameters.equals(form.asMap());
+ return parameters.equals(form.parameters);
+ }
+
+ /**
+ * Returns the hashCode of the underlying form parameters.
+ *
+ * @return a hash code value for the underlying form parameters.
+ */
+ @Override
+ public int hashCode() {
+ return parameters.hashCode();
}
}
diff --git a/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java b/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java
index 9d4a855..8928eeb 100644
--- a/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java
+++ b/jaxrs-api/src/test/java/jakarta/ws/rs/core/FormTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2024 David Walters. 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
@@ -22,6 +22,18 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
public class FormTest {
+
+ private static final String AGE_FIELD = "age";
+
+ private static final String AGE_VALUE = "25";
+
+ private static final String LOCATION_FIELD = "location";
+
+ private static final String LOCATION_VALUE = "USA";
+
+ private static final String NAME_FIELD = "name";
+
+ private static final String NAME_VALUE = "john";
@Test
public void testNullEquals() {
@@ -38,16 +50,12 @@
@Test
public void testDifferentObjectTypeEquals() {
Form form = new Form("field", "value");
- Boolean booleanValue = new Boolean(false);
+ Boolean booleanValue = Boolean.TRUE;
assertFalse(form.equals(booleanValue));
}
@Test
public void testFormContentEquals() {
- final String NAME_FIELD = "name";
- final String AGE_FIELD = "age";
- final String NAME_VALUE = "john";
- final String AGE_VALUE = "25";
Form form1 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
Form form2 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
assertTrue(form1.equals(form2));
@@ -55,7 +63,16 @@
assertTrue(form1.equals(form2));
form2 = new Form(AGE_VALUE, AGE_FIELD).param(NAME_VALUE, NAME_FIELD);
assertFalse(form1.equals(form2));
- form2 = new Form(AGE_FIELD, AGE_VALUE).param(NAME_FIELD,NAME_VALUE).param("location", "USA");
+ form2 = new Form(AGE_FIELD, AGE_VALUE).param(NAME_FIELD,NAME_VALUE).param(LOCATION_FIELD, LOCATION_VALUE);
assertFalse(form1.equals(form2));
}
+
+ @Test
+ public void testHashCode() {
+ Form form1 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
+ Form form2 = new Form(NAME_FIELD,NAME_VALUE).param(AGE_FIELD, AGE_VALUE);
+ assertTrue(form1.hashCode() == form2.hashCode());
+ form2.param(LOCATION_FIELD, LOCATION_VALUE);
+ assertFalse(form1.hashCode() == form2.hashCode());
+ }
}