From 6d22a407cc5cc70e539d1b119caf427c6e1f054d Mon Sep 17 00:00:00 2001 From: pahli Date: Wed, 31 May 2017 22:25:51 +0200 Subject: [PATCH] use @ConfigurationProperties --- .../ribbon/DefaultServerIntrospector.java | 8 +++-- .../ribbon/ServerIntrospectorProperties.java | 32 +++++++++++++++++++ .../DefaultServerIntrospectorDefaultTest.java | 2 ++ .../ribbon/DefaultServerIntrospectorTest.java | 8 +++-- 4 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/ServerIntrospectorProperties.java diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospector.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospector.java index 11e515e7..39ef4724 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospector.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospector.java @@ -17,7 +17,9 @@ package org.springframework.cloud.netflix.ribbon; import com.netflix.loadbalancer.Server; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; import java.util.Collections; import java.util.List; @@ -28,12 +30,12 @@ import java.util.Map; */ public class DefaultServerIntrospector implements ServerIntrospector { - @Value("#{T(java.util.Arrays).asList('${ribbon.securePorts:443,8443}')}") - private List securePorts; + @Autowired + ServerIntrospectorProperties serverIntrospectorProperties; @Override public boolean isSecure(Server server) { - return securePorts.contains(server.getPort()); + return serverIntrospectorProperties.getSecurePorts().contains(server.getPort()); } @Override diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/ServerIntrospectorProperties.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/ServerIntrospectorProperties.java new file mode 100644 index 00000000..e5492f78 --- /dev/null +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/ServerIntrospectorProperties.java @@ -0,0 +1,32 @@ +/* + * Copyright 2013-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.netflix.ribbon; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Arrays; +import java.util.List; + +/** + * @author Rico Pahlisch + */ +@Data +@ConfigurationProperties("ribbon") +public class ServerIntrospectorProperties { + private List securePorts = Arrays.asList(443,8443); +} diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorDefaultTest.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorDefaultTest.java index 0636d066..d36945d8 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorDefaultTest.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorDefaultTest.java @@ -21,6 +21,7 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -52,6 +53,7 @@ public class DefaultServerIntrospectorDefaultTest { } @Configuration + @EnableConfigurationProperties(ServerIntrospectorProperties.class) protected static class TestConfiguration { @Bean public DefaultServerIntrospector defaultServerIntrospector(){ diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorTest.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorTest.java index 3bc9f404..4e44a1e3 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorTest.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/DefaultServerIntrospectorTest.java @@ -21,6 +21,8 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -35,7 +37,7 @@ import static org.mockito.Mockito.when; */ @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = DefaultServerIntrospectorTest.TestConfiguration.class) -@TestPropertySource(properties = { "ribbon.securePorts=12345" }) +@TestPropertySource(properties = { "ribbon.securePorts=12345,556" }) public class DefaultServerIntrospectorTest { @Autowired @@ -46,12 +48,14 @@ public class DefaultServerIntrospectorTest { Server serverMock = mock(Server.class); when(serverMock.getPort()).thenReturn(12345); Assert.assertTrue(serverIntrospector.isSecure(serverMock)); - + when(serverMock.getPort()).thenReturn(556); + Assert.assertTrue(serverIntrospector.isSecure(serverMock)); when(serverMock.getPort()).thenReturn(443); Assert.assertFalse(serverIntrospector.isSecure(serverMock)); } @Configuration + @EnableConfigurationProperties(ServerIntrospectorProperties.class) protected static class TestConfiguration { @Bean public DefaultServerIntrospector defaultServerIntrospector(){