Skip to content
This repository was archived by the owner on May 28, 2018. It is now read-only.

Commit 1f46147

Browse files
author
Petr Bouda
committed
Removing the need to fetch ContainerRequest from InjectionManager for every injection point in Resource Method Injection in one request.
- Changing ValueSupplierProvider#get() to #apply(ContainerRequest) - Renaming ValueSupplierProvider to ValueParamProvider - InjectionResolvers accepts Provider<ContainerRequest> Change-Id: I83bb9a312594f619f78cd29b5010243f09872175
1 parent 904ed19 commit 1f46147

File tree

38 files changed

+397
-574
lines changed

38 files changed

+397
-574
lines changed

core-server/src/main/java/org/glassfish/jersey/server/ApplicationHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
import org.glassfish.jersey.server.internal.ProcessingProviders;
104104
import org.glassfish.jersey.server.internal.inject.ParamConverterConfigurator;
105105
import org.glassfish.jersey.server.internal.inject.ParamExtractorConfigurator;
106-
import org.glassfish.jersey.server.internal.inject.ValueSupplierProviderConfigurator;
106+
import org.glassfish.jersey.server.internal.inject.ValueParamProviderConfigurator;
107107
import org.glassfish.jersey.server.internal.monitoring.ApplicationEventImpl;
108108
import org.glassfish.jersey.server.internal.monitoring.CompositeApplicationEventListener;
109109
import org.glassfish.jersey.server.internal.monitoring.MonitoringContainerListener;
@@ -295,7 +295,7 @@ private void initialize(ApplicationConfigurator applicationConfigurator, Injecti
295295
new RequestScope.RequestScopeConfigurator(),
296296
new ParamConverterConfigurator(),
297297
new ParamExtractorConfigurator(),
298-
new ValueSupplierProviderConfigurator(),
298+
new ValueParamProviderConfigurator(),
299299
new JerseyResourceContextConfigurator(),
300300
new ComponentProviderConfigurator(),
301301
new JaxrsProviders.ProvidersConfigurator(),
@@ -384,7 +384,7 @@ private ServerRuntime initialize(InjectionManager injectionManager, List<Bootstr
384384

385385
if (!disableValidation()) {
386386
ComponentModelValidator validator = new ComponentModelValidator(
387-
bootstrapBag.getValueSupplierProviders(), bootstrapBag.getMessageBodyWorkers());
387+
bootstrapBag.getValueParamProviders(), bootstrapBag.getMessageBodyWorkers());
388388
validator.validate(bootstrapBag.getResourceModel());
389389
}
390390

@@ -413,7 +413,7 @@ private ServerRuntime initialize(InjectionManager injectionManager, List<Bootstr
413413
.resourceContext(bootstrapBag.getResourceContext())
414414
.configuration(runtimeConfig)
415415
.entityProviders(msgBodyWorkers)
416-
.valueSupplierProviders(bootstrapBag.getValueSupplierProviders())
416+
.valueSupplierProviders(bootstrapBag.getValueParamProviders())
417417
.modelProcessors(Providers.getAllRankedSortedProviders(injectionManager, ModelProcessor.class))
418418
.createService(serviceType -> Injections.getOrCreate(injectionManager, serviceType))
419419
.processingProviders(processingProviders)

core-server/src/main/java/org/glassfish/jersey/server/ServerBootstrapBag.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
import org.glassfish.jersey.server.model.ResourceMethodInvoker;
5555
import org.glassfish.jersey.server.model.ResourceModel;
5656
import org.glassfish.jersey.server.spi.ComponentProvider;
57-
import org.glassfish.jersey.server.spi.internal.ValueSupplierProvider;
57+
import org.glassfish.jersey.server.spi.internal.ValueParamProvider;
5858

5959
/**
6060
* {@inheritDoc}
@@ -67,7 +67,7 @@ public class ServerBootstrapBag extends BootstrapBag {
6767

6868
private Application application;
6969
private ApplicationHandler applicationHandler;
70-
private Collection<ValueSupplierProvider> valueSupplierProviders;
70+
private Collection<ValueParamProvider> valueParamProviders;
7171
private MultivaluedParameterExtractorProvider multivaluedParameterExtractorProvider;
7272
private ProcessingProviders processingProviders;
7373
private JerseyResourceContext resourceContext;
@@ -134,13 +134,13 @@ public void setMultivaluedParameterExtractorProvider(MultivaluedParameterExtract
134134
this.multivaluedParameterExtractorProvider = provider;
135135
}
136136

137-
public Collection<ValueSupplierProvider> getValueSupplierProviders() {
138-
requireNonNull(valueSupplierProviders, new GenericType<Collection<ValueSupplierProvider>>() {}.getType());
139-
return valueSupplierProviders;
137+
public Collection<ValueParamProvider> getValueParamProviders() {
138+
requireNonNull(valueParamProviders, new GenericType<Collection<ValueParamProvider>>() {}.getType());
139+
return valueParamProviders;
140140
}
141141

142-
public void setValueSupplierProviders(Collection<ValueSupplierProvider> valueSupplierProviders) {
143-
this.valueSupplierProviders = valueSupplierProviders;
142+
public void setValueParamProviders(Collection<ValueParamProvider> valueParamProviders) {
143+
this.valueParamProviders = valueParamProviders;
144144
}
145145

146146
public JerseyResourceContext getResourceContext() {

core-server/src/main/java/org/glassfish/jersey/server/internal/inject/AbstractRequestDerivedValueSupplier.java

Lines changed: 0 additions & 70 deletions
This file was deleted.
Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -43,41 +43,37 @@
4343
import java.util.Arrays;
4444
import java.util.HashSet;
4545
import java.util.Set;
46-
import java.util.function.Supplier;
46+
import java.util.function.Function;
4747

4848
import javax.inject.Provider;
4949

5050
import org.glassfish.jersey.server.ContainerRequest;
5151
import org.glassfish.jersey.server.model.Parameter;
52-
import org.glassfish.jersey.server.spi.internal.ValueSupplierProvider;
52+
import org.glassfish.jersey.server.spi.internal.ValueParamProvider;
5353

5454
/**
55-
* A parameter value supplier provider that provides parameter value factories
55+
* A parameter value provider that provides parameter value factories
5656
* which are using {@link MultivaluedParameterExtractorProvider} to extract parameter
5757
* values from the supplied {@link javax.ws.rs.core.MultivaluedMap multivalued
5858
* parameter map}.
5959
*
6060
* @author Paul Sandoz
6161
* @author Marek Potociar (marek.potociar at oracle.com)
6262
*/
63-
public abstract class AbstractValueSupplierProvider implements ValueSupplierProvider {
63+
public abstract class AbstractValueParamProvider implements ValueParamProvider {
6464

6565
private final Provider<MultivaluedParameterExtractorProvider> mpep;
6666
private final Set<Parameter.Source> compatibleSources;
67-
private final Provider<ContainerRequest> requestProvider;
6867

6968
/**
7069
* Initialize the provider.
7170
*
7271
* @param mpep multivalued map parameter extractor provider.
73-
* @param requestProvider container request provider.
7472
* @param compatibleSources compatible parameter sources.
7573
*/
76-
protected AbstractValueSupplierProvider(Provider<MultivaluedParameterExtractorProvider> mpep,
77-
Provider<ContainerRequest> requestProvider,
74+
protected AbstractValueParamProvider(Provider<MultivaluedParameterExtractorProvider> mpep,
7875
Parameter.Source... compatibleSources) {
7976
this.mpep = mpep;
80-
this.requestProvider = requestProvider;
8177
this.compatibleSources = new HashSet<>(Arrays.asList(compatibleSources));
8278
}
8379

@@ -96,32 +92,29 @@ protected final MultivaluedParameterExtractor<?> get(Parameter parameter) {
9692
}
9793

9894
/**
99-
* Create a value supplier for the parameter. May return {@code null} in case
100-
* the parameter is not supported by the value supplier provider.
95+
* Create a value provider for the parameter. May return {@code null} in case
96+
* the parameter is not supported by the value provider.
10197
*
102-
* @param parameter parameter requesting the value supplier instance.
103-
* @param requestProvider container request provider that provides request context specific access to the
104-
* {@link ContainerRequest} instance.
98+
* @param parameter parameter requesting the value provider instance.
10599
* @return parameter value supplier. Returns {@code null} if parameter is not supported.
106100
*/
107-
protected abstract AbstractRequestDerivedValueSupplier<?> createValueSupplier(
108-
Parameter parameter, Provider<ContainerRequest> requestProvider);
101+
protected abstract Function<ContainerRequest, ?> createValueProvider(Parameter parameter);
109102

110103
/**
111-
* Get an injected value supplier for the parameter. May return {@code null}
112-
* in case the parameter is not supported by the value supplier provider.
104+
* Get an injected value provider for the parameter. May return {@code null}
105+
* in case the parameter is not supported by the value provider.
113106
*
114-
* @param parameter parameter requesting the value supplier instance.
107+
* @param parameter parameter requesting the value provider instance.
115108
* @return injected parameter value supplier. Returns {@code null} if parameter
116109
* is not supported.
117110
*/
118111
@Override
119-
public final Supplier<?> getValueSupplier(Parameter parameter) {
112+
public final Function<ContainerRequest, ?> getValueProvider(Parameter parameter) {
120113
if (!compatibleSources.contains(parameter.getSource())) {
121114
// not compatible
122115
return null;
123116
}
124-
return createValueSupplier(parameter, requestProvider);
117+
return createValueProvider(parameter);
125118
}
126119

127120
@Override
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,23 @@
4040

4141
package org.glassfish.jersey.server.internal.inject;
4242

43-
import java.util.function.Supplier;
43+
import java.util.function.Function;
4444

4545
import javax.ws.rs.container.AsyncResponse;
4646

4747
import javax.inject.Provider;
4848

49+
import org.glassfish.jersey.server.ContainerRequest;
4950
import org.glassfish.jersey.server.internal.process.AsyncContext;
5051
import org.glassfish.jersey.server.model.Parameter;
51-
import org.glassfish.jersey.server.spi.internal.ValueSupplierProvider;
52+
import org.glassfish.jersey.server.spi.internal.ValueParamProvider;
5253

5354
/**
5455
* Value factory provider supporting the {@link javax.ws.rs.container.Suspended} injection annotation.
5556
*
5657
* @author Marek Potociar (marek.potociar at oracle.com)
5758
*/
58-
final class AsyncResponseValueSupplierProvider implements ValueSupplierProvider {
59+
final class AsyncResponseValueParamProvider implements ValueParamProvider {
5960

6061
private final Provider<AsyncContext> asyncContextProvider;
6162

@@ -64,20 +65,20 @@ final class AsyncResponseValueSupplierProvider implements ValueSupplierProvider
6465
*
6566
* @param asyncContextProvider async processing context provider.
6667
*/
67-
public AsyncResponseValueSupplierProvider(Provider<AsyncContext> asyncContextProvider) {
68+
public AsyncResponseValueParamProvider(Provider<AsyncContext> asyncContextProvider) {
6869
this.asyncContextProvider = asyncContextProvider;
6970
}
7071

7172
@Override
72-
public Supplier<AsyncResponse> getValueSupplier(final Parameter parameter) {
73+
public Function<ContainerRequest, AsyncResponse> getValueProvider(final Parameter parameter) {
7374
if (parameter.getSource() != Parameter.Source.SUSPENDED) {
7475
return null;
7576
}
7677
if (!AsyncResponse.class.isAssignableFrom(parameter.getRawType())) {
7778
return null;
7879
}
7980

80-
return asyncContextProvider::get;
81+
return containerRequest -> asyncContextProvider.get();
8182
}
8283

8384
@Override
Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@
6161
* @author Miroslav Fuksa
6262
*/
6363
@Singleton
64-
final class BeanParamValueSupplierProvider extends AbstractValueSupplierProvider {
64+
final class BeanParamValueParamProvider extends AbstractValueParamProvider {
6565

6666
private final InjectionManager injectionManager;
6767

68-
private static final class BeanParamValueSupplier extends AbstractRequestDerivedValueSupplier<Object> {
68+
private static final class BeanParamValueProvider implements Function<ContainerRequest, Object> {
6969
private final Parameter parameter;
7070
private final InjectionManager injectionManager;
7171

@@ -81,16 +81,13 @@ public ForeignDescriptor apply(Class<?> key) {
8181
}
8282
});
8383

84-
private BeanParamValueSupplier(InjectionManager injectionManager, Parameter parameter,
85-
Provider<ContainerRequest> requestProvider) {
86-
super(requestProvider);
87-
84+
private BeanParamValueProvider(InjectionManager injectionManager, Parameter parameter) {
8885
this.injectionManager = injectionManager;
8986
this.parameter = parameter;
9087
}
9188

9289
@Override
93-
public Object get() {
90+
public Object apply(ContainerRequest request) {
9491
Class<?> rawType = parameter.getRawType();
9592
Object fromHk2 = injectionManager.getInstance(rawType);
9693
if (fromHk2 != null) { // the bean parameter type is already bound in HK2, let's just take it from there
@@ -105,19 +102,15 @@ public Object get() {
105102
* Creates new instance initialized from parameters injected by HK2.
106103
*
107104
* @param mpep multivalued parameter extractor provider.
108-
* @param requestProvider request provider.
109105
*/
110-
public BeanParamValueSupplierProvider(Provider<MultivaluedParameterExtractorProvider> mpep,
111-
Provider<ContainerRequest> requestProvider, InjectionManager injectionManager) {
112-
super(mpep, requestProvider, Parameter.Source.BEAN_PARAM);
106+
public BeanParamValueParamProvider(Provider<MultivaluedParameterExtractorProvider> mpep,
107+
InjectionManager injectionManager) {
108+
super(mpep, Parameter.Source.BEAN_PARAM);
113109
this.injectionManager = injectionManager;
114110
}
115111

116112
@Override
117-
public AbstractRequestDerivedValueSupplier<?> createValueSupplier(
118-
Parameter parameter,
119-
Provider<ContainerRequest> requestProvider) {
120-
121-
return new BeanParamValueSupplier(injectionManager, parameter, requestProvider);
113+
public Function<ContainerRequest, ?> createValueProvider(Parameter parameter) {
114+
return new BeanParamValueProvider(injectionManager, parameter);
122115
}
123116
}

0 commit comments

Comments
 (0)