Divide the MSB source codes into two repos
[msb/apigateway.git] / apiroute / apiroute-service / src / main / java / org / onap / msb / apiroute / wrapper / consulextend / Consul.java
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/Consul.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/consulextend/Consul.java
new file mode 100644 (file)
index 0000000..cf8196a
--- /dev/null
@@ -0,0 +1,97 @@
+package org.onap.msb.apiroute.wrapper.consulextend;
+
+import org.apache.http.HttpHost;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.annotations.VisibleForTesting;
+
+public class Consul {
+       /**
+        * Default Consul HTTP API host.
+        */
+       public static final String DEFAULT_HTTP_HOST = "localhost";
+
+       /**
+        * Default Consul HTTP API port.
+        */
+       public static final int DEFAULT_HTTP_PORT = 8500;
+
+       private static final Logger LOGGER = LoggerFactory
+                       .getLogger(Consul.class);
+       
+       private final CatalogClient catalogClient;
+       private final HealthClient healthClient;
+
+       private Consul(CatalogClient catalogClient, HealthClient healthClient) {
+               this.catalogClient = catalogClient;
+               this.healthClient = healthClient;
+       }
+
+       /**
+        * Get the Catalog HTTP client.
+        * <p>
+        * /v1/catalog
+        * 
+        * @return The Catalog HTTP client.
+        */
+       public CatalogClient catalogClient() {
+               return catalogClient;
+       }
+
+       /**
+        * Get the Health HTTP client.
+        * <p>
+        * /v1/health
+        * 
+        * @return The Health HTTP client.
+        */
+       public HealthClient healthClient() {
+               return healthClient;
+       }
+       
+       /**
+        * Creates a new {@link Builder} object.
+        * 
+        * @return A new Consul builder.
+        */
+       public static Builder builder() {
+               return new Builder();
+       }
+
+       /**
+        * Used to create a default Consul client.
+        * 
+        * @return A default {@link Consul} client.
+        */
+       @VisibleForTesting
+       public static Consul newClient() {
+               return builder().build();
+       }
+
+       public static class Builder {
+
+               private HttpHost targetHost;
+
+               {
+                       targetHost = new HttpHost(DEFAULT_HTTP_HOST, DEFAULT_HTTP_PORT);
+               }
+
+               Builder() {
+
+               }
+
+               public Builder withHostAndPort(String hostname, int port) {
+                       this.targetHost = new HttpHost(hostname, port);
+                       return this;
+               }
+
+               public Consul build() {
+                       LOGGER.info("********build consul:"+targetHost.toString()+"****************");
+                       CatalogClient catalogClient = new CatalogClient(targetHost);
+                       HealthClient healthClient = new HealthClient(targetHost);
+                       return new Consul(catalogClient,healthClient);
+               }
+
+       }
+}