11package com .frogdevelopment .consul .populate .config ;
22
3+ import java .net .URI ;
4+
35import jakarta .inject .Singleton ;
46
57import io .micronaut .context .annotation .Bean ;
1719@ Factory
1820public class ConsulFactory {
1921
22+ static final int DEFAULT_HTTP_PORT = 80 ;
23+
2024 @ Singleton
2125 @ Bean (preDestroy = "close" )
2226 Vertx vertx () {
@@ -26,13 +30,28 @@ Vertx vertx() {
2630 @ Singleton
2731 @ Bean (preDestroy = "close" )
2832 ConsulClient consulClient (final Vertx vertx , final GlobalProperties properties ) {
29- final var consulClientOptions = new ConsulClientOptions ()
30- .setHost (properties .getHost ())
31- .setPort (properties .getPort ())
32- .setSsl (properties .isSecured ());
33+ final ConsulClientOptions consulClientOptions ;
34+ if (properties .getUri ().isPresent ()) {
35+ final var uri = URI .create (properties .getUri ().get ());
36+ consulClientOptions = new ConsulClientOptions ()
37+ .setHost (uri .getHost ())
38+ .setSsl ("https" .equalsIgnoreCase (uri .getScheme ()));
39+ final var port = uri .getPort ();
40+ if (port >= 0 ) {
41+ consulClientOptions .setPort (port );
42+ } else {
43+ consulClientOptions .setPort (DEFAULT_HTTP_PORT ); // default port when providing a URI without port
44+ }
45+ } else {
46+ consulClientOptions = new ConsulClientOptions ()
47+ .setHost (properties .getHost ())
48+ .setPort (properties .getPort ())
49+ .setSsl (properties .isSecured ());
50+ }
3351 properties .getDc ().ifPresent (consulClientOptions ::setDc );
3452 properties .getAclToken ().ifPresent (consulClientOptions ::setAclToken );
3553 properties .getTimeout ().ifPresent (consulClientOptions ::setTimeout );
54+ // properties.getConnectTimeout().ifPresent(consulClientOptions::setConnectTimeout);
3655
3756 return ConsulClient .create (vertx , consulClientOptions );
3857 }
0 commit comments