diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java index ea26bb9dc..230c1c350 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java @@ -25,7 +25,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.sleuth.autoconfig.TraceAutoConfiguration; import org.springframework.context.annotation.Bean; @@ -57,15 +56,13 @@ public class TraceWebAutoConfiguration { @ConditionalOnBean(ManagementServerProperties.class) public SkipPatternProvider skipPatternForManagementServerProperties( final ManagementServerProperties managementServerProperties, - final SleuthWebProperties sleuthWebProperties, - ServerProperties serverProperties) { + final SleuthWebProperties sleuthWebProperties) { return new SkipPatternProvider() { @Override public Pattern skipPattern() { return getPatternForManagementServerProperties( managementServerProperties, - sleuthWebProperties, - serverProperties); + sleuthWebProperties); } }; } @@ -76,31 +73,24 @@ public class TraceWebAutoConfiguration { */ static Pattern getPatternForManagementServerProperties( ManagementServerProperties managementServerProperties, - SleuthWebProperties sleuthWebProperties, ServerProperties serverProperties) { + SleuthWebProperties sleuthWebProperties) { String skipPattern = sleuthWebProperties.getSkipPattern(); String additionalSkipPattern = sleuthWebProperties.getAdditionalSkipPattern(); String contextPath = managementServerProperties.getServlet().getContextPath(); - String servletContextPath = serverProperties.getServlet().getContextPath(); + if (StringUtils.hasText(skipPattern) && StringUtils.hasText(contextPath)) { - String contextPathPattern = skipPattern + "|" + contextPath + ".*"; - contextPathPattern = StringUtils.hasText(servletContextPath) ? - servletContextPath + ".*|" + contextPathPattern : contextPathPattern; - return Pattern.compile(combinedPattern(contextPathPattern, additionalSkipPattern)); + return Pattern.compile(combinedPattern(skipPattern + "|" + contextPath + ".*", additionalSkipPattern)); } else if (StringUtils.hasText(contextPath)) { - String contextPathPattern = contextPath + ".*"; - contextPathPattern = StringUtils.hasText(servletContextPath) ? - servletContextPath + ".*|" + contextPathPattern : contextPathPattern; - return Pattern.compile(combinedPattern(contextPathPattern, additionalSkipPattern)); + return Pattern.compile(combinedPattern(contextPath + ".*", additionalSkipPattern)); } - return defaultSkipPattern(serverProperties, skipPattern, additionalSkipPattern); + return defaultSkipPattern(skipPattern, additionalSkipPattern); } @Bean @ConditionalOnMissingBean(ManagementServerProperties.class) - public SkipPatternProvider defaultSkipPatternBeanIfManagementServerPropsArePresent(SleuthWebProperties sleuthWebProperties, - ServerProperties serverProperties) { - return defaultSkipPatternProvider(serverProperties, sleuthWebProperties.getSkipPattern(), + public SkipPatternProvider defaultSkipPatternBeanIfManagementServerPropsArePresent(SleuthWebProperties sleuthWebProperties) { + return defaultSkipPatternProvider(sleuthWebProperties.getSkipPattern(), sleuthWebProperties.getAdditionalSkipPattern()); } } @@ -109,24 +99,18 @@ public class TraceWebAutoConfiguration { @ConditionalOnMissingClass("org.springframework.boot.actuate.autoconfigure.ManagementServerProperties") @ConditionalOnMissingBean( SkipPatternProvider.class) - public SkipPatternProvider defaultSkipPatternBean(SleuthWebProperties sleuthWebProperties, - ServerProperties serverProperties) { - return defaultSkipPatternProvider(serverProperties, sleuthWebProperties.getSkipPattern(), + public SkipPatternProvider defaultSkipPatternBean(SleuthWebProperties sleuthWebProperties) { + return defaultSkipPatternProvider(sleuthWebProperties.getSkipPattern(), sleuthWebProperties.getAdditionalSkipPattern()); } - private static SkipPatternProvider defaultSkipPatternProvider(ServerProperties serverProperties, + private static SkipPatternProvider defaultSkipPatternProvider( final String skipPattern, final String additionalSkipPattern) { - return () -> defaultSkipPattern(serverProperties, skipPattern, additionalSkipPattern); + return () -> defaultSkipPattern(skipPattern, additionalSkipPattern); } - private static Pattern defaultSkipPattern(ServerProperties serverProperties, - String skipPattern, String additionalSkipPattern) { - String combinedPattern = combinedPattern(skipPattern, additionalSkipPattern); - if (StringUtils.hasText(serverProperties.getServlet().getContextPath())) { - combinedPattern = serverProperties.getServlet().getContextPath() + ".*" + "|" + combinedPattern; - } - return Pattern.compile(combinedPattern); + private static Pattern defaultSkipPattern(String skipPattern, String additionalSkipPattern) { + return Pattern.compile(combinedPattern(skipPattern, additionalSkipPattern)); } private static String combinedPattern(String skipPattern, String additionalSkipPattern) { diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SkipPatternProviderConfigTest.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SkipPatternProviderConfigTest.java index ddc1386f7..7df40583b 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SkipPatternProviderConfigTest.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/SkipPatternProviderConfigTest.java @@ -20,7 +20,6 @@ import java.util.regex.Pattern; import org.junit.Test; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties; -import org.springframework.boot.autoconfigure.web.ServerProperties; import static org.assertj.core.api.BDDAssertions.then; @@ -34,79 +33,39 @@ public class SkipPatternProviderConfigTest { SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); sleuthWebProperties.setSkipPattern("foo.*|bar.*"); Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerPropertiesWithContextPath(), sleuthWebProperties, new ServerProperties()); + managementServerPropertiesWithContextPath(), sleuthWebProperties); then(pattern.pattern()).isEqualTo("foo.*|bar.*|/management/context.*"); } - @Test - public void should_combine_skip_pattern_management_context_and_servlet_context() throws Exception { - SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); - sleuthWebProperties.setSkipPattern("foo.*|bar.*"); - ServerProperties serverProperties = new ServerProperties(); - serverProperties.getServlet().setContextPath("baz"); - Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerPropertiesWithContextPath(), sleuthWebProperties, serverProperties); - - then(pattern.pattern()).isEqualTo("baz.*|foo.*|bar.*|/management/context.*"); - } - @Test public void should_combine_skip_pattern_management_context_and_additional_pattern_when_all_are_not_empty() throws Exception { SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); sleuthWebProperties.setSkipPattern("foo.*|bar.*"); sleuthWebProperties.setAdditionalSkipPattern("baz.*|faz.*"); Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerPropertiesWithContextPath(), sleuthWebProperties, new ServerProperties()); + managementServerPropertiesWithContextPath(), sleuthWebProperties); then(pattern.pattern()).isEqualTo("foo.*|bar.*|/management/context.*|baz.*|faz.*"); } - @Test - public void should_combine_skip_pattern_management_context_servlet_context_and_additional_pattern_when_all_are_not_empty() throws Exception { - SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); - sleuthWebProperties.setSkipPattern("foo.*|bar.*"); - sleuthWebProperties.setAdditionalSkipPattern("baz.*|faz.*"); - ServerProperties serverProperties = new ServerProperties(); - serverProperties.getServlet().setContextPath("bazzz"); - Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerPropertiesWithContextPath(), sleuthWebProperties, serverProperties); - - then(pattern.pattern()).isEqualTo("bazzz.*|foo.*|bar.*|/management/context.*|baz.*|faz.*"); - } - @Test public void should_pick_skip_pattern_when_its_not_empty_and_management_context_is_empty() throws Exception { SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); sleuthWebProperties.setSkipPattern("foo.*|bar.*"); - Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties(new ManagementServerProperties(), - sleuthWebProperties, new ServerProperties()); + Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties(new ManagementServerProperties(), sleuthWebProperties); then(pattern.pattern()).isEqualTo("foo.*|bar.*"); } - @Test - public void should_pick_skip_pattern_with_servlet_context_path_when_its_not_empty_and_management_context_is_empty() throws Exception { - SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); - sleuthWebProperties.setSkipPattern("foo.*|bar.*"); - ServerProperties serverProperties = new ServerProperties(); - serverProperties.getServlet().setContextPath("bla"); - - Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties(new ManagementServerProperties(), - sleuthWebProperties, serverProperties); - - then(pattern.pattern()).isEqualTo("bla.*|foo.*|bar.*"); - } - @Test public void should_pick_skip_pattern_and_additional_pattern_when_its_not_empty_and_management_context_is_empty() throws Exception { SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); sleuthWebProperties.setSkipPattern("foo.*|bar.*"); sleuthWebProperties.setAdditionalSkipPattern("baz.*|faz.*"); - Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties(new ManagementServerProperties(), - sleuthWebProperties, new ServerProperties()); + Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties(new ManagementServerProperties(), sleuthWebProperties); then(pattern.pattern()).isEqualTo("foo.*|bar.*|baz.*|faz.*"); } @@ -117,24 +76,11 @@ public class SkipPatternProviderConfigTest { sleuthWebProperties.setSkipPattern(""); Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerPropertiesWithContextPath(), sleuthWebProperties, new ServerProperties()); + managementServerPropertiesWithContextPath(), sleuthWebProperties); then(pattern.pattern()).isEqualTo("/management/context.*"); } - @Test - public void should_pick_management_context_and_servlet_context_when_skip_patterns_is_empty_and_context_path_is_not() throws Exception { - SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); - sleuthWebProperties.setSkipPattern(""); - ServerProperties serverProperties = new ServerProperties(); - serverProperties.getServlet().setContextPath("baz"); - - Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerPropertiesWithContextPath(), sleuthWebProperties, serverProperties); - - then(pattern.pattern()).isEqualTo("baz.*|/management/context.*"); - } - @Test public void should_pick_management_context_and_additional_pattern_when_skip_patterns_is_empty_and_context_path_is_not() throws Exception { SleuthWebProperties sleuthWebProperties = new SleuthWebProperties(); @@ -142,7 +88,7 @@ public class SkipPatternProviderConfigTest { sleuthWebProperties.setAdditionalSkipPattern("baz.*|faz.*"); Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerPropertiesWithContextPath(), sleuthWebProperties, new ServerProperties()); + managementServerPropertiesWithContextPath(), sleuthWebProperties); then(pattern.pattern()).isEqualTo("/management/context.*|baz.*|faz.*"); } @@ -155,7 +101,7 @@ public class SkipPatternProviderConfigTest { managementServerProperties.getServlet().setContextPath(""); Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerProperties, sleuthWebProperties, new ServerProperties()); + managementServerProperties, sleuthWebProperties); then(pattern.pattern()).isEqualTo(SleuthWebProperties.DEFAULT_SKIP_PATTERN); } @@ -169,7 +115,7 @@ public class SkipPatternProviderConfigTest { managementServerProperties.getServlet().setContextPath(""); Pattern pattern = TraceWebAutoConfiguration.SkipPatternProviderConfig.getPatternForManagementServerProperties( - managementServerProperties, sleuthWebProperties, new ServerProperties()); + managementServerProperties, sleuthWebProperties); then(pattern.pattern()).isEqualTo(SleuthWebProperties.DEFAULT_SKIP_PATTERN + "|baz.*|faz.*"); }