You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/09/08 07:13:37 UTC
[camel] 01/02: CAMEL-15495: Ensure DefaultVertxHttpBinding sets the
Content-Type header when present on the exchange
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 078899be82a5a561c66c8703caf264d111a99add
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Sep 8 07:43:05 2020 +0100
CAMEL-15495: Ensure DefaultVertxHttpBinding sets the Content-Type header when present on the exchange
---
.../vertx/http/DefaultVertxHttpBinding.java | 7 +++++++
.../component/vertx/http/VertxHttpProducerTest.java | 21 ++++++++++++++++++---
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java b/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java
index ea84206..5ac652a 100644
--- a/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java
+++ b/components/camel-vertx-http/src/main/java/org/apache/camel/component/vertx/http/DefaultVertxHttpBinding.java
@@ -34,6 +34,7 @@ import org.apache.camel.Message;
import org.apache.camel.http.base.HttpHelper;
import org.apache.camel.http.base.HttpOperationFailedException;
import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.URISupport;
@@ -107,6 +108,12 @@ public class DefaultVertxHttpBinding implements VertxHttpBinding {
@Override
public void populateRequestHeaders(Exchange exchange, HttpRequest<Buffer> request, HeaderFilterStrategy strategy) {
+ // Ensure the Content-Type header is always added if the corresponding exchange header is present
+ String contentType = ExchangeHelper.getContentType(exchange);
+ if (ObjectHelper.isNotEmpty(contentType)) {
+ request.putHeader(Exchange.CONTENT_TYPE, contentType);
+ }
+
// Transfer exchange headers to the HTTP request while applying the filter strategy
Message message = exchange.getMessage();
for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) {
diff --git a/components/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpProducerTest.java b/components/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpProducerTest.java
index e5e5086..9e3f406 100644
--- a/components/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpProducerTest.java
+++ b/components/camel-vertx-http/src/test/java/org/apache/camel/component/vertx/http/VertxHttpProducerTest.java
@@ -23,6 +23,7 @@ import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.support.ExchangeHelper;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -49,12 +50,12 @@ public class VertxHttpProducerTest extends VertxHttpTestSupport {
@Test
public void testVertxHttpProducerWithContentType() {
- String expectedBody = "Hello World";
+ String expectedBody = "{\"foo\": \"bar\"}";
- Exchange exchange = template.request(getProducerUri(), new Processor() {
+ Exchange exchange = template.request(getProducerUri() + "/content/type", new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
- exchange.getMessage().setHeader(Exchange.CONTENT_TYPE, "text/html; charset=iso-8859-4");
+ exchange.getMessage().setHeader(Exchange.CONTENT_TYPE, "application/json; charset=iso-8859-4");
}
});
@@ -76,6 +77,20 @@ public class VertxHttpProducerTest extends VertxHttpTestSupport {
public void configure() throws Exception {
from(getTestServerUri())
.setBody(constant("Hello World"));
+
+ from(getTestServerUri() + "/content/type")
+ .process(new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ String contentType = ExchangeHelper.getContentType(exchange);
+ if (!contentType.startsWith("application/json")) {
+ throw new IllegalStateException("Unexpected Content-Type header");
+ }
+
+ Message message = exchange.getMessage();
+ message.setBody("{\"foo\": \"bar\"}");
+ }
+ });
}
};
}