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 aaed206e7c..72fae808ce 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -122,7 +122,11 @@ private void updateFactoryConstraints(JsonFactory jsonFactory) { 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() diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java index d9bc110584..c1b3d30cf5 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/JacksonObjectProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2023 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -26,6 +26,7 @@ import org.glassfish.jersey.message.filtering.spi.EntityGraphProvider; import org.glassfish.jersey.message.filtering.spi.EntityInspector; import org.glassfish.jersey.message.filtering.spi.ObjectGraph; +import org.glassfish.jersey.message.filtering.spi.ScopeProvider; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonMappingException; @@ -37,7 +38,6 @@ import com.fasterxml.jackson.databind.ser.PropertyFilter; import com.fasterxml.jackson.databind.ser.PropertyWriter; import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; -import org.glassfish.jersey.message.filtering.spi.ScopeProvider; import javax.inject.Inject; import javax.ws.rs.core.Context; 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 4dc7c39837..ac6a9a5b6a 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 @@ -31,7 +31,6 @@ import org.glassfish.jersey.jackson.internal.jackson.jaxrs.cfg.ObjectWriterInjector; import org.glassfish.jersey.jackson.internal.jackson.jaxrs.cfg.ObjectWriterModifier; import org.glassfish.jersey.jackson.internal.jackson.jaxrs.util.ClassKey; -import org.glassfish.jersey.jackson.internal.jackson.jaxrs.util.LRUMap; import com.fasterxml.jackson.core.JsonEncoding; import com.fasterxml.jackson.core.JsonGenerator; @@ -44,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.LRUMap; import com.fasterxml.jackson.databind.type.TypeFactory; public abstract class ProviderBase< @@ -1056,4 +1056,4 @@ protected static void _addSuperTypes(Class cls, Class endBefore, Collectio private final THIS _this() { return (THIS) this; } -} \ No newline at end of file +} diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/JaxRSFeature.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/JaxRSFeature.java index 98e8a2a097..3d2300f411 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/JaxRSFeature.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/JaxRSFeature.java @@ -40,6 +40,7 @@ public enum JaxRSFeature implements ConfigFeature * @since 2.15 */ READ_FULL_STREAM(true), + /* /********************************************************** /* HTTP headers 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 c5952b6bb1..61edeb7efc 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.15.2", "com.fasterxml.jackson.jaxrs", "jackson-jaxrs-json-provider"); + "2.16.1", "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/LRUMap.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/LRUMap.java index 7252cd5bd5..c99c987659 100644 --- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/LRUMap.java +++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/LRUMap.java @@ -3,11 +3,15 @@ import java.util.LinkedHashMap; import java.util.Map; +// TO BE REMOVED FROM JACKSON 2.18 or later /** * Helper for simple bounded LRU maps used for reusing lookup values. * * @since 2.2 + * + * @deprecated Since 2.16.1 Use one from {@code jackson-databind} instead. */ +@Deprecated // since 2.16.1 @SuppressWarnings("serial") public class LRUMap extends LinkedHashMap { @@ -24,5 +28,4 @@ protected boolean removeEldestEntry(Map.Entry eldest) { return size() > _maxEntries; } - } diff --git a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java index 811689b4be..db52e11b36 100644 --- a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java +++ b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForDisabledModulesTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -30,6 +30,7 @@ import javax.ws.rs.core.Application; import javax.ws.rs.core.Configuration; import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -48,9 +49,10 @@ public final void testDisabledModule() { .register(JacksonFeature.class) .register(TestJacksonJaxbJsonProvider.class) .property("jersey.config.json.jackson.disabled.modules", "Jdk8Module"); - final String response = target("JAXBEntity") - .request().get(String.class); - assertNotEquals("{\"key\":\"key\",\"value\":\"value\"}", response); + try (Response response = target("JAXBEntity").request().get()) { + assertEquals(400, response.getStatus()); + assertNotEquals("{\"key\":\"key\",\"value\":\"value\"}", response.readEntity(String.class)); + } } private static class TestJacksonJaxbJsonProvider extends JacksonJaxbJsonProvider { diff --git a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForEnabledModulesTest.java b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForEnabledModulesTest.java index 77092f6fb1..5e7f49088a 100644 --- a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForEnabledModulesTest.java +++ b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJsonJacksonProviderForEnabledModulesTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -22,7 +22,9 @@ import org.junit.jupiter.api.Test; import javax.ws.rs.core.Application; +import javax.ws.rs.core.Response; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; public class DefaultJsonJacksonProviderForEnabledModulesTest extends JerseyTest { @@ -34,9 +36,10 @@ protected final Application configure() { @Test public final void testDisabledModule() { - final String response = target("entity/simple") - .request().get(String.class); - assertNotEquals("{\"name\":\"Hello\",\"value\":\"World\"}", response); + try (Response response = target("entity/simple").request().get()) { + assertEquals(400, response.getStatus()); + assertNotEquals("{\"name\":\"Hello\",\"value\":\"World\"}", response.readEntity(String.class)); + } } } 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 c9a35a3109..685cbb2090 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -54,6 +54,7 @@ import java.util.List; public class StreamReadConstrainsTest extends JerseyTest { + private static final String ERROR_MSG_PART = "maximum allowed ("; @Override protected final Application configure() { @@ -82,7 +83,7 @@ void testNumberLength() { .post(Entity.entity(new MyEntity(8), MediaType.APPLICATION_JSON_TYPE))) { Assertions.assertEquals(200, response.getStatus()); String errorMsg = response.readEntity(String.class); - Assertions.assertTrue(errorMsg.contains("maximum length (4)")); + Assertions.assertTrue(errorMsg.contains(ERROR_MSG_PART + 4)); } } @@ -129,7 +130,7 @@ void testConstraintOnClient(WebTarget target, int expectedLength) { throw ex; } String errorMsg = ex.getCause().getMessage(); - Assertions.assertTrue(errorMsg.contains("maximum length (" + String.valueOf(expectedLength) + ")")); + Assertions.assertTrue(errorMsg.contains(ERROR_MSG_PART + String.valueOf(expectedLength))); } } @@ -141,7 +142,7 @@ void testStreamReadConstraintsMethods() { + " Please update the code in " + DefaultJacksonJaxbJsonProvider.class.getName() + " updateFactoryConstraints method"; Method[] method = StreamReadConstraints.Builder.class.getDeclaredMethods(); - Assertions.assertEquals(4, method.length, message); // three max + build methods + Assertions.assertEquals(6, method.length, message); // five setMax... + build() methods } @Path("len") diff --git a/pom.xml b/pom.xml index df80b2fc67..0badc27b7f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,7 @@