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>