Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add @Patch support for RestClient #9342

Closed
survivant opened this issue May 15, 2020 · 19 comments · Fixed by #9773
Closed

Add @Patch support for RestClient #9342

survivant opened this issue May 15, 2020 · 19 comments · Fixed by #9773
Assignees
Labels
kind/bug Something isn't working
Milestone

Comments

@survivant
Copy link
Contributor

When I try to use a PATCH method with the RestClient in none-native mode, We obtain this error

javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: java.net.ProtocolException: Invalid HTTP method: PATCH at org.jboss.resteasy.client.jaxrs.engines.URLConnectionEngine.invoke(URLConnectionEngine.java:63) at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:488) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:149) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) at com.sun.proxy.$Proxy83.updatePartial(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.jboss.resteasy.microprofile.client.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:149) at com.sun.proxy.$Proxy86.updatePartial(Unknown Source) at com.example.ExampleRestConnector_27306872b9b9d6a5cde2e5a56fad18628bb23077_Synthetic_ClientProxy.updatePartial(TwinRestConnector_27306872b9b9d6a5cde2e5a56fad18628bb23077_Synthetic_ClientProxy.zig:233) at com.example.ExampleController.deleteNode(ExampleController.java:360) at com.example.ExampleController.update(ExampleController.java:223) at com.example.ExampleController_Subclass.update$$superaccessor11(ExampleController_Subclass.zig:172) at com.example.ExampleController_Subclass$$function$$11.apply(ExampleController_Subclass$$function$$11.zig:51) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54) at io.quarkus.hibernate.validator.runtime.interceptor.AbstractMethodValidationInterceptor.validateMethodInvocation(AbstractMethodValidationInterceptor.java:69) at io.quarkus.hibernate.validator.runtime.interceptor.MethodValidationInterceptor.validateMethodInvocation(MethodValidationInterceptor.java:17) at io.quarkus.hibernate.validator.runtime.interceptor.MethodValidationInterceptor_Bean.intercept(MethodValidationInterceptor_Bean.zig:177) at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41) at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41) at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32) at com.example.ExampleController_Subclass.update(ExampleController_Subclass.zig:336) at com.example.ExampleController_ClientProxy.update(ExampleController_ClientProxy.zig:774) at com.exemple.ExampleService.update(ExampleService.java:151) at com.exemple.ExampleService_Subclass.update$$superaccessor7(ExampleService_Subclass.zig:208) at com.exemple.ExampleService_Subclass$$function$$7.apply(ExampleService_Subclass$$function$$7.zig:51) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54) at io.quarkus.hibernate.validator.runtime.interceptor.AbstractMethodValidationInterceptor.validateMethodInvocation(AbstractMethodValidationInterceptor.java:69) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor.validateMethodInvocation(JaxrsEndPointValidationInterceptor.java:32) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor_Bean.intercept(JaxrsEndPointValidationInterceptor_Bean.zig:57) at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41) at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41) at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32) at com.exemple.ExampleService_Subclass.update(ExampleService_Subclass.zig:78) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130) at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:621) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:487) at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:437) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:439) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:400) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:374) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:67) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:488) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:259) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:160) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:163) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:245) at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:123) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.access$000(VertxRequestHandler.java:36) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:87) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at java.base/java.lang.Thread.run(Thread.java:834) at org.jboss.threads.JBossThread.run(JBossThread.java:479) Caused by: java.net.ProtocolException: Invalid HTTP method: PATCH at java.base/java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:487) at java.base/sun.net.www.protocol.http.HttpURLConnection.setRequestMethod(HttpURLConnection.java:570) at org.jboss.resteasy.client.jaxrs.engines.URLConnectionEngine.createConnection(URLConnectionEngine.java:176) at org.jboss.resteasy.client.jaxrs.engines.URLConnectionEngine.invoke(URLConnectionEngine.java:56) ... 68 common frames omitted 09:52:29.174 [executor-thread-1] ERROR o.jboss.resteasy.resteasy_jaxrs.i18n - RESTEASY002010: Failed to execute javax.ws.rs.WebApplicationException: HTTP 400 Bad Request at com.exemple.ExampleService.update(ExampleService.java:154) at com.exemple.ExampleService_Subclass.update$$superaccessor7(ExampleService_Subclass.zig:208) at com.exemple.ExampleService_Subclass$$function$$7.apply(ExampleService_Subclass$$function$$7.zig:51) at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54) at io.quarkus.hibernate.validator.runtime.interceptor.AbstractMethodValidationInterceptor.validateMethodInvocation(AbstractMethodValidationInterceptor.java:69) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor.validateMethodInvocation(JaxrsEndPointValidationInterceptor.java:32) at io.quarkus.hibernate.validator.runtime.jaxrs.JaxrsEndPointValidationInterceptor_Bean.intercept(JaxrsEndPointValidationInterceptor_Bean.zig:57) at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41) at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41) at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32) at com.exemple.ExampleService_Subclass.update(ExampleService_Subclass.zig:78) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130) at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:621) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:487) at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:437) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:439) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:400) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:374) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:67) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:488) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:259) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:160) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:362) at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:163) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:245) at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:123) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.access$000(VertxRequestHandler.java:36) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:87) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at java.base/java.lang.Thread.run(Thread.java:834) at org.jboss.threads.JBossThread.run(JBossThread.java:479)

