Skip to content

Commit 447ea01

Browse files
rhernandez35adwsingh
authored andcommitted
Fix JsonDocuments equals implementation
The Document impls in JsonDocuments are records, so their default `equals` methods check that all the record members are equal. Since they all contain JsonSettings members, two JsonDocuments are only equal if they have the exact same JsonSettings instance.
1 parent a284114 commit 447ea01

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

codecs/json-codec/src/main/java/software/amazon/smithy/java/json/JsonDocuments.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ public ShapeDeserializer createDeserializer() {
9595
public void serializeContents(ShapeSerializer serializer) {
9696
serializer.writeString(PreludeSchemas.STRING, value);
9797
}
98+
99+
@Override
100+
public boolean equals(Object obj) {
101+
return Document.equals(this, obj);
102+
}
98103
}
99104

100105
record NumberDocument(Number value, JsonSettings settings, Schema schema) implements Document {
@@ -158,6 +163,11 @@ public ShapeDeserializer createDeserializer() {
158163
public void serializeContents(ShapeSerializer serializer) {
159164
DocumentUtils.serializeNumber(serializer, schema, value);
160165
}
166+
167+
@Override
168+
public boolean equals(Object obj) {
169+
return Document.equals(this, obj);
170+
}
161171
}
162172

163173
record BooleanDocument(boolean value, JsonSettings settings) implements Document {
@@ -180,6 +190,11 @@ public void serializeContents(ShapeSerializer serializer) {
180190
public ShapeDeserializer createDeserializer() {
181191
return new JsonDocumentDeserializer(settings, this);
182192
}
193+
194+
@Override
195+
public boolean equals(Object obj) {
196+
return Document.equals(this, obj);
197+
}
183198
}
184199

185200
record ListDocument(List<Document> values, JsonSettings settings) implements Document {
@@ -215,6 +230,11 @@ public void serializeContents(ShapeSerializer serializer) {
215230
}
216231
});
217232
}
233+
234+
@Override
235+
public boolean equals(Object obj) {
236+
return Document.equals(this, obj);
237+
}
218238
}
219239

220240
record MapDocument(Map<String, Document> values, JsonSettings settings) implements Document {
@@ -272,6 +292,11 @@ public void serializeContents(ShapeSerializer serializer) {
272292
}
273293
});
274294
}
295+
296+
@Override
297+
public boolean equals(Object obj) {
298+
return Document.equals(this, obj);
299+
}
275300
}
276301

277302
/**

0 commit comments

Comments
 (0)