Skip to content

Commit 033e386

Browse files
committed
Fix integration for JsonSettings::serializeTypeInDocuments
1 parent 391def8 commit 033e386

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

Diff for: codecs/json-codec/src/main/java/software/amazon/smithy/java/json/JsonCodec.java

+11
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,17 @@ public Builder defaultNamespace(String defaultNamespace) {
141141
return this;
142142
}
143143

144+
/**
145+
* Whether the type field should be written when Documents are being serialized. Default is true.
146+
*
147+
* @param serializeTypeInDocuments if the type field should be written when Documents are being serialized
148+
* @return the builder
149+
*/
150+
public Builder serializeTypeInDocuments(boolean serializeTypeInDocuments) {
151+
settingsBuilder.serializeTypeInDocuments(serializeTypeInDocuments);
152+
return this;
153+
}
154+
144155
/**
145156
* Uses a custom JSON serde provider.
146157
*

Diff for: codecs/json-codec/src/main/java/software/amazon/smithy/java/json/JsonSettings.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,15 @@ public String defaultNamespace() {
104104
return defaultNamespace;
105105
}
106106

107+
/**
108+
* Whether the type field should be written when Documents are being serialized. Default is true.
109+
*
110+
* @return true if the type field should be written when Documents are being serialized
111+
*/
112+
public boolean serializeTypeInDocuments() {
113+
return serializeTypeInDocuments;
114+
}
115+
107116
JsonSerdeProvider provider() {
108117
return provider;
109118
}
@@ -118,6 +127,7 @@ void updateBuilder(Builder builder) {
118127
if (fieldMapper instanceof JsonFieldMapper.UseJsonNameTrait) {
119128
builder.useJsonName(true);
120129
}
130+
builder.serializeTypeInDocuments(serializeTypeInDocuments);
121131
}
122132

123133
/**
@@ -220,9 +230,10 @@ public Builder defaultNamespace(String defaultNamespace) {
220230
}
221231

222232
/**
233+
* Whether the type field should be written when Documents are being serialized. Default is true.
223234
*
224-
* @param serializeTypeInDocuments
225-
* @return
235+
* @param serializeTypeInDocuments if the type field should be written when Documents are being serialized
236+
* @return the builder
226237
*/
227238
public Builder serializeTypeInDocuments(boolean serializeTypeInDocuments) {
228239
this.serializeTypeInDocuments = serializeTypeInDocuments;

Diff for: codecs/json-codec/src/main/java/software/amazon/smithy/java/json/jackson/JacksonJsonSerializer.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,9 @@ private static final class SerializeDocumentContents extends SpecificShapeSerial
292292
public void writeStruct(Schema schema, SerializableStruct struct) {
293293
try {
294294
parent.generator.writeStartObject();
295-
parent.generator.writeStringField("__type", schema.id().toString());
295+
if (parent.settings.serializeTypeInDocuments()) {
296+
parent.generator.writeStringField("__type", schema.id().toString());
297+
}
296298
struct.serializeMembers(parent.structSerializer);
297299
parent.generator.writeEndObject();
298300
} catch (Exception e) {

0 commit comments

Comments
 (0)