diff --git a/docs/src/main/asciidoc/spring-cloud-netflix.adoc b/docs/src/main/asciidoc/spring-cloud-netflix.adoc index 8d5a72ee..cc1a3930 100644 --- a/docs/src/main/asciidoc/spring-cloud-netflix.adoc +++ b/docs/src/main/asciidoc/spring-cloud-netflix.adoc @@ -1194,7 +1194,7 @@ class FooController { private FooClient adminClient; - @Autowired + @Autowired public FooController( Decoder decoder, Encoder encoder, Client client) { this.fooClient = Feign.builder().client(client) @@ -1227,7 +1227,7 @@ To disable Hystrix support on a per-client basis create a vanilla `Feign.Builder ---- @Configuration public class FooConfiguration { - @Bean + @Bean @Scope("prototype") public Feign.Builder feignBuilder() { return Feign.builder(); diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java index 7261ec3f..3c068998 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java @@ -49,6 +49,7 @@ import com.netflix.eureka.util.StatusInfo; /** * @author Spencer Gibb + * @author Gang Li */ @Controller @RequestMapping("${eureka.dashboard.path:/}") @@ -287,12 +288,12 @@ public class EurekaController { private String scrubBasicAuth(String urlList){ String[] urls=urlList.split(","); - String filteredUrls=""; + StringBuilder filteredUrls = new StringBuilder(); for(String u : urls){ if(u.contains("@")){ - filteredUrls+=u.substring(0,u.indexOf("//")+2)+u.substring(u.indexOf("@")+1,u.length())+","; + filteredUrls.append(u.substring(0,u.indexOf("//")+2)).append(u.substring(u.indexOf("@")+1,u.length())).append(","); }else{ - filteredUrls+=u+","; + filteredUrls.append(u).append(","); } } return filteredUrls.substring(0,filteredUrls.length()-1); diff --git a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/EurekaControllerReplicasTests.java b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/EurekaControllerReplicasTests.java index 80ab963f..4ce33e4f 100644 --- a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/EurekaControllerReplicasTests.java +++ b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/EurekaControllerReplicasTests.java @@ -23,6 +23,15 @@ public class EurekaControllerReplicasTests { String authList1 = "http://user:pwd@test1.com"; String authList2 = authList1 + ",http://user2:pwd2@test2.com"; + String combinationAuthList1 = "http://test1.com,http://user2:pwd2@test2.com"; + String combinationAuthList2 = "http://test3.com,http://user4:pwd4@test4.com"; + + String combinationNoAuthList1 = "http://test1.com,http://test2.com"; + String combinationNoAuthList2 = "http://test3.com,http://test4.com"; + + String totalAutoList = combinationAuthList1 + "," + combinationAuthList2; + String totalNoAutoList = combinationNoAuthList1 + "," + combinationNoAuthList2; + String empty = new String(); private ApplicationInfoManager original; @@ -81,4 +90,24 @@ public class EurekaControllerReplicasTests { } + @Test + public void testFilterReplicasAuthWithCombinationList() throws Exception { + Map model = new HashMap<>(); + StatusInfo statusInfo = StatusInfo.Builder.newBuilder() + .add("registered-replicas", totalAutoList) + .add("available-replicas", combinationAuthList1) + .add("unavailable-replicas", combinationAuthList2) + .withInstanceInfo(instanceInfo).build(); + EurekaController controller = new EurekaController(null); + + controller.filterReplicas(model, statusInfo); + + @SuppressWarnings("unchecked") + Map results = (Map) model.get("applicationStats"); + assertEquals(totalNoAutoList, results.get("registered-replicas")); + assertEquals(combinationNoAuthList1, results.get("available-replicas")); + assertEquals(combinationNoAuthList2, results.get("unavailable-replicas")); + + } + }