This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit ae7beae9d068709a3edd59d39afee4314efa3860 Author: Matthieu Baechler <[email protected]> AuthorDate: Tue Feb 11 14:43:04 2020 +0100 JAMES-3028 move S3BlobConfiguration to blob-s3 and rename beans --- .../aws/S3BlobStoreConfiguration.java} | 50 +++++---------------- .../S3BlobStoreConfigurationReader.java | 52 ++++++++++++++++++++++ .../modules/objectstorage/S3BlobStoreModule.java | 25 ++++------- .../objectstorage/aws/s3/DockerAwsS3TestRule.java | 6 +-- 4 files changed, 74 insertions(+), 59 deletions(-) diff --git a/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobConfiguration.java b/server/blob/blob-s3/src/main/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreConfiguration.java similarity index 68% rename from server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobConfiguration.java rename to server/blob/blob-s3/src/main/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreConfiguration.java index 7410276..d0a1b7a 100644 --- a/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobConfiguration.java +++ b/server/blob/blob-s3/src/main/java/org/apache/james/blob/objectstorage/aws/S3BlobStoreConfiguration.java @@ -17,47 +17,17 @@ * under the License. * ****************************************************************/ -package org.apache.james.modules.objectstorage; +package org.apache.james.blob.objectstorage.aws; import java.util.Objects; import java.util.Optional; -import org.apache.commons.configuration2.Configuration; -import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.james.blob.api.BucketName; -import org.apache.james.blob.objectstorage.aws.AwsS3AuthConfiguration; -import org.apache.james.blob.objectstorage.aws.Region; -import org.apache.james.modules.objectstorage.aws.s3.AwsS3ConfigurationReader; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; -public class S3BlobConfiguration { - - private static final String OBJECTSTORAGE_NAMESPACE = "objectstorage.namespace"; - private static final String OBJECTSTORAGE_BUCKET_PREFIX = "objectstorage.bucketPrefix"; - private static final String OBJECTSTORAGE_S3_REGION = "objectstorage.s3.region"; - - static final String DEFAULT_BUCKET_PREFIX = ""; - - public static S3BlobConfiguration from(Configuration configuration) throws ConfigurationException { - Optional<String> namespace = Optional.ofNullable(configuration.getString(OBJECTSTORAGE_NAMESPACE, null)); - Optional<String> bucketPrefix = Optional.ofNullable(configuration.getString(OBJECTSTORAGE_BUCKET_PREFIX, null)); - Region region = Optional.ofNullable(configuration.getString(OBJECTSTORAGE_S3_REGION, null)) - .map(Region::of) - .orElseThrow(() -> new ConfigurationException("require a region (" + OBJECTSTORAGE_S3_REGION + " key)")); - - return builder() - .authConfiguration(authConfiguration(configuration)) - .region(region) - .defaultBucketName(namespace.map(BucketName::of)) - .bucketPrefix(bucketPrefix) - .build(); - } - - private static AwsS3AuthConfiguration authConfiguration(Configuration configuration) throws ConfigurationException { - return AwsS3ConfigurationReader.from(configuration); - } +public class S3BlobStoreConfiguration { public static Builder.RequireAuthConfiguration builder() { return authConfiguration -> region -> new Builder.ReadyToBuild(authConfiguration, region); @@ -110,8 +80,8 @@ public class S3BlobConfiguration { return this; } - public S3BlobConfiguration build() { - return new S3BlobConfiguration(bucketPrefix, defaultBucketName, region, specificAuthConfiguration); + public S3BlobStoreConfiguration build() { + return new S3BlobStoreConfiguration(bucketPrefix, defaultBucketName, region, specificAuthConfiguration); } } @@ -123,10 +93,10 @@ public class S3BlobConfiguration { private final Optional<String> bucketPrefix; @VisibleForTesting - S3BlobConfiguration(Optional<String> bucketPrefix, - Optional<BucketName> namespace, - Region region, - AwsS3AuthConfiguration specificAuthConfiguration) { + S3BlobStoreConfiguration(Optional<String> bucketPrefix, + Optional<BucketName> namespace, + Region region, + AwsS3AuthConfiguration specificAuthConfiguration) { this.bucketPrefix = bucketPrefix; this.namespace = namespace; this.region = region; @@ -151,8 +121,8 @@ public class S3BlobConfiguration { @Override public final boolean equals(Object o) { - if (o instanceof S3BlobConfiguration) { - S3BlobConfiguration that = (S3BlobConfiguration) o; + if (o instanceof S3BlobStoreConfiguration) { + S3BlobStoreConfiguration that = (S3BlobStoreConfiguration) o; return Objects.equals(this.namespace, that.namespace) && Objects.equals(this.bucketPrefix, that.bucketPrefix) diff --git a/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobStoreConfigurationReader.java b/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobStoreConfigurationReader.java new file mode 100644 index 0000000..418c7a7 --- /dev/null +++ b/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobStoreConfigurationReader.java @@ -0,0 +1,52 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.modules.objectstorage; + +import java.util.Optional; + +import org.apache.commons.configuration2.Configuration; +import org.apache.commons.configuration2.ex.ConfigurationException; +import org.apache.james.blob.api.BucketName; +import org.apache.james.blob.objectstorage.aws.Region; +import org.apache.james.blob.objectstorage.aws.S3BlobStoreConfiguration; +import org.apache.james.modules.objectstorage.aws.s3.AwsS3ConfigurationReader; + +public class S3BlobStoreConfigurationReader { + + private static final String OBJECTSTORAGE_NAMESPACE = "objectstorage.namespace"; + private static final String OBJECTSTORAGE_BUCKET_PREFIX = "objectstorage.bucketPrefix"; + private static final String OBJECTSTORAGE_S3_REGION = "objectstorage.s3.region"; + + public static S3BlobStoreConfiguration from(Configuration configuration) throws ConfigurationException { + Optional<String> namespace = Optional.ofNullable(configuration.getString(OBJECTSTORAGE_NAMESPACE, null)); + Optional<String> bucketPrefix = Optional.ofNullable(configuration.getString(OBJECTSTORAGE_BUCKET_PREFIX, null)); + Region region = Optional.ofNullable(configuration.getString(OBJECTSTORAGE_S3_REGION, null)) + .map(Region::of) + .orElseThrow(() -> new ConfigurationException("require a region (" + OBJECTSTORAGE_S3_REGION + " key)")); + + return S3BlobStoreConfiguration.builder() + .authConfiguration(AwsS3ConfigurationReader.from(configuration)) + .region(region) + .defaultBucketName(namespace.map(BucketName::of)) + .bucketPrefix(bucketPrefix) + .build(); + } + +} diff --git a/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobStoreModule.java b/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobStoreModule.java index fe000e1..7c1092c 100644 --- a/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobStoreModule.java +++ b/server/container/guice/blob-s3-guice/src/main/java/org/apache/james/modules/objectstorage/S3BlobStoreModule.java @@ -25,31 +25,24 @@ import javax.inject.Singleton; import org.apache.commons.configuration2.Configuration; import org.apache.commons.configuration2.ex.ConfigurationException; -import org.apache.james.blob.api.BlobId; import org.apache.james.blob.api.BucketName; -import org.apache.james.blob.api.HashBlobId; import org.apache.james.blob.objectstorage.aws.AwsS3AuthConfiguration; import org.apache.james.blob.objectstorage.aws.Region; +import org.apache.james.blob.objectstorage.aws.S3BlobStoreConfiguration; import org.apache.james.modules.mailbox.ConfigurationComponent; import org.apache.james.utils.PropertiesProvider; import com.google.inject.AbstractModule; import com.google.inject.Provides; -import com.google.inject.Scopes; public class S3BlobStoreModule extends AbstractModule { - @Override - protected void configure() { - bind(BlobId.Factory.class).to(HashBlobId.Factory.class).in(Scopes.SINGLETON); - } - @Provides @Singleton - private S3BlobConfiguration getObjectStorageConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException { + private S3BlobStoreConfiguration getObjectStorageConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException { try { Configuration configuration = propertiesProvider.getConfigurations(ConfigurationComponent.NAMES); - return S3BlobConfiguration.from(configuration); + return S3BlobStoreConfigurationReader.from(configuration); } catch (FileNotFoundException e) { throw new ConfigurationException(ConfigurationComponent.NAME + " configuration was not found"); } @@ -57,20 +50,20 @@ public class S3BlobStoreModule extends AbstractModule { @Provides @Singleton - private AwsS3AuthConfiguration awsS3AuthConfiguration(S3BlobConfiguration s3BlobConfiguration) { - return s3BlobConfiguration.getSpecificAuthConfiguration(); + private AwsS3AuthConfiguration awsS3AuthConfiguration(S3BlobStoreConfiguration s3BlobStoreConfiguration) { + return s3BlobStoreConfiguration.getSpecificAuthConfiguration(); } @Provides @Singleton - private BucketName defaultBucket(S3BlobConfiguration s3BlobConfiguration) { - return s3BlobConfiguration.getNamespace().orElse(BucketName.DEFAULT); + private BucketName defaultBucket(S3BlobStoreConfiguration s3BlobStoreConfiguration) { + return s3BlobStoreConfiguration.getNamespace().orElse(BucketName.DEFAULT); } @Provides @Singleton - private Region region(S3BlobConfiguration s3BlobConfiguration) { - return s3BlobConfiguration.getRegion(); + private Region region(S3BlobStoreConfiguration s3BlobStoreConfiguration) { + return s3BlobStoreConfiguration.getRegion(); } } diff --git a/server/container/guice/blob-s3-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java b/server/container/guice/blob-s3-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java index f156cf6..f001461 100644 --- a/server/container/guice/blob-s3-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java +++ b/server/container/guice/blob-s3-guice/src/test/java/org/apache/james/modules/objectstorage/aws/s3/DockerAwsS3TestRule.java @@ -27,7 +27,7 @@ import org.apache.james.blob.objectstorage.aws.AwsS3AuthConfiguration; import org.apache.james.blob.objectstorage.aws.DockerAwsS3Container; import org.apache.james.blob.objectstorage.aws.DockerAwsS3Singleton; import org.apache.james.blob.objectstorage.aws.Region; -import org.apache.james.modules.objectstorage.S3BlobConfiguration; +import org.apache.james.blob.objectstorage.aws.S3BlobStoreConfiguration; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -67,7 +67,7 @@ public class DockerAwsS3TestRule implements GuiceModuleTestRule { .build(); Region region = DockerAwsS3Container.REGION; - S3BlobConfiguration configuration = S3BlobConfiguration.builder() + S3BlobStoreConfiguration configuration = S3BlobStoreConfiguration.builder() .authConfiguration(authConfiguration) .region(region) .defaultBucketName(defaultBucketName) @@ -78,7 +78,7 @@ public class DockerAwsS3TestRule implements GuiceModuleTestRule { binder.bind(BucketName.class).toInstance(defaultBucketName); binder.bind(Region.class).toInstance(region); binder.bind(AwsS3AuthConfiguration.class).toInstance(authConfiguration); - binder.bind(S3BlobConfiguration.class).toInstance(configuration); + binder.bind(S3BlobStoreConfiguration.class).toInstance(configuration); }; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
