diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 3ab8c506b4..0a4582946a 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -37,7 +37,7 @@ jobs:
- name: Set up Java
uses: actions/setup-java@v1
with:
- java-version: 11
+ java-version: 17
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
diff --git a/.github/workflows/maven-pulls.yml b/.github/workflows/maven-pulls.yml
index d2a3f0d85c..b57b0904ee 100644
--- a/.github/workflows/maven-pulls.yml
+++ b/.github/workflows/maven-pulls.yml
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ 11, 17 ]
+ java: [ 17, 25 ]
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 67d45a81e6..418442d258 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ 11, 17 ]
+ java: [ 17, 25 ]
steps:
- uses: actions/checkout@v4
@@ -41,7 +41,7 @@ jobs:
cd ../..
export MY_JAVA_VERSION=`java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1`
echo "JAVA VERSION" ${MY_JAVA_VERSION}
- if [[ ${MY_JAVA_VERSION} == "11" ]];
+ if [[ ${MY_JAVA_VERSION} == "17" ]];
then
export MY_POM_VERSION=`./mvnw -q -Dexec.executable="echo" -Dexec.args='${projects.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec`
echo "POM VERSION" ${MY_POM_VERSION}
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index 75742a8371..4aa3596046 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -20,10 +20,10 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: '3.10'
- - name: Set up Java 11
+ - name: Set up Java 17
uses: actions/setup-java@v4
with:
- java-version: 11
+ java-version: 17
distribution: temurin
server-id: central
server-username: MAVEN_USERNAME
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 181e592ecd..7e111c8c80 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -20,10 +20,10 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: '3.10'
- - name: Set up Java 11
+ - name: Set up Java 17
uses: actions/setup-java@v4
with:
- java-version: 11
+ java-version: 17
distribution: temurin
server-id: central
server-username: MAVEN_USERNAME
diff --git a/README.md b/README.md
index 9f4c2fcf6e..9f27f242cb 100644
--- a/README.md
+++ b/README.md
@@ -129,9 +129,9 @@ If you're interested in the change history of swagger and the Swagger Core frame
### Prerequisites
You need the following installed and available in your $PATH:
-* Java 11
+* Java 17
* Apache maven 3.0.4 or greater
-* Jackson 2.4.5 or greater
+* Jackson 3.0.3 or greater
### To build from source (currently 2.2.42-SNAPSHOT)
diff --git a/modules/swagger-core/pom.xml b/modules/swagger-core/pom.xml
index f4710cf50a..94e920a273 100644
--- a/modules/swagger-core/pom.xml
+++ b/modules/swagger-core/pom.xml
@@ -55,7 +55,6 @@
jakarta.xml.bind
jakarta.xml.bind-api
- 2.3.3
org.apache.commons
@@ -70,16 +69,14 @@
jackson-annotations
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
+ 3.0.3
- com.fasterxml.jackson.dataformat
+ tools.jackson.dataformat
jackson-dataformat-yaml
-
-
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
+ 3.0.3
io.swagger.core.v3
@@ -121,6 +118,12 @@
logback-core
provided
+
+ jakarta.annotation
+ jakarta.annotation-api
+ 1.3.5
+ provided
+
jakarta.validation
jakarta.validation-api
diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/converter/ModelConverters.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/converter/ModelConverters.java
index 241a850f67..c08a22956a 100644
--- a/modules/swagger-core/src/main/java/io/swagger/v3/core/converter/ModelConverters.java
+++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/converter/ModelConverters.java
@@ -1,6 +1,9 @@
package io.swagger.v3.core.converter;
-import com.fasterxml.jackson.databind.type.TypeFactory;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.cfg.MapperBuilder;
+import tools.jackson.databind.json.JsonMapper;
+import tools.jackson.databind.type.TypeFactory;
import io.swagger.v3.core.jackson.ModelResolver;
import io.swagger.v3.core.util.Configuration;
import io.swagger.v3.core.util.Json;
@@ -20,6 +23,7 @@
import java.util.ServiceLoader;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.function.Consumer;
public class ModelConverters {
private static ModelConverters SINGLETON = null;
@@ -30,8 +34,7 @@ public class ModelConverters {
private final Set skippedClasses = new HashSet<>();
public ModelConverters() {
- converters = new CopyOnWriteArrayList<>();
- converters.add(new ModelResolver(Json.mapper()));
+ this(false);
}
public ModelConverters(boolean openapi31) {
@@ -52,6 +55,15 @@ public ModelConverters(boolean openapi31, Schema.SchemaResolution schemaResoluti
}
}
+ public ModelConverters(boolean openapi31, Consumer>> mapperBuilderCustomizer) {
+ converters = new CopyOnWriteArrayList<>();
+ if (openapi31) {
+ converters.add(new ModelResolver(Json31.mapper(mapperBuilderCustomizer)).openapi31(true));
+ } else {
+ converters.add(new ModelResolver(Json.mapper(mapperBuilderCustomizer)));
+ }
+ }
+
public ModelConverters(Configuration configuration) {
converters = new CopyOnWriteArrayList<>();
boolean openapi31 =configuration != null && configuration.isOpenAPI31() != null && configuration.isOpenAPI31();
@@ -67,20 +79,32 @@ public Set getSkippedPackages() {
}
public static ModelConverters getInstance(boolean openapi31) {
+ return getInstance(openapi31, mapperBuilder -> {});
+ }
+
+ public static ModelConverters getInstance(boolean openapi31, Consumer>> mapperBuilderCustomizer) {
if (openapi31) {
if (SINGLETON31 == null) {
- SINGLETON31 = new ModelConverters(openapi31);
+ SINGLETON31 = new ModelConverters(openapi31, mapperBuilderCustomizer);
init(SINGLETON31);
}
return SINGLETON31;
}
if (SINGLETON == null) {
- SINGLETON = new ModelConverters(openapi31);
+ SINGLETON = new ModelConverters(openapi31, mapperBuilderCustomizer);
init(SINGLETON);
}
return SINGLETON;
}
+ public static ModelConverters getInstance() {
+ return getInstance(false);
+ }
+
+ public static ModelConverters getInstance(Consumer>> mapperBuilderCustomizer) {
+ return getInstance(false, mapperBuilderCustomizer);
+ }
+
public static void reset() {
synchronized (ModelConverters.class) {
SINGLETON = null;
@@ -145,10 +169,6 @@ private static void init(ModelConverters converter) {
}
}
- public static ModelConverters getInstance() {
- return getInstance(false);
- }
-
public void addConverter(ModelConverter converter) {
converters.add(0, converter);
@@ -233,7 +253,7 @@ public boolean isRegisteredAsSkippedClass(String className) {
}
private boolean shouldProcess(Type type) {
- final Class> cls = TypeFactory.defaultInstance().constructType(type).getRawClass();
+ final Class> cls = TypeFactory.createDefaultInstance().constructType(type).getRawClass();
if (cls.isPrimitive()) {
return false;
}
diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/filter/SpecFilter.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/filter/SpecFilter.java
index d4bf2a9c47..f0c5c4c02f 100755
--- a/modules/swagger-core/src/main/java/io/swagger/v3/core/filter/SpecFilter.java
+++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/filter/SpecFilter.java
@@ -21,6 +21,7 @@
import io.swagger.v3.oas.models.responses.ApiResponses;
import io.swagger.v3.oas.models.tags.Tag;
import org.apache.commons.lang3.StringUtils;
+import tools.jackson.core.JacksonException;
import java.io.IOException;
import java.util.ArrayList;
@@ -290,7 +291,7 @@ protected Map filterComponentsSchema(OpenAPISpecFilter filter, M
}
clonedComponentsSchema.put(key, clonedModel);
- } catch (IOException e) {
+ } catch (JacksonException e) {
}
}
}
diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/AbstractModelConverter.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/AbstractModelConverter.java
index cff6f2161a..e79c33cfdb 100644
--- a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/AbstractModelConverter.java
+++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/AbstractModelConverter.java
@@ -1,13 +1,17 @@
package io.swagger.v3.core.jackson;
-import com.fasterxml.jackson.core.Version;
-import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.PropertyName;
-import com.fasterxml.jackson.databind.jsontype.NamedType;
-import com.fasterxml.jackson.databind.module.SimpleModule;
+import tools.jackson.core.Version;
+import tools.jackson.databind.AnnotationIntrospector;
+import tools.jackson.databind.BeanDescription;
+import tools.jackson.databind.JavaType;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.PropertyName;
+import tools.jackson.databind.cfg.MapperBuilder;
+import tools.jackson.databind.introspect.AccessorNamingStrategy;
+import tools.jackson.databind.introspect.BasicBeanDescription;
+import tools.jackson.databind.introspect.DefaultAccessorNamingStrategy;
+import tools.jackson.databind.jsontype.NamedType;
+import tools.jackson.databind.module.SimpleModule;
import io.swagger.v3.core.converter.AnnotatedType;
import io.swagger.v3.core.converter.ModelConverter;
import io.swagger.v3.core.converter.ModelConverterContext;
@@ -33,14 +37,16 @@ protected AbstractModelConverter(ObjectMapper mapper) {
}
protected AbstractModelConverter(ObjectMapper mapper, TypeNameResolver typeNameResolver) {
- mapper.registerModule(
- new SimpleModule("swagger", Version.unknownVersion()) {
+ _mapper = mapper.rebuild()
+ .addModule(new SimpleModule("swagger", Version.unknownVersion()) {
@Override
public void setupModule(SetupContext context) {
context.insertAnnotationIntrospector(new SwaggerAnnotationIntrospector());
}
- });
- _mapper = mapper;
+ })
+ .accessorNaming(new DefaultAccessorNamingStrategy.Provider()
+ .withFirstCharAcceptance(true, true))
+ .build();
_typeNameResolver = typeNameResolver;
}
@@ -61,7 +67,7 @@ public Schema resolve(AnnotatedType type, ModelConverterContext context, Iterato
* @return the current AnnotationIntrospector
*/
protected AnnotationIntrospector _intr() {
- return _mapper.getSerializationConfig().getAnnotationIntrospector();
+ return _mapper.serializationConfig().getAnnotationIntrospector();
}
protected String _typeName(JavaType type) {
@@ -95,10 +101,10 @@ protected String _findTypeName(JavaType type, BeanDescription beanDesc) {
return "List";
}
if (beanDesc == null) {
- beanDesc = _mapper.getSerializationConfig().introspectClassAnnotations(type);
+ beanDesc = _mapper._serializationContext().introspectBeanDescription(type);
}
- PropertyName rootName = _intr().findRootName(beanDesc.getClassInfo());
+ PropertyName rootName = _intr().findRootName(_mapper.serializationConfig(), beanDesc.getClassInfo());
if (rootName != null && rootName.hasSimpleName()) {
return rootName.getSimpleName();
}
diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ApiResponsesSerializer.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ApiResponsesSerializer.java
index 5107400042..281347a097 100644
--- a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ApiResponsesSerializer.java
+++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ApiResponsesSerializer.java
@@ -1,36 +1,37 @@
package io.swagger.v3.core.jackson;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
import io.swagger.v3.oas.models.responses.ApiResponses;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
-public class ApiResponsesSerializer extends JsonSerializer {
+public class ApiResponsesSerializer extends ValueSerializer {
@Override
public void serialize(
- ApiResponses value, JsonGenerator jgen, SerializerProvider provider)
- throws IOException {
+ ApiResponses value, JsonGenerator jgen, SerializationContext provider)
+ throws JacksonException {
if (value != null && value.getExtensions() != null && !value.getExtensions().isEmpty()) {
jgen.writeStartObject();
if (!value.isEmpty()) {
for (Entry entry: value.entrySet()) {
- jgen.writeObjectField(entry.getKey() , entry.getValue());
+ jgen.writePOJOProperty(entry.getKey() , entry.getValue());
}
}
for (Map.Entry entry: value.getExtensions().entrySet()) {
- jgen.writeObjectField(entry.getKey(), entry.getValue());
+ jgen.writePOJOProperty(entry.getKey(), entry.getValue());
}
jgen.writeEndObject();
} else {
- provider.defaultSerializeValue(value, jgen);
+ jgen.writePOJO(value);
}
}
}
diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/CallbackSerializer.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/CallbackSerializer.java
index 9d3dd5757c..c45c9824eb 100644
--- a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/CallbackSerializer.java
+++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/CallbackSerializer.java
@@ -1,22 +1,23 @@
package io.swagger.v3.core.jackson;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.callbacks.Callback;
import org.apache.commons.lang3.StringUtils;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
import java.io.IOException;
import java.util.Map.Entry;
-public class CallbackSerializer extends JsonSerializer {
+public class CallbackSerializer extends ValueSerializer {
@Override
public void serialize(
- Callback value, JsonGenerator jgen, SerializerProvider provider)
- throws IOException {
+ Callback value, JsonGenerator jgen, SerializationContext provider)
+ throws JacksonException {
// has extensions
if (value != null && value.getExtensions() != null && !value.getExtensions().isEmpty()) {
@@ -27,22 +28,22 @@ public void serialize(
if (!value.isEmpty()) {
// write map
for (Entry entry: value.entrySet()) {
- jgen.writeObjectField(entry.getKey() , entry.getValue());
+ jgen.writePOJOProperty(entry.getKey() , entry.getValue());
}
}
} else { // handle ref schema serialization skipping all other props ...
- jgen.writeStringField("$ref", value.get$ref());
+ jgen.writeStringProperty("$ref", value.get$ref());
}
for (String ext: value.getExtensions().keySet()) {
- jgen.writeObjectField(ext , value.getExtensions().get(ext));
+ jgen.writePOJOProperty(ext , value.getExtensions().get(ext));
}
jgen.writeEndObject();
} else {
if (value == null || StringUtils.isBlank(value.get$ref())) {
- provider.defaultSerializeValue(value, jgen);
+ jgen.writePOJO(value);
} else { // handle ref schema serialization skipping all other props
jgen.writeStartObject();
- jgen.writeStringField("$ref", value.get$ref());
+ jgen.writeStringProperty("$ref", value.get$ref());
jgen.writeEndObject();
}
}
diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ExampleSerializer.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ExampleSerializer.java
index 577b880c1e..1ad3380b0a 100644
--- a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ExampleSerializer.java
+++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ExampleSerializer.java
@@ -1,38 +1,34 @@
package io.swagger.v3.core.jackson;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.ResolvableSerializer;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonGenerator;
import io.swagger.v3.oas.models.examples.Example;
+import tools.jackson.databind.DatabindException;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
-import java.io.IOException;
+public class ExampleSerializer extends ValueSerializer {
-public class ExampleSerializer extends JsonSerializer implements ResolvableSerializer {
+ private ValueSerializer
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
+ 3.0.3
io.github.classgraph
@@ -293,9 +294,14 @@
- com.fasterxml.jackson.jaxrs
+ tools.jackson.jaxrs
jackson-jaxrs-json-provider
${jackson-version}
+
+ tools.jackson.module
+ jackson-module-jaxb-annotations
+ ${jackson-version}
+
diff --git a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java
index bf6bd03dff..9058f34718 100644
--- a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java
+++ b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java
@@ -1,12 +1,12 @@
package io.swagger.v3.jaxrs2;
import com.fasterxml.jackson.annotation.JsonView;
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.introspect.AnnotatedField;
-import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
-import com.fasterxml.jackson.databind.introspect.AnnotationMap;
-import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;
+import tools.jackson.databind.BeanDescription;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.introspect.AnnotatedField;
+import tools.jackson.databind.introspect.AnnotatedMethod;
+import tools.jackson.databind.introspect.AnnotationMap;
+import tools.jackson.databind.introspect.BeanPropertyDefinition;
import io.swagger.v3.core.util.Json;
import io.swagger.v3.core.util.ParameterProcessor;
@@ -30,6 +30,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import java.util.stream.Stream;
public class DefaultParameterExtension extends AbstractOpenAPIExtension {
private static final String QUERY_PARAM = "query";
@@ -165,7 +166,7 @@ private boolean handleAdditionalAnnotation(List parameters, List properties = beanDesc.findProperties();
for (final BeanPropertyDefinition propDef : properties) {
@@ -179,14 +180,9 @@ private boolean handleAdditionalAnnotation(List parameters, List !paramAnnotations.contains(fieldAnnotation))
+ .forEach(paramAnnotations::add);
}
// Gather the setter's details but only the ones we need
@@ -196,14 +192,9 @@ private boolean handleAdditionalAnnotation(List parameters, List !paramAnnotations.contains(fieldAnnotation))
+ .forEach(paramAnnotations::add);
}
// Gather the getter's details but only the ones we need
@@ -212,14 +203,9 @@ private boolean handleAdditionalAnnotation(List parameters, List !paramAnnotations.contains(fieldAnnotation))
+ .forEach(paramAnnotations::add);
}
if (paramType == null) {
diff --git a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/Reader.java b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/Reader.java
index b15115aaf7..df6f93f68c 100644
--- a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/Reader.java
+++ b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/Reader.java
@@ -1,11 +1,12 @@
package io.swagger.v3.jaxrs2;
import com.fasterxml.jackson.annotation.JsonView;
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
-import com.fasterxml.jackson.databind.introspect.AnnotatedParameter;
-import com.fasterxml.jackson.databind.type.TypeFactory;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.BeanDescription;
+import tools.jackson.databind.JavaType;
+import tools.jackson.databind.introspect.AnnotatedMethod;
+import tools.jackson.databind.introspect.AnnotatedParameter;
+import tools.jackson.databind.type.TypeFactory;
import io.swagger.v3.core.converter.AnnotatedType;
import io.swagger.v3.core.converter.ModelConverters;
import io.swagger.v3.core.converter.ResolvedSchema;
@@ -412,12 +413,12 @@ public OpenAPI read(Class> cls,
Optional classExternalDocumentation = AnnotationsUtils.getExternalDocumentation(apiExternalDocs);
- JavaType classType = TypeFactory.defaultInstance().constructType(cls);
+ JavaType classType = TypeFactory.createDefaultInstance().constructType(cls);
BeanDescription bd;
if (openapi31) {
- bd = Json31.mapper().getSerializationConfig().introspect(classType);
+ bd = Json31.mapper()._serializationContext().introspectBeanDescription(classType);
} else {
- bd = Json.mapper().getSerializationConfig().introspect(classType);
+ bd = Json.mapper()._serializationContext().introspectBeanDescription(classType);
}
final List globalParameters = new ArrayList<>();
@@ -539,7 +540,7 @@ public OpenAPI read(Class> cls,
if (annotatedMethod == null) { // annotatedMethod not null only when method with 0-2 parameters
Type[] genericParameterTypes = method.getGenericParameterTypes();
for (int i = 0; i < genericParameterTypes.length; i++) {
- final Type type = TypeFactory.defaultInstance().constructType(genericParameterTypes[i], cls);
+ final Type type = TypeFactory.createDefaultInstance().constructType(genericParameterTypes[i]);
io.swagger.v3.oas.annotations.Parameter paramAnnotation = AnnotationsUtils.getAnnotation(io.swagger.v3.oas.annotations.Parameter.class, paramAnnotations[i]);
Type paramType = ParameterProcessor.getParameterType(paramAnnotation, true);
if (paramType == null) {
@@ -569,7 +570,7 @@ public OpenAPI read(Class> cls,
} else {
for (int i = 0; i < annotatedMethod.getParameterCount(); i++) {
AnnotatedParameter param = annotatedMethod.getParameter(i);
- final Type type = TypeFactory.defaultInstance().constructType(param.getParameterType(), cls);
+ final Type type = TypeFactory.createDefaultInstance().constructType(param.getType());
io.swagger.v3.oas.annotations.Parameter paramAnnotation = AnnotationsUtils.getAnnotation(io.swagger.v3.oas.annotations.Parameter.class, paramAnnotations[i]);
Type paramType = ParameterProcessor.getParameterType(paramAnnotation, true);
if (paramType == null) {
@@ -888,7 +889,7 @@ public Operation parseMethod(
Method method,
List globalParameters,
JsonView jsonViewAnnotation) {
- JavaType classType = TypeFactory.defaultInstance().constructType(method.getDeclaringClass());
+ JavaType classType = TypeFactory.createDefaultInstance().constructType(method.getDeclaringClass());
return parseMethod(
classType.getClass(),
method,
@@ -925,7 +926,7 @@ public Operation parseMethod(
ApiResponses parentResponses,
JsonView jsonViewAnnotation,
io.swagger.v3.oas.annotations.responses.ApiResponse[] classResponses) {
- JavaType classType = TypeFactory.defaultInstance().constructType(method.getDeclaringClass());
+ JavaType classType = TypeFactory.createDefaultInstance().constructType(method.getDeclaringClass());
return parseMethod(
classType.getClass(),
method,
@@ -963,7 +964,7 @@ public Operation parseMethod(
JsonView jsonViewAnnotation,
io.swagger.v3.oas.annotations.responses.ApiResponse[] classResponses,
AnnotatedMethod annotatedMethod) {
- JavaType classType = TypeFactory.defaultInstance().constructType(method.getDeclaringClass());
+ JavaType classType = TypeFactory.createDefaultInstance().constructType(method.getDeclaringClass());
return parseMethod(
classType.getClass(),
method,
@@ -1265,7 +1266,7 @@ private MediaType clone(MediaType mediaType) {
} else {
mediaType = Json.mapper().readValue(Json.pretty(mediaType), MediaType.class);
}
- } catch (IOException e) {
+ } catch (JacksonException e) {
LOGGER.error("Could not clone mediaType", e);
}
return mediaType;
diff --git a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/ext/AbstractOpenAPIExtension.java b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/ext/AbstractOpenAPIExtension.java
index a645766c3c..498a1faeb8 100644
--- a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/ext/AbstractOpenAPIExtension.java
+++ b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/ext/AbstractOpenAPIExtension.java
@@ -1,8 +1,8 @@
package io.swagger.v3.jaxrs2.ext;
import com.fasterxml.jackson.annotation.JsonView;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
+import tools.jackson.databind.JavaType;
+import tools.jackson.databind.type.TypeFactory;
import io.swagger.v3.core.util.Configuration;
import io.swagger.v3.jaxrs2.ResolvedParameter;
import io.swagger.v3.oas.models.Components;
@@ -65,7 +65,7 @@ protected boolean shouldIgnoreType(Type type, Set typesToSkip) {
}
protected JavaType constructType(Type type) {
- return TypeFactory.defaultInstance().constructType(type);
+ return TypeFactory.createDefaultInstance().constructType(type);
}
@Override
diff --git a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/OpenApiServlet.java b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/OpenApiServlet.java
index a246f1dc99..4718cb29e4 100644
--- a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/OpenApiServlet.java
+++ b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/OpenApiServlet.java
@@ -1,6 +1,6 @@
package io.swagger.v3.jaxrs2.integration;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
+import tools.jackson.core.util.DefaultPrettyPrinter;
import io.swagger.v3.core.filter.OpenAPISpecFilter;
import io.swagger.v3.core.filter.SpecFilter;
import io.swagger.v3.jaxrs2.util.ServletUtils;
@@ -86,12 +86,12 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se
if (type.equalsIgnoreCase("yaml")) {
resp.setContentType(APPLICATION_YAML);
try (PrintWriter pw = resp.getWriter()) {
- pw.write(pretty ? ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(oas) : ctx.getOutputYamlMapper().writeValueAsString(oas));
+ pw.write(pretty ? ctx.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(oas) : ctx.getOutputYamlMapper().writeValueAsString(oas));
}
} else {
resp.setContentType(APPLICATION_JSON);
try (PrintWriter pw = resp.getWriter()) {
- pw.write(pretty ? ctx.getOutputJsonMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(oas) : ctx.getOutputJsonMapper().writeValueAsString(oas));
+ pw.write(pretty ? ctx.getOutputJsonMapper().writerWithDefaultPrettyPrinter().writeValueAsString(oas) : ctx.getOutputJsonMapper().writeValueAsString(oas));
}
}
diff --git a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/SwaggerLoader.java b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/SwaggerLoader.java
index c39bda56f7..856504bde5 100644
--- a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/SwaggerLoader.java
+++ b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/SwaggerLoader.java
@@ -1,6 +1,6 @@
package io.swagger.v3.jaxrs2.integration;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
+import tools.jackson.core.util.DefaultPrettyPrinter;
import io.swagger.v3.core.filter.OpenAPISpecFilter;
import io.swagger.v3.core.filter.SpecFilter;
import io.swagger.v3.core.util.Configuration;
@@ -401,14 +401,14 @@ public Map resolve() throws Exception{
String openapiYaml = null;
if ("JSON".equals(outputFormat) || "JSONANDYAML".equals(outputFormat)) {
if (prettyPrint != null && prettyPrint) {
- openapiJson = context.getOutputJsonMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openAPI);
+ openapiJson = context.getOutputJsonMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI);
} else {
openapiJson = context.getOutputJsonMapper().writeValueAsString(openAPI);
}
}
if ("YAML".equals(outputFormat) || "JSONANDYAML".equals(outputFormat)) {
if (prettyPrint != null && prettyPrint) {
- openapiYaml = context.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openAPI);
+ openapiYaml = context.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI);
} else {
openapiYaml = context.getOutputYamlMapper().writeValueAsString(openAPI);
}
diff --git a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/resources/BaseOpenApiResource.java b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/resources/BaseOpenApiResource.java
index 683309668f..19d76a8ce1 100644
--- a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/resources/BaseOpenApiResource.java
+++ b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/integration/resources/BaseOpenApiResource.java
@@ -1,6 +1,6 @@
package io.swagger.v3.jaxrs2.integration.resources;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
+import tools.jackson.core.util.DefaultPrettyPrinter;
import io.swagger.v3.core.filter.OpenAPISpecFilter;
import io.swagger.v3.core.filter.SpecFilter;
import io.swagger.v3.jaxrs2.integration.JaxrsOpenApiContextBuilder;
@@ -71,14 +71,14 @@ protected Response getOpenApi(HttpHeaders headers,
if (StringUtils.isNotBlank(type) && type.trim().equalsIgnoreCase("yaml")) {
return Response.status(Response.Status.OK)
.entity(pretty ?
- ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(oas) :
+ ctx.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(oas) :
ctx.getOutputYamlMapper().writeValueAsString(oas))
.type("application/yaml")
.build();
} else {
return Response.status(Response.Status.OK)
.entity(pretty ?
- ctx.getOutputJsonMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(oas) :
+ ctx.getOutputJsonMapper().writerWithDefaultPrettyPrinter().writeValueAsString(oas) :
ctx.getOutputJsonMapper().writeValueAsString(oas))
.type(MediaType.APPLICATION_JSON_TYPE)
.build();
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/BootstrapServlet.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/BootstrapServlet.java
index 8025e0d552..165a2f0d4b 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/BootstrapServlet.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/BootstrapServlet.java
@@ -1,6 +1,6 @@
package io.swagger.v3.jaxrs2;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
+import tools.jackson.core.util.DefaultPrettyPrinter;
import io.swagger.v3.jaxrs2.integration.JaxrsOpenApiContextBuilder;
import io.swagger.v3.oas.integration.OpenApiConfigurationException;
import io.swagger.v3.oas.integration.OpenApiContextLocator;
@@ -68,7 +68,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se
resp.setContentType("application/yaml");
try (PrintWriter pw = resp.getWriter()) {
- pw.write(ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(oas));
+ pw.write(ctx.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(oas));
}
}
}
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JaxbObjectMapperFactory.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JaxbObjectMapperFactory.java
index b1e84c572d..0fbf748802 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JaxbObjectMapperFactory.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JaxbObjectMapperFactory.java
@@ -1,14 +1,13 @@
package io.swagger.v3.jaxrs2;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.module.jaxb.JaxbAnnotationModule;
import io.swagger.v3.core.util.ObjectMapperFactory;
public class JaxbObjectMapperFactory extends ObjectMapperFactory {
public static ObjectMapper getMapper() {
- ObjectMapper mapper = ObjectMapperFactory.createJson();
- mapper.registerModule(new JaxbAnnotationModule());
- return mapper;
+ return ObjectMapperFactory.createJson(mapperBuilder ->
+ mapperBuilder.addModule(new JaxbAnnotationModule()));
}
}
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JsonViewTest.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JsonViewTest.java
index fca5f1d946..b0f2f831e2 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JsonViewTest.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/JsonViewTest.java
@@ -14,7 +14,6 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonView;
-import com.fasterxml.jackson.core.JsonProcessingException;
import java.util.Arrays;
import java.util.List;
@@ -26,6 +25,7 @@
import javax.ws.rs.core.Response;
import org.testng.annotations.Test;
+import tools.jackson.core.JacksonException;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
@@ -157,7 +157,7 @@ public List getCars() {
}
@Test(description = "check awareness of JsonView")
- public void shouldSerializeTypeParameter() throws JsonProcessingException {
+ public void shouldSerializeTypeParameter() throws JacksonException {
Reader reader = new Reader(new OpenAPI());
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java
index c7e9de8e3a..223cfaf73b 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java
@@ -1,6 +1,6 @@
package io.swagger.v3.jaxrs2;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
import io.swagger.v3.core.converter.AnnotatedType;
import io.swagger.v3.core.converter.ModelConverter;
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/AbstractAnnotationTest.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/AbstractAnnotationTest.java
index 1ea6863dc3..09a36a574e 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/AbstractAnnotationTest.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/AbstractAnnotationTest.java
@@ -1,7 +1,7 @@
package io.swagger.v3.jaxrs2.annotations;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.JsonNode;
+import tools.jackson.databind.JsonNode;
import io.swagger.v3.core.util.Yaml;
import io.swagger.v3.jaxrs2.Reader;
import io.swagger.v3.jaxrs2.matchers.SerializationMatchers;
@@ -10,10 +10,14 @@
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.cfg.MapperBuilder;
+import tools.jackson.dataformat.yaml.YAMLFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
+import java.util.function.Consumer;
import static org.testng.Assert.fail;
@@ -25,11 +29,13 @@ public String readIntoYaml(final Class> cls) {
OpenAPI openAPI = reader.read(cls);
try {
- Yaml.mapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ ObjectMapper mapper = Yaml.mapper(mapperBuilder -> mapperBuilder.changeDefaultPropertyInclusion(incl -> incl
+ .withContentInclusion(JsonInclude.Include.NON_NULL)
+ .withValueInclusion(JsonInclude.Include.NON_NULL)));
// parse JSON
- JsonNode jsonNodeTree = Yaml.mapper().readTree(Yaml.mapper().writeValueAsString(openAPI));
+ JsonNode jsonNodeTree = mapper.readTree(mapper.writeValueAsString(openAPI));
// return it as YAML
- return Yaml.mapper().writeValueAsString(jsonNodeTree);
+ return mapper.writeValueAsString(jsonNodeTree);
} catch (Exception e) {
return "Empty YAML";
}
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/integration/SortedOutputTest.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/integration/SortedOutputTest.java
index 8c3a9a7071..87fd9ac279 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/integration/SortedOutputTest.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/integration/SortedOutputTest.java
@@ -5,11 +5,10 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
-import com.fasterxml.jackson.databind.MapperFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import tools.jackson.databind.MapperFeature;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.SerializationFeature;
+import tools.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.core.jackson.PathsSerializer;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -71,7 +70,7 @@ public void sortOutputTest() throws Exception {
.init();
OpenAPI openApi = ctx.read();
- String sorted = ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openApi);
+ String sorted = ctx.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openApi);
openApiConfiguration = new SwaggerConfiguration()
.resourcePackages(Collections.singleton("com.my.sorted.resources"));
@@ -80,7 +79,7 @@ public void sortOutputTest() throws Exception {
.openApiConfiguration(openApiConfiguration)
.init();
- String notSorted = ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openApi);
+ String notSorted = ctx.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openApi);
assertEquals(sorted, expectedSorted);
assertEquals(notSorted, expectedNotSorted);
@@ -149,19 +148,23 @@ public static abstract class SortedSchemaMixin {
public static class SortedProcessor implements ObjectMapperProcessor {
@Override
- public void processOutputJsonObjectMapper(ObjectMapper mapper) {
- mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
- mapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true);
- mapper.addMixIn(OpenAPI.class, SortedOpenAPIMixin.class);
- mapper.addMixIn(Schema.class, SortedSchemaMixin.class);
+ public ObjectMapper processOutputJsonObjectMapper(ObjectMapper mapper) {
+ return mapper.rebuild()
+ .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
+ .configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true)
+ .addMixIn(OpenAPI.class, SortedOpenAPIMixin.class)
+ .addMixIn(Schema.class, SortedSchemaMixin.class)
+ .build();
}
@Override
- public void processOutputYamlObjectMapper(ObjectMapper mapper) {
- mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
- mapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true);
- mapper.addMixIn(OpenAPI.class, SortedOpenAPIMixin.class);
- mapper.addMixIn(Schema.class, SortedSchemaMixin.class);
+ public ObjectMapper processOutputYamlObjectMapper(ObjectMapper mapper) {
+ return mapper.rebuild()
+ .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
+ .configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true)
+ .addMixIn(OpenAPI.class, SortedOpenAPIMixin.class)
+ .addMixIn(Schema.class, SortedSchemaMixin.class)
+ .build();
}
}
@@ -176,7 +179,7 @@ public void configOutputTest() throws Exception {
.init();
OpenAPI openApi = ctx.read();
- String sorted = ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openApi);
+ String sorted = ctx.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openApi);
openApiConfiguration = new SwaggerConfiguration()
.resourcePackages(Collections.singleton("com.my.sorted.resources"));
@@ -185,7 +188,7 @@ public void configOutputTest() throws Exception {
.openApiConfiguration(openApiConfiguration)
.init();
- String notSorted = ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openApi);
+ String notSorted = ctx.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openApi);
assertEquals(sorted, expectedSorted);
assertEquals(notSorted, expectedNotSorted);
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/it/OpenApiResourceIT.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/it/OpenApiResourceIT.java
index 8d8b2fabee..1ef80b9b18 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/it/OpenApiResourceIT.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/it/OpenApiResourceIT.java
@@ -1,6 +1,7 @@
package io.swagger.v3.jaxrs2.it;
-import com.fasterxml.jackson.databind.SerializationFeature;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.SerializationFeature;
import io.restassured.http.ContentType;
import io.swagger.v3.core.util.Json;
@@ -700,14 +701,18 @@ public void testYamlOpenAPI31WithBootstrapServlet() throws Exception {
}
private String formatYaml(String source) throws IOException {
- return Yaml.mapper().configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true)
+ ObjectMapper mapper = Yaml.mapper(mapperBuilder ->
+ mapperBuilder.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true));
+ return mapper
.writerWithDefaultPrettyPrinter()
- .writeValueAsString(Yaml.mapper().readValue(source, Object.class));
+ .writeValueAsString(mapper.readValue(source, Object.class));
}
private String formatJson(String source) throws IOException {
- return Json.mapper().configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true)
+ ObjectMapper mapper = Json.mapper(mapperBuilder ->
+ mapperBuilder.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true));
+ return mapper
.writerWithDefaultPrettyPrinter()
- .writeValueAsString(Json.mapper().readValue(source, Object.class));
+ .writeValueAsString(mapper.readValue(source, Object.class));
}
}
diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/matchers/SerializationMatchers.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/matchers/SerializationMatchers.java
index d66f3a0706..11bf91fd49 100644
--- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/matchers/SerializationMatchers.java
+++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/matchers/SerializationMatchers.java
@@ -1,9 +1,10 @@
package io.swagger.v3.jaxrs2.matchers;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.NumericNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.ObjectMapper;
+import tools.jackson.databind.node.NumericNode;
+import tools.jackson.databind.node.ObjectNode;
import io.swagger.v3.core.util.Json;
import io.swagger.v3.core.util.Json31;
@@ -44,7 +45,7 @@ private static void apply(Object objectToSerialize, String str, ObjectMapper map
ObjectNode rhs = null;
try {
rhs = mapper.readValue(str, ObjectNode.class);
- } catch (IOException e) {
+ } catch (JacksonException e) {
LOGGER.error("Failed to read value", e);
}
if (exactMatch || !lhs.equals(new ObjectNodeComparator(), rhs)) {
@@ -58,7 +59,7 @@ private static void apply31(Object objectToSerialize, String str, ObjectMapper m
ObjectNode rhs = null;
try {
rhs = mapper.readValue(str, ObjectNode.class);
- } catch (IOException e) {
+ } catch (JacksonException e) {
LOGGER.error("Failed to read value", e);
}
if (!lhs.equals(new ObjectNodeComparator(), rhs)) {
@@ -77,7 +78,7 @@ public int compare(JsonNode o1, JsonNode o2) {
double d2 = ((NumericNode) o2).asDouble();
return Double.compare(d1, d2);
}
- int comp = o1.asText().compareTo(o2.asText());
+ int comp = o1.asString().compareTo(o2.asString());
if (comp == 0) {
return Integer.compare(o1.hashCode(), o2.hashCode());
}
diff --git a/modules/swagger-maven-plugin/src/main/java/io/swagger/v3/plugin/maven/SwaggerMojo.java b/modules/swagger-maven-plugin/src/main/java/io/swagger/v3/plugin/maven/SwaggerMojo.java
index 6bb3e37a34..1a6ac81e25 100644
--- a/modules/swagger-maven-plugin/src/main/java/io/swagger/v3/plugin/maven/SwaggerMojo.java
+++ b/modules/swagger-maven-plugin/src/main/java/io/swagger/v3/plugin/maven/SwaggerMojo.java
@@ -1,6 +1,5 @@
package io.swagger.v3.plugin.maven;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import io.swagger.v3.core.filter.OpenAPISpecFilter;
import io.swagger.v3.core.filter.SpecFilter;
import io.swagger.v3.core.util.Configuration;
@@ -23,6 +22,7 @@
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.StringUtils;
+import tools.jackson.core.JacksonException;
import java.io.File;
import java.io.IOException;
@@ -101,14 +101,14 @@ public void execute() throws MojoExecutionException, MojoFailureException {
String openapiYaml = null;
if (Format.JSON.equals(outputFormat) || Format.JSONANDYAML.equals(outputFormat)) {
if (config.isPrettyPrint() != null && config.isPrettyPrint()) {
- openapiJson = context.getOutputJsonMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openAPI);
+ openapiJson = context.getOutputJsonMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI);
} else {
openapiJson = context.getOutputJsonMapper().writeValueAsString(openAPI);
}
}
if (Format.YAML.equals(outputFormat) || Format.JSONANDYAML.equals(outputFormat)) {
if (config.isPrettyPrint() != null && config.isPrettyPrint()) {
- openapiYaml = context.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(openAPI);
+ openapiYaml = context.getOutputYamlMapper().writerWithDefaultPrettyPrinter().writeValueAsString(openAPI);
} else {
openapiYaml = context.getOutputYamlMapper().writeValueAsString(openAPI);
}
@@ -288,14 +288,14 @@ private List, T>> getSortedMappers(Path pathObj)
list.add((content, typeClass) -> {
try {
return Json.mapper().readValue(content, typeClass);
- } catch (IOException e) {
+ } catch (JacksonException e) {
throw new IllegalStateException(e);
}
});
list.add((content, typeClass) -> {
try {
return Yaml.mapper().readValue(content, typeClass);
- } catch (IOException e) {
+ } catch (JacksonException e) {
throw new IllegalStateException(e);
}
});
diff --git a/modules/swagger-models/pom.xml b/modules/swagger-models/pom.xml
index 558bb1e7e5..e4a66c4f28 100644
--- a/modules/swagger-models/pom.xml
+++ b/modules/swagger-models/pom.xml
@@ -48,14 +48,16 @@
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-core
test
+ 3.0.3
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
test
+ 3.0.3
org.testng
diff --git a/modules/swagger-models/src/test/java/io/swagger/test/SimpleBuilderTest.java b/modules/swagger-models/src/test/java/io/swagger/test/SimpleBuilderTest.java
index 2368f792c3..fdf040d3b6 100644
--- a/modules/swagger-models/src/test/java/io/swagger/test/SimpleBuilderTest.java
+++ b/modules/swagger-models/src/test/java/io/swagger/test/SimpleBuilderTest.java
@@ -1,10 +1,8 @@
package io.swagger.test;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
+import tools.jackson.core.util.DefaultPrettyPrinter;
+import tools.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
@@ -26,6 +24,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
+import tools.jackson.databind.json.JsonMapper;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -127,13 +126,12 @@ public void testBuilder() throws Exception {
}
public static String writeJson(Object value) throws Exception {
- ObjectMapper mapper = new ObjectMapper();
+ ObjectMapper mapper = JsonMapper.builder()
+ .changeDefaultPropertyInclusion(incl -> incl
+ .withContentInclusion(JsonInclude.Include.NON_NULL)
+ .withValueInclusion(JsonInclude.Include.NON_NULL))
+ .build();
- mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
- mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
- mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
- mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-
- return mapper.writer(new DefaultPrettyPrinter()).writeValueAsString(value);
+ return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(value);
}
}
diff --git a/modules/swagger-project-jakarta/modules/swagger-core-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-core-jakarta/pom.xml
index 0d9f0af6a9..a169a6bb8c 100644
--- a/modules/swagger-project-jakarta/modules/swagger-core-jakarta/pom.xml
+++ b/modules/swagger-project-jakarta/modules/swagger-core-jakarta/pom.xml
@@ -127,16 +127,14 @@
jackson-annotations
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
+ 3.0.3
- com.fasterxml.jackson.dataformat
+ tools.jackson.dataformat
jackson-dataformat-yaml
-
-
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
+ 3.0.3
diff --git a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/pom.xml
index ba4fb41be2..7254515a96 100644
--- a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/pom.xml
+++ b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/pom.xml
@@ -129,11 +129,12 @@
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
+ 3.0.3
- com.fasterxml.jackson.jakarta.rs
+ tools.jackson.jakarta.rs
jackson-jakarta-rs-json-provider
${jackson-version}
diff --git a/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/src/main/java/io/swagger/v3/plugin/maven/jakarta/JakartaTransformer.java b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/src/main/java/io/swagger/v3/plugin/maven/jakarta/JakartaTransformer.java
index a95022306f..1a6b97b712 100644
--- a/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/src/main/java/io/swagger/v3/plugin/maven/jakarta/JakartaTransformer.java
+++ b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/src/main/java/io/swagger/v3/plugin/maven/jakarta/JakartaTransformer.java
@@ -78,7 +78,7 @@ public class JakartaTransformer {
private static final String jakartaValidationRegex = "^.*(.*jakarta\\.validation((?!).)*).*$";
private static final String jacksonJsonDep = "\n" +
- " com.fasterxml.jackson.jakarta.rs\n" +
+ " tools.jackson.jakarta.rs\n" +
" jackson-jakarta-rs-json-provider\n" +
" VERSION\n" +
" \n" +
@@ -96,7 +96,7 @@ public class JakartaTransformer {
private static final String jacksonJsonRegex = "^.*(.*jackson\\-jaxrs\\-json((?!).)*).*$";
private static final String jacksonBaseDep = "\n" +
- " com.fasterxml.jackson.jakarta.rs\n" +
+ " tools.jackson.jakarta.rs\n" +
" jackson-jakarta-rs-base\n" +
" VERSION\n" +
" ";
@@ -104,7 +104,7 @@ public class JakartaTransformer {
private static final String jacksonBaseRegex = "^.*(.*jackson\\-jaxrs\\-base((?!).)*).*$";
private static final String jacksonJaxbDep = "\n" +
- " com.fasterxml.jackson.module\n" +
+ " tools.jackson.module\n" +
" jackson-module-jakarta-xmlbind-annotations\n" +
" VERSION\n" +
" \n" +
diff --git a/modules/swagger-project-jakarta/pom.xml b/modules/swagger-project-jakarta/pom.xml
index f438681ad9..e9f274d638 100644
--- a/modules/swagger-project-jakarta/pom.xml
+++ b/modules/swagger-project-jakarta/pom.xml
@@ -58,7 +58,7 @@
maven-compiler-plugin
- 3.11.0
+ 3.14.1
org.apache.maven.plugins
@@ -234,15 +234,15 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.6.2
+ ${maven-javadoc-plugin-version}
true
- 1.8
+ 17
UTF-8
1g
true
- https://docs.oracle.com/javase/8/docs/api
+ https://docs.oracle.com/en/java/javase/17/docs/api
@@ -379,17 +379,17 @@
com.fasterxml.jackson.core
jackson-annotations
- ${jackson-version}
+ ${jackson-annotations-version}
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-core
${jackson-version}
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
- ${jackson-databind-version}
+ ${jackson-version}
jakarta.activation
@@ -402,17 +402,12 @@
- com.fasterxml.jackson.dataformat
+ tools.jackson.dataformat
jackson-dataformat-yaml
${jackson-version}
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
- ${jackson-version}
-
-
- com.fasterxml.jackson.jakarta.rs
+ tools.jackson.jakarta.rs
jackson-jakarta-rs-json-provider
${jackson-version}
@@ -427,12 +422,12 @@
- com.fasterxml.jackson.jakarta.rs
+ tools.jackson.jakarta.rs
jackson-jakarta-rs-base
${jackson-version}
- com.fasterxml.jackson.module
+ tools.jackson.module
jackson-module-jakarta-xmlbind-annotations
${jackson-version}
@@ -460,7 +455,7 @@
- 8
+ 17
2.2.4
2.13.0
2.3
@@ -471,8 +466,8 @@
6.4.0
5.0.0
3.1.10
- 2.19.2
- 2.19.2
+ 2.20
+ 3.0.3
1.5.22
4.8.184
32.1.3-jre
@@ -490,6 +485,7 @@
2.22.2
3.2.1
2.22.2
+ 3.12.0
0.90
0.90
diff --git a/pom.xml b/pom.xml
index 73b4bca6d9..5ef92e6a6e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
maven-compiler-plugin
- 3.11.0
+ 3.14.1
org.apache.maven.plugins
@@ -153,14 +153,14 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.6.2
+ ${maven-javadoc-plugin-version}
true
- 1.8
+ 17
UTF-8
1g
- http://docs.oracle.com/javase/8/docs/api
+ https://docs.oracle.com/en/java/javase/17/docs/api
${javadoc.package.exclude}
@@ -326,7 +326,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.6
+ 0.8.14
@@ -412,15 +412,15 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.6.2
+ ${maven-javadoc-plugin-version}
true
- 1.8
+ 17
UTF-8
1g
true
- https://docs.oracle.com/javase/8/docs/api
+ https://docs.oracle.com/en/java/javase/17/docs/api
@@ -535,28 +535,23 @@
${classgraph-version}
- com.fasterxml.jackson.dataformat
+ tools.jackson.dataformat
jackson-dataformat-yaml
${jackson-version}
com.fasterxml.jackson.core
jackson-annotations
- ${jackson-version}
+ ${jackson-annotations-version}
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
- ${jackson-databind-version}
-
-
- com.fasterxml.jackson.core
- jackson-core
${jackson-version}
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
+ tools.jackson.core
+ jackson-core
${jackson-version}
@@ -618,7 +613,7 @@
- 8
+ 17
2.2.4
2.13.0
2.3
@@ -628,8 +623,8 @@
6.4.0
4.0.4
2.46
- 2.19.2
- 2.19.2
+ 2.20
+ 3.0.3
1.5.22
4.8.184
32.1.3-jre
@@ -647,6 +642,7 @@
3.5.0
3.2.1
2.22.2
+ 3.12.0
0.90
0.90