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 <[email protected]>
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));
}
}