I created a demo to reproduce the issue

https://github.com/survivant/quarkus-k8s-hello
HelloExampleTest.testPatch

@patch
@produces("application/merge-patch+json")
@consumes("application/merge-patch+json")
@path("/nodes/{id}")
Node updatePartial(@PathParam("id") UUID id, JsonMergePatch patch);

here the code that is used in the other service that is in Spring

@PatchMapping(path = "/nodes/{id}", consumes = "application/merge-patch+json")
Node updatePartial(@PathVariable UUID id, @RequestBody JsonMergePatch patch);

I'm using Quarkus 1.4.2.Final

There is a workaround, is to use : quarkus.ssl.native=true

@survivant survivant added the kind/bug Something isn't working label May 15, 2020
@FroMage
Copy link
Member

FroMage commented May 15, 2020

We need to figure out in which cases we default to the JDK http client instead of the Apache one.

We could also try to switch to the vert.x http client while we're at it.

@geoand
Copy link
Contributor

geoand commented May 15, 2020

From the brief look I took yesterday, it seems like we default to URLConnection when SSL isn't enabled.
The questions is, is there a good reason to stay with URLConnection?

@danielmaison
Copy link

Got PATCH request to work by setting quarkus.ssl.native=true

If you decide to stay with URLConnection for some reason I'd love to see a config property for selecting engine.

@geoand
Copy link
Contributor

geoand commented May 18, 2020

I don't see why URLConnection should be the default, so let's wait for input for @kenfinnigan and @asoldano

@asoldano
Copy link
Contributor

From the brief look I took yesterday, it seems like we default to URLConnection when SSL isn't enabled.
The questions is, is there a good reason to stay with URLConnection?

I think @kenfinnigan did this, I honestly don't remembers the reason.

@geoand
Copy link
Contributor

geoand commented May 21, 2020

If you and @kenfinnigan agree, I can take it up to use Apache HTTP Client as the default.

@kenfinnigan
Copy link
Member

The reason this uses URLConnection is because the Apache HTTP Client still uses classes that rely on SSL when executing in native.

It's not possible to use the Apache HTTP Client in native without SSL enabled.

@gsmet
Copy link
Member

gsmet commented May 26, 2020

@kenfinnigan glad to have you back :).

Considering the cost of having SSL enabled is now reduced and most of the websites are now SSL, maybe we should just make the extension enable SSL? And we would not support having SSL disabled with the REST client. Sounds like an acceptable tradeoff considering the push to SSL.

@kenfinnigan
Copy link
Member

Thanks.

Possibly, but it's a behavior change so we'd need to properly notify users.

In addition, it's probably worth ensuring that SSL on JVM is as simple as we can make it, as we'd need all users to begin doing it.

Would the preferred solution be to remove the use of URLConnection from RESTEasy REST Client? So that there is no way to not use Apache HTTP Client as the engine. It's then just down to Quarkus having SSL enabled all the time.

