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]

Reply via email to