[
https://issues.apache.org/jira/browse/CXF-9114?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sola-ris updated CXF-9114:
--------------------------
Description:
Calling ClientRequestContext#getConfiguration inside of a Filter when using the
MicroProfile RestClient always return null, making it impossible to access
properties set on the RestClientBuilder inside ClientRequest/ResponseFilters.
*To reproduce:*
{code:java}
@Path("")
public interface GreetingClient {
@GET
Response greet();
}
public static class Filter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext requestContext) {
System.out.println(requestContext.getConfiguration().getProperty("foo"));
}
}
RestClientBuilder.newBuilder()
.baseUri(URI.create("http://localhost:8080"))
.property("foo", "bar")
.register(Filter.class)
.build(GreetingClient.class)
.greet();
{code}
*Stacktrace:*
{noformat}
jakarta.ws.rs.ProcessingException: java.lang.NullPointerException: Cannot
invoke "jakarta.ws.rs.core.Configuration.getProperty(String)" because the
return value of "jakarta.ws.rs.client.ClientRequestContext.getConfiguration()"
is null
at
org.apache.cxf.jaxrs.client.AbstractClient.checkClientException(AbstractClient.java:645)
at
org.apache.cxf.jaxrs.client.AbstractClient.preProcessResult(AbstractClient.java:619)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedvocation(ClientProxyImpl.java:926)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:347)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.invokeActual(MicroProfileClientProxyImpl.java:496)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl$Invoker.call(MicroProfileClientProxyImpl.java:515)
at
org.apache.cxf.microprofile.client.cdi.CDIInterceptorWrapper$BasicCDIInterceptorWrapper.invoke(CDIInterceptorWrapper.java:43)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.invoke(MicroProfileClientProxyImpl.java:492)
at jdk.proxy2/jdk.proxy2.$Proxy21.greet(Unknown Source)
at
org.example.MpRestClientConfigurationReproducerTest.testAccessConfigurationInFilter(MpRestClientConfigurationReproducerTest.java:24)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.NullPointerException: Cannot invoke
"jakarta.ws.rs.core.Configuration.getProperty(String)" because the return value
of "jakarta.ws.rs.client.ClientRequestContext.getConfiguration()" is null
at
org.example.MpRestClientConfigurationReproducerTest$Filter.filter(MpRestClientConfigurationReproducerTest.java:38)
at
org.apache.cxf.jaxrs.client.spec.ClientRequestFilterInterceptor.handleMessage(ClientRequestFilterInterceptor.java:70)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at
org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:717)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.doRunInterceptorChain(MicroProfileClientProxyImpl.java:184)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedvocation(ClientProxyImpl.java:924)
... 10 more
{noformat}
[Executable reprodcucer|https://github.com/Sola-ris/cxf-reproducers]
was:
Calling ClientRequestContext#getConfiguration inside of a Filter when using the
MicroProfile RestClient always return null, making it impossible to access
properties set on the RestClientBuilder inside ClientRequest/ResponseFilters.
*To reproduce:*
{code:java}
@Path("")
public interface GreetingClient {
@GET
Response greet();
}
public static class Filter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext requestContext) {
System.out.println(requestContext.getConfiguration().getProperty("foo"));
}
}
RestClientBuilder.newBuilder()
.baseUri(URI.create("http://localhost:8080"))
.property("foo", "bar")
.register(Filter.class)
.build(GreetingClient.class)
.greet();
{code}
*Stacktrace:*
{noformat}
jakarta.ws.rs.ProcessingException: java.lang.NullPointerException: Cannot
invoke "jakarta.ws.rs.core.Configuration.getProperty(String)" because the
return value of "jakarta.ws.rs.client.ClientRequestContext.getConfiguration()"
is null
at
org.apache.cxf.jaxrs.client.AbstractClient.checkClientException(AbstractClient.java:645)
at
org.apache.cxf.jaxrs.client.AbstractClient.preProcessResult(AbstractClient.java:619)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:926)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:347)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.invokeActual(MicroProfileClientProxyImpl.java:496)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl$Invoker.call(MicroProfileClientProxyImpl.java:515)
at
org.apache.cxf.microprofile.client.cdi.CDIInterceptorWrapper$BasicCDIInterceptorWrapper.invoke(CDIInterceptorWrapper.java:43)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.invoke(MicroProfileClientProxyImpl.java:492)
at jdk.proxy2/jdk.proxy2.$Proxy21.greet(Unknown Source)
at
org.example.MpRestClientConfigurationReproducerTest.testAccessConfigurationInFilter(MpRestClientConfigurationReproducerTest.java:24)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.NullPointerException: Cannot invoke
"jakarta.ws.rs.core.Configuration.getProperty(String)" because the return value
of "jakarta.ws.rs.client.ClientRequestContext.getConfiguration()" is null
at
org.example.MpRestClientConfigurationReproducerTest$Filter.filter(MpRestClientConfigurationReproducerTest.java:38)
at
org.apache.cxf.jaxrs.client.spec.ClientRequestFilterInterceptor.handleMessage(ClientRequestFilterInterceptor.java:70)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at
org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:717)
at
org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.doRunInterceptorChain(MicroProfileClientProxyImpl.java:184)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:924)
... 10 more
{noformat}
[Executable reprodcucer|https://github.com/Sola-ris/cxf-reproducers]
> ClientRequestContext#getConfiguration always return null in the MicroProfile
> RestClient
> ---------------------------------------------------------------------------------------
>
> Key: CXF-9114
> URL: https://issues.apache.org/jira/browse/CXF-9114
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS, MicroProfile
> Affects Versions: 4.1.0
> Reporter: Sola-ris
> Priority: Major
>
> Calling ClientRequestContext#getConfiguration inside of a Filter when using
> the MicroProfile RestClient always return null, making it impossible to
> access properties set on the RestClientBuilder inside
> ClientRequest/ResponseFilters.
> *To reproduce:*
> {code:java}
> @Path("")
> public interface GreetingClient {
> @GET
> Response greet();
> }
> public static class Filter implements ClientRequestFilter {
> @Override
> public void filter(ClientRequestContext requestContext) {
>
> System.out.println(requestContext.getConfiguration().getProperty("foo"));
> }
> }
> RestClientBuilder.newBuilder()
> .baseUri(URI.create("http://localhost:8080"))
> .property("foo", "bar")
> .register(Filter.class)
> .build(GreetingClient.class)
> .greet();
> {code}
>
> *Stacktrace:*
> {noformat}
> jakarta.ws.rs.ProcessingException: java.lang.NullPointerException: Cannot
> invoke "jakarta.ws.rs.core.Configuration.getProperty(String)" because the
> return value of
> "jakarta.ws.rs.client.ClientRequestContext.getConfiguration()" is null
> at
> org.apache.cxf.jaxrs.client.AbstractClient.checkClientException(AbstractClient.java:645)
> at
> org.apache.cxf.jaxrs.client.AbstractClient.preProcessResult(AbstractClient.java:619)
> at
> org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedvocation(ClientProxyImpl.java:926)
> at
> org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:347)
> at
> org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.invokeActual(MicroProfileClientProxyImpl.java:496)
> at
> org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl$Invoker.call(MicroProfileClientProxyImpl.java:515)
> at
> org.apache.cxf.microprofile.client.cdi.CDIInterceptorWrapper$BasicCDIInterceptorWrapper.invoke(CDIInterceptorWrapper.java:43)
> at
> org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.invoke(MicroProfileClientProxyImpl.java:492)
> at jdk.proxy2/jdk.proxy2.$Proxy21.greet(Unknown Source)
> at
> org.example.MpRestClientConfigurationReproducerTest.testAccessConfigurationInFilter(MpRestClientConfigurationReproducerTest.java:24)
> at java.base/java.lang.reflect.Method.invoke(Method.java:580)
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
> at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
> Caused by: java.lang.NullPointerException: Cannot invoke
> "jakarta.ws.rs.core.Configuration.getProperty(String)" because the return
> value of "jakarta.ws.rs.client.ClientRequestContext.getConfiguration()" is
> null
> at
> org.example.MpRestClientConfigurationReproducerTest$Filter.filter(MpRestClientConfigurationReproducerTest.java:38)
> at
> org.apache.cxf.jaxrs.client.spec.ClientRequestFilterInterceptor.handleMessage(ClientRequestFilterInterceptor.java:70)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
> at
> org.apache.cxf.jaxrs.client.AbstractClient.doRunInterceptorChain(AbstractClient.java:717)
> at
> org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl.doRunInterceptorChain(MicroProfileClientProxyImpl.java:184)
> at
> org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedvocation(ClientProxyImpl.java:924)
> ... 10 more
> {noformat}
> [Executable reprodcucer|https://github.com/Sola-ris/cxf-reproducers]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)