Jackson 2.x Avro module only works with avro-lib 1.11.4, not 1.12
Hi, Our project has fasterxml 2.15.0 version. I am working on a feature that needs adding avro 1.12 jar. But adding avro jar complains that it needs jackson 2.17 or higher, so I upgraded my jackson to use 2.17 but then it is complaining on some isProperty() method form json libraries, for that I upgraded swagger as well. I am stuck at this point as our code base relies on legacy versions of jackson, swagger Please suggest which is the most compatible version to be used
Missing requirement: Apache Avro 1.12.0 (avro 1.12.0) requires 'java.package; com.fasterxml.jackson.annotation [2.17.0,3.0.0)' but it could not be found but then when I upgrade to jackson and swagger libraries I am seeing the following error in my unit tests java.lang.AssertionError: java.lang.reflect.InvocationTargetException: io/swagger/v3/parser/urlresolver/exceptions/HostDeniedException
This is my gradle changes sag_const.modules.swagger = [ // v1.x Swagger (legacy) 'io.swagger:swagger-annotations:1.6.14', 'io.swagger:swagger-core:1.6.14', 'io.swagger:swagger-models:1.6.14', 'io.swagger:swagger-parser:1.0.67',
// v3.x Swagger - use SAME version for all components
'io.swagger.core.v3:swagger-annotations:2.2.22',
'io.swagger.core.v3:swagger-core:2.2.22',
'io.swagger.core.v3:swagger-models:2.2.22',
'io.swagger.parser.v3:swagger-parser:2.1.22',
'io.swagger.parser.v3:swagger-parser-v3:2.1.22',
'io.swagger.parser.v3:swagger-parser-core:2.1.22',
'io.swagger.parser.v3:swagger-parser-v2-converter:2.1.22', // Add this
]
sag_const.modules.jackson = [ 'com.fasterxml.jackson.core:jackson-core:2.17.0', 'com.fasterxml.jackson.core:jackson-annotations:2.17.0', 'com.fasterxml.jackson.core:jackson-databind:2.17.0', 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.17.0', 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.0', 'org.yaml:snakeyaml:2.0.0', ] and to get rid of isProperty Error I did static { configureSwaggerSecurity(); // added as newer swagger librries have stricter resolution policies } private static void configureSwaggerSecurity() { // Multiple property approaches to cover different Swagger versions String[] hostProperties = { "swagger.parser.util.RemoteUrl.hostCheck", "swagger.parser.resolver.allowAllHosts", "io.swagger.parser.util.RemoteUrl.trustAll", "swagger.parser.resolve.external", "swagger.parser.resolve.remote" }; for (String prop : hostProperties) { if (prop.contains("hostCheck") || prop.contains("external") || prop.contains("remote")) { System.setProperty(prop, "false"); } else { System.setProperty(prop, "true"); } } // Wildcard hosts System.setProperty("swagger.parser.util.RemoteUrl.allowedHosts", "*"); } in one of the Test case class
but I am getting failures on my unit tests, Please assit in using fastwerxml jackson libraries with avro 1.12 jar
Jackson Avro module only support versions up to 1.11.4 but we cannot use 1.12.0; issue #514 is for upgrade which requires fixes to Apache avro-lib and new release (1.12.1?). You may want to follow that issue and perhaps contribute to discussions.
So there is no way, as things are, to use Avro 1.12.0 library with Jackson Avro module at this point.
Thanks for your response, what will I lose if I switch to 1.11.4 from 1.12.0
I don't know much about version differences in Avro lib; list:
https://avro.apache.org/blog/2024/08/05/avro-1.12.0/
is kind of long.