@asoldano
Copy link
Contributor

Would the preferred solution be to remove the use of URLConnection from RESTEasy REST Client? So that there is no way to not use Apache HTTP Client as the engine. It's then just down to Quarkus having SSL enabled all the time.

@kenfinnigan , can you please clarify this? I don't understand how an option in RESTEasy (the URLConnection engine), which is not the default behaviour but is used by Quarkus, could be considered a problem here.

Btw, I haven't looked into the details of Apache HTTP Client, but is there a way to patch it so that you can use native without SSL?

@kenfinnigan
Copy link
Member

@asoldano The MP REST Client uses the URLConnection engine if SSL is disabled, that code is in RESTEasy.

The reason that was done is that classes within the Apache HTTP Client require SSL classes even when SSL is disabled. There was no way to fix it without modifying the internal Apache HTTP Client code as far as I recall

@asoldano
Copy link
Contributor

@kenfinnigan thanks, for some reasons I was remembering this was in Quarkus, while actually it's in resteasy 4.x because of Quarkus (you did this here resteasy/resteasy@a371154 and I merged it ;-) )
Does this mean you're proposing to revert the part about client engine in that PR?

Regarding Apache HTTP Client, my point was really if you thought about a contribution to Apache HTTP Client for making the SSL components used only when really needed, but clearly that won't be anything we can have quickly released.

@kenfinnigan
Copy link
Member

Reverting it is one option, so it goes back to using Apache HTTP Client by default in any situation. Not sure if that would be considered a "breaking change" for RESTEasy or not.

I didn't look into fixing it in the upstream, but it might be something we want to consider to make it work for any situation. Though it wouldn't be a quick fix

@asoldano
Copy link
Contributor

Reverting it is one option, so it goes back to using Apache HTTP Client by default in any situation. Not sure if that would be considered a "breaking change" for RESTEasy or not.

I think that would be doable in a minor

@geoand geoand self-assigned this Jun 2, 2020
@gsmet
Copy link
Member

gsmet commented Jun 2, 2020

@geoand so I was having a look at that one and I wonder if we have it already covered now with Target_javax_net_ssl_SSLContext. But the Apache HTTP Client is not using the getDefault() method (see SSLContexts) if HttpAsyncClientBuilder#useSystemProperties() is false, which is the default. Maybe we should just turn that to true and everything will work fine.

Note that we produce a ExtensionSslNativeSupportBuildItem from the REST Client processor so you need to force-disable SSL to test this.

@geoand
Copy link
Contributor

geoand commented Jun 2, 2020

Yeah, I use the Apache HTTP Client in the extensions that use boostrap config and there I just turn on SSL, but I'll have a closer look.

@gastaldi
Copy link
Contributor

gastaldi commented Jun 2, 2020

Would it make sense to use the JDK 11 HttpClient as the underlying implementation? Then it would work if you run in JDK 11+ without any extra configuration.

@geoand
Copy link
Contributor

geoand commented Jun 2, 2020

Would it make sense to use the JDK 11 HttpClient as the underlying implementation? Then it would work if you run in JDK 11+ without any extra configuration.

As long as we support Java 8, we can't really do this :(

geoand added a commit to geoand/quarkus that referenced this issue Jun 4, 2020
This is done in order to enable the use of Apache HTTP Client in all
cases where the REST Client is used.
This enables us to drop the fallback to URLConnection which is rather limited

Fixes: quarkusio#9342
geoand added a commit to geoand/Resteasy that referenced this issue Jun 4, 2020
…ient

