Skip to content

Commit 6121033

Browse files
authored
Merge pull request #32058 from geoand/#32047
Allow use of null in REST Client request body
2 parents 286cf2c + 6737655 commit 6121033

File tree

2 files changed

+49
-0
lines changed
  • extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive
  • independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl

2 files changed

+49
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package io.quarkus.rest.client.reactive;
2+
3+
import java.net.URI;
4+
5+
import jakarta.ws.rs.POST;
6+
import jakarta.ws.rs.Path;
7+
8+
import org.assertj.core.api.Assertions;
9+
import org.eclipse.microprofile.rest.client.RestClientBuilder;
10+
import org.junit.jupiter.api.Test;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
13+
import io.quarkus.test.QuarkusUnitTest;
14+
import io.quarkus.test.common.http.TestHTTPResource;
15+
16+
public class NullBodyTest {
17+
18+
@RegisterExtension
19+
static final QuarkusUnitTest config = new QuarkusUnitTest()
20+
.withApplicationRoot((jar) -> jar.addClasses(Client.class));
21+
22+
@TestHTTPResource
23+
URI baseUri;
24+
25+
@Test
26+
void withBody() {
27+
Client client = RestClientBuilder.newBuilder().baseUri(baseUri).build(Client.class);
28+
29+
Assertions.assertThatThrownBy(() -> client.call("test")).hasMessageContaining("404");
30+
}
31+
32+
@Test
33+
void withoutBody() {
34+
Client client = RestClientBuilder.newBuilder().baseUri(baseUri).build(Client.class);
35+
36+
Assertions.assertThatThrownBy(() -> client.call(null)).hasMessageContaining("404");
37+
}
38+
39+
public interface Client {
40+
41+
@Path("/")
42+
@POST
43+
void call(String body);
44+
}
45+
}

independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/RestClientRequestContext.java

+4
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,10 @@ public ClientRequestContextImpl getOrCreateClientRequestContext() {
241241
public Buffer writeEntity(Entity<?> entity, MultivaluedMap<String, String> headerMap, WriterInterceptor[] interceptors)
242242
throws IOException {
243243
Object entityObject = entity.getEntity();
244+
if (entityObject == null) {
245+
return AsyncInvokerImpl.EMPTY_BUFFER;
246+
}
247+
244248
Class<?> entityClass;
245249
Type entityType;
246250
if (entityObject instanceof GenericEntity) {

0 commit comments

Comments
 (0)