You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/11/27 17:00:43 UTC
[camel] branch main updated: CAMEL-17242: fix issue where Azure storage producers are deleting exchange headers (#6484)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 9ace796 CAMEL-17242: fix issue where Azure storage producers are deleting exchange headers (#6484)
9ace796 is described below
commit 9ace796f312dc8aa6cdfa4d9b8f1cd5fe479b1ec
Author: hdumont <hd...@gmail.com>
AuthorDate: Sat Nov 27 18:00:05 2021 +0100
CAMEL-17242: fix issue where Azure storage producers are deleting exchange headers (#6484)
Co-authored-by: hdumont <hd...@opentext.com>
---
.../component/azure/storage/blob/BlobProducer.java | 2 +-
.../azure/storage/blob/integration/BlobProducerIT.java | 17 +++++++++++++++--
.../azure/storage/datalake/DataLakeProducer.java | 2 +-
.../datalake/integration/DataLakeProducerIT.java | 12 ++++++++++++
.../component/azure/storage/queue/QueueProducer.java | 2 +-
.../queue/integration/StorageQueueProducerIT.java | 13 +++++++++++++
6 files changed, 43 insertions(+), 5 deletions(-)
diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java
index 87077a0..6f6a72b 100644
--- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java
+++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java
@@ -133,7 +133,7 @@ public class BlobProducer extends DefaultProducer {
private void setResponse(final Exchange exchange, final BlobOperationResponse blobOperationResponse) {
exchange.getMessage().setBody(blobOperationResponse.getBody());
- exchange.getMessage().setHeaders(blobOperationResponse.getHeaders());
+ exchange.getMessage().getHeaders().putAll(blobOperationResponse.getHeaders());
}
@Override
diff --git a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobProducerIT.java b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobProducerIT.java
index f3adbec..8ac562f 100644
--- a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobProducerIT.java
+++ b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobProducerIT.java
@@ -37,8 +37,7 @@ import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
class BlobProducerIT extends Base {
@@ -174,6 +173,20 @@ class BlobProducerIT extends Base {
result.assertIsSatisfied();
}
+ @Test
+ void testHeaderPreservation() throws InterruptedException {
+ result.expectedMessageCount(1);
+
+ template.send("direct:uploadBlockBlobWithConfigUri",
+ exchange -> {
+ exchange.getIn().setBody("Block Blob");
+ exchange.getIn().setHeader("DoNotDelete", "keep me");
+ });
+ assertEquals("keep me", result.getExchanges().get(0).getMessage().getHeader("DoNotDelete"));
+
+ result.assertIsSatisfied();
+ }
+
@AfterAll
public void tearDown() {
containerClient.delete();
diff --git a/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/DataLakeProducer.java b/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/DataLakeProducer.java
index 1f463ce..6a2d060 100644
--- a/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/DataLakeProducer.java
+++ b/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/DataLakeProducer.java
@@ -110,7 +110,7 @@ public class DataLakeProducer extends DefaultProducer {
private void setResponse(final Exchange exchange, final DataLakeOperationResponse dataLakeOperationResponse) {
exchange.getMessage().setBody(dataLakeOperationResponse.getBody());
- exchange.getMessage().setHeaders(dataLakeOperationResponse.getHeaders());
+ exchange.getMessage().getHeaders().putAll(dataLakeOperationResponse.getHeaders());
}
private DataLakeOperationsDefinition determineOperation(final Exchange exchange) {
diff --git a/components/camel-azure/camel-azure-storage-datalake/src/test/java/org/apache/camel/component/azure/storage/datalake/integration/DataLakeProducerIT.java b/components/camel-azure/camel-azure-storage-datalake/src/test/java/org/apache/camel/component/azure/storage/datalake/integration/DataLakeProducerIT.java
index de87788..026cb70 100644
--- a/components/camel-azure/camel-azure-storage-datalake/src/test/java/org/apache/camel/component/azure/storage/datalake/integration/DataLakeProducerIT.java
+++ b/components/camel-azure/camel-azure-storage-datalake/src/test/java/org/apache/camel/component/azure/storage/datalake/integration/DataLakeProducerIT.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Locale;
import com.azure.storage.file.datalake.models.FileSystemItem;
+import org.apache.camel.Exchange;
import org.apache.camel.component.azure.storage.datalake.DataLakeConstants;
import org.apache.camel.component.azure.storage.datalake.DataLakeOperationsDefinition;
import org.apache.commons.lang3.RandomStringUtils;
@@ -31,6 +32,8 @@ import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
@EnabledIfSystemProperty(named = "azure.instance.type", matches = "remote")
public class DataLakeProducerIT extends Base {
@@ -105,6 +108,15 @@ public class DataLakeProducerIT extends Base {
}
+ @Test
+ void testHeaderPreservation() throws InterruptedException {
+ Exchange result = template.send(componentUri(fileSystemName, DataLakeOperationsDefinition.listFileSystem),
+ exchange -> {
+ exchange.getIn().setHeader("DoNotDelete", "keep me");
+ });
+ assertEquals("keep me", result.getMessage().getHeader("DoNotDelete"));
+ }
+
private String componentUri(final String filesystem, final DataLakeOperationsDefinition operation) {
return String.format("azure-storage-datalake://%s%s?operation=%s",
service.azureCredentials().accountName(),
diff --git a/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/QueueProducer.java b/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/QueueProducer.java
index 98a9898..3ad26f9 100644
--- a/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/QueueProducer.java
+++ b/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/QueueProducer.java
@@ -91,7 +91,7 @@ public class QueueProducer extends DefaultProducer {
private void setResponse(final Exchange exchange, final QueueOperationResponse response) {
exchange.getMessage().setBody(response.getBody());
- exchange.getMessage().setHeaders(response.getHeaders());
+ exchange.getMessage().getHeaders().putAll(response.getHeaders());
}
private QueueOperationDefinition determineOperation(final Exchange exchange) {
diff --git a/components/camel-azure/camel-azure-storage-queue/src/test/java/org/apache/camel/component/azure/storage/queue/integration/StorageQueueProducerIT.java b/components/camel-azure/camel-azure-storage-queue/src/test/java/org/apache/camel/component/azure/storage/queue/integration/StorageQueueProducerIT.java
index c10e7e0..fa5db08 100644
--- a/components/camel-azure/camel-azure-storage-queue/src/test/java/org/apache/camel/component/azure/storage/queue/integration/StorageQueueProducerIT.java
+++ b/components/camel-azure/camel-azure-storage-queue/src/test/java/org/apache/camel/component/azure/storage/queue/integration/StorageQueueProducerIT.java
@@ -128,6 +128,19 @@ class StorageQueueProducerIT extends StorageQueueBase {
};
}
+ @Test
+ public void testHeaderPreservation() throws InterruptedException {
+
+ // first test if queue is not created
+ template.send("direct:sendMessage", ExchangePattern.InOnly, exchange -> {
+ exchange.getIn().setHeader(QueueConstants.QUEUE_NAME, queueName);
+ exchange.getIn().setBody("test-message-1");
+ exchange.getIn().setHeader(QueueConstants.CREATE_QUEUE, true);
+ exchange.getIn().setHeader("DoNotDelete", "keep me");
+ });
+ assertEquals("keep me", result.getExchanges().get(0).getMessage().getHeader("DoNotDelete"));
+ }
+
private String componentUri(final String operation, final String queueName) {
return String.format("azure-storage-queue://cameldev/%s?operation=%s", queueName, operation);
}