From 4e7d380435f1fe3496defef3b411e78a12895ae0 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Tue, 2 Dec 2014 16:46:46 -0700 Subject: [PATCH] updates for changes in s-c-commons --- .../discovery/ConsulLoadBalancerClient.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLoadBalancerClient.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLoadBalancerClient.java index 0d567d10..c666e187 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLoadBalancerClient.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLoadBalancerClient.java @@ -1,5 +1,6 @@ package org.springframework.cloud.consul.discovery; +import com.google.common.base.Throwables; import com.netflix.client.config.DefaultClientConfigImpl; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.*; @@ -9,7 +10,9 @@ import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; import org.springframework.cloud.client.loadbalancer.LoadBalancerRequest; import org.springframework.cloud.consul.client.CatalogClient; +import org.springframework.web.util.UriComponentsBuilder; +import java.net.URI; import java.util.concurrent.ConcurrentHashMap; /** @@ -50,7 +53,22 @@ public class ConsulLoadBalancerClient implements LoadBalancerClient { } @Override - public T choose(String serviceId, LoadBalancerRequest request) { - return request.apply(choose(serviceId)); + public T execute(String serviceId, LoadBalancerRequest request) { + try { + return request.apply(choose(serviceId)); + } catch (Exception e) { + Throwables.propagate(e); + return null; + } + } + + @Override + public URI reconstructURI(ServiceInstance instance, URI original) { + URI uri = UriComponentsBuilder.fromUri(original) + .host(instance.getHost()) + .port(instance.getPort()) + .build() + .toUri(); + return uri; } }