You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gz...@apache.org on 2019/04/13 09:15:09 UTC
[camel] branch master updated: Remove duplicated code
This is an automated email from the ASF dual-hosted git repository.
gzurowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new f5a0d20 Remove duplicated code
f5a0d20 is described below
commit f5a0d2001ab83d6b0cf3d5f507cdad421f8892bf
Author: Gregor Zurowski <gr...@zurowski.org>
AuthorDate: Tue Apr 9 20:15:44 2019 +0200
Remove duplicated code
- Create new method for reading bucket name
- Use new method where appropriate
---
.../apache/camel/component/aws/s3/S3Producer.java | 114 ++++++++-------------
1 file changed, 40 insertions(+), 74 deletions(-)
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
index 5b684cf..98e0d7b 100644
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
+++ b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
@@ -234,12 +234,9 @@ public class S3Producer extends DefaultProducer {
is = new ByteArrayInputStream(baos.toByteArray());
}
- String bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
- if (bucketName == null) {
- LOG.trace("Bucket name is not in header, using default one [{}]...", getConfiguration().getBucketName());
- bucketName = getConfiguration().getBucketName();
- }
- putObjectRequest = new PutObjectRequest(bucketName, determineKey(exchange), is, objectMetadata);
+ final String bucketName = determineBucketName(exchange);
+ final String key = determineKey(exchange);
+ putObjectRequest = new PutObjectRequest(bucketName, key, is, objectMetadata);
String storageClass = determineStorageClass(exchange);
if (storageClass != null) {
@@ -292,30 +289,15 @@ public class S3Producer extends DefaultProducer {
}
private void copyObject(AmazonS3 s3Client, Exchange exchange) {
- String bucketNameDestination;
- String destinationKey;
- String sourceKey;
- String bucketName;
- String versionId;
+ final String bucketName = determineBucketName(exchange);
+ final String sourceKey = determineKey(exchange);
+ final String destinationKey = exchange.getIn().getHeader(S3Constants.DESTINATION_KEY, String.class);
+ final String bucketNameDestination = exchange.getIn().getHeader(S3Constants.BUCKET_DESTINATION_NAME, String.class);
+ final String versionId = exchange.getIn().getHeader(S3Constants.VERSION_ID, String.class);
- bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
- if (ObjectHelper.isEmpty(bucketName)) {
- bucketName = getConfiguration().getBucketName();
- }
- sourceKey = exchange.getIn().getHeader(S3Constants.KEY, String.class);
- destinationKey = exchange.getIn().getHeader(S3Constants.DESTINATION_KEY, String.class);
- bucketNameDestination = exchange.getIn().getHeader(S3Constants.BUCKET_DESTINATION_NAME, String.class);
- versionId = exchange.getIn().getHeader(S3Constants.VERSION_ID, String.class);
-
- if (ObjectHelper.isEmpty(bucketName)) {
- throw new IllegalArgumentException("Bucket Name must be specified for copyObject Operation");
- }
if (ObjectHelper.isEmpty(bucketNameDestination)) {
throw new IllegalArgumentException("Bucket Name Destination must be specified for copyObject Operation");
}
- if (ObjectHelper.isEmpty(sourceKey)) {
- throw new IllegalArgumentException("Source Key must be specified for copyObject Operation");
- }
if (ObjectHelper.isEmpty(destinationKey)) {
throw new IllegalArgumentException("Destination Key must be specified for copyObject Operation");
}
@@ -346,21 +328,9 @@ public class S3Producer extends DefaultProducer {
}
private void deleteObject(AmazonS3 s3Client, Exchange exchange) {
- String sourceKey;
- String bucketName;
-
- bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
- if (ObjectHelper.isEmpty(bucketName)) {
- bucketName = getConfiguration().getBucketName();
- }
- sourceKey = exchange.getIn().getHeader(S3Constants.KEY, String.class);
+ final String bucketName = determineBucketName(exchange);
+ final String sourceKey = determineKey(exchange);
- if (ObjectHelper.isEmpty(bucketName)) {
- throw new IllegalArgumentException("Bucket Name must be specified for deleteObject Operation");
- }
- if (ObjectHelper.isEmpty(sourceKey)) {
- throw new IllegalArgumentException("Source Key must be specified for deleteObject Operation");
- }
DeleteObjectRequest deleteObjectRequest;
deleteObjectRequest = new DeleteObjectRequest(bucketName, sourceKey);
s3Client.deleteObject(deleteObjectRequest);
@@ -377,31 +347,16 @@ public class S3Producer extends DefaultProducer {
}
private void deleteBucket(AmazonS3 s3Client, Exchange exchange) {
- String bucketName;
-
- bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
- if (ObjectHelper.isEmpty(bucketName)) {
- bucketName = getConfiguration().getBucketName();
- }
+ final String bucketName = determineBucketName(exchange);
DeleteBucketRequest deleteBucketRequest = new DeleteBucketRequest(bucketName);
s3Client.deleteBucket(deleteBucketRequest);
}
private void getObject(AmazonS3 s3Client, Exchange exchange) {
- String bucketName;
- String sourceKey;
- bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
- if (ObjectHelper.isEmpty(bucketName)) {
- bucketName = getConfiguration().getBucketName();
- }
- sourceKey = exchange.getIn().getHeader(S3Constants.KEY, String.class);
- if (ObjectHelper.isEmpty(bucketName)) {
- throw new IllegalArgumentException("Bucket Name must be specified for getObject Operation");
- }
- if (ObjectHelper.isEmpty(sourceKey)) {
- throw new IllegalArgumentException("Source Key must be specified for getObject Operation");
- }
+ final String bucketName = determineBucketName(exchange);
+ final String sourceKey = determineKey(exchange);
+
GetObjectRequest req = new GetObjectRequest(bucketName, sourceKey);
S3Object res = s3Client.getObject(req);
@@ -410,13 +365,8 @@ public class S3Producer extends DefaultProducer {
}
private void listObjects(AmazonS3 s3Client, Exchange exchange) {
- String bucketName;
+ final String bucketName = determineBucketName(exchange);
- bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
- if (ObjectHelper.isEmpty(bucketName)) {
- bucketName = getConfiguration().getBucketName();
- }
-
ObjectListing objectList = s3Client.listObjects(bucketName);
Message message = getMessageForResponse(exchange);
@@ -489,6 +439,29 @@ public class S3Producer extends DefaultProducer {
return objectMetadata;
}
+ /**
+ * Reads the bucket name from the header of the given exchange. If not provided, it's read from the endpoint
+ * configuration.
+ *
+ * @param exchange The exchange to read the header from.
+ * @return The bucket name.
+ * @throws IllegalArgumentException if the header could not be determined.
+ */
+ private String determineBucketName(final Exchange exchange) {
+ String bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
+
+ if (ObjectHelper.isEmpty(bucketName)) {
+ bucketName = getConfiguration().getBucketName();
+ LOG.trace("AWS S3 Bucket name header is missing, using default one [{}]", bucketName);
+ }
+
+ if (bucketName == null) {
+ throw new IllegalArgumentException("AWS S3 Bucket name header is missing or not configured.");
+ }
+
+ return bucketName;
+ }
+
private String determineKey(final Exchange exchange) {
String key = exchange.getIn().getHeader(S3Constants.KEY, String.class);
if (key == null) {
@@ -517,14 +490,7 @@ public class S3Producer extends DefaultProducer {
}
private void createDownloadLink(AmazonS3 s3Client, Exchange exchange) {
- String bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
- if (ObjectHelper.isEmpty(bucketName)) {
- bucketName = getConfiguration().getBucketName();
- }
-
- if (bucketName == null) {
- throw new IllegalArgumentException("AWS S3 Bucket name header is missing.");
- }
+ final String bucketName = determineBucketName(exchange);
String key = exchange.getIn().getHeader(S3Constants.KEY, String.class);
if (key == null) {
@@ -552,7 +518,7 @@ public class S3Producer extends DefaultProducer {
Message message = getMessageForResponse(exchange);
message.setHeader(S3Constants.DOWNLOAD_LINK, url.toString());
}
-
+
protected S3Configuration getConfiguration() {
return getEndpoint().getConfiguration();
}