diff --git a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java index 9364c010..e093ce95 100644 --- a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java +++ b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulPropertySource.java @@ -8,8 +8,7 @@ import org.springframework.core.env.EnumerablePropertySource; import java.util.*; -import static com.google.common.base.Charsets.UTF_8; -import static com.google.common.io.BaseEncoding.base64; +import static org.springframework.util.Base64Utils.*; /** * @author Spencer Gibb @@ -47,7 +46,7 @@ public class ConsulPropertySource extends EnumerablePropertySource public String getDecoded(String value) { if (value == null) return null; - return new String(base64().decode(value), UTF_8); + return new String(decodeFromString(value)); } @Override diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java index 8251b7d4..9f80a909 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryClient.java @@ -1,8 +1,12 @@ package org.springframework.cloud.consul.discovery; import com.ecwid.consul.v1.ConsulClient; -import com.google.common.base.Function; -import com.google.common.collect.Lists; +import com.ecwid.consul.v1.QueryParams; +import com.ecwid.consul.v1.Response; +import com.ecwid.consul.v1.agent.model.Member; +import com.ecwid.consul.v1.agent.model.Self; +import com.ecwid.consul.v1.agent.model.Service; +import com.ecwid.consul.v1.catalog.model.CatalogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.DefaultServiceInstance; import org.springframework.cloud.client.ServiceInstance; @@ -31,53 +35,51 @@ public class ConsulDiscoveryClient implements DiscoveryClient { @Override public ServiceInstance getLocalServiceInstance() { - /*Map services = agentClient.getServices(); - Service service = services.get(context.getId()); + Response> agentServices = client.getAgentServices(); + Service service = agentServices.getValue().get(context.getId()); if (service == null) { throw new IllegalStateException("Unable to locate service in consul agent: "+context.getId()); } String host = "localhost"; - Map self = agentClient.getSelf(); - Map member = (Map) self.get("Member"); + Response agentSelf = client.getAgentSelf(); + Member member = agentSelf.getValue().getMember(); if (member != null) { - if (member.containsKey("Name")) { - host = (String) member.get("Name"); + if (member.getName() != null) { + host = member.getName(); } } - return new DefaultServiceInstance(service.getId(), host, service.getPort() false);*/ - return null; + return new DefaultServiceInstance(service.getId(), host, service.getPort()); } @Override public List getInstances(final String serviceId) { - /*List nodes = catalogClient.getServiceNodes(serviceId); List instances = new ArrayList<>(); - for (ServiceNode node : nodes) { - instances.add(new DefaultServiceInstance(serviceId, node.getNode(), node.getServicePort(), false)); - } - return instances;*/ - return new ArrayList<>(); + addInstancesToList(instances, serviceId); + + return instances; } - public List getAllInstances() { - /*List instances = new ArrayList<>(); - - for (String serviceId : catalogClient.getServices().keySet()) { - List serviceNodes = catalogClient.getServiceNodes(serviceId); - if (serviceNodes != null) { - for (ServiceNode node : serviceNodes) { - instances.add(new DefaultServiceInstance(node.getServiceName(), node.getNode(), node.getServicePort(), false)); - } - } + private void addInstancesToList(List instances, String serviceId) { + Response> services = client.getCatalogService(serviceId, QueryParams.DEFAULT); + for (CatalogService service : services.getValue()) { + instances.add(new DefaultServiceInstance(serviceId, service.getNode(), service.getServicePort())); } - return instances;*/ - return new ArrayList<>(); + } + + @Override + public List getAllInstances() { + List instances = new ArrayList<>(); + + Response>> services = client.getCatalogServices(QueryParams.DEFAULT); + for (String serviceId : services.getValue().keySet()) { + addInstancesToList(instances, serviceId); + } + return instances; } @Override public List getServices() { - //return new ArrayList<>(catalogClient.getServices().keySet()); - return new ArrayList<>(); + return new ArrayList<>(client.getCatalogServices(QueryParams.DEFAULT).getValue().keySet()); } } diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java index 991bc123..96913c10 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java @@ -21,14 +21,13 @@ import static com.netflix.client.config.CommonClientConfigKey.EnableZoneAffinity import javax.annotation.PostConstruct; -import com.ecwid.consul.v1.ConsulClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.cloud.netflix.ribbon.ZonePreferenceServerListFilter; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import com.ecwid.consul.v1.ConsulClient; import com.netflix.client.config.IClientConfig; import com.netflix.config.ConfigurationManager; import com.netflix.config.DynamicPropertyFactory; @@ -56,7 +55,6 @@ public class ConsulRibbonClientConfiguration { protected static final String DEFAULT_NAMESPACE = "ribbon"; public ConsulRibbonClientConfiguration() { - System.out.println("here"); } public ConsulRibbonClientConfiguration(String serviceId) { @@ -66,13 +64,13 @@ public class ConsulRibbonClientConfiguration { @Bean @ConditionalOnMissingBean public ServerList ribbonServerList(IClientConfig config) { - ConsulServerList serverList = new ConsulServerList(client, serviceId); + ConsulServerList serverList = new ConsulServerList(client); + serverList.initWithNiwsConfig(config); return serverList; } @PostConstruct public void preprocess() { - // FIXME: what should this be? setProp(this.serviceId, DeploymentContextBasedVipAddresses.key(), this.serviceId); setProp(this.serviceId, EnableZoneAffinity.key(), "true"); } diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulServerList.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulServerList.java index e2eb94ab..513eaebd 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulServerList.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulServerList.java @@ -4,7 +4,6 @@ import com.ecwid.consul.v1.ConsulClient; import com.ecwid.consul.v1.QueryParams; import com.ecwid.consul.v1.Response; import com.ecwid.consul.v1.catalog.model.CatalogService; -import com.google.common.base.Function; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.AbstractServerList; @@ -17,19 +16,11 @@ import java.util.List; */ public class ConsulServerList extends AbstractServerList { - private ConsulClient client; + private final ConsulClient client; private String serviceId; - public ConsulServerList() { - } - - public ConsulServerList(ConsulClient client, String serviceId) { - this.client = client; - this.serviceId = serviceId; - } - - public void setClient(ConsulClient client) { + public ConsulServerList(ConsulClient client) { this.client = client; } @@ -56,13 +47,10 @@ public class ConsulServerList extends AbstractServerList { if (response.getValue() == null || response.getValue().isEmpty()) { return Collections.EMPTY_LIST; } - - List servers = new ArrayList<>(); + ArrayList servers = new ArrayList<>(); for (CatalogService service : response.getValue()) { - ConsulServer server = new ConsulServer(service); - servers.add(server); + servers.add(new ConsulServer(service)); } - return servers; } }