Skip to content

Commit 02b03b1

Browse files
committed
Use fluent interface for more concise code
1 parent 2bd1d85 commit 02b03b1

File tree

1 file changed

+38
-76
lines changed

1 file changed

+38
-76
lines changed

modules/swagger-core/src/main/java/io/swagger/v3/core/util/ObjectMapperFactory.java

Lines changed: 38 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,19 @@
22

33
import com.fasterxml.jackson.annotation.JsonInclude;
44
import com.fasterxml.jackson.core.JsonFactory;
5-
import com.fasterxml.jackson.databind.BeanDescription;
6-
import com.fasterxml.jackson.databind.DeserializationFeature;
7-
import com.fasterxml.jackson.databind.JsonSerializer;
85
import com.fasterxml.jackson.databind.Module;
9-
import com.fasterxml.jackson.databind.ObjectMapper;
10-
import com.fasterxml.jackson.databind.SerializationConfig;
11-
import com.fasterxml.jackson.databind.SerializationFeature;
6+
import com.fasterxml.jackson.databind.*;
127
import com.fasterxml.jackson.databind.module.SimpleModule;
138
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
149
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
1510
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
1611
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
1712
import io.swagger.v3.core.jackson.ExampleSerializer;
18-
import io.swagger.v3.core.jackson.Schema31Serializer;
1913
import io.swagger.v3.core.jackson.MediaTypeSerializer;
14+
import io.swagger.v3.core.jackson.Schema31Serializer;
2015
import io.swagger.v3.core.jackson.SchemaSerializer;
21-
import io.swagger.v3.core.jackson.mixin.Components31Mixin;
22-
import io.swagger.v3.core.jackson.mixin.ComponentsMixin;
23-
import io.swagger.v3.core.jackson.mixin.DateSchemaMixin;
24-
import io.swagger.v3.core.jackson.mixin.Discriminator31Mixin;
25-
import io.swagger.v3.core.jackson.mixin.DiscriminatorMixin;
26-
import io.swagger.v3.core.jackson.mixin.ExampleMixin;
27-
import io.swagger.v3.core.jackson.mixin.ExtensionsMixin;
28-
import io.swagger.v3.core.jackson.mixin.InfoMixin;
29-
import io.swagger.v3.core.jackson.mixin.LicenseMixin;
30-
import io.swagger.v3.core.jackson.mixin.MediaTypeMixin;
31-
import io.swagger.v3.core.jackson.mixin.OpenAPI31Mixin;
32-
import io.swagger.v3.core.jackson.mixin.OpenAPIMixin;
33-
import io.swagger.v3.core.jackson.mixin.OperationMixin;
34-
import io.swagger.v3.core.jackson.mixin.Schema31Mixin;
35-
import io.swagger.v3.core.jackson.mixin.SchemaConverterMixin;
36-
import io.swagger.v3.core.jackson.mixin.SchemaMixin;
37-
import io.swagger.v3.oas.models.Components;
38-
import io.swagger.v3.oas.models.ExternalDocumentation;
39-
import io.swagger.v3.oas.models.OpenAPI;
40-
import io.swagger.v3.oas.models.Operation;
41-
import io.swagger.v3.oas.models.PathItem;
42-
import io.swagger.v3.oas.models.Paths;
16+
import io.swagger.v3.core.jackson.mixin.*;
17+
import io.swagger.v3.oas.models.*;
4318
import io.swagger.v3.oas.models.callbacks.Callback;
4419
import io.swagger.v3.oas.models.examples.Example;
4520
import io.swagger.v3.oas.models.headers.Header;
@@ -48,13 +23,7 @@
4823
import io.swagger.v3.oas.models.info.License;
4924
import io.swagger.v3.oas.models.links.Link;
5025
import io.swagger.v3.oas.models.links.LinkParameter;
51-
import io.swagger.v3.oas.models.media.DateSchema;
52-
import io.swagger.v3.oas.models.media.Discriminator;
53-
import io.swagger.v3.oas.models.media.Encoding;
54-
import io.swagger.v3.oas.models.media.EncodingProperty;
55-
import io.swagger.v3.oas.models.media.MediaType;
56-
import io.swagger.v3.oas.models.media.Schema;
57-
import io.swagger.v3.oas.models.media.XML;
26+
import io.swagger.v3.oas.models.media.*;
5827
import io.swagger.v3.oas.models.parameters.Parameter;
5928
import io.swagger.v3.oas.models.parameters.RequestBody;
6029
import io.swagger.v3.oas.models.responses.ApiResponse;
@@ -90,11 +59,11 @@ public static ObjectMapper createYaml() {
9059
}
9160

