Merge remote-tracking branch 'origin/master' into 'origin/3.x'
Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/archetypes/jersey-heroku-webapp/src/main/resources/archetype-resources/pom.xml b/archetypes/jersey-heroku-webapp/src/main/resources/archetype-resources/pom.xml
index e960ea3..5ccc9bc 100644
--- a/archetypes/jersey-heroku-webapp/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/jersey-heroku-webapp/src/main/resources/archetype-resources/pom.xml
@@ -101,12 +101,19 @@
<war>\${project.build.directory}/\${project.build.finalName}.war</war>
</configuration>
</plugin>
+ <plugin>
+ <!-- Surefire support for JUnit-5 -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${surefire.mvn.plugin.version}</version>
+ </plugin>
</plugins>
</build>
<properties>
<jersey.version>${project.version}</jersey.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jetty.version>11.0.0.beta3</jetty.version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <surefire.mvn.plugin.version>3.0.0-M7</surefire.mvn.plugin.version>
</properties>
</project>
\ No newline at end of file
diff --git a/archetypes/jersey-quickstart-grizzly2/src/main/resources/archetype-resources/pom.xml b/archetypes/jersey-quickstart-grizzly2/src/main/resources/archetype-resources/pom.xml
index 9dcb68b..0519417 100644
--- a/archetypes/jersey-quickstart-grizzly2/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/jersey-quickstart-grizzly2/src/main/resources/archetype-resources/pom.xml
@@ -72,6 +72,12 @@
<mainClass>\${package}.Main</mainClass>
</configuration>
</plugin>
+ <plugin>
+ <!-- Surefire support for JUnit-5 -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${surefire.mvn.plugin.version}</version>
+ </plugin>
</plugins>
</build>
@@ -79,5 +85,6 @@
<jersey.version>${project.version}</jersey.version>
<junit-jupiter.version>5.9.1</junit-jupiter.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <surefire.mvn.plugin.version>3.0.0-M7</surefire.mvn.plugin.version>
</properties>
</project>
diff --git a/connectors/jetty-connector/src/main/java11/org/glassfish/jersey/jetty/connector/JettyConnector.java b/connectors/jetty-connector/src/main/java11/org/glassfish/jersey/jetty/connector/JettyConnector.java
index 33749a2..3ede8a9 100644
--- a/connectors/jetty-connector/src/main/java11/org/glassfish/jersey/jetty/connector/JettyConnector.java
+++ b/connectors/jetty-connector/src/main/java11/org/glassfish/jersey/jetty/connector/JettyConnector.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2023 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
@@ -159,7 +159,7 @@
}
if (httpClient == null) {
final SSLContext sslContext = jaxrsClient.getSslContext();
- final SslContextFactory.Client sslContextFactory = new SslContextFactory.Client();
+ final SslContextFactory.Client sslContextFactory = new SslContextFactory.Client(false);
sslContextFactory.setSslContext(sslContext);
final ClientConnector connector = new ClientConnector();
connector.setSslContextFactory(sslContextFactory);
@@ -170,8 +170,12 @@
Boolean enableHostnameVerification = (Boolean) config.getProperties()
.get(JettyClientProperties.ENABLE_SSL_HOSTNAME_VERIFICATION);
- if (enableHostnameVerification != null && enableHostnameVerification) {
- client.getSslContextFactory().setEndpointIdentificationAlgorithm("https");
+ if (enableHostnameVerification != null) {
+ final String verificationAlgorithm = enableHostnameVerification ? "HTTPS" : null;
+ client.getSslContextFactory().setEndpointIdentificationAlgorithm(verificationAlgorithm);
+ }
+ if (jaxrsClient.getHostnameVerifier() != null) {
+ client.getSslContextFactory().setHostnameVerifier(jaxrsClient.getHostnameVerifier());
}
final Object connectTimeout = config.getProperties().get(ClientProperties.CONNECT_TIMEOUT);
diff --git a/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyResponseWriter.java b/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyResponseWriter.java
index aa0a85f..3d4311a 100644
--- a/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyResponseWriter.java
+++ b/containers/netty-http/src/main/java/org/glassfish/jersey/netty/httpserver/NettyResponseWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2023 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
@@ -105,7 +105,7 @@
if (contentLength == -1) {
HttpUtil.setTransferEncodingChunked(response, true);
- } else {
+ } else if (req.method() != HttpMethod.HEAD || !response.headers().contains(HttpHeaderNames.CONTENT_LENGTH)) {
response.headers().set(HttpHeaderNames.CONTENT_LENGTH, contentLength);
}
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java b/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java
index 8ecbfaa..74c8cfb 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/ChunkedInputReader.java
@@ -24,6 +24,7 @@
import jakarta.ws.rs.ConstrainedTo;
import jakarta.ws.rs.RuntimeType;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.MessageBodyReader;
@@ -47,8 +48,8 @@
private final Provider<PropertiesDelegate> propertiesDelegateProvider;
@Inject
- public ChunkedInputReader(Provider<MessageBodyWorkers> messageBodyWorkers,
- Provider<PropertiesDelegate> propertiesDelegateProvider) {
+ public ChunkedInputReader(@Context Provider<MessageBodyWorkers> messageBodyWorkers,
+ @Context Provider<PropertiesDelegate> propertiesDelegateProvider) {
this.messageBodyWorkers = messageBodyWorkers;
this.propertiesDelegateProvider = propertiesDelegateProvider;
}
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java b/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java
index 8d773a6..9970203 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/filter/EncodingFilter.java
@@ -25,6 +25,7 @@
import jakarta.ws.rs.client.ClientRequestContext;
import jakarta.ws.rs.client.ClientRequestFilter;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.inject.Inject;
@@ -54,7 +55,7 @@
private volatile List<Object> supportedEncodings = null;
@Inject
- public EncodingFilter(InjectionManager injectionManager) {
+ public EncodingFilter(@Context InjectionManager injectionManager) {
this.injectionManager = injectionManager;
}
diff --git a/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java b/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java
index deafb62..8c36b04 100644
--- a/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java
+++ b/core-client/src/test/java/org/glassfish/jersey/client/spi/PreInvocationInterceptorTest.java
@@ -29,6 +29,7 @@
import jakarta.ws.rs.client.ClientRequestFilter;
import jakarta.ws.rs.client.Invocation;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.Response;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
@@ -266,7 +267,7 @@
private final Configuration configuration;
@Inject
- public InjectedPreInvocationInterceptor(Configuration configuration) {
+ public InjectedPreInvocationInterceptor(@Context Configuration configuration) {
this.configuration = configuration;
}
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java b/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java
index 57c7d24..fa075fb 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/JaxrsProviders.java
@@ -19,6 +19,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.ContextResolver;
import jakarta.ws.rs.ext.ExceptionMapper;
@@ -67,9 +68,9 @@
private final Provider<ExceptionMappers> mappers;
@Inject
- public JaxrsProviders(Provider<MessageBodyWorkers> workers,
- Provider<ContextResolvers> resolvers,
- Provider<ExceptionMappers> mappers) {
+ public JaxrsProviders(@Context Provider<MessageBodyWorkers> workers,
+ @Context Provider<ContextResolvers> resolvers,
+ @Context Provider<ExceptionMappers> mappers) {
this.workers = workers;
this.resolvers = resolvers;
this.mappers = mappers;
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java b/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java
index 1548ef8..b0984f5 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/inject/ParamConverters.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2023 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018 Payara Foundation and/or its affiliates.
*
* This program and the accompanying materials are made available under the
@@ -21,7 +21,6 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.security.AccessController;
import java.text.ParseException;
@@ -36,7 +35,7 @@
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.ext.ParamConverter;
import jakarta.ws.rs.ext.ParamConverterProvider;
-
+import jakarta.ws.rs.core.Context;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
@@ -410,7 +409,7 @@
* Create new aggregated {@link ParamConverterProvider param converter provider}.
*/
@Inject
- public AggregatedProvider(InjectionManager manager) {
+ public AggregatedProvider(@Context InjectionManager manager) {
this.providers = new ParamConverterProvider[] {
// ordering is important (e.g. Date provider must be executed before String Constructor
// as Date has a deprecated String constructor
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/util/collection/GuardianStringKeyMultivaluedMap.java b/core-common/src/main/java/org/glassfish/jersey/internal/util/collection/GuardianStringKeyMultivaluedMap.java
index d92ac56..7e9e9f5 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/util/collection/GuardianStringKeyMultivaluedMap.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/util/collection/GuardianStringKeyMultivaluedMap.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2023 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
@@ -170,7 +170,9 @@
*/
public boolean isObservedAndReset(String key) {
Boolean observed = guards.get(key);
- guards.put(key, false);
+ if (observed != null) {
+ guards.put(key, false);
+ }
return observed != null && observed;
}
@@ -178,6 +180,7 @@
for (Map.Entry<String, Boolean> guard : guards.entrySet()) {
if (guard.getKey().equals(key)) {
guard.setValue(true);
+ break;
}
}
}
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/OutboundMessageContext.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/OutboundMessageContext.java
index b9ab253..d33acc3 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/OutboundMessageContext.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/OutboundMessageContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2023 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
@@ -114,7 +114,7 @@
this.runtimeDelegateDecorator = RuntimeDelegateDecorator.configured(configuration);
this.mediaTypeCache = mediaTypeCache();
- headers.setGuard(HttpHeaders.CONTENT_LENGTH);
+ headers.setGuard(HttpHeaders.CONTENT_TYPE);
}
/**
@@ -125,7 +125,7 @@
*/
public OutboundMessageContext(OutboundMessageContext original) {
this.headers = new GuardianStringKeyMultivaluedMap<>(HeaderUtils.createOutbound());
- this.headers.setGuard(HttpHeaders.CONTENT_LENGTH);
+ this.headers.setGuard(HttpHeaders.CONTENT_TYPE);
this.headers.putAll(original.headers);
this.committingOutputStream = new CommittingOutputStream();
this.entityStream = committingOutputStream;
@@ -135,7 +135,7 @@
this.entityAnnotations = original.entityAnnotations;
this.configuration = original.configuration;
this.runtimeDelegateDecorator = original.runtimeDelegateDecorator;
- this.mediaTypeCache = original.mediaTypeCache();
+ this.mediaTypeCache = mediaTypeCache();
}
/**
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/ReaderWriter.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/ReaderWriter.java
index f9ee35a..f6f271a 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/ReaderWriter.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/ReaderWriter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2023 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
@@ -19,6 +19,7 @@
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
@@ -183,12 +184,19 @@
Math.min(buf.length - nread, remaining))) > 0) {
nread += n;
remaining -= n;
+
+ if (nread == BUFFER_SIZE) { // This differs from JDK version
+ break; // prevents a bug (See ReaderWriterTest)
+ }
}
if (nread > 0) {
if (MAX_BUFFER_SIZE - total < nread) {
throw new OutOfMemoryError("Required array size too large");
}
+ if (nread < buf.length) {
+ buf = Arrays.copyOfRange(buf, 0, nread);
+ }
total += nread;
if (result == null) {
result = buf;
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java
index 8d6a8ef..dd7bbf7 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/SourceProvider.java
@@ -27,6 +27,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.InternalServerErrorException;
import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.MessageBodyReader;
@@ -96,7 +97,7 @@
private final Provider<SAXParserFactory> spf;
@Inject
- public SaxSourceReader(Provider<SAXParserFactory> spf) {
+ public SaxSourceReader(@Context Provider<SAXParserFactory> spf) {
this.spf = spf;
}
@@ -137,7 +138,7 @@
private final Provider<DocumentBuilderFactory> dbf;
@Inject
- public DomSourceReader(Provider<DocumentBuilderFactory> dbf) {
+ public DomSourceReader(@Context Provider<DocumentBuilderFactory> dbf) {
this.dbf = dbf;
}
@@ -179,8 +180,8 @@
private final Provider<TransformerFactory> transformerFactory;
@Inject
- public SourceWriter(Provider<SAXParserFactory> spf,
- Provider<TransformerFactory> tf) {
+ public SourceWriter(@Context Provider<SAXParserFactory> spf,
+ @Context Provider<TransformerFactory> tf) {
this.saxParserFactory = spf;
this.transformerFactory = tf;
}
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/internal/routing/AbstractMethodSelectingRouter.java b/core-server/src/main/java/org/glassfish/jersey/server/internal/routing/AbstractMethodSelectingRouter.java
index 160bb17..76e96aa 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/internal/routing/AbstractMethodSelectingRouter.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/internal/routing/AbstractMethodSelectingRouter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2023 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
@@ -399,6 +399,7 @@
final List<ConsumesProducesAcceptor> satisfyingAcceptors = new LinkedList<>();
final Set<ResourceMethod> differentInvokableMethods = Collections.newSetFromMap(new IdentityHashMap<>());
+ final MediaType requestContentType = request.getMediaType();
for (ConsumesProducesAcceptor cpi : acceptors) {
if (cpi.isConsumable(request)) {
satisfyingAcceptors.add(cpi);
@@ -411,7 +412,6 @@
final List<AcceptableMediaType> acceptableMediaTypes = request.getQualifiedAcceptableMediaTypes();
- final MediaType requestContentType = request.getMediaType();
final MediaType effectiveContentType = requestContentType == null ? MediaType.WILDCARD_TYPE : requestContentType;
final MethodSelector methodSelector = selectMethod(acceptableMediaTypes, satisfyingAcceptors, effectiveContentType,
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java
index b5c0943..9854772 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/EntityInspectorImpl.java
@@ -30,6 +30,7 @@
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
+import jakarta.ws.rs.core.Context;
import org.glassfish.jersey.internal.inject.InjectionManager;
import org.glassfish.jersey.internal.inject.Providers;
@@ -59,7 +60,7 @@
* @param injectionManager injection manager to be injected.
*/
@Inject
- public EntityInspectorImpl(final InjectionManager injectionManager, EntityGraphProvider graphProvider) {
+ public EntityInspectorImpl(@Context InjectionManager injectionManager, @Context EntityGraphProvider graphProvider) {
Spliterator<EntityProcessor> entities =
Providers.getAllProviders(injectionManager, EntityProcessor.class, new RankedComparator<>()).spliterator();
this.entityProcessors = StreamSupport.stream(entities, false).collect(Collectors.toList());
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java
index 9eb5933..b989c1b 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/ObjectGraphProvider.java
@@ -23,6 +23,7 @@
import org.glassfish.jersey.message.filtering.spi.ScopeProvider;
import jakarta.inject.Inject;
+import jakarta.ws.rs.core.Context;
/**
* {@link org.glassfish.jersey.message.filtering.spi.ObjectProvider Object provider} and
@@ -34,9 +35,9 @@
final class ObjectGraphProvider extends AbstractObjectProvider<ObjectGraph> {
@Inject
- public ObjectGraphProvider(ScopeProvider scopeProvider,
- EntityInspector entityInspector,
- EntityGraphProvider graphProvider) {
+ public ObjectGraphProvider(@Context ScopeProvider scopeProvider,
+ @Context EntityInspector entityInspector,
+ @Context EntityGraphProvider graphProvider) {
super(scopeProvider, entityInspector, graphProvider);
}
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java
index ce354db..de4884a 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/AbstractObjectProvider.java
@@ -25,6 +25,7 @@
import java.util.Set;
import jakarta.inject.Inject;
+import jakarta.ws.rs.core.Context;
import org.glassfish.jersey.internal.guava.Cache;
import org.glassfish.jersey.internal.guava.CacheBuilder;
@@ -50,9 +51,9 @@
private EntityInspector entityInspector;
private EntityGraphProvider graphProvider;
- public AbstractObjectProvider(ScopeProvider scopeProvider,
- EntityInspector entityInspector,
- EntityGraphProvider graphProvider) {
+ public AbstractObjectProvider(@Context ScopeProvider scopeProvider,
+ @Context EntityInspector entityInspector,
+ @Context EntityGraphProvider graphProvider) {
this.scopeProvider = scopeProvider;
this.entityInspector = entityInspector;
this.graphProvider = graphProvider;
diff --git a/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java b/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
index 8458471..7dbad12 100644
--- a/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
+++ b/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
@@ -29,6 +29,7 @@
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.core.Application;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.core.Response;
@@ -73,7 +74,7 @@
public static class MessageProvider implements MessageBodyReader<MetaInf>, MessageBodyWriter<MetaInf> {
@Inject
- MessageProvider(Configuration configuration) {
+ MessageProvider(@Context Configuration configuration) {
this.config = configuration;
}
private Configuration config;
diff --git a/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java b/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java
index 124e7b2..0d4b7d1 100644
--- a/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java
+++ b/incubator/kryo/src/main/java/org/glassfish/jersey/kryo/internal/KryoMessageBodyProvider.java
@@ -27,6 +27,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.ContextResolver;
@@ -55,7 +56,7 @@
private final Optional<KryoPool> kryoPool;
@Inject
- public KryoMessageBodyProvider(Providers providers) {
+ public KryoMessageBodyProvider(@Context Providers providers) {
final MediaType mediaType = new MediaType("application", "x-kryo");
contextResolver = providers.getContextResolver(Kryo.class, mediaType);
kryoPool = getKryoPool();
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
index 00bac95..c6fa279 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
@@ -21,6 +21,7 @@
import jakarta.ws.rs.core.Configuration;
import jakarta.inject.Inject;
+import jakarta.ws.rs.core.Context;
import javax.xml.parsers.DocumentBuilderFactory;
/**
@@ -39,7 +40,8 @@
*/
// TODO This provider should be registered and configured via a feature.
@Inject
- public DocumentBuilderFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+ public DocumentBuilderFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+ @Context final Configuration config) {
super(config);
this.injectionManager = injectionManager;
}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
index c629439..f22ff63 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
@@ -20,7 +20,7 @@
import org.glassfish.jersey.jaxb.FeatureSupplier;
import jakarta.ws.rs.core.Configuration;
-
+import jakarta.ws.rs.core.Context;
import jakarta.inject.Inject;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
@@ -50,7 +50,8 @@
*/
// TODO This provider should be registered and configured via a feature.
@Inject
- public SaxParserFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+ public SaxParserFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+ @Context final Configuration config) {
super(config);
this.injectionManager = injectionManager;
}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
index 213c4ac..43acbb3 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
@@ -24,6 +24,7 @@
import jakarta.ws.rs.core.Configuration;
import jakarta.inject.Inject;
+import jakarta.ws.rs.core.Context;
import javax.xml.XMLConstants;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
@@ -45,7 +46,8 @@
*/
// TODO This provider should be registered and configured via a feature.
@Inject
- public TransformerFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+ public TransformerFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+ @Context final Configuration config) {
super(config);
this.injectionManager = injectionManager;
}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java
index 4f0af6f..55ba54d 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlCollectionJaxbProvider.java
@@ -28,6 +28,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.Providers;
@@ -73,7 +74,7 @@
public static final class App extends XmlCollectionJaxbProvider {
@Inject
- public App(Provider<XMLInputFactory> xif, Providers ps, Configuration config) {
+ public App(@Context Provider<XMLInputFactory> xif, @Context Providers ps, @Context Configuration config) {
super(xif, ps, MediaType.APPLICATION_XML_TYPE, config);
}
}
@@ -88,7 +89,7 @@
public static final class Text extends XmlCollectionJaxbProvider {
@Inject
- public Text(Provider<XMLInputFactory> xif, Providers ps, Configuration config) {
+ public Text(@Context Provider<XMLInputFactory> xif, @Context Providers ps, @Context Configuration config) {
super(xif, ps, MediaType.TEXT_XML_TYPE, config);
}
}
@@ -103,7 +104,7 @@
public static final class General extends XmlCollectionJaxbProvider {
@Inject
- public General(Provider<XMLInputFactory> xif, Providers ps, Configuration config) {
+ public General(@Context Provider<XMLInputFactory> xif, @Context Providers ps, @Context Configuration config) {
super(xif, ps, config);
}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
index 24bb77e..648327d 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
@@ -21,6 +21,7 @@
import jakarta.ws.rs.core.Configuration;
import jakarta.inject.Inject;
+import jakarta.ws.rs.core.Context;
import javax.xml.stream.XMLInputFactory;
/**
@@ -38,7 +39,8 @@
*/
// TODO This provider should be registered and configured via a feature.
@Inject
- public XmlInputFactoryInjectionProvider(final InjectionManager injectionManager, final Configuration config) {
+ public XmlInputFactoryInjectionProvider(@Context final InjectionManager injectionManager,
+ @Context final Configuration config) {
super(config);
this.injectionManager = injectionManager;
}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java
index 10b3646..5a6de8a 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlJaxbElementProvider.java
@@ -24,6 +24,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.Providers;
@@ -67,7 +68,7 @@
public static final class App extends XmlJaxbElementProvider {
@Inject
- public App(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public App(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, MediaType.APPLICATION_XML_TYPE, config);
}
}
@@ -82,7 +83,7 @@
public static final class Text extends XmlJaxbElementProvider {
@Inject
- public Text(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public Text(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, MediaType.TEXT_XML_TYPE, config);
}
}
@@ -97,7 +98,7 @@
public static final class General extends XmlJaxbElementProvider {
@Inject
- public General(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public General(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, config);
}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java
index 397b9ae..69d59ee 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootElementJaxbProvider.java
@@ -22,6 +22,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.Providers;
@@ -69,7 +70,7 @@
public static final class App extends XmlRootElementJaxbProvider {
@Inject
- public App(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public App(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, MediaType.APPLICATION_XML_TYPE, config);
}
}
@@ -85,7 +86,7 @@
public static final class Text extends XmlRootElementJaxbProvider {
@Inject
- public Text(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public Text(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, MediaType.TEXT_XML_TYPE, config);
}
}
@@ -101,7 +102,7 @@
public static final class General extends XmlRootElementJaxbProvider {
@Inject
- public General(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public General(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, config);
}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
index 76e61a1..d0f1bd3 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
@@ -29,6 +29,7 @@
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.core.NoContentException;
@@ -81,7 +82,7 @@
public static final class App extends XmlRootObjectJaxbProvider {
@Inject
- public App(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public App(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, MediaType.APPLICATION_XML_TYPE, config);
}
}
@@ -96,7 +97,7 @@
public static final class Text extends XmlRootObjectJaxbProvider {
@Inject
- public Text(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public Text(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, MediaType.TEXT_XML_TYPE, config);
}
}
@@ -111,7 +112,7 @@
public static final class General extends XmlRootObjectJaxbProvider {
@Inject
- public General(Provider<SAXParserFactory> spf, Providers ps, Configuration config) {
+ public General(@Context Provider<SAXParserFactory> spf, @Context Providers ps, @Context Configuration config) {
super(spf, ps, config);
}
diff --git a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
index c2ffe9e..693a9d3 100644
--- a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
+++ b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
@@ -39,6 +39,7 @@
import jakarta.ws.rs.ProcessingException;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.core.NoContentException;
@@ -62,7 +63,7 @@
private final Providers providers;
@Inject
- public JsonBindingProvider(Providers providers) {
+ public JsonBindingProvider(@Context Providers providers) {
this.providers = providers;
}
diff --git a/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java b/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java
index ec86d03..96d0b1a 100644
--- a/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java
+++ b/media/json-gson/src/main/java/org/glassfish/jersey/gson/internal/JsonGsonProvider.java
@@ -28,6 +28,7 @@
import jakarta.ws.rs.ProcessingException;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.core.NoContentException;
@@ -57,7 +58,7 @@
private Providers providers;
@Inject
- public JsonGsonProvider(Providers providers) {
+ public JsonGsonProvider(@Context Providers providers) {
this.providers = providers;
}
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 9abfbf1..393522d 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
@@ -28,6 +28,7 @@
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.ext.Providers;
/**
@@ -38,7 +39,7 @@
private Configuration commonConfig;
@Inject
- public DefaultJacksonJaxbJsonProvider(Providers providers, Configuration config) {
+ public DefaultJacksonJaxbJsonProvider(@Context Providers providers, @Context Configuration config) {
super(new JacksonMapperConfigurator(null, DEFAULT_ANNOTATIONS));
this.commonConfig = config;
_providers = providers;
@@ -51,8 +52,10 @@
super(new JacksonMapperConfigurator(null, DEFAULT_ANNOTATIONS));
}
- public DefaultJacksonJaxbJsonProvider(final Annotations... annotationsToUse) {
+ public DefaultJacksonJaxbJsonProvider(Providers providers, Configuration config, Annotations... annotationsToUse) {
super(new JacksonMapperConfigurator(null, annotationsToUse));
+ this.commonConfig = config;
+ _providers = providers;
}
@PostConstruct
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
index 486ec09..5767040 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
@@ -23,6 +23,7 @@
import java.lang.reflect.Type;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
@@ -62,8 +63,9 @@
private final Provider<ObjectProvider<FilterProvider>> provider;
@Inject
- public FilteringJacksonJaxbJsonProvider(Provider<ObjectProvider<FilterProvider>> provider,
- Providers providers, Configuration config) {
+ public FilteringJacksonJaxbJsonProvider(@Context Provider<ObjectProvider<FilterProvider>> provider,
+ @Context Providers providers,
+ @Context Configuration config) {
super(providers, config);
this.provider = provider;
}
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 b4b37f4..a12d4d0 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
@@ -40,6 +40,7 @@
import org.glassfish.jersey.message.filtering.spi.ScopeProvider;
import jakarta.inject.Inject;
+import jakarta.ws.rs.core.Context;
/**
* @author Michal Gajdos
@@ -47,9 +48,9 @@
final class JacksonObjectProvider extends AbstractObjectProvider<FilterProvider> {
@Inject
- public JacksonObjectProvider(ScopeProvider scopeProvider,
- EntityInspector entityInspector,
- EntityGraphProvider graphProvider) {
+ public JacksonObjectProvider(@Context ScopeProvider scopeProvider,
+ @Context EntityInspector entityInspector,
+ @Context EntityGraphProvider graphProvider) {
super(scopeProvider, entityInspector, graphProvider);
}
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 9b7beb9..e75400a 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
@@ -29,6 +29,7 @@
import jakarta.inject.Inject;
import jakarta.ws.rs.core.Application;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -55,7 +56,7 @@
private static class TestJacksonJaxbJsonProvider extends JacksonJaxbJsonProvider {
@Inject
- public TestJacksonJaxbJsonProvider(Configuration configuration) {
+ public TestJacksonJaxbJsonProvider(@Context Configuration configuration) {
this.configuration = configuration;
}
private Configuration configuration;
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java
index e8c3ac6..554feff 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonJaxbElementProvider.java
@@ -28,6 +28,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.Providers;
@@ -71,7 +72,7 @@
public static final class App extends JettisonJaxbElementProvider {
@Inject
- public App(Providers ps, Configuration config) {
+ public App(@Context Providers ps, @Context Configuration config) {
super(ps, MediaType.APPLICATION_JSON_TYPE, config);
}
}
@@ -81,7 +82,7 @@
public static final class General extends JettisonJaxbElementProvider {
@Inject
- public General(Providers ps, Configuration config) {
+ public General(@Context Providers ps, @Context Configuration config) {
super(ps, config);
}
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java
index 61380c1..15799fd 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonListElementProvider.java
@@ -32,6 +32,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.Providers;
@@ -77,7 +78,7 @@
@Consumes("application/json")
public static final class App extends JettisonListElementProvider {
@Inject
- public App(Providers ps, Configuration config) {
+ public App(@Context Providers ps, @Context Configuration config) {
super(ps, MediaType.APPLICATION_JSON_TYPE, config);
}
}
@@ -87,7 +88,7 @@
public static final class General extends JettisonListElementProvider {
@Inject
- public General(Providers ps, Configuration config) {
+ public General(@Context Providers ps, @Context Configuration config) {
super(ps, config);
}
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java
index b43ea1d..a581ca8 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonRootElementProvider.java
@@ -28,6 +28,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.Providers;
@@ -71,7 +72,7 @@
@Consumes("application/json")
public static final class App extends JettisonRootElementProvider {
@Inject
- public App(Providers ps, Configuration config) {
+ public App(@Context Providers ps, @Context Configuration config) {
super(ps, MediaType.APPLICATION_JSON_TYPE, config);
}
}
@@ -80,7 +81,7 @@
@Consumes("*/*")
public static final class General extends JettisonRootElementProvider {
@Inject
- public General(Providers ps, Configuration config) {
+ public General(@Context Providers ps, @Context Configuration config) {
super(ps, config);
}
diff --git a/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java b/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java
index 0e33d25..ff367e7 100644
--- a/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java
+++ b/media/moxy/src/main/java/org/glassfish/jersey/moxy/internal/MoxyObjectProvider.java
@@ -21,6 +21,7 @@
import java.util.Set;
import jakarta.inject.Inject;
+import jakarta.ws.rs.core.Context;
import jakarta.xml.bind.JAXBException;
import org.glassfish.jersey.message.filtering.spi.AbstractObjectProvider;
@@ -52,9 +53,9 @@
}
@Inject
- public MoxyObjectProvider(ScopeProvider scopeProvider,
- EntityInspector entityInspector,
- EntityGraphProvider graphProvider) {
+ public MoxyObjectProvider(@Context ScopeProvider scopeProvider,
+ @Context EntityInspector entityInspector,
+ @Context EntityGraphProvider graphProvider) {
super(scopeProvider, entityInspector, graphProvider);
}
diff --git a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java
index 6d07e04..541d545 100644
--- a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java
+++ b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/ConfigurableMoxyJsonProvider.java
@@ -29,6 +29,7 @@
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.ContextResolver;
@@ -80,7 +81,7 @@
private final Configuration config;
@Inject
- public ConfigurableMoxyJsonProvider(Providers providers, Configuration config) {
+ public ConfigurableMoxyJsonProvider(@Context Providers providers, @Context Configuration config) {
this.providers = providers;
this.config = config;
}
diff --git a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java
index 2a0ef42..e45f1cb 100644
--- a/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java
+++ b/media/moxy/src/main/java/org/glassfish/jersey/moxy/json/internal/FilteringMoxyJsonProvider.java
@@ -20,6 +20,7 @@
import java.lang.reflect.Type;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
@@ -46,9 +47,9 @@
private final Provider<ObjectProvider<ObjectGraph>> provider;
@Inject
- public FilteringMoxyJsonProvider(Provider<ObjectProvider<ObjectGraph>> provider,
- Providers providers,
- Configuration config) {
+ public FilteringMoxyJsonProvider(@Context Provider<ObjectProvider<ObjectGraph>> provider,
+ @Context Providers providers,
+ @Context Configuration config) {
super(providers, config);
this.provider = provider;
}
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
index d8d4762..c867078 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
@@ -32,6 +32,7 @@
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.RuntimeType;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
@@ -84,7 +85,8 @@
* application.
*/
@Inject
- public MultiPartReaderClientSide(final Providers providers, Provider<MessageBodyWorkers> messageBodyWorkers) {
+ public MultiPartReaderClientSide(@Context final Providers providers,
+ @Context final Provider<MessageBodyWorkers> messageBodyWorkers) {
final ContextResolver<MultiPartProperties> contextResolver =
providers.getContextResolver(MultiPartProperties.class, MediaType.WILDCARD_TYPE);
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java
index 59c4c58..24c0214 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderServerSide.java
@@ -23,6 +23,7 @@
import jakarta.ws.rs.ConstrainedTo;
import jakarta.ws.rs.RuntimeType;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.MessageBodyReader;
@@ -52,9 +53,9 @@
private final Provider<CloseableService> closeableServiceProvider;
@Inject
- public MultiPartReaderServerSide(final Providers providers,
- final Provider<CloseableService> closeableServiceProvider,
- final Provider<MessageBodyWorkers> messageBodyWorkers) {
+ public MultiPartReaderServerSide(@Context final Providers providers,
+ @Context final Provider<CloseableService> closeableServiceProvider,
+ @Context final Provider<MessageBodyWorkers> messageBodyWorkers) {
super(providers, messageBodyWorkers);
this.closeableServiceProvider = closeableServiceProvider;
}
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
index 5237d7e..7873872 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
@@ -30,6 +30,7 @@
import jakarta.inject.Inject;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
@@ -65,7 +66,7 @@
private final Providers providers;
@Inject
- public MultiPartWriter(final Providers providers) {
+ public MultiPartWriter(@Context final Providers providers) {
this.providers = providers;
}
diff --git a/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java b/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java
index 91ea8ba..c83400c 100644
--- a/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java
+++ b/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInputReader.java
@@ -22,6 +22,7 @@
import java.lang.reflect.Type;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.MessageBodyReader;
@@ -44,7 +45,8 @@
private final Provider<PropertiesDelegate> propertiesDelegateProvider;
@Inject
- EventInputReader(Provider<MessageBodyWorkers> messageBodyWorkers, Provider<PropertiesDelegate> propertiesDelegateProvider) {
+ EventInputReader(@Context Provider<MessageBodyWorkers> messageBodyWorkers,
+ @Context Provider<PropertiesDelegate> propertiesDelegateProvider) {
this.messageBodyWorkers = messageBodyWorkers;
this.propertiesDelegateProvider = propertiesDelegateProvider;
}
diff --git a/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java b/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java
index 18d9546..d2e7b85 100644
--- a/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java
+++ b/media/sse/src/main/java/org/glassfish/jersey/media/sse/OutboundEventWriter.java
@@ -23,6 +23,7 @@
import java.nio.charset.Charset;
import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.MessageBodyWriter;
@@ -55,7 +56,7 @@
private final Provider<MessageBodyWorkers> workersProvider;
@Inject
- public OutboundEventWriter(Provider<MessageBodyWorkers> workersProvider) {
+ public OutboundEventWriter(@Context Provider<MessageBodyWorkers> workersProvider) {
this.workersProvider = workersProvider;
}
diff --git a/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java b/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java
index b3d466a..143c2ab 100644
--- a/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java
+++ b/security/oauth1-client/src/main/java/org/glassfish/jersey/client/oauth1/OAuth1ClientFilter.java
@@ -26,6 +26,7 @@
import jakarta.annotation.Priority;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
+import jakarta.ws.rs.core.Context;
import org.glassfish.jersey.client.oauth1.internal.LocalizationMessages;
import org.glassfish.jersey.message.MessageBodyWorkers;
@@ -52,7 +53,8 @@
private Provider<MessageBodyWorkers> messageBodyWorkers;
@Inject
- public OAuth1ClientFilter(Provider<OAuth1Signature> oAuthSignature, Provider<MessageBodyWorkers> messageBodyWorkers) {
+ public OAuth1ClientFilter(@Context Provider<OAuth1Signature> oAuthSignature,
+ @Context Provider<MessageBodyWorkers> messageBodyWorkers) {
this.oAuthSignature = oAuthSignature;
this.messageBodyWorkers = messageBodyWorkers;
}
diff --git a/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java b/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
index 6a54ce1..3f2fe27 100644
--- a/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
+++ b/security/oauth2-client/src/main/java/org/glassfish/jersey/client/oauth2/AuthCodeGrantImpl.java
@@ -32,6 +32,7 @@
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.Feature;
import jakarta.ws.rs.core.Form;
import jakarta.ws.rs.core.GenericType;
@@ -358,8 +359,8 @@
private final Provider<PropertiesDelegate> propertiesDelegateProvider;
@Inject
- public DefaultTokenMessageBodyReader(Provider<MessageBodyWorkers> workers,
- Provider<PropertiesDelegate> propertiesDelegateProvider) {
+ public DefaultTokenMessageBodyReader(@Context Provider<MessageBodyWorkers> workers,
+ @Context Provider<PropertiesDelegate> propertiesDelegateProvider) {
this.propertiesDelegateProvider = propertiesDelegateProvider;
this.workers = workers;
}
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/BufferingTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/BufferingTest.java
index ed122f3..d71e996 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/BufferingTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/BufferingTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2023 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
@@ -32,14 +32,22 @@
import org.glassfish.jersey.apache5.connector.Apache5ConnectorProvider;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties;
+import org.glassfish.jersey.client.HttpUrlConnectorProvider;
import org.glassfish.jersey.client.RequestEntityProcessing;
+import org.glassfish.jersey.client.spi.ConnectorProvider;
import org.glassfish.jersey.grizzly.connector.GrizzlyConnectorProvider;
+import org.glassfish.jersey.jdk.connector.JdkConnectorProvider;
import org.glassfish.jersey.logging.LoggingFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import java.util.function.Supplier;
+import java.util.stream.Stream;
/**
* Tests chunk encoding and possibility of buffering the entity.
@@ -65,56 +73,42 @@
}
}
- @Test
- public void testApacheConnector() {
- testWithBuffering(getApacheConnectorConfig());
- testWithChunkEncodingWithoutPropertyDefinition(getApacheConnectorConfig());
- testWithChunkEncodingWithPropertyDefinition(getApacheConnectorConfig());
- testWithChunkEncodingPerRequest(getApacheConnectorConfig());
- testDefaultOption(getApacheConnectorConfig(), RequestEntityProcessing.CHUNKED);
+ public static Stream<Arguments> clientConfigs() {
+ return Stream.of(
+ Arguments.of(new TestArguments(() -> new ApacheConnectorProvider(), RequestEntityProcessing.CHUNKED)),
+ Arguments.of(new TestArguments(() -> new Apache5ConnectorProvider(), RequestEntityProcessing.CHUNKED)),
+ Arguments.of(new TestArguments(() -> new GrizzlyConnectorProvider(), RequestEntityProcessing.CHUNKED)),
+ Arguments.of(new TestArguments(() -> new HttpUrlConnectorProvider(), RequestEntityProcessing.BUFFERED)),
+ Arguments.of(new TestArguments(() -> new JdkConnectorProvider(), RequestEntityProcessing.BUFFERED))
+ );
}
- @Test
- public void testApache5Connector() {
- testWithBuffering(getApache5ConnectorConfig());
- testWithChunkEncodingWithoutPropertyDefinition(getApache5ConnectorConfig());
- testWithChunkEncodingWithPropertyDefinition(getApache5ConnectorConfig());
- testWithChunkEncodingPerRequest(getApache5ConnectorConfig());
- testDefaultOption(getApache5ConnectorConfig(), RequestEntityProcessing.CHUNKED);
+ private static final class TestArguments {
+ private final Supplier<ConnectorProvider> connectorProviderSupplier;
+ private final RequestEntityProcessing defaultProcessing;
+
+ private TestArguments(Supplier<ConnectorProvider> connectorProviderSupplier, RequestEntityProcessing defaultProcessing) {
+ this.connectorProviderSupplier = connectorProviderSupplier;
+ this.defaultProcessing = defaultProcessing;
+ }
+
+ private ClientConfig clientConfig() {
+ return new ClientConfig().connectorProvider(connectorProviderSupplier.get());
+ }
+
+ private RequestEntityProcessing defaultProcessing() {
+ return defaultProcessing;
+ }
}
- @Test
- public void testGrizzlyConnector() {
- testWithBuffering(getGrizzlyConnectorConfig());
- testWithChunkEncodingWithoutPropertyDefinition(getGrizzlyConnectorConfig());
- testWithChunkEncodingWithPropertyDefinition(getGrizzlyConnectorConfig());
- testWithChunkEncodingPerRequest(getGrizzlyConnectorConfig());
- testDefaultOption(getGrizzlyConnectorConfig(), RequestEntityProcessing.CHUNKED);
- }
-
- @Test
- public void testHttpUrlConnector() {
- testWithBuffering(getHttpUrlConnectorConfig());
- testWithChunkEncodingWithoutPropertyDefinition(getHttpUrlConnectorConfig());
- testWithChunkEncodingWithPropertyDefinition(getHttpUrlConnectorConfig());
- testWithChunkEncodingPerRequest(getHttpUrlConnectorConfig());
- testDefaultOption(getHttpUrlConnectorConfig(), RequestEntityProcessing.BUFFERED);
- }
-
- private ClientConfig getApacheConnectorConfig() {
- return new ClientConfig().connectorProvider(new ApacheConnectorProvider());
- }
-
- private ClientConfig getApache5ConnectorConfig() {
- return new ClientConfig().connectorProvider(new Apache5ConnectorProvider());
- }
-
- private ClientConfig getGrizzlyConnectorConfig() {
- return new ClientConfig().connectorProvider(new GrizzlyConnectorProvider());
- }
-
- private ClientConfig getHttpUrlConnectorConfig() {
- return new ClientConfig();
+ @ParameterizedTest
+ @MethodSource("clientConfigs")
+ public void testConnector(TestArguments arguments) {
+ testWithBuffering(arguments.clientConfig());
+ testWithChunkEncodingWithoutPropertyDefinition(arguments.clientConfig());
+ testWithChunkEncodingWithPropertyDefinition(arguments.clientConfig());
+ testWithChunkEncodingPerRequest(arguments.clientConfig());
+ testDefaultOption(arguments.clientConfig(), arguments.defaultProcessing());
}
private void testDefaultOption(ClientConfig cc, RequestEntityProcessing mode) {
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java
index e42453b..7655eb8 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/InjectedClientBodyWorker.java
@@ -31,6 +31,7 @@
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.core.Application;
import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.ContextResolver;
@@ -76,7 +77,7 @@
Providers providers;
@Inject
- public ProvidersInjectedWriter(Providers providers) {
+ public ProvidersInjectedWriter(@Context Providers providers) {
this.providers = providers;
}
@@ -111,7 +112,7 @@
Providers providers;
@Inject
- ProvidersInjectedReader(Providers providers) {
+ ProvidersInjectedReader(@Context Providers providers) {
this.providers = providers;
}
@@ -142,7 +143,7 @@
Configuration configuration;
@Inject
- public ConfigurationInjectedWriter(Configuration configuration) {
+ public ConfigurationInjectedWriter(@Context Configuration configuration) {
this.configuration = configuration;
}
@@ -172,7 +173,7 @@
Configuration configuration;
@Inject
- public ConfigurationInjectedReader(Configuration configuration) {
+ public ConfigurationInjectedReader(@Context Configuration configuration) {
this.configuration = configuration;
}
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SslConnectorHostnameVerifierTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SslConnectorHostnameVerifierTest.java
index 364c214..2034975 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SslConnectorHostnameVerifierTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SslConnectorHostnameVerifierTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2023 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
@@ -31,8 +31,9 @@
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
import org.glassfish.jersey.client.spi.ConnectorProvider;
import org.glassfish.jersey.grizzly.connector.GrizzlyConnectorProvider;
-import org.glassfish.jersey.jetty.connector.JettyConnectorProvider;
+import org.glassfish.jersey.jetty.connector.JettyClientProperties;
+import org.glassfish.jersey.jetty.connector.JettyConnectorProvider;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -66,13 +67,14 @@
@ParameterizedTest
@MethodSource("testData")
public void testHostnameVerifierApplied(ConnectorProvider connectorProvider) throws Exception {
- // Grizzly and Jetty connectors don't support Hostname Verification
- if (isExcluded(Arrays.asList(GrizzlyConnectorProvider.class, JettyConnectorProvider.class), connectorProvider)) {
+ // Grizzly connector does not support Hostname Verification
+ if (isExcluded(Arrays.asList(GrizzlyConnectorProvider.class), connectorProvider)) {
return;
}
final Client client = ClientBuilder.newBuilder()
- .withConfig(new ClientConfig().connectorProvider(connectorProvider))
+ .withConfig(getClientConfig(JettyConnectorProvider.class.isAssignableFrom(connectorProvider.getClass()))
+ .connectorProvider(connectorProvider))
.register(HttpAuthenticationFeature.basic("user", "password"))
.hostnameVerifier(new CustomHostnameVerifier())
.sslContext(getSslContext())
@@ -80,18 +82,25 @@
try {
client.target(Server.BASE_URI).request().get(Response.class);
- fail("HostnameVerifier was not applied.");
+ fail("HostnameVerifier was not applied by " + connectorProvider.getClass());
} catch (ProcessingException pex) {
CustomHostnameVerifier.HostnameVerifierException hve = getHVE(pex);
if (hve != null) {
assertEquals(CustomHostnameVerifier.EX_VERIFIER_MESSAGE, hve.getMessage());
} else {
- fail("Invalid wrapped exception.");
+ fail("Invalid wrapped exception.", pex);
}
}
}
+ private static final ClientConfig getClientConfig(boolean enableSslHostnameVerification) {
+ final ClientConfig config = new ClientConfig();
+ return enableSslHostnameVerification ? config
+ .property(JettyClientProperties.ENABLE_SSL_HOSTNAME_VERIFICATION, Boolean.FALSE)
+ : config;
+ }
+
private boolean isExcluded(List<Class<? extends ConnectorProvider>> excluded, ConnectorProvider connectorProvider) {
for (Class<?> clazz : excluded) {
if (clazz.isAssignableFrom(connectorProvider.getClass())) {
diff --git a/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/message/internal/OutboundMessageContextTest.java b/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/message/internal/OutboundMessageContextTest.java
index 8456fd7..29a3cb3 100644
--- a/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/message/internal/OutboundMessageContextTest.java
+++ b/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/message/internal/OutboundMessageContextTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2023 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
@@ -36,6 +36,7 @@
import org.glassfish.jersey.message.internal.OutboundMessageContext;
import org.glassfish.jersey.tests.e2e.common.TestRuntimeDelegate;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
@@ -225,4 +226,21 @@
fail();
}
+
+ @Test
+ public void testChangedContentType() {
+ OutboundMessageContext ctx = new OutboundMessageContext((Configuration) null);
+ ctx.setMediaType(MediaType.APPLICATION_XML_TYPE);
+ Assertions.assertEquals(MediaType.APPLICATION_XML_TYPE, ctx.getMediaType());
+ ctx.setMediaType(MediaType.APPLICATION_JSON_TYPE);
+ Assertions.assertEquals(MediaType.APPLICATION_JSON_TYPE, ctx.getMediaType());
+ }
+
+ @Test
+ public void testCopyConstructor() {
+ OutboundMessageContext ctx = new OutboundMessageContext((Configuration) null);
+ OutboundMessageContext newCtx = new OutboundMessageContext(ctx);
+ newCtx.setMediaType(MediaType.APPLICATION_XML_TYPE); // new value
+ Assertions.assertEquals(MediaType.APPLICATION_XML_TYPE, newCtx.getMediaType());
+ }
}
diff --git a/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/message/internal/ReaderWriterTest.java b/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/message/internal/ReaderWriterTest.java
new file mode 100644
index 0000000..59edddd
--- /dev/null
+++ b/tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/message/internal/ReaderWriterTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2012, 2023 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
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.tests.e2e.common.message.internal;
+
+import org.glassfish.jersey.message.internal.ReaderWriter;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import jakarta.ws.rs.core.MediaType;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+public class ReaderWriterTest {
+ @Test
+ public void testToNeverAskToReadZeroBytes() throws IOException {
+ // Unnamed app server bug test
+ int size = ((ReaderWriter.BUFFER_SIZE + 1000) / 10) * 10;
+ StringBuilder sb = new StringBuilder(size);
+ String shortMsg = "0123456789";
+ while (sb.length() < size) {
+ sb.append(shortMsg);
+ }
+
+ ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(sb.toString().getBytes(StandardCharsets.UTF_8)) {
+ @Override
+ public synchronized int read(byte[] b, int off, int len) {
+ if (len == 0) {
+ return -1; // simulate the bug
+ }
+ return super.read(b, off, len);
+ }
+ };
+
+ String read = ReaderWriter.readFromAsString(byteArrayInputStream, MediaType.TEXT_HTML_TYPE);
+ Assertions.assertEquals(size, read.length());
+ }
+}
diff --git a/tests/release-test/pom.xml b/tests/release-test/pom.xml
index e5dc66c..00fa896 100644
--- a/tests/release-test/pom.xml
+++ b/tests/release-test/pom.xml
@@ -52,7 +52,8 @@
<reuseForks>false</reuseForks>
<enableAssertions>false</enableAssertions>
<includes>
- <include>**/NoticeFilesTest.class</include>
+ <include>**/ArchetypesTest</include>
+ <include>**/NoticeFilesTest</include>
</includes>
</configuration>
</plugin>
@@ -147,8 +148,8 @@
<reuseForks>false</reuseForks>
<enableAssertions>false</enableAssertions>
<includes>
- <include>**/DownloadBomPomDependencies.java</include>
- <include>**/*Test.class</include>
+ <include>**/DownloadBomPomDependencies</include>
+ <include>**/*Test</include>
</includes>
</configuration>
</plugin>
diff --git a/tests/release-test/src/test/java/org/glassfish/jersey/test/artifacts/ArchetypesTest.java b/tests/release-test/src/test/java/org/glassfish/jersey/test/artifacts/ArchetypesTest.java
new file mode 100644
index 0000000..b42830b
--- /dev/null
+++ b/tests/release-test/src/test/java/org/glassfish/jersey/test/artifacts/ArchetypesTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2023 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
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package org.glassfish.jersey.test.artifacts;
+
+import org.apache.maven.model.Model;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Properties;
+
+public class ArchetypesTest {
+ public static final String[] archetypePoms = {
+ "../../archetypes/jersey-example-java8-webapp/src/main/resources/archetype-resources/pom.xml",
+ "../../archetypes/jersey-heroku-webapp/src/main/resources/archetype-resources/pom.xml",
+ "../../archetypes/jersey-quickstart-grizzly2/src/main/resources/archetype-resources/pom.xml",
+ "../../archetypes/jersey-quickstart-webapp/src/main/resources/archetype-resources/pom.xml",
+ };
+
+ @Test
+ public void testPropertiesVersion() throws XmlPullParserException, IOException {
+ Properties properties = MavenUtil.getModelFromFile("../../pom.xml").getProperties();
+// System.out.println(properties);
+ TestResult testResult = new TestResult();
+ for (String pom : archetypePoms) {
+ File pomFile = new File(pom);
+ Assert.assertTrue("The pom file " + pom + " does not exist", pomFile.exists());
+ Assert.assertTrue("The pom file " + pom + " cannot be read", pomFile.canRead());
+
+ boolean failed = false;
+ Model pomModel = MavenUtil.getModelFromFile(pom);
+ Properties pomProperties = pomModel.getProperties();
+ for (Map.Entry<Object, Object> pomEntry : pomProperties.entrySet()) {
+ if (pomEntry.getKey().equals("jersey.config.test.container.port")) {
+ // Skip the following
+ continue;
+ }
+ // Update the names with the ones in Jersey
+ Map.Entry<Object, Object> updatedEntry = updateEntry(pomEntry);
+ // Check the properties are there
+ if (properties.getProperty(updatedEntry.getKey().toString()) == null) {
+ testResult.ok().append("Property ")
+ .append(pomEntry.getKey().toString())
+ .append(" from ").append(pom).println(" not in Jersey");
+ failed = true;
+ }
+ // check the values
+ else if (!properties.getProperty(updatedEntry.getKey().toString()).equals(updatedEntry.getValue())) {
+ testResult.exception().append("The property ")
+ .append(pomEntry.getKey().toString())
+ .append(" in archetype pom ")
+ .append(pom)
+ .append(" not equals Jersey ")
+ .println(properties.getProperty(pomEntry.getKey().toString()));
+ failed = true;
+ }
+ }
+ if (!failed) {
+ testResult.ok().append("The properties in archetype pom ").append(pom).println(" equals Jersey");
+ }
+ }
+
+ if (!testResult.result()) {
+ Assert.fail();
+ }
+ }
+
+ private Map.Entry<Object, Object> updateEntry(Map.Entry<Object, Object> pomEntry) {
+ if (pomEntry.getKey().equals("junit-jupiter.version")) {
+ return new Map.Entry<Object, Object>() {
+ @Override
+ public Object getKey() {
+ return "junit5.version";
+ }
+
+ @Override
+ public Object getValue() {
+ return pomEntry.getValue();
+ }
+
+ @Override
+ public Object setValue(Object value) {
+ return value;
+ }
+ };
+ }
+ return pomEntry;
+ }
+}