jackson-dataformats-binary icon indicating copy to clipboard operation
jackson-dataformats-binary copied to clipboard

Jackson 2.x Avro module only works with avro-lib 1.11.4, not 1.12

Open prateek-nagar-IBM opened this issue 5 months ago • 3 comments

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

prateek-nagar-IBM avatar Jul 02 '25 17:07 prateek-nagar-IBM

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.

cowtowncoder avatar Jul 08 '25 00:07 cowtowncoder

Thanks for your response, what will I lose if I switch to 1.11.4 from 1.12.0

prateek-nagar-IBM avatar Jul 08 '25 14:07 prateek-nagar-IBM

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.

cowtowncoder avatar Jul 08 '25 15:07 cowtowncoder