9261
public static ObjectMapper createYaml(boolean openapi31) {
93-
YAMLFactory factory = new YAMLFactory();
94-
factory.disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER);
95-
factory.enable(YAMLGenerator.Feature.MINIMIZE_QUOTES);
96-
factory.enable(YAMLGenerator.Feature.SPLIT_LINES);
97-
factory.enable(YAMLGenerator.Feature.ALWAYS_QUOTE_NUMBERS_AS_STRINGS);
62+
YAMLFactory factory = new YAMLFactory()
63+
.disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)
64+
.enable(YAMLGenerator.Feature.MINIMIZE_QUOTES)
65+
.enable(YAMLGenerator.Feature.SPLIT_LINES)
66+
.enable(YAMLGenerator.Feature.ALWAYS_QUOTE_NUMBERS_AS_STRINGS);
9867

9968
return create(factory, openapi31);
10069
}
@@ -218,29 +187,24 @@ public JsonSerializer<?> modifySerializer(
218187
sourceMixins.put(DateSchema.class, DateSchemaMixin.class);
219188
sourceMixins.put(Discriminator.class, Discriminator31Mixin.class);
220189
}
221-
mapper.setMixIns(sourceMixins);
222-
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
223-
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
224-
mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
225-
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
226-
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
227-
mapper.configure(SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN, true);
228-
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
229190

230-
return mapper;
191+
return mapper.setMixIns(sourceMixins)
192+
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
193+
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
194+
.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true)
195+
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
196+
.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false)
197+
.configure(SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN, true)
198+
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
231199
}
232200

233201
public static ObjectMapper createJsonConverter() {
234202

235-
ObjectMapper mapper = new ObjectMapper();
236-
237-
238-
Module deserializerModule = new DeserializationModule();
239-
mapper.registerModule(deserializerModule);
240-
mapper.registerModule(new JavaTimeModule());
203+
ObjectMapper mapper = new ObjectMapper()
204+
.registerModule(new DeserializationModule())
205+
.registerModule(new JavaTimeModule());
241206

242207
Map<Class<?>, Class<?>> sourceMixins = new LinkedHashMap<>();
243-
244208
sourceMixins.put(ApiResponses.class, ExtensionsMixin.class);
245209
sourceMixins.put(ApiResponse.class, ExtensionsMixin.class);
246210
sourceMixins.put(Callback.class, ExtensionsMixin.class);
@@ -271,35 +235,33 @@ public static ObjectMapper createJsonConverter() {
271235
sourceMixins.put(ServerVariables.class, ExtensionsMixin.class);
272236
sourceMixins.put(Tag.class, ExtensionsMixin.class);
273237
sourceMixins.put(XML.class, ExtensionsMixin.class);
274-
275238
sourceMixins.put(Schema.class, SchemaConverterMixin.class);
276-
mapper.setMixIns(sourceMixins);
277-
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
278-
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
279-
mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
280-
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
281-
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
282-
mapper.configure(SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN, true);
283-
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
284-
285-
return mapper;
239+
240+
return mapper.setMixIns(sourceMixins)
241+
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
242+
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
243+
.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true)
244+
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
245+
.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false)
246+
.configure(SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN, true)
247+
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
286248
}
287249

288250

289251
public static ObjectMapper buildStrictGenericObjectMapper() {
290-
ObjectMapper mapper = new ObjectMapper();
291-
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
292-
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
293-
mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
294-
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
295-
mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
252+
ObjectMapper mapper = new ObjectMapper()
253+
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
254+
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
255+
.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true)
256+
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
257+
.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
296258
try {
297259
mapper.configure(DeserializationFeature.valueOf("FAIL_ON_TRAILING_TOKENS"), true);
298260
} catch (Throwable e) {
299261
// add only if supported by Jackson version 2.9+
300262
}
301-
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
302-
return mapper;
263+
264+
return mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
303265
}
304266

305267
}

0 commit comments

Comments
 (0)