This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit b8025724321d73b4fe4fc9e13227586c7f52eabd Author: Claus Ibsen <[email protected]> AuthorDate: Tue Mar 31 12:19:43 2020 +0200 CAMEL-13462: Fix override blob header --- .../src/main/docs/azure-blob-component.adoc | 16 +- .../component/azure/blob/BlobHeadersConstants.java | 2 +- .../component/azure/blob/BlobServiceProducer.java | 196 +++++++++++---------- .../component/azure/blob/BlobServiceUtil.java | 54 +++--- .../BlobServiceProducerOverrideBlobNameTest.java | 9 +- .../component/azure/blob/BlobServiceUtilTest.java | 8 +- .../azure/common/AzureCredentialsTest.java | 6 +- 7 files changed, 162 insertions(+), 129 deletions(-) diff --git a/components/camel-azure/src/main/docs/azure-blob-component.adoc b/components/camel-azure/src/main/docs/azure-blob-component.adoc index 5d7c81c..726acfa 100644 --- a/components/camel-azure/src/main/docs/azure-blob-component.adoc +++ b/components/camel-azure/src/main/docs/azure-blob-component.adoc @@ -17,7 +17,7 @@ https://docs.microsoft.com/azure/[Azure Documentation Portal]. == URI Format -[source,java] +[source,text] ------------------------------ azure-blob://accountName/containerName[/blobName][?options] ------------------------------ @@ -234,6 +234,20 @@ from("azure-blob://" + accountName + "/" + containerName + "/" + fileName + "?az .to("mock:result"); ---- +== Dynamic blob names + +The producer supports overriding the default blob name from a message header as shown below: + +[source,java] +---- + .setHeader("CamelAzureOverrideBlobName", constant("myNewBlob")) + .to("azure-blob://myacount/mycontainer/myblob") +---- + +Here the producer would normally use `myBlob` as the blob name, but the header will override this and use +`myNewBlob` instead. This allow for dynamic blob names. + + == Dependencies Maven users will need to add the following dependency to their `pom.xml`. diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobHeadersConstants.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobHeadersConstants.java index 941b1cc..d9f6743 100644 --- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobHeadersConstants.java +++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobHeadersConstants.java @@ -18,6 +18,6 @@ package org.apache.camel.component.azure.blob; public interface BlobHeadersConstants { - String OVERRIDE_BLOB_NAME = "CamelOverrideBlobName"; + String OVERRIDE_BLOB_NAME = "CamelAzureOverrideBlobName"; } diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java index 1248dbd..cb05f4a 100644 --- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java +++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceProducer.java @@ -49,7 +49,7 @@ import org.apache.camel.util.URISupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.camel.component.azure.blob.BlobHeadersConstants.OVERRIDE_BLOB_NAME; +import static org.apache.camel.component.azure.blob.BlobServiceUtil.getBlobName; /** * A Producer which sends messages to the Azure Storage Blob Service @@ -64,64 +64,60 @@ public class BlobServiceProducer extends DefaultProducer { @Override public void process(final Exchange exchange) throws Exception { - - overrideBlobName(exchange); - BlobServiceOperations operation = determineOperation(exchange); if (ObjectHelper.isEmpty(operation)) { operation = BlobServiceOperations.listBlobs; - } else { - switch (operation) { - case getBlob: - getBlob(exchange); - break; - case deleteBlob: - deleteBlob(exchange); - break; - case listBlobs: - listBlobs(exchange); - break; - case updateBlockBlob: - updateBlockBlob(exchange); - break; - case uploadBlobBlocks: - uploadBlobBlocks(exchange); - break; - case commitBlobBlockList: - commitBlobBlockList(exchange); - break; - case getBlobBlockList: - getBlobBlockList(exchange); - break; - case createAppendBlob: - createAppendBlob(exchange); - break; - case updateAppendBlob: - updateAppendBlob(exchange); - break; - case createPageBlob: - createPageBlob(exchange); - break; - case updatePageBlob: - uploadPageBlob(exchange); - break; - case resizePageBlob: - resizePageBlob(exchange); - break; - case clearPageBlob: - clearPageBlob(exchange); - break; - case getPageBlobRanges: - getPageBlobRanges(exchange); - break; - default: - throw new IllegalArgumentException("Unsupported operation"); - } + } + switch (operation) { + case getBlob: + getBlob(exchange); + break; + case deleteBlob: + deleteBlob(exchange); + break; + case listBlobs: + listBlobs(exchange); + break; + case updateBlockBlob: + updateBlockBlob(exchange); + break; + case uploadBlobBlocks: + uploadBlobBlocks(exchange); + break; + case commitBlobBlockList: + commitBlobBlockList(exchange); + break; + case getBlobBlockList: + getBlobBlockList(exchange); + break; + case createAppendBlob: + createAppendBlob(exchange); + break; + case updateAppendBlob: + updateAppendBlob(exchange); + break; + case createPageBlob: + createPageBlob(exchange); + break; + case updatePageBlob: + uploadPageBlob(exchange); + break; + case resizePageBlob: + resizePageBlob(exchange); + break; + case clearPageBlob: + clearPageBlob(exchange); + break; + case getPageBlobRanges: + getPageBlobRanges(exchange); + break; + default: + throw new IllegalArgumentException("Unsupported operation"); } } private void listBlobs(Exchange exchange) throws Exception { - CloudBlobContainer client = BlobServiceUtil.createBlobContainerClient(getConfiguration()); + CloudBlobContainer client = BlobServiceUtil.createBlobContainerClient(exchange, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); LOG.trace("Getting the blob list from the container [{}] from exchange [{}]...", getConfiguration().getContainerName(), exchange); @@ -142,13 +138,16 @@ public class BlobServiceProducer extends DefaultProducer { } private void updateBlockBlob(Exchange exchange) throws Exception { - CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(getConfiguration()); + CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(exchange, getConfiguration()); configureCloudBlobForWrite(client); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); InputStream inputStream = getInputStreamFromExchange(exchange); - LOG.trace("Putting a block blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Putting a block blob [{}] from exchange [{}]...", blobName, exchange); + } try { client.upload(inputStream, -1, opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext()); @@ -170,11 +169,14 @@ public class BlobServiceProducer extends DefaultProducer { throw new IllegalArgumentException("Illegal storageBlocks payload"); } - CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(getConfiguration()); + CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(exchange, getConfiguration()); configureCloudBlobForWrite(client); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); - LOG.trace("Putting a blob [{}] from blocks from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Putting a blob [{}] from blocks from exchange [{}]...", blobName, exchange); + } List<BlockEntry> blockEntries = new LinkedList<>(); for (BlobBlock blobBlock : blobBlocks) { blockEntries.add(blobBlock.getBlockEntry()); @@ -202,10 +204,13 @@ public class BlobServiceProducer extends DefaultProducer { throw new IllegalArgumentException("Illegal commit block list payload"); } - CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(getConfiguration()); + CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(exchange, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); - LOG.trace("Putting a blob [{}] block list from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Putting a blob [{}] block list from exchange [{}]...", blobName, exchange); + } client.commitBlockList(blockEntries, opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext()); } @@ -231,9 +236,12 @@ public class BlobServiceProducer extends DefaultProducer { } private void getBlobBlockList(Exchange exchange) throws Exception { - CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(getConfiguration()); + CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(exchange, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); - LOG.trace("Getting the blob block list [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Getting the blob block list [{}] from exchange [{}]...", blobName, exchange); + } BlockListingFilter filter = exchange.getIn().getBody(BlockListingFilter.class); if (filter == null) { filter = BlockListingFilter.COMMITTED; @@ -244,12 +252,12 @@ public class BlobServiceProducer extends DefaultProducer { } private void deleteBlockBlob(Exchange exchange) throws Exception { - CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(getConfiguration()); + CloudBlockBlob client = BlobServiceUtil.createBlockBlobClient(exchange, getConfiguration()); doDeleteBlock(client, exchange); } private void createAppendBlob(Exchange exchange) throws Exception { - CloudAppendBlob client = BlobServiceUtil.createAppendBlobClient(getConfiguration()); + CloudAppendBlob client = BlobServiceUtil.createAppendBlobClient(exchange, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); if (opts.getAccessCond() == null) { // Default: do not reset the blob content if the blob already exists @@ -260,7 +268,10 @@ public class BlobServiceProducer extends DefaultProducer { private void doCreateAppendBlob(CloudAppendBlob client, BlobServiceRequestOptions opts, Exchange exchange) throws Exception { - LOG.trace("Creating an append blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Creating an append blob [{}] from exchange [{}]...", blobName, exchange); + } try { client.createOrReplace(opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext()); } catch (StorageException ex) { @@ -273,7 +284,7 @@ public class BlobServiceProducer extends DefaultProducer { } private void updateAppendBlob(Exchange exchange) throws Exception { - CloudAppendBlob client = BlobServiceUtil.createAppendBlobClient(getConfiguration()); + CloudAppendBlob client = BlobServiceUtil.createAppendBlobClient(exchange, getConfiguration()); configureCloudBlobForWrite(client); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); if (opts.getAccessCond() == null) { @@ -297,13 +308,13 @@ public class BlobServiceProducer extends DefaultProducer { } private void deleteAppendBlob(Exchange exchange) throws Exception { - CloudAppendBlob client = BlobServiceUtil.createAppendBlobClient(getConfiguration()); + CloudAppendBlob client = BlobServiceUtil.createAppendBlobClient(exchange, getConfiguration()); doDeleteBlock(client, exchange); } private void createPageBlob(Exchange exchange) throws Exception { - CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration()); + CloudPageBlob client = BlobServiceUtil.createPageBlobClient(exchange, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); if (opts.getAccessCond() == null) { // Default: do not reset the blob content if the blob already exists @@ -314,7 +325,10 @@ public class BlobServiceProducer extends DefaultProducer { private void doCreatePageBlob(CloudPageBlob client, BlobServiceRequestOptions opts, Exchange exchange) throws Exception { - LOG.trace("Creating a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Creating a page blob [{}] from exchange [{}]...", blobName, exchange); + } Long pageSize = getPageBlobSize(exchange); try { client.create(pageSize, @@ -330,9 +344,12 @@ public class BlobServiceProducer extends DefaultProducer { } private void uploadPageBlob(Exchange exchange) throws Exception { - LOG.trace("Updating a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Updating a page blob [{}] from exchange [{}]...", blobName, exchange); + } - CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration()); + CloudPageBlob client = BlobServiceUtil.createPageBlobClient(exchange, getConfiguration()); configureCloudBlobForWrite(client); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); if (opts.getAccessCond() == null) { @@ -351,18 +368,24 @@ public class BlobServiceProducer extends DefaultProducer { } private void resizePageBlob(Exchange exchange) throws Exception { - LOG.trace("Resizing a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Resizing a page blob [{}] from exchange [{}]...", blobName, exchange); + } - CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration()); + CloudPageBlob client = BlobServiceUtil.createPageBlobClient(exchange, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); Long pageSize = getPageBlobSize(exchange); client.resize(pageSize, opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext()); } private void clearPageBlob(Exchange exchange) throws Exception { - LOG.trace("Clearing a page blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Clearing a page blob [{}] from exchange [{}]...", blobName, exchange); + } - CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration()); + CloudPageBlob client = BlobServiceUtil.createPageBlobClient(exchange, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); Long blobOffset = getConfiguration().getBlobOffset(); @@ -402,17 +425,20 @@ public class BlobServiceProducer extends DefaultProducer { } private void getPageBlobRanges(Exchange exchange) throws Exception { - CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration()); + CloudPageBlob client = BlobServiceUtil.createPageBlobClient(exchange, getConfiguration()); BlobServiceUtil.configureCloudBlobForRead(client, getConfiguration()); BlobServiceRequestOptions opts = BlobServiceUtil.getRequestOptions(exchange); - LOG.trace("Getting the page blob ranges [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Getting the page blob ranges [{}] from exchange [{}]...", blobName, exchange); + } List<PageRange> ranges = client.downloadPageRanges(opts.getAccessCond(), opts.getRequestOpts(), opts.getOpContext()); ExchangeUtil.getMessageForResponse(exchange).setBody(ranges); } private void deletePageBlob(Exchange exchange) throws Exception { - CloudPageBlob client = BlobServiceUtil.createPageBlobClient(getConfiguration()); + CloudPageBlob client = BlobServiceUtil.createPageBlobClient(exchange, getConfiguration()); doDeleteBlock(client, exchange); } @@ -426,15 +452,13 @@ public class BlobServiceProducer extends DefaultProducer { private void doDeleteBlock(CloudBlob client, Exchange exchange) throws Exception { - LOG.trace("Deleting a blob [{}] from exchange [{}]...", getConfiguration().getBlobName(), exchange); + if (LOG.isTraceEnabled()) { + String blobName = getBlobName(exchange, getConfiguration()); + LOG.trace("Deleting a blob [{}] from exchange [{}]...", blobName, exchange); + } client.delete(); } - private String getCharsetName(Exchange exchange) { - String charset = exchange.getIn().getHeader(Exchange.CHARSET_NAME, String.class); - return charset == null ? "UTF-8" : charset; - } - private void configureCloudBlobForWrite(CloudBlob client) { if (getConfiguration().getStreamWriteSize() > 0) { client.setStreamWriteSizeInBytes(getConfiguration().getStreamWriteSize()); @@ -500,12 +524,4 @@ public class BlobServiceProducer extends DefaultProducer { } } - - private void overrideBlobName(Exchange exchange) { - String blobName = exchange.getIn().getHeader(OVERRIDE_BLOB_NAME, String.class); - - if (ObjectHelper.isNotEmpty(blobName)) { - getEndpoint().getConfiguration().setBlobName(blobName); - } - } } diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceUtil.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceUtil.java index c4084e9..99ad8c2 100644 --- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceUtil.java +++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceUtil.java @@ -37,6 +37,9 @@ import org.apache.camel.component.azure.common.ExchangeUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import static org.apache.camel.component.azure.blob.BlobHeadersConstants.OVERRIDE_BLOB_NAME; + public final class BlobServiceUtil { private static final Logger LOG = LoggerFactory.getLogger(BlobServiceUtil.class); @@ -63,17 +66,17 @@ public final class BlobServiceUtil { private static void getBlockBlob(Exchange exchange, BlobServiceConfiguration cfg) throws Exception { - CloudBlockBlob client = createBlockBlobClient(cfg); + CloudBlockBlob client = createBlockBlobClient(exchange, cfg); doGetBlob(client, exchange, cfg); } private static void getAppendBlob(Exchange exchange, BlobServiceConfiguration cfg) throws Exception { - CloudAppendBlob client = createAppendBlobClient(cfg); + CloudAppendBlob client = createAppendBlobClient(exchange, cfg); doGetBlob(client, exchange, cfg); } private static void getPageBlob(Exchange exchange, BlobServiceConfiguration cfg) throws Exception { - CloudPageBlob client = createPageBlobClient(cfg); + CloudPageBlob client = createPageBlobClient(exchange, cfg); doGetBlob(client, exchange, cfg); } @@ -121,47 +124,47 @@ public final class BlobServiceUtil { return cfg.getBlobName() + ".blob"; } - public static CloudBlobContainer createBlobContainerClient(BlobServiceConfiguration cfg) + public static CloudBlobContainer createBlobContainerClient(Exchange exchange, BlobServiceConfiguration cfg) throws Exception { - URI uri = prepareStorageBlobUri(cfg, false); + URI uri = prepareStorageBlobUri(exchange, cfg, false); StorageCredentials creds = cfg.getAccountCredentials(); return new CloudBlobContainer(uri, creds); } - public static CloudBlockBlob createBlockBlobClient(BlobServiceConfiguration cfg) + public static CloudBlockBlob createBlockBlobClient(Exchange exchange, BlobServiceConfiguration cfg) throws Exception { - CloudBlockBlob client = (CloudBlockBlob) getConfiguredClient(cfg); + CloudBlockBlob client = (CloudBlockBlob) getConfiguredClient(exchange, cfg); if (client == null) { - URI uri = prepareStorageBlobUri(cfg); + URI uri = prepareStorageBlobUri(exchange, cfg); StorageCredentials creds = cfg.getAccountCredentials(); client = new CloudBlockBlob(uri, creds); } return client; } - public static CloudAppendBlob createAppendBlobClient(BlobServiceConfiguration cfg) + public static CloudAppendBlob createAppendBlobClient(Exchange exchange, BlobServiceConfiguration cfg) throws Exception { - CloudAppendBlob client = (CloudAppendBlob) getConfiguredClient(cfg); + CloudAppendBlob client = (CloudAppendBlob) getConfiguredClient(exchange, cfg); if (client == null) { - URI uri = prepareStorageBlobUri(cfg); + URI uri = prepareStorageBlobUri(exchange, cfg); StorageCredentials creds = cfg.getAccountCredentials(); client = new CloudAppendBlob(uri, creds); } return client; } - public static CloudPageBlob createPageBlobClient(BlobServiceConfiguration cfg) + public static CloudPageBlob createPageBlobClient(Exchange exchange, BlobServiceConfiguration cfg) throws Exception { - CloudPageBlob client = (CloudPageBlob) getConfiguredClient(cfg); + CloudPageBlob client = (CloudPageBlob) getConfiguredClient(exchange, cfg); if (client == null) { - URI uri = prepareStorageBlobUri(cfg); + URI uri = prepareStorageBlobUri(exchange, cfg); StorageCredentials creds = cfg.getAccountCredentials(); client = new CloudPageBlob(uri, creds); } return client; } - public static CloudBlob getConfiguredClient(BlobServiceConfiguration cfg) { + public static CloudBlob getConfiguredClient(Exchange exchange, BlobServiceConfiguration cfg) { CloudBlob client = cfg.getAzureBlobClient(); if (client != null) { Class<?> expectedCls = null; @@ -175,7 +178,7 @@ public final class BlobServiceUtil { if (client.getClass() != expectedCls) { throw new IllegalArgumentException("Invalid Client Type"); } - if (!client.getUri().equals(prepareStorageBlobUri(cfg))) { + if (!client.getUri().equals(prepareStorageBlobUri(exchange, cfg))) { throw new IllegalArgumentException("Invalid Client URI"); } } @@ -188,12 +191,14 @@ public final class BlobServiceUtil { } } - public static URI prepareStorageBlobUri(BlobServiceConfiguration cfg) { - return prepareStorageBlobUri(cfg, true); + public static URI prepareStorageBlobUri(Exchange exchange, BlobServiceConfiguration cfg) { + return prepareStorageBlobUri(exchange, cfg, true); } - public static URI prepareStorageBlobUri(BlobServiceConfiguration cfg, boolean blobNameRequired) { - if (blobNameRequired && cfg.getBlobName() == null) { + public static URI prepareStorageBlobUri(Exchange exchange, BlobServiceConfiguration cfg, boolean blobNameRequired) { + String blobName = getBlobName(exchange, cfg); + + if (blobNameRequired && blobName == null) { throw new IllegalArgumentException("Blob name must be specified"); } @@ -203,9 +208,9 @@ public final class BlobServiceUtil { .append(BlobServiceConstants.SERVICE_URI_SEGMENT) .append("/") .append(cfg.getContainerName()); - if (cfg.getBlobName() != null) { + if (blobName != null) { uriBuilder.append("/") - .append(cfg.getBlobName()); + .append(blobName); } return URI.create(uriBuilder.toString()); } @@ -230,4 +235,9 @@ public final class BlobServiceUtil { opts.setRequestOpts(requestOpts); return opts; } + + public static String getBlobName(Exchange exchange, BlobServiceConfiguration cfg) { + return exchange.getIn().getHeader(OVERRIDE_BLOB_NAME, cfg.getBlobName(), String.class); + } + } diff --git a/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceProducerOverrideBlobNameTest.java b/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceProducerOverrideBlobNameTest.java index 869c0b2..0a4ba77 100644 --- a/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceProducerOverrideBlobNameTest.java +++ b/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceProducerOverrideBlobNameTest.java @@ -24,7 +24,6 @@ import org.junit.Before; import org.junit.Test; import static org.apache.camel.component.azure.blob.BlobHeadersConstants.OVERRIDE_BLOB_NAME; -import static org.junit.Assert.assertEquals; public class BlobServiceProducerOverrideBlobNameTest { @@ -41,24 +40,18 @@ public class BlobServiceProducerOverrideBlobNameTest { @Test public void testOverrideBlobName() throws Exception { - - String blobName = "blobName"; + String blobName = "myBlobName"; exchange.getIn().setHeader(OVERRIDE_BLOB_NAME, blobName); producer.process(exchange); - - assertEquals(blobName, producer.getEndpoint().getConfiguration().getBlobName()); } @Test public void testSetBlobNameFromEndpoint() throws Exception { - String blobName = "blob"; exchange.getIn().setHeader(OVERRIDE_BLOB_NAME, blobName); producer.process(exchange); - - assertEquals(blobName, producer.getEndpoint().getConfiguration().getBlobName()); } } diff --git a/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceUtilTest.java b/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceUtilTest.java index f163c7c..fe8b3f1 100644 --- a/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceUtilTest.java +++ b/components/camel-azure/src/test/java/org/apache/camel/component/azure/blob/BlobServiceUtilTest.java @@ -34,7 +34,7 @@ public class BlobServiceUtilTest extends CamelTestSupport { BlobServiceEndpoint endpoint = (BlobServiceEndpoint) context.getEndpoint("azure-blob://camelazure/container/blob?credentials=#creds"); URI uri = - BlobServiceUtil.prepareStorageBlobUri(endpoint.getConfiguration()); + BlobServiceUtil.prepareStorageBlobUri(endpoint.createExchange(), endpoint.getConfiguration()); assertEquals("https://camelazure.blob.core.windows.net/container/blob", uri.toString()); } @@ -47,7 +47,7 @@ public class BlobServiceUtilTest extends CamelTestSupport { BlobServiceEndpoint endpoint = (BlobServiceEndpoint) context.getEndpoint("azure-blob://camelazure/container/blob?azureBlobClient=#azureBlobClient&publicForRead=true"); - assertSame(client, BlobServiceUtil.getConfiguredClient(endpoint.getConfiguration())); + assertSame(client, BlobServiceUtil.getConfiguredClient(endpoint.createExchange(), endpoint.getConfiguration())); } @Test public void testGetConfiguredClientTypeMismatch() throws Exception { @@ -60,7 +60,7 @@ public class BlobServiceUtilTest extends CamelTestSupport { (BlobServiceEndpoint) context.getEndpoint("azure-blob://camelazure/container/blob?azureBlobClient=#azureBlobClient&publicForRead=true" + "&blobType=appendBlob"); try { - BlobServiceUtil.getConfiguredClient(endpoint.getConfiguration()); + BlobServiceUtil.getConfiguredClient(endpoint.createExchange(), endpoint.getConfiguration()); fail(); } catch (IllegalArgumentException ex) { assertEquals("Invalid Client Type", ex.getMessage()); @@ -77,7 +77,7 @@ public class BlobServiceUtilTest extends CamelTestSupport { (BlobServiceEndpoint) context.getEndpoint("azure-blob://camelazure/container/blob2?azureBlobClient=#azureBlobClient&publicForRead=true" + "&blobType=appendBlob"); try { - BlobServiceUtil.getConfiguredClient(endpoint.getConfiguration()); + BlobServiceUtil.getConfiguredClient(endpoint.createExchange(), endpoint.getConfiguration()); fail(); } catch (IllegalArgumentException ex) { assertEquals("Invalid Client URI", ex.getMessage()); diff --git a/components/camel-azure/src/test/java/org/apache/camel/component/azure/common/AzureCredentialsTest.java b/components/camel-azure/src/test/java/org/apache/camel/component/azure/common/AzureCredentialsTest.java index 88a7be9..53e2aa8 100644 --- a/components/camel-azure/src/test/java/org/apache/camel/component/azure/common/AzureCredentialsTest.java +++ b/components/camel-azure/src/test/java/org/apache/camel/component/azure/common/AzureCredentialsTest.java @@ -186,15 +186,15 @@ public class AzureCredentialsTest extends CamelTestSupport { private void executeBlobAssertions(String uriString, String expectedAccountName, String expectedAccountKey) throws Exception { BlobServiceEndpoint endpoint = (BlobServiceEndpoint) context.getEndpoint(uriString); - CloudBlob pageBlobClient = BlobServiceUtil.createPageBlobClient(endpoint.getConfiguration()); + CloudBlob pageBlobClient = BlobServiceUtil.createPageBlobClient(endpoint.createExchange(), endpoint.getConfiguration()); executeBlobAccountCredentialsAssertion(pageBlobClient, endpoint.getConfiguration()); executeBlobCredentialsAssertion(pageBlobClient, expectedAccountName, expectedAccountKey); - CloudBlob blockBlobClient = BlobServiceUtil.createBlockBlobClient(endpoint.getConfiguration()); + CloudBlob blockBlobClient = BlobServiceUtil.createBlockBlobClient(endpoint.createExchange(), endpoint.getConfiguration()); executeBlobAccountCredentialsAssertion(blockBlobClient, endpoint.getConfiguration()); executeBlobCredentialsAssertion(blockBlobClient, expectedAccountName, expectedAccountKey); - CloudBlob appendBlobClient = BlobServiceUtil.createAppendBlobClient(endpoint.getConfiguration()); + CloudBlob appendBlobClient = BlobServiceUtil.createAppendBlobClient(endpoint.createExchange(), endpoint.getConfiguration()); executeBlobAccountCredentialsAssertion(appendBlobClient, endpoint.getConfiguration()); executeBlobCredentialsAssertion(appendBlobClient, expectedAccountName, expectedAccountKey); }
