JAMES-2545 Implement a builder for RabbitMQConfiguration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f783adfa Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f783adfa Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f783adfa Branch: refs/heads/master Commit: f783adfac13ea1e4d4a5a0bf6dfe67d398c78598 Parents: cc72f88 Author: Benoit Tellier <[email protected]> Authored: Mon Sep 10 11:33:27 2018 +0700 Committer: Antoine Duprat <[email protected]> Committed: Wed Sep 12 10:01:12 2018 +0200 ---------------------------------------------------------------------- .../mailqueue/RabbitMQConfiguration.java | 36 ++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/f783adfa/backends-common/rabbitmq/src/main/java/org/apache/james/backend/mailqueue/RabbitMQConfiguration.java ---------------------------------------------------------------------- diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/mailqueue/RabbitMQConfiguration.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/mailqueue/RabbitMQConfiguration.java index b36c87a..362db74 100644 --- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/mailqueue/RabbitMQConfiguration.java +++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/mailqueue/RabbitMQConfiguration.java @@ -27,20 +27,52 @@ import com.google.common.base.Preconditions; import com.google.common.base.Strings; public class RabbitMQConfiguration { + @FunctionalInterface + public interface RequireAmqpUri { + RequireManagementUri amqpUri(URI amqpUri); + } + + @FunctionalInterface + public interface RequireManagementUri { + Builder managementUri(URI managementUri); + } + + public static class Builder { + private final URI amqpUri; + private final URI managementUri; + + private Builder(URI amqpUri, URI managementUri) { + this.amqpUri = amqpUri; + this.managementUri = managementUri; + } + + public RabbitMQConfiguration build() { + Preconditions.checkNotNull(amqpUri, "'amqpUri' should not be null"); + Preconditions.checkNotNull(managementUri, "'managementUri' should not be null"); + return new RabbitMQConfiguration(amqpUri, managementUri); + } + } private static final String URI_PROPERTY_NAME = "uri"; private static final String MANAGEMENT_URI_PROPERTY_NAME = "management.uri"; + public static RequireAmqpUri builder() { + return amqpUri -> managementUri -> new Builder(amqpUri, managementUri); + } + public static RabbitMQConfiguration from(PropertiesConfiguration configuration) { String uriAsString = configuration.getString(URI_PROPERTY_NAME); Preconditions.checkState(!Strings.isNullOrEmpty(uriAsString), "You need to specify the URI of RabbitMQ"); - URI uri = checkURI(uriAsString); + URI amqpUri = checkURI(uriAsString); String managementUriAsString = configuration.getString(MANAGEMENT_URI_PROPERTY_NAME); Preconditions.checkState(!Strings.isNullOrEmpty(managementUriAsString), "You need to specify the management URI of RabbitMQ"); URI managementUri = checkURI(managementUriAsString); - return new RabbitMQConfiguration(uri, managementUri); + return builder() + .amqpUri(amqpUri) + .managementUri(managementUri) + .build(); } private static URI checkURI(String uri) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
