This is an automated email from the ASF dual-hosted git repository. oalsafi 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 9484f37 Small BlobOperationResponse refactor in camel-azure-storage-blob component 9484f37 is described below commit 9484f3790484333dec21e2714ead1dbf89bf0350 Author: Omar Al-Safi <omars...@gmail.com> AuthorDate: Thu Aug 12 10:55:03 2021 +0200 Small BlobOperationResponse refactor in camel-azure-storage-blob component --- .../blob/operations/BlobChangeFeedOperations.java | 7 +-- .../blob/operations/BlobContainerOperations.java | 8 +-- .../blob/operations/BlobOperationResponse.java | 69 +++++++++++++++++++--- .../storage/blob/operations/BlobOperations.java | 60 ++++++------------- .../blob/operations/BlobServiceOperations.java | 2 +- 5 files changed, 86 insertions(+), 60 deletions(-) diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobChangeFeedOperations.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobChangeFeedOperations.java index 5e907ff..5659142 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobChangeFeedOperations.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobChangeFeedOperations.java @@ -43,15 +43,12 @@ public class BlobChangeFeedOperations { final OffsetDateTime startTime = configurationOptionsProxy.getChangeFeedStartTime(exchange); final OffsetDateTime endTime = configurationOptionsProxy.getChangeFeedEndTime(exchange); final Context context = configurationOptionsProxy.getChangeFeedContext(exchange); - final BlobOperationResponse response = new BlobOperationResponse(); if (ObjectHelper.isEmpty(startTime) || ObjectHelper.isEmpty(endTime)) { - response.setBody(getEvents()); + return BlobOperationResponse.create(getEvents()); } else { - response.setBody(getEvents(startTime, endTime, context)); + return BlobOperationResponse.create(getEvents(startTime, endTime, context)); } - - return response; } private List<BlobChangefeedEvent> getEvents() { diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java index 23f4a98..463ebff 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java @@ -53,12 +53,12 @@ public class BlobContainerOperations { final String regex = configurationProxy.getRegex(exchange); List<BlobItem> blobs = client.listBlobs(listBlobOptions, timeout); if (ObjectHelper.isEmpty(regex)) { - return new BlobOperationResponse(blobs); + return BlobOperationResponse.create(blobs); } List<BlobItem> filteredBlobs = blobs.stream() .filter(x -> x.getName().matches(regex)) .collect(Collectors.toCollection(LinkedList<BlobItem>::new)); - return new BlobOperationResponse(filteredBlobs); + return BlobOperationResponse.create(filteredBlobs); } public BlobOperationResponse createContainer(final Exchange exchange) { @@ -68,7 +68,7 @@ public class BlobContainerOperations { final BlobExchangeHeaders blobExchangeHeaders = new BlobExchangeHeaders().httpHeaders(client.createContainer(metadata, publicAccessType, timeout)); - return new BlobOperationResponse(true, blobExchangeHeaders.toMap()); + return BlobOperationResponse.createWithEmptyBody(blobExchangeHeaders.toMap()); } public BlobOperationResponse deleteContainer(final Exchange exchange) { @@ -76,6 +76,6 @@ public class BlobContainerOperations { final Duration timeout = configurationProxy.getTimeout(exchange); final BlobExchangeHeaders blobExchangeHeaders = new BlobExchangeHeaders().httpHeaders(client.deleteContainer(blobRequestConditions, timeout)); - return new BlobOperationResponse(true, blobExchangeHeaders.toMap()); + return BlobOperationResponse.createWithEmptyBody(blobExchangeHeaders.toMap()); } } diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperationResponse.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperationResponse.java index cec4675..bca02c9 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperationResponse.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperationResponse.java @@ -19,28 +19,81 @@ package org.apache.camel.component.azure.storage.blob.operations; import java.util.HashMap; import java.util.Map; -public class BlobOperationResponse { +import com.azure.core.http.rest.Response; +import com.azure.storage.blob.models.AppendBlobItem; +import com.azure.storage.blob.models.BlobProperties; +import com.azure.storage.blob.models.BlockBlobItem; +import com.azure.storage.blob.models.PageBlobItem; +import org.apache.camel.component.azure.storage.blob.BlobExchangeHeaders; + +public final class BlobOperationResponse { private Object body; private Map<String, Object> headers = new HashMap<>(); - public BlobOperationResponse() { - } - - public BlobOperationResponse(final Object body, final Map<String, Object> headers) { + private BlobOperationResponse(final Object body, final Map<String, Object> headers) { this.body = body; this.headers = headers; } - public BlobOperationResponse(final Object body) { + private BlobOperationResponse(final Object body) { setBody(body); } + public static BlobOperationResponse create(final Object body) { + return new BlobOperationResponse(body); + } + + public static BlobOperationResponse create(final Object body, final Map<String, Object> headers) { + return new BlobOperationResponse(body, headers); + } + + public static BlobOperationResponse createWithEmptyBody(final Map<String, Object> headers) { + return new BlobOperationResponse(true, headers); + } + + public static BlobOperationResponse createWithEmptyBody() { + return new BlobOperationResponse(true); + } + + public static BlobOperationResponse create(final Response response) { + return buildResponse(response, false); + } + + public static BlobOperationResponse createWithEmptyBody(final Response response) { + return buildResponse(response, true); + } + + @SuppressWarnings("rawtypes") + private static BlobOperationResponse buildResponse(final Response response, final boolean emptyBody) { + final Object body = emptyBody ? true : response.getValue(); + BlobExchangeHeaders exchangeHeaders; + + if (response.getValue() instanceof BlockBlobItem) { + exchangeHeaders + = BlobExchangeHeaders.createBlobExchangeHeadersFromBlockBlobItem((BlockBlobItem) response.getValue()); + } else if (response.getValue() instanceof AppendBlobItem) { + exchangeHeaders + = BlobExchangeHeaders.createBlobExchangeHeadersFromAppendBlobItem((AppendBlobItem) response.getValue()); + } else if (response.getValue() instanceof PageBlobItem) { + exchangeHeaders = BlobExchangeHeaders.createBlobExchangeHeadersFromPageBlobItem((PageBlobItem) response.getValue()); + } else if (response.getValue() instanceof BlobProperties) { + exchangeHeaders + = BlobExchangeHeaders.createBlobExchangeHeadersFromBlobProperties((BlobProperties) response.getValue()); + } else { + exchangeHeaders = BlobExchangeHeaders.create(); + } + + exchangeHeaders.httpHeaders(response.getHeaders()); + + return new BlobOperationResponse(body, exchangeHeaders.toMap()); + } + public Object getBody() { return body; } - public void setBody(Object body) { + private void setBody(Object body) { this.body = body; } @@ -48,7 +101,7 @@ public class BlobOperationResponse { return headers; } - public void setHeaders(final Map<String, Object> headers) { + private void setHeaders(final Map<String, Object> headers) { this.headers = headers; } } diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java index 6080d8e..7d63d72 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java @@ -97,7 +97,7 @@ public class BlobOperations { final BlobExchangeHeaders blobExchangeHeaders = BlobExchangeHeaders .createBlobExchangeHeadersFromBlobProperties((BlobProperties) blobInputStream.get("properties")); - return new BlobOperationResponse(blobInputStream.get("inputStream"), blobExchangeHeaders.toMap()); + return BlobOperationResponse.create(blobInputStream.get("inputStream"), blobExchangeHeaders.toMap()); } // we have an outputStream set, so we use it final DownloadRetryOptions downloadRetryOptions = getDownloadRetryOptions(configurationProxy); @@ -111,7 +111,7 @@ public class BlobOperations { = BlobExchangeHeaders.createBlobExchangeHeadersFromBlobDownloadHeaders(response.getDeserializedHeaders()) .httpHeaders(response.getHeaders()); - return new BlobOperationResponse(outputStream, blobExchangeHeaders.toMap()); + return BlobOperationResponse.create(outputStream, blobExchangeHeaders.toMap()); } finally { if (configurationProxy.getConfiguration().isCloseStreamAfterRead()) { outputStream.close(); @@ -142,15 +142,16 @@ public class BlobOperations { .httpHeaders(response.getHeaders()) .fileName(fileToDownload.toString()); - return new BlobOperationResponse(fileToDownload, exchangeHeaders.toMap()); + return BlobOperationResponse.create(fileToDownload, exchangeHeaders.toMap()); } public BlobOperationResponse deleteBlob(final Exchange exchange) { final BlobCommonRequestOptions commonRequestOptions = getCommonRequestOptions(exchange); final DeleteSnapshotsOptionType deleteSnapshotsOptionType = configurationProxy.getDeleteSnapshotsOptionType(exchange); - return buildResponse(client.delete(deleteSnapshotsOptionType, commonRequestOptions.getBlobRequestConditions(), - commonRequestOptions.getTimeout()), true); + return BlobOperationResponse + .createWithEmptyBody(client.delete(deleteSnapshotsOptionType, commonRequestOptions.getBlobRequestConditions(), + commonRequestOptions.getTimeout())); } public BlobOperationResponse downloadLink(final Exchange exchange) { @@ -172,7 +173,7 @@ public class BlobOperations { final BlobExchangeHeaders headers = BlobExchangeHeaders.create().downloadLink(url); - return new BlobOperationResponse(true, headers.toMap()); + return BlobOperationResponse.createWithEmptyBody(headers.toMap()); } public BlobOperationResponse uploadBlockBlob(final Exchange exchange) throws IOException { @@ -190,7 +191,7 @@ public class BlobOperations { commonRequestOptions.getContentMD5(), commonRequestOptions.getBlobRequestConditions(), commonRequestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } finally { closeInputStreamIfNeeded(blobStreamAndLength.getInputStream()); } @@ -236,7 +237,7 @@ public class BlobOperations { return commitBlobBlockList(exchange); } - return new BlobOperationResponse(true); + return BlobOperationResponse.createWithEmptyBody(); } @SuppressWarnings("unchecked") @@ -268,7 +269,7 @@ public class BlobOperations { commonRequestOptions.getAccessTier(), commonRequestOptions.getBlobRequestConditions(), commonRequestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } public BlobOperationResponse getBlobBlockList(final Exchange exchange) { @@ -280,7 +281,7 @@ public class BlobOperations { final Response<BlockList> response = client.listBlobBlocks(blockListType, commonRequestOptions.leaseId(), commonRequestOptions.getTimeout()); - return buildResponse(response, false); + return BlobOperationResponse.create(response); } public BlobOperationResponse createAppendBlob(final Exchange exchange) { @@ -292,7 +293,7 @@ public class BlobOperations { = client.createAppendBlob(commonRequestOptions.getBlobHttpHeaders(), commonRequestOptions.getMetadata(), commonRequestOptions.getBlobRequestConditions(), commonRequestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } public BlobOperationResponse commitAppendBlob(final Exchange exchange) throws IOException { @@ -314,7 +315,7 @@ public class BlobOperations { commonRequestOptions.getContentMD5(), commonRequestOptions.getBlobRequestConditions(), commonRequestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } finally { closeInputStreamIfNeeded(streamAndLength.getInputStream()); } @@ -331,7 +332,7 @@ public class BlobOperations { = client.createPageBlob(pageSize, sequenceNumber, requestOptions.getBlobHttpHeaders(), requestOptions.getMetadata(), requestOptions.getBlobRequestConditions(), requestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } public BlobOperationResponse uploadPageBlob(final Exchange exchange) throws IOException { @@ -357,7 +358,7 @@ public class BlobOperations { = client.uploadPageBlob(pageRange, streamAndLength.getInputStream(), requestOptions.getContentMD5(), requestOptions.getBlobRequestConditions(), requestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } finally { closeInputStreamIfNeeded(streamAndLength.getInputStream()); } @@ -372,7 +373,7 @@ public class BlobOperations { final Response<PageBlobItem> response = client.resizePageBlob(pageSize, requestOptions.getBlobRequestConditions(), requestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } public BlobOperationResponse clearPageBlob(final Exchange exchange) { @@ -388,7 +389,7 @@ public class BlobOperations { final Response<PageBlobItem> response = client.clearPagesBlob(pageRange, requestOptions.getBlobRequestConditions(), requestOptions.getTimeout()); - return buildResponse(response, true); + return BlobOperationResponse.createWithEmptyBody(response); } public BlobOperationResponse getPageBlobRanges(final Exchange exchange) { @@ -403,7 +404,7 @@ public class BlobOperations { final Response<PageList> response = client.getPageBlobRanges(blobRange, commonRequestOptions.getBlobRequestConditions(), commonRequestOptions.getTimeout()); - return buildResponse(response, false); + return BlobOperationResponse.create(response); } private DownloadRetryOptions getDownloadRetryOptions(final BlobConfigurationOptionsProxy configurationProxy) { @@ -421,31 +422,6 @@ public class BlobOperations { return new BlobCommonRequestOptions(blobHttpHeaders, metadata, accessTier, blobRequestConditions, contentMD5, timeout); } - @SuppressWarnings("rawtypes") - private BlobOperationResponse buildResponse(final Response response, final boolean emptyBody) { - final Object body = emptyBody ? true : response.getValue(); - BlobExchangeHeaders exchangeHeaders; - - if (response.getValue() instanceof BlockBlobItem) { - exchangeHeaders - = BlobExchangeHeaders.createBlobExchangeHeadersFromBlockBlobItem((BlockBlobItem) response.getValue()); - } else if (response.getValue() instanceof AppendBlobItem) { - exchangeHeaders - = BlobExchangeHeaders.createBlobExchangeHeadersFromAppendBlobItem((AppendBlobItem) response.getValue()); - } else if (response.getValue() instanceof PageBlobItem) { - exchangeHeaders = BlobExchangeHeaders.createBlobExchangeHeadersFromPageBlobItem((PageBlobItem) response.getValue()); - } else if (response.getValue() instanceof BlobProperties) { - exchangeHeaders - = BlobExchangeHeaders.createBlobExchangeHeadersFromBlobProperties((BlobProperties) response.getValue()); - } else { - exchangeHeaders = BlobExchangeHeaders.create(); - } - - exchangeHeaders.httpHeaders(response.getHeaders()); - - return new BlobOperationResponse(body, exchangeHeaders.toMap()); - } - private Long getPageBlobSize(final Exchange exchange) { // we try to get the size from the page range if exists final PageRange pageRange = configurationProxy.getPageRange(exchange); diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java index 631f33d..2e35c5d 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java @@ -44,6 +44,6 @@ public class BlobServiceOperations { final ListBlobContainersOptions listBlobContainersOptions = configurationProxy.getListBlobContainersOptions(exchange); final Duration timeout = configurationProxy.getTimeout(exchange); - return new BlobOperationResponse(client.listBlobContainers(listBlobContainersOptions, timeout)); + return BlobOperationResponse.create(client.listBlobContainers(listBlobContainersOptions, timeout)); } }