Skip to content

Commit

Permalink
Use RouteLocator interface.
Browse files Browse the repository at this point in the history
fixes gh-1030
  • Loading branch information
spencergibb committed May 23, 2016
1 parent c3f1210 commit d19a6f2
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public HasFeatures zuulFeature() {
}

@Bean
@ConditionalOnMissingBean
@ConditionalOnMissingBean(RouteLocator.class)
public RouteLocator routeLocator() {
return new SimpleRouteLocator(this.server.getServletPrefix(),
this.zuulProperties);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ public ServiceRouteMapper serviceRouteMapper() {
protected static class RoutesEndpointConfiguration {

@Bean
public RoutesEndpoint zuulEndpoint(DiscoveryClientRouteLocator routeLocator) {
public RoutesEndpoint zuulEndpoint(RouteLocator routeLocator) {
return new RoutesEndpoint(routeLocator);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,20 @@

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.IntegrationTest;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.TestRestTemplate;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.cloud.netflix.ribbon.SpringClientFactory;
import org.springframework.cloud.netflix.ribbon.StaticServerList;
import org.springframework.cloud.netflix.zuul.filters.RouteLocator;
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
import org.springframework.cloud.netflix.zuul.filters.discovery.DiscoveryClientRouteLocator;
import org.springframework.cloud.netflix.zuul.filters.route.RestClientRibbonCommand;
import org.springframework.cloud.netflix.zuul.filters.route.RestClientRibbonCommandFactory;
import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandContext;
Expand Down Expand Up @@ -82,6 +87,9 @@
@DirtiesContext
public class SampleZuulProxyApplicationTests extends ZuulProxyTestBase {

@Autowired
RouteLocator routeLocator;

@Test
public void simpleHostRouteWithTrailingSlash() {
this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/");
Expand Down Expand Up @@ -191,6 +199,12 @@ public void ribbonCommandFactoryOverridden() {
this.ribbonCommandFactory instanceof SampleZuulProxyApplication.MyRibbonCommandFactory);
}

@Test
public void routeLocatorOverridden() {
assertTrue("routeLocator not a MyRouteLocator",
this.routeLocator instanceof SampleZuulProxyApplication.MyRouteLocator);
}

}

// Don't use @SpringBootApplication because we don't want to component scan
Expand Down Expand Up @@ -238,6 +252,11 @@ public RibbonCommandFactory<?> ribbonCommandFactory(
return new MyRibbonCommandFactory(clientFactory);
}

@Bean
public RouteLocator routeLocator(DiscoveryClient discoveryClient, ZuulProperties zuulProperties) {
return new MyRouteLocator("/", discoveryClient, zuulProperties);
}

public static void main(String[] args) {
SpringApplication.run(SampleZuulProxyApplication.class, args);
}
Expand Down Expand Up @@ -299,4 +318,11 @@ public ServerList<Server> ribbonServerList() {
}

}

static class MyRouteLocator extends DiscoveryClientRouteLocator {

public MyRouteLocator(String servletPath, DiscoveryClient discovery, ZuulProperties properties) {
super(servletPath, discovery, properties);
}
}
}

0 comments on commit d19a6f2

Please sign in to comment.