Adopt Jackson 2.18.0 Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/NOTICE.md b/NOTICE.md index 52749cc..cee36b5 100644 --- a/NOTICE.md +++ b/NOTICE.md
@@ -70,7 +70,7 @@ * Project: http://www.javassist.org/ * Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. -Jackson JAX-RS Providers Version 2.17.2 +Jackson JAX-RS Providers Version 2.18.0 * License: Apache License, 2.0 * Project: https://github.com/FasterXML/jackson-jaxrs-providers * Copyright: (c) 2009-2024 FasterXML, LLC. All rights reserved unless otherwise indicated.
diff --git a/examples/NOTICE.md b/examples/NOTICE.md index 450a5bb..cf2d1c7 100644 --- a/examples/NOTICE.md +++ b/examples/NOTICE.md
@@ -66,7 +66,7 @@ * Project: http://www.javassist.org/ * Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. -Jackson JAX-RS Providers Version 2.17.2 +Jackson JAX-RS Providers Version 2.18.0 * License: Apache License, 2.0 * Project: https://github.com/FasterXML/jackson-jaxrs-providers * Copyright: (c) 2009-2023 FasterXML, LLC. All rights reserved unless otherwise indicated.
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java index 955c9b7..bea0714 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java
@@ -18,6 +18,8 @@ import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.StreamReadConstraints; +import com.fasterxml.jackson.core.Version; +import com.fasterxml.jackson.core.json.PackageVersion; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectReader; @@ -128,17 +130,22 @@ if (maxStringLength != StreamReadConstraints.DEFAULT_MAX_STRING_LEN) { final StreamReadConstraints constraints = jsonFactory.streamReadConstraints(); - jsonFactory.setStreamReadConstraints( - StreamReadConstraints.builder() - // our - .maxStringLength(maxStringLength) - // customers - .maxDocumentLength(constraints.getMaxDocumentLength()) - .maxNameLength(constraints.getMaxNameLength()) - .maxNestingDepth(constraints.getMaxNestingDepth()) - .maxNumberLength(constraints.getMaxNumberLength()) - .build() - ); + StreamReadConstraints.Builder builder = StreamReadConstraints.builder() + // our + .maxStringLength(maxStringLength) + // customers + .maxDocumentLength(constraints.getMaxDocumentLength()) + .maxNameLength(constraints.getMaxNameLength()) + .maxNestingDepth(constraints.getMaxNestingDepth()) + .maxNumberLength(constraints.getMaxNumberLength()); + + if (PackageVersion.VERSION.getMinorVersion() >= 18) { + builder.maxTokenCount(constraints.getMaxTokenCount()); + } else { + LOGGER.warning(LocalizationMessages.ERROR_JACKSON_STREAMREADCONSTRAINTS_218("maxTokenCount")); + } + + jsonFactory.setStreamReadConstraints(builder.build()); } } } \ No newline at end of file
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java index ac6a9a5..396b589 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java
@@ -43,6 +43,7 @@ import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.util.LookupCache; import com.fasterxml.jackson.databind.util.LRUMap; import com.fasterxml.jackson.databind.type.TypeFactory; @@ -186,14 +187,12 @@ /** * Cache for resolved endpoint configurations when reading JSON data */ - protected final LRUMap<AnnotationBundleKey, EP_CONFIG> _readers - = new LRUMap<AnnotationBundleKey, EP_CONFIG>(16, 120); + protected final LookupCache<AnnotationBundleKey, EP_CONFIG> _readers; /** * Cache for resolved endpoint configurations when writing JSON data */ - protected final LRUMap<AnnotationBundleKey, EP_CONFIG> _writers - = new LRUMap<AnnotationBundleKey, EP_CONFIG>(16, 120); + protected final LookupCache<AnnotationBundleKey, EP_CONFIG> _writers; /* /********************************************************** @@ -202,8 +201,9 @@ */ protected ProviderBase(MAPPER_CONFIG mconfig) { - _mapperConfig = mconfig; - _jaxRSFeatures = JAXRS_FEATURE_DEFAULTS; + this(mconfig, + new LRUMap<>(16, 120), + new LRUMap<>(16, 120)); } /** @@ -214,8 +214,19 @@ */ @Deprecated // just to denote it should NOT be directly called; will NOT be removed protected ProviderBase() { - _mapperConfig = null; + this(null); + } + /** + * @since 2.17 + */ + protected ProviderBase(MAPPER_CONFIG mconfig, + LookupCache<AnnotationBundleKey, EP_CONFIG> readerCache, + LookupCache<AnnotationBundleKey, EP_CONFIG> writerCache) + { + _mapperConfig = mconfig; _jaxRSFeatures = JAXRS_FEATURE_DEFAULTS; + _readers = readerCache; + _writers = writerCache; } /*
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJaxbJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJaxbJsonProvider.java index 663eae8..f170281 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJaxbJsonProvider.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJaxbJsonProvider.java
@@ -25,7 +25,7 @@ */ @Provider @Consumes(MediaType.WILDCARD) // NOTE: required to support "non-standard" JSON variants -@Produces(MediaType.WILDCARD) +@Produces({MediaType.APPLICATION_JSON, "text/json", MediaType.WILDCARD}) public class JacksonJaxbJsonProvider extends JacksonJsonProvider { /** * Default annotation sets to use, if not explicitly defined during
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java index dc5fff8..8d602db 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java
@@ -52,7 +52,7 @@ */ @Provider @Consumes(MediaType.WILDCARD) // NOTE: required to support "non-standard" JSON variants -@Produces(MediaType.WILDCARD) +@Produces({MediaType.APPLICATION_JSON, "text/json", MediaType.WILDCARD}) public class JacksonJsonProvider extends ProviderBase<JacksonJsonProvider, ObjectMapper,
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java index 56b1bf6..44c9073 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java
@@ -11,7 +11,7 @@ */ public final class PackageVersion implements Versioned { public final static Version VERSION = VersionUtil.parseVersion( - "2.17.2", "com.fasterxml.jackson.jaxrs", "jackson-jaxrs-json-provider"); + "2.18.0", "com.fasterxml.jackson.jaxrs", "jackson-jaxrs-json-provider"); @Override public Version version() {
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/package-info.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/package-info.java index 4ec091c..c18b433 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/package-info.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/package-info.java
@@ -1,4 +1,4 @@ /** * Miscellaneous helper classes used by providers. */ -package com.fasterxml.jackson.jaxrs.util; +package org.glassfish.jersey.jackson.internal.jackson.jaxrs.util;
diff --git a/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown b/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown index 9440229..d893c65 100644 --- a/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown +++ b/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown
@@ -31,7 +31,7 @@ ## Third-party Content -Jackson JAX-RS Providers version 2.17.2 +Jackson JAX-RS Providers version 2.18.0 * License: Apache License, 2.0 * Project: https://github.com/FasterXML/jackson-jaxrs-providers * Copyright: (c) 2009-2023 FasterXML, LLC. All rights reserved unless otherwise indicated.
diff --git a/media/json-jackson/src/main/resources/org/glassfish/jersey/jackson/localization.properties b/media/json-jackson/src/main/resources/org/glassfish/jersey/jackson/localization.properties index a9144fd..1943306 100644 --- a/media/json-jackson/src/main/resources/org/glassfish/jersey/jackson/localization.properties +++ b/media/json-jackson/src/main/resources/org/glassfish/jersey/jackson/localization.properties
@@ -13,6 +13,6 @@ # # SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 # - error.jackson.streamreadconstraints=Error setting StreamReadConstraints: {0}. Possibly not Jackson 2.15? +error.jackson.streamreadconstraints218=Error setting StreamReadConstraints: {0}. Possibly not Jackson 2.18? error.modules.not.loaded=Jackson modules could not be loaded: {0} \ No newline at end of file
diff --git a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/StreamReadConstrainsTest.java b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/StreamReadConstrainsTest.java index 685cbb2..60c6cbd 100644 --- a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/StreamReadConstrainsTest.java +++ b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/StreamReadConstrainsTest.java
@@ -19,7 +19,9 @@ import com.fasterxml.jackson.annotation.JsonGetter; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.StreamReadConstraints; +import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.core.exc.StreamConstraintsException; +import com.fasterxml.jackson.core.json.PackageVersion; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonSerializable; import com.fasterxml.jackson.databind.Module; @@ -134,7 +136,27 @@ } } + @Test + void testMatchingVersion() { + final Version coreVersion = PackageVersion.VERSION; + final Version jerseyVersion = org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.PackageVersion.VERSION; + StringBuilder message = new StringBuilder(); + message.append("Dependency Jackson Version is ") + .append(coreVersion.getMajorVersion()) + .append(".") + .append(coreVersion.getMinorVersion()); + message.append("\n Repackaged Jackson Version is ") + .append(jerseyVersion.getMajorVersion()) + .append(".") + .append(jerseyVersion.getMinorVersion()); + + Assertions.assertEquals(coreVersion.getMajorVersion(), jerseyVersion.getMajorVersion(), message.toString()); + Assertions.assertEquals(coreVersion.getMinorVersion(), jerseyVersion.getMinorVersion(), message.toString()); + Assertions.assertEquals(coreVersion.getMajorVersion(), 2, + "update " + DefaultJacksonJaxbJsonProvider.class.getName() + + " updateFactoryConstraints method to support version " + coreVersion.getMajorVersion()); + } @Test void testStreamReadConstraintsMethods() { @@ -142,7 +164,9 @@ + " Please update the code in " + DefaultJacksonJaxbJsonProvider.class.getName() + " updateFactoryConstraints method"; Method[] method = StreamReadConstraints.Builder.class.getDeclaredMethods(); - Assertions.assertEquals(6, method.length, message); // five setMax... + build() methods + // 2.17 : five setMax... + build() methods + // 2.18 : six setMax... + build() methods + Assertions.assertEquals(7, method.length, message); } @Path("len")
diff --git a/pom.xml b/pom.xml index f0d492c..bd4efe3 100644 --- a/pom.xml +++ b/pom.xml
@@ -2218,7 +2218,7 @@ <xmlunit.version>2.10.0</xmlunit.version> <httpclient.version>4.5.14</httpclient.version> <httpclient5.version>5.3.1</httpclient5.version> - <jackson.version>2.17.2</jackson.version> + <jackson.version>2.18.0</jackson.version> <jackson1.version>1.9.13</jackson1.version> <javassist.version>3.30.2-GA</javassist.version> <jersey1.version>1.19.3</jersey1.version>