This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0173e55303f7ce538ee75dc67d1a58005b5aeb54 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Thu May 2 12:55:01 2019 +0200 CAMEL-13453 - Fixed Cs and Regen --- .../src/main/docs/azure-blob-component.adoc | 11 +- .../component/azure/blob/BlobServiceComponent.java | 35 +-- .../BlobServiceComponentConfiguration.java | 240 +++++++++++++++++++++ 3 files changed, 272 insertions(+), 14 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 19e828d..f904267 100644 --- a/components/camel-azure/src/main/docs/azure-blob-component.adoc +++ b/components/camel-azure/src/main/docs/azure-blob-component.adoc @@ -35,7 +35,16 @@ to("file://blobdirectory"); // component options: START -The Azure Storage Blob Service component has no options. +The Azure Storage Blob Service component supports 2 options, which are listed below. + + + +[width="100%",cols="2,5,^1,2",options="header"] +|=== +| Name | Description | Default | Type +| *configuration* (advanced) | The Blob Service configuration | | BlobService Configuration +| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean +|=== // component options: END diff --git a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java index 14bd646..3843f94 100644 --- a/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java +++ b/components/camel-azure/src/main/java/org/apache/camel/component/azure/blob/BlobServiceComponent.java @@ -30,10 +30,10 @@ import org.apache.camel.support.DefaultComponent; @Component("azure-blob") public class BlobServiceComponent extends DefaultComponent { - - @Metadata(label = "advanced") + + @Metadata(label = "advanced") private BlobServiceConfiguration configuration; - + public BlobServiceComponent() { } @@ -48,15 +48,15 @@ public class BlobServiceComponent extends DefaultComponent { String[] parts = null; if (remaining != null) { - parts = remaining.split("/"); + parts = remaining.split("/"); } if (parts == null || parts.length < 2) { throw new IllegalArgumentException("At least the account and container names must be specified."); } - + configuration.setAccountName(parts[0]); configuration.setContainerName(parts[1]); - + if (parts.length > 2) { // Blob names can contain forward slashes StringBuilder sb = new StringBuilder(); @@ -70,22 +70,31 @@ public class BlobServiceComponent extends DefaultComponent { } checkAndSetRegistryClient(configuration); checkCredentials(configuration); - + BlobServiceEndpoint endpoint = new BlobServiceEndpoint(uri, this, configuration); setProperties(endpoint, parameters); return endpoint; } - + + public BlobServiceConfiguration getConfiguration() { + return configuration; + } + + /** + * The Blob Service configuration + */ + public void setConfiguration(BlobServiceConfiguration configuration) { + this.configuration = configuration; + } + private void checkCredentials(BlobServiceConfiguration cfg) { CloudBlob client = cfg.getAzureBlobClient(); - StorageCredentials creds = client == null ? cfg.getCredentials() - : client.getServiceClient().getCredentials(); - if ((creds == null || creds instanceof StorageCredentialsAnonymous) - && !cfg.isPublicForRead()) { + StorageCredentials creds = client == null ? cfg.getCredentials() : client.getServiceClient().getCredentials(); + if ((creds == null || creds instanceof StorageCredentialsAnonymous) && !cfg.isPublicForRead()) { throw new IllegalArgumentException("Credentials must be specified."); } } - + private void checkAndSetRegistryClient(BlobServiceConfiguration configuration) { Set<CloudBlob> clients = getCamelContext().getRegistry().findByType(CloudBlob.class); if (clients.size() == 1) { diff --git a/platforms/spring-boot/components-starter/camel-azure-starter/src/main/java/org/apache/camel/component/azure/blob/springboot/BlobServiceComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-azure-starter/src/main/java/org/apache/camel/component/azure/blob/springboot/BlobServiceComponentConfiguration.java index efbbb39..6943cd6 100644 --- a/platforms/spring-boot/components-starter/camel-azure-starter/src/main/java/org/apache/camel/component/azure/blob/springboot/BlobServiceComponentConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-azure-starter/src/main/java/org/apache/camel/component/azure/blob/springboot/BlobServiceComponentConfiguration.java @@ -16,7 +16,12 @@ */ package org.apache.camel.component.azure.blob.springboot; +import java.util.Map; import javax.annotation.Generated; +import com.microsoft.azure.storage.StorageCredentials; +import com.microsoft.azure.storage.blob.CloudBlob; +import org.apache.camel.component.azure.blob.BlobServiceOperations; +import org.apache.camel.component.azure.blob.BlobType; import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -38,12 +43,25 @@ public class BlobServiceComponentConfiguration */ private Boolean enabled; /** + * The Blob Service configuration + */ + private BlobServiceConfigurationNestedConfiguration configuration; + /** * Whether the component should resolve property placeholders on itself when * starting. Only properties which are of String type can use property * placeholders. */ private Boolean resolvePropertyPlaceholders = true; + public BlobServiceConfigurationNestedConfiguration getConfiguration() { + return configuration; + } + + public void setConfiguration( + BlobServiceConfigurationNestedConfiguration configuration) { + this.configuration = configuration; + } + public Boolean getResolvePropertyPlaceholders() { return resolvePropertyPlaceholders; } @@ -52,4 +70,226 @@ public class BlobServiceComponentConfiguration Boolean resolvePropertyPlaceholders) { this.resolvePropertyPlaceholders = resolvePropertyPlaceholders; } + + public static class BlobServiceConfigurationNestedConfiguration { + public static final Class CAMEL_NESTED_CLASS = org.apache.camel.component.azure.blob.BlobServiceConfiguration.class; + /** + * Blob service operation hint to the producer + */ + private BlobServiceOperations operation = BlobServiceOperations.listBlobs; + /** + * Set the blob service container name + */ + private String containerName; + /** + * Blob name, required for most operations + */ + private String blobName; + /** + * Set a blob type, 'blockblob' is default + */ + private BlobType blobType = BlobType.blockblob; + /** + * Set the size of the buffer for writing block and page blocks + */ + private Integer streamWriteSize; + /** + * Set the minimum read size in bytes when reading the blob content + */ + private Integer streamReadSize; + /** + * Set the blob meta-data + */ + private Map blobMetadata; + /** + * The blob service client + */ + private CloudBlob azureBlobClient; + /** + * Close the stream after write or keep it open, default is true + */ + private Boolean closeStreamAfterWrite = true; + /** + * Close the stream after read or keep it open, default is true + */ + private Boolean closeStreamAfterRead = true; + /** + * Set the file directory where the downloaded blobs will be saved to + */ + private String fileDir; + /** + * Set the blob offset for the upload or download operations, default is + * 0 + */ + private Long blobOffset = 0L; + /** + * Set the data length for the download or page blob upload operations + */ + private Long dataLength; + /** + * Set a prefix which can be used for listing the blobs + */ + private String blobPrefix; + /** + * Storage resources can be public for reading their content, if this + * property is enabled then the credentials do not have to be set + */ + private Boolean publicForRead = false; + /** + * Specify if the flat or hierarchical blob listing should be used + */ + private Boolean useFlatListing = true; + /** + * Set the Azure account name + */ + private String accountName; + /** + * Set the storage credentials, required in most cases + */ + private StorageCredentials credentials; + + public BlobServiceOperations getOperation() { + return operation; + } + + public void setOperation(BlobServiceOperations operation) { + this.operation = operation; + } + + public String getContainerName() { + return containerName; + } + + public void setContainerName(String containerName) { + this.containerName = containerName; + } + + public String getBlobName() { + return blobName; + } + + public void setBlobName(String blobName) { + this.blobName = blobName; + } + + public BlobType getBlobType() { + return blobType; + } + + public void setBlobType(BlobType blobType) { + this.blobType = blobType; + } + + public Integer getStreamWriteSize() { + return streamWriteSize; + } + + public void setStreamWriteSize(Integer streamWriteSize) { + this.streamWriteSize = streamWriteSize; + } + + public Integer getStreamReadSize() { + return streamReadSize; + } + + public void setStreamReadSize(Integer streamReadSize) { + this.streamReadSize = streamReadSize; + } + + public Map getBlobMetadata() { + return blobMetadata; + } + + public void setBlobMetadata(Map blobMetadata) { + this.blobMetadata = blobMetadata; + } + + public CloudBlob getAzureBlobClient() { + return azureBlobClient; + } + + public void setAzureBlobClient(CloudBlob azureBlobClient) { + this.azureBlobClient = azureBlobClient; + } + + public Boolean getCloseStreamAfterWrite() { + return closeStreamAfterWrite; + } + + public void setCloseStreamAfterWrite(Boolean closeStreamAfterWrite) { + this.closeStreamAfterWrite = closeStreamAfterWrite; + } + + public Boolean getCloseStreamAfterRead() { + return closeStreamAfterRead; + } + + public void setCloseStreamAfterRead(Boolean closeStreamAfterRead) { + this.closeStreamAfterRead = closeStreamAfterRead; + } + + public String getFileDir() { + return fileDir; + } + + public void setFileDir(String fileDir) { + this.fileDir = fileDir; + } + + public Long getBlobOffset() { + return blobOffset; + } + + public void setBlobOffset(Long blobOffset) { + this.blobOffset = blobOffset; + } + + public Long getDataLength() { + return dataLength; + } + + public void setDataLength(Long dataLength) { + this.dataLength = dataLength; + } + + public String getBlobPrefix() { + return blobPrefix; + } + + public void setBlobPrefix(String blobPrefix) { + this.blobPrefix = blobPrefix; + } + + public Boolean getPublicForRead() { + return publicForRead; + } + + public void setPublicForRead(Boolean publicForRead) { + this.publicForRead = publicForRead; + } + + public Boolean getUseFlatListing() { + return useFlatListing; + } + + public void setUseFlatListing(Boolean useFlatListing) { + this.useFlatListing = useFlatListing; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public StorageCredentials getCredentials() { + return credentials; + } + + public void setCredentials(StorageCredentials credentials) { + this.credentials = credentials; + } + } } \ No newline at end of file