From 64e610adac1edf62aad5f4b8a76b9d6642185dd0 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 18 Oct 2017 12:12:16 -0400 Subject: [PATCH] Update ConsulRegistration to use new Registration interface. See https://github.com/spring-cloud/spring-cloud-commons/issues/265 --- .../ConsulAutoRegistration.java | 8 ++-- .../serviceregistry/ConsulRegistration.java | 38 ++++++++++++++++++- .../ConsulServiceRegistryTests.java | 6 ++- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java index 76d8c649..11d52045 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulAutoRegistration.java @@ -39,13 +39,11 @@ public class ConsulAutoRegistration extends ConsulRegistration { public static final char SEPARATOR = '-'; - private final ConsulDiscoveryProperties properties; private final ApplicationContext context; private final HeartbeatProperties heartbeatProperties; public ConsulAutoRegistration(NewService service, ConsulDiscoveryProperties properties, ApplicationContext context, HeartbeatProperties heartbeatProperties) { - super(service); - this.properties = properties; + super(service, properties); this.context = context; this.heartbeatProperties = heartbeatProperties; } @@ -58,11 +56,11 @@ public class ConsulAutoRegistration extends ConsulRegistration { // we might not have a port until now, so this is the earliest we // can create a check - setCheck(getService(), this.properties, this.context, this.heartbeatProperties); + setCheck(getService(), getProperties(), this.context, this.heartbeatProperties); } public ConsulAutoRegistration managementRegistration() { - return managementRegistration(this.properties, this.context, this.heartbeatProperties); + return managementRegistration(getProperties(), this.context, this.heartbeatProperties); } public static ConsulAutoRegistration registration(ConsulDiscoveryProperties properties, ApplicationContext context, diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulRegistration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulRegistration.java index b2ae9404..ade8e615 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulRegistration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/serviceregistry/ConsulRegistration.java @@ -16,9 +16,15 @@ package org.springframework.cloud.consul.serviceregistry; +import org.springframework.cloud.client.DefaultServiceInstance; import org.springframework.cloud.client.serviceregistry.Registration; import com.ecwid.consul.v1.agent.model.NewService; +import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; +import org.springframework.cloud.consul.discovery.ConsulServerUtils; + +import java.net.URI; +import java.util.Map; /** * @author Spencer Gibb @@ -26,15 +32,21 @@ import com.ecwid.consul.v1.agent.model.NewService; public class ConsulRegistration implements Registration { private final NewService service; + private ConsulDiscoveryProperties properties; - public ConsulRegistration(NewService service) { + public ConsulRegistration(NewService service, ConsulDiscoveryProperties properties) { this.service = service; + this.properties = properties; } public NewService getService() { return service; } + protected ConsulDiscoveryProperties getProperties() { + return properties; + } + public String getInstanceId() { return getService().getId(); } @@ -43,4 +55,28 @@ public class ConsulRegistration implements Registration { return getService().getName(); } + @Override + public String getHost() { + return getService().getAddress(); + } + + @Override + public int getPort() { + return getService().getPort(); + } + + @Override + public boolean isSecure() { + return this.properties.getScheme().equalsIgnoreCase("https"); + } + + @Override + public URI getUri() { + return DefaultServiceInstance.getUri(this); + } + + @Override + public Map getMetadata() { + return ConsulServerUtils.getMetadata(getService().getTags()); + } } diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java index 2ff2766c..a9e92151 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/serviceregistry/ConsulServiceRegistryTests.java @@ -29,6 +29,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.consul.discovery.ConsulDiscoveryClient; +import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties; import org.springframework.test.context.junit4.SpringRunner; import com.ecwid.consul.v1.agent.model.NewService; @@ -53,6 +54,9 @@ public class ConsulServiceRegistryTests { @Autowired private ConsulDiscoveryClient discoveryClient; + @Autowired + private ConsulDiscoveryProperties properties; + @LocalServerPort private int port; @@ -70,7 +74,7 @@ public class ConsulServiceRegistryTests { service.setPort(port); service.setTags(Collections.singletonList("mytag")); - ConsulRegistration registration = new ConsulRegistration(service); + ConsulRegistration registration = new ConsulRegistration(service, this.properties); Throwable t = null; try { serviceRegistry.register(registration);