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 2023/04/03 13:44:01 UTC
[camel] branch camel-3.20.x updated: CAMEL-19224: Fix blob consumer prefix usage (#9773)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.20.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.20.x by this push:
new 41958dbcacf CAMEL-19224: Fix blob consumer prefix usage (#9773)
41958dbcacf is described below
commit 41958dbcacf8c404e46060ecab71ac45ec9cf1b1
Author: Idorași Paul <35...@users.noreply.github.com>
AuthorDate: Mon Apr 3 16:40:45 2023 +0300
CAMEL-19224: Fix blob consumer prefix usage (#9773)
---
.../blob/BlobConfigurationOptionsProxy.java | 8 +----
.../storage/blob/integration/BlobConsumerIT.java | 36 ++++++++++++++++++++++
2 files changed, 37 insertions(+), 7 deletions(-)
diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
index 85df10d7943..8229292eae5 100644
--- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
+++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
@@ -63,7 +63,7 @@ public class BlobConfigurationOptionsProxy {
}
public BlobListDetails getBlobListDetails(final Exchange exchange) {
- return getOption(BlobExchangeHeaders::getBlobListDetailsFromHeaders, () -> null, exchange);
+ return getOption(BlobExchangeHeaders::getBlobListDetailsFromHeaders, BlobListDetails::new, exchange);
}
public String getPrefix(final Exchange exchange) {
@@ -89,12 +89,6 @@ public class BlobConfigurationOptionsProxy {
blobsOptions = new ListBlobsOptions();
}
- if (!ObjectHelper.isEmpty(blobsOptions)) {
- return blobsOptions;
- } else {
- blobsOptions = new ListBlobsOptions();
- }
-
final BlobListDetails blobListDetails = getBlobListDetails(exchange);
final String prefix = getPrefix(exchange);
final Integer maxResultsPerPage = getMaxResultsPerPage(exchange);
diff --git a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java
index 395b797e40a..18c570c4643 100644
--- a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java
+++ b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobConsumerIT.java
@@ -46,25 +46,32 @@ class BlobConsumerIT extends Base {
@EndpointInject("direct:start")
private ProducerTemplate templateStart;
private String batchContainerName;
+ private String prefixContainerName;
private String blobName;
private String blobName2;
private BlobContainerClient containerClient;
private BlobContainerClient batchContainerClient;
+ private BlobContainerClient prefixContainerClient;
private final String regex = ".*\\.pdf";
+ private final String prefix = "blob-prefix";
@BeforeAll
public void setup() {
batchContainerName = RandomStringUtils.randomAlphabetic(5).toLowerCase();
+ prefixContainerName = RandomStringUtils.randomAlphabetic(5).toLowerCase();
blobName = RandomStringUtils.randomAlphabetic(5);
blobName2 = RandomStringUtils.randomAlphabetic(5);
containerClient = serviceClient.getBlobContainerClient(containerName);
batchContainerClient = serviceClient.getBlobContainerClient(batchContainerName);
+ prefixContainerClient = serviceClient.getBlobContainerClient(prefixContainerName);
+
// create test container
containerClient.create();
batchContainerClient.create();
+ prefixContainerClient.create();
}
@Test
@@ -182,6 +189,31 @@ class BlobConsumerIT extends Base {
}
}
+ @Test
+ void testPrefixBasedPolling() throws InterruptedException {
+ final MockEndpoint mockEndpoint = getMockEndpoint("mock:resultPrefix");
+ mockEndpoint.expectedMessageCount(1);
+
+ templateStart.send("direct:createBlob", exchange -> {
+ exchange.getIn().setBody("Blob 1");
+ exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, prefixContainerName);
+ exchange.getIn().setHeader(BlobConstants.BLOB_NAME, prefix + "/test_blob_1");
+ });
+
+ templateStart.send("direct:createBlob", exchange -> {
+ exchange.getIn().setBody("Blob 2");
+ exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, prefixContainerName);
+ exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "non_prefixed_blob");
+ });
+
+ mockEndpoint.assertIsSatisfied();
+
+ String text = mockEndpoint.getExchanges().get(0).getIn().getBody(String.class);
+
+ assertEquals("Blob 1", text);
+ assertEquals(1, mockEndpoint.getExchanges().size());
+ }
+
private String generateRandomBlobName(String prefix, String extension) {
return prefix + randomAlphabetic(5).toLowerCase() + "." + extension;
}
@@ -191,6 +223,7 @@ class BlobConsumerIT extends Base {
// delete container
containerClient.delete();
batchContainerClient.delete();
+ prefixContainerClient.delete();
}
@Override
@@ -220,6 +253,9 @@ class BlobConsumerIT extends Base {
+ "?prefix=aaaa®ex=" + regex)
.idempotentConsumer(body(), new MemoryIdempotentRepository())
.to("mock:resultRegex");
+
+ from("azure-storage-blob://cameldev/" + prefixContainerName + "?prefix=" + prefix)
+ .to("mock:resultPrefix");
}
};
}