Store InvocationBuilderListenerStage into Runtime not to look up builder listeners each request Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java b/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java index e19d787..7ce73b8 100644 --- a/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java +++ b/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2022 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 @@ -81,6 +81,7 @@ private final InvocationInterceptorStages.PreInvocationInterceptorStage preInvocationInterceptorStage; private final InvocationInterceptorStages.PostInvocationInterceptorStage postInvocationInterceptorStage; + private final InvocationBuilderListenerStage invocationBuilderListenerStage; /** * Create new client request processing runtime. @@ -94,6 +95,8 @@ Provider<Ref<ClientRequest>> clientRequest = () -> injectionManager.getInstance(new GenericType<Ref<ClientRequest>>() {}.getType()); + invocationBuilderListenerStage = new InvocationBuilderListenerStage(injectionManager); + RequestProcessingInitializationStage requestProcessingInitializationStage = new RequestProcessingInitializationStage(clientRequest, bootstrapBag.getMessageBodyWorkers(), injectionManager); @@ -399,4 +402,8 @@ InjectionManager getInjectionManager() { return injectionManager; } + + InvocationBuilderListenerStage getInvocationBuilderListenerStage() { + return invocationBuilderListenerStage; + } }
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/JerseyWebTarget.java b/core-client/src/main/java/org/glassfish/jersey/client/JerseyWebTarget.java index a134664..483e22e 100644 --- a/core-client/src/main/java/org/glassfish/jersey/client/JerseyWebTarget.java +++ b/core-client/src/main/java/org/glassfish/jersey/client/JerseyWebTarget.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2022 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 @@ -368,7 +368,7 @@ } private static JerseyInvocation.Builder onBuilder(JerseyInvocation.Builder builder) { - new InvocationBuilderListenerStage(builder.request().getInjectionManager()).invokeListener(builder); + builder.request().getClientRuntime().getInvocationBuilderListenerStage().invokeListener(builder); return builder; } }