The fallback was originally added to get around limitation in Apache HTTP Client
when SSL is completely disabled in native binaries.
However we can get around these limitations in a more elegant manner in Quarkus
(see quarkusio/quarkus#9773).
By defaulting to Apache HTTP Client, things like HTTP Patch can be supported
OOTB (see quarkusio/quarkus#9342).
@geoand
Copy link
Contributor

geoand commented Jun 4, 2020

#9773 should take care of the issue (but it requires resteasy/resteasy#2431 and a RESTEasy version bump)

geoand added a commit to geoand/quarkus that referenced this issue Jun 4, 2020
This is done in order to enable the use of Apache HTTP Client in all
cases where the REST Client is used.
This enables us to drop the fallback to URLConnection which is rather limited

Fixes: quarkusio#9342
geoand added a commit to geoand/Resteasy that referenced this issue Jun 4, 2020
…ient

The fallback was originally added to get around limitation in Apache HTTP Client
when SSL is completely disabled in native binaries.
However we can get around these limitations in a more elegant manner in Quarkus
(see quarkusio/quarkus#9773).
By defaulting to Apache HTTP Client, things like HTTP Patch can be supported
OOTB (see quarkusio/quarkus#9342).
geoand added a commit to geoand/Resteasy that referenced this issue Jun 4, 2020
…ient

The fallback was originally added to get around limitation in Apache HTTP Client
when SSL is completely disabled in native binaries.
However we can get around these limitations in a more elegant manner in Quarkus
(see quarkusio/quarkus#9773).
By defaulting to Apache HTTP Client, things like HTTP Patch can be supported
OOTB (see quarkusio/quarkus#9342).
geoand added a commit to geoand/Resteasy that referenced this issue Jun 5, 2020
…ient

The fallback was originally added to get around limitation in Apache HTTP Client
when SSL is completely disabled in native binaries.
However we can get around these limitations in a more elegant manner in Quarkus
(see quarkusio/quarkus#9773).
By defaulting to Apache HTTP Client, things like HTTP Patch can be supported
OOTB (see quarkusio/quarkus#9342).
asoldano pushed a commit to resteasy/resteasy that referenced this issue Jun 5, 2020
…bled for REST Client (#2431)

The fallback was originally added to get around limitation in Apache HTTP Client
when SSL is completely disabled in native binaries.
However we can get around these limitations in a more elegant manner in Quarkus
(see quarkusio/quarkus#9773).
By defaulting to Apache HTTP Client, things like HTTP Patch can be supported
OOTB (see quarkusio/quarkus#9342).
geoand added a commit to geoand/quarkus that referenced this issue Jun 9, 2020
This is done in order to enable the use of Apache HTTP Client in all
cases where the REST Client is used.
This enables us to drop the fallback to URLConnection which is rather limited

Fixes: quarkusio#9342
geoand added a commit to geoand/quarkus that referenced this issue Jun 9, 2020
This is done in order to enable the use of Apache HTTP Client in all
cases where the REST Client is used.
This enables us to drop the fallback to URLConnection which is rather limited

Fixes: quarkusio#9342
gsmet added a commit that referenced this issue Jun 10, 2020
Make REST Client work whether or not SSL is enabled or not in native
@gsmet gsmet added this to the 1.6.0 - master milestone Jun 10, 2020
@gsmet gsmet modified the milestones: 1.6.0 - master, 1.5.1.Final Jun 10, 2020
gsmet pushed a commit to gsmet/quarkus that referenced this issue Jun 10, 2020
This is done in order to enable the use of Apache HTTP Client in all
cases where the REST Client is used.
This enables us to drop the fallback to URLConnection which is rather limited

Fixes: quarkusio#9342
ronsigal added a commit to resteasy/resteasy that referenced this issue Jun 16, 2020
* 4.5.0-SNAPSHOT -> 4.5.0.Final (#2307)

* 4.5.0.Final -> 4.6.0-SNAPSHOT

* [RESTEASY-2496]:Add test case

* [RESTEASY-2510] Split RESTUtils to links provider and injector

* RESTEASY-2445

* [RESTEASY-2517] Async io fixes (#2315)

* Apply same fix for SSE streams into raw streams

To avoid onNext finishing after onComplete

* Test for raw stream and async io

* Fixed typo in onComplete/onWriteComplete

* Fix potential bug spotted by Stuart

* [RESTEASY-2520] CDI BeanManager fix for Quarkus  (#2318)

* Fix for Quarkus (quarkusio/quarkus#7639)
Signed-off-by:Phillip Kruger <[email protected]>

* Added check for CDI in construct.
Signed-off-by:Phillip Kruger <[email protected]>

* Checkstyle fixes
Signed-off-by:Phillip Kruger <[email protected]>

* [RESTEASY-2518] added value check and test for query param replacement

* [RESTEASY-2503] Throw ViolationException for EJBs with just parameter
violations.

* RESTEASY-2519 (#2320)

* RESTEASY-2519

* update

* [RESTEASY-2535] Upgrade Jackson2 to 2.10.3

* [RESTEASY-2541] Fix RestClientListeners

* [RESTEASY-2542] Excluding tests

* RESTEASY-2554 Update section "Upgrading RESTEasy within WildFly" (#2349)

* update

* RESTEASY-2554

* remove module

* update doc

* minor fix

* minor addition

* minor fix

* minor addition

* fix version

* minor fix

* [RESTEASY-2559] Improper validation of response header in MediaTypeHeaderDelegate.java class

* [RESTEASY-2551] Upgraded io.netty:netty-all to version 4.1.48.Final

* [RESTEASY-2543] add regex change

* [RESTEASY-2226]:NullPointerException in PatchMethodFilter

* [RESTEASY-2385] Added support for embedded MultipartOutput types. Added testcase.

* [RESTEASY-2480] re-enable code handling base64

* [RESTEASY-2532] replace reference to jakarta-json

* [RESTEASY-2565] Mp client async interceptors (#2359)

* Tie the AsyncInvocationInterceptor to each invocation

* Spotted a bug, I think

* [RESTEASY-2566] Set response code to 500 if writing exception fails (#2358)

* [RESTEASY-2562] Incorrect status code when WebApplicationException is… (#2365)

* [RESTEASY-2562] Incorrect status code when WebApplicationException is thrown while parsing @*Param

* [RESTEASY-2562] Checkstyle - make arg final

* [RESTEASY-2495] HeaderParam could have a ParamConverter related (#2292)

AbstractInvocationCollectionProcessor is processing Array and Collection of elements being ParamConverter aware. But with single values is delegating in final class to process the value. HeaderParamProcessor is not being aware of such transformation.

* [RESTEASY-2495] made HeaderParamProcessor aware of ParamConverter and provided testcase

* [RESTEASY-2526] Fix by using asyncutil lib for async loops (#2368)

* [RESTEASY-2466] removed profile arquillian.remote

* [RESTEASY-2531] expanded and refactored chapter

* [RESTEASY-2544] pom updates to arquillian-util and integration-tests

* [RESTEASY-2542] ignore any IOException in SSEOutputStream.close()

* Test against WildFly 19.0.0.Final instead of Beta2

* [RESTEASY-2526] Turn the com.ibm.async.asyncutil module into private

* [RESTEASY-2550] Skip null parameters being processed by ParamConverter's. Also throw an NPE if a parameter annotated with @PathParam it not allowed.

https://issues.redhat.com/browse/RESTEASY-2550

* [RESTEASY-2542] Restore tests

* [RESTEASY-2239] updated mime4j to version 0.8.2

* Add GitHub Action for running CI builds

* [RESTEASY-2561] Allow tests to run in environments other than a Linux local environment.

* [RESTEASY-2564] Use a single thread executor instead of the default executor for a more graceful shutdown.

* Remove TravisCI runs duplicated by Github Actions

* [RESTEASY-2542] Exclude a test again, still failing

* [RESTEASY-2542] Exlcude the whole SseTest, not just testReconnect()

* Only upload archives for failed runs. Also fix the name to not end with ".zip"

* [RESTEASY-2548] add new provider with higher priority than JaxrsFormProvider

adding test

* [RESTEASY-2560] set scope for must junit dependencies to test

* [RESTEASY-2391] changed code to use getMethod()

* [RESTEASY-2472]:@suspended AsyncResponse timeout still runs, even if … (#2372)

* [RESTEASY-2472]:@suspended AsyncResponse timeout still runs, even if the response was resumed before

* Update AsyncTimeoutResource.java

* Update AsyncTimeoutResource.java

Bogus change to rerun tests.

Co-authored-by: Ron Sigal <[email protected]>

* [RESTEASY-2563: SseBroadcasterImpl.close() puts notifyOnCloseListeners(eventSink) in finally block. (#2396)

* [RESTEASY-2576] added client modules

* [RESTEASY-2582] CompletionStageResponseTest intermittent failures (#2390)

* Prevent memory visibility issues

* Refactor AsyncResponseCallback to isolate data from different tests

* Same sleep time for similar methods

* [RESTEASY-2571] Avoid a NullPointerException of the MediaType associated with request headers is null.

https://issues.redhat.com/browse/RESTEASY-2571

* [RESTEASY-2569]  RestClient does not propogate incoming headers with inherited Interface

* [RESTEASY-2582] Add logs to the test

* [RESTEASY-2582] Fix race condition in test

* [RESTEASY-1203] Fix validation for JNDI resources. (#2406)

* [RESTEASY-2542][RESTEASY-2585] Workaround SseTest intermittent failures (#2404)

* Enable SseTest

* [RESTEASY-2542]:Fix Sse reconnect test

* [RESTEASY-2542]:More Sse test fix

* Fix typo and add comment

* [RESTEASY-2017]:Fix SSE doesn't work with inherited annotations

* Updated links to the new project site

* [RESTEASY-2588] Upgrade jackson to 2.10.4

* [RESTEASY-2587] Update classmate to 1.5.1

* Fix RESTEASY-2573 by using ResteashContext.addCloseable variants

* Test RESTEASY-2573 for SSE/raw/collect async streaming

* [RESTEASY-2542] wait for proxy to be started

* [RESTEASY-2576] Added modules to resteasy-bom/pom.xml (#2417)

* Added note to testsuite/README.MD on how to run single microprofile-tck tests (#2426)

* SseEventOutputImpl: avoid deadlock by avoiding getting into critical sections early RESTEASY-2585

* HttpServletResponseWrapper: try working around UNDERTOW-1713: RESTEASY-2585

* RESTEASY-2524 (#2332)

* RESTEASY-2524

* trailing spaces removed

* [RESTEASY-2585]:Remove Thread.sleep() workaround in SseTest

* Updating target test containers

* [RESTEASY-2598] Upgrade Infinispan to 10.1.8

* [RESTEASY-2598] Exclude ServerCacheInterceptorTest in WFLY19

* Fix modules test references to properly run with WFLY20 too

* Exclude test failing on GithubActions CI due to microprofile/microprofile-rest-client#265

* [RESTESY-2601] Exclude test

* [RESTEASY-2605] Remove the fallback to URLConnection when SSL is disabled for REST Client (#2431)

The fallback was originally added to get around limitation in Apache HTTP Client
when SSL is completely disabled in native binaries.
However we can get around these limitations in a more elegant manner in Quarkus
(see quarkusio/quarkus#9773).
By defaulting to Apache HTTP Client, things like HTTP Patch can be supported
OOTB (see quarkusio/quarkus#9342).

Co-authored-by: Ron Sigal <[email protected]>
Co-authored-by: Jim Ma <[email protected]>
Co-authored-by: Gytis Trikleris <[email protected]>
Co-authored-by: 阿男 <[email protected]>
Co-authored-by: Stéphane Épardaud <[email protected]>
Co-authored-by: Phillip Krüger <[email protected]>
Co-authored-by: R Searls <[email protected]>
Co-authored-by: Bartosz Spyrko-Smietanko <[email protected]>
Co-authored-by: Stuart Douglas <[email protected]>
Co-authored-by: Anil Gursel <[email protected]>
Co-authored-by: David Santos <[email protected]>
Co-authored-by: James Perkins <[email protected]>
Co-authored-by: Duncan <[email protected]>
Co-authored-by: bobbyphilip <[email protected]>
Co-authored-by: Tommaso Borgato <[email protected]>
Co-authored-by: Georgios Andrianakis <[email protected]>
johnaohara pushed a commit to johnaohara/quarkus that referenced this issue Jun 29, 2020
This is done in order to enable the use of Apache HTTP Client in all
cases where the REST Client is used.
This enables us to drop the fallback to URLConnection which is rather limited

Fixes: quarkusio#9342
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants