From a0e51d06ea2a3aa7a171b996652c6a004d84fafb Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 9 May 2013 12:37:23 +0100 Subject: [PATCH] [bs-111] Extract TraceFilterConfiguration into separate file We want the traces to be collected for the main app, but reported in the management app, so the confi has to be separate. [#49578819] --- .../ActuatorAutoConfiguration.java | 5 +- .../ManagementConfiguration.java | 4 +- .../autoconfigure/TraceConfiguration.java | 35 +++-------- .../TraceFilterConfiguration.java | 62 +++++++++++++++++++ ...TraceEndpoint.java => TraceEndpoints.java} | 4 +- 5 files changed, 76 insertions(+), 34 deletions(-) create mode 100644 spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceFilterConfiguration.java rename spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/trace/{TraceEndpoint.java => TraceEndpoints.java} (94%) diff --git a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java index 3bf53b2c15..58c0e0ac5a 100644 --- a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java +++ b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ActuatorAutoConfiguration.java @@ -40,8 +40,9 @@ import com.fasterxml.jackson.databind.SerializationFeature; */ @Configuration @Import({ ManagementConfiguration.class, MetricConfiguration.class, - ServerConfiguration.class, SecurityConfiguration.class, TraceConfiguration.class, - MetricFilterConfiguration.class, AuditConfiguration.class }) + ServerConfiguration.class, SecurityConfiguration.class, + TraceFilterConfiguration.class, MetricFilterConfiguration.class, + AuditConfiguration.class }) public class ActuatorAutoConfiguration extends WebMvcConfigurationSupport { @Override diff --git a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ManagementConfiguration.java b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ManagementConfiguration.java index 9f54e83091..534080917d 100644 --- a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ManagementConfiguration.java +++ b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/ManagementConfiguration.java @@ -51,7 +51,7 @@ public class ManagementConfiguration implements ApplicationContextAware, Disposa @ConditionalOnExpression("${server.port:8080} == ${management.port:${server.port:8080}}") @Configuration @Import({ VarzConfiguration.class, HealthzConfiguration.class, - ShutdownConfiguration.class }) + ShutdownConfiguration.class, TraceConfiguration.class }) public static class ManagementEndpointsConfiguration { } @@ -78,7 +78,7 @@ public class ManagementConfiguration implements ApplicationContextAware, Disposa context.setParent(this.parent); context.register(ManagementServerConfiguration.class, VarzConfiguration.class, HealthzConfiguration.class, - ShutdownConfiguration.class); + ShutdownConfiguration.class, TraceConfiguration.class); context.refresh(); this.context = context; } diff --git a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceConfiguration.java b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceConfiguration.java index 72c0af444a..7ae9c2f3f9 100644 --- a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceConfiguration.java +++ b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceConfiguration.java @@ -18,13 +18,9 @@ package org.springframework.bootstrap.actuate.autoconfigure; import javax.servlet.Servlet; -import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.bootstrap.actuate.trace.InMemoryTraceRepository; -import org.springframework.bootstrap.actuate.trace.TraceEndpoint; +import org.springframework.bootstrap.actuate.trace.TraceEndpoints; import org.springframework.bootstrap.actuate.trace.TraceRepository; -import org.springframework.bootstrap.actuate.trace.WebRequestLoggingFilter; import org.springframework.bootstrap.context.annotation.ConditionalOnClass; import org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean; import org.springframework.bootstrap.context.annotation.EnableAutoConfiguration; @@ -38,33 +34,16 @@ import org.springframework.web.servlet.DispatcherServlet; * @author Dave Syer */ @Configuration +@ConditionalOnClass({ Servlet.class, DispatcherServlet.class }) +@ConditionalOnMissingBean({ TraceEndpoints.class }) public class TraceConfiguration { - @Autowired(required = false) - private TraceRepository traceRepository = new InMemoryTraceRepository(); - - @Value("${management.dump_requests:false}") - private boolean dumpRequests; - - @Bean - @ConditionalOnMissingBean(TraceRepository.class) - protected TraceRepository traceRepository() { - return this.traceRepository; - } - - @Bean - @ConditionalOnClass({ Servlet.class, DispatcherServlet.class }) - @ConditionalOnMissingBean({ TraceEndpoint.class }) - public TraceEndpoint traceEndpoint() { - return new TraceEndpoint(this.traceRepository); - } + @Autowired + private TraceRepository traceRepository; @Bean - @ConditionalOnClass({ Servlet.class, DispatcherServlet.class }) - public WebRequestLoggingFilter securityFilterPostProcessor(BeanFactory beanFactory) { - WebRequestLoggingFilter filter = new WebRequestLoggingFilter(this.traceRepository); - filter.setDumpRequests(this.dumpRequests); - return filter; + public TraceEndpoints traceEndpoint() { + return new TraceEndpoints(this.traceRepository); } } diff --git a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceFilterConfiguration.java b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceFilterConfiguration.java new file mode 100644 index 0000000000..168356d604 --- /dev/null +++ b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/autoconfigure/TraceFilterConfiguration.java @@ -0,0 +1,62 @@ +/* + * Copyright 2012-2013 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.bootstrap.actuate.autoconfigure; + +import javax.servlet.Servlet; + +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.bootstrap.actuate.trace.InMemoryTraceRepository; +import org.springframework.bootstrap.actuate.trace.TraceRepository; +import org.springframework.bootstrap.actuate.trace.WebRequestLoggingFilter; +import org.springframework.bootstrap.context.annotation.ConditionalOnClass; +import org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean; +import org.springframework.bootstrap.context.annotation.EnableAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.DispatcherServlet; + +/** + * {@link EnableAutoConfiguration Auto-configuration} for /trace endpoint. + * + * @author Dave Syer + */ +@Configuration +public class TraceFilterConfiguration { + + @Autowired(required = false) + private TraceRepository traceRepository = new InMemoryTraceRepository(); + + @Value("${management.dump_requests:false}") + private boolean dumpRequests; + + @Bean + @ConditionalOnMissingBean(TraceRepository.class) + protected TraceRepository traceRepository() { + return this.traceRepository; + } + + @Bean + @ConditionalOnClass({ Servlet.class, DispatcherServlet.class }) + public WebRequestLoggingFilter securityFilterPostProcessor(BeanFactory beanFactory) { + WebRequestLoggingFilter filter = new WebRequestLoggingFilter(this.traceRepository); + filter.setDumpRequests(this.dumpRequests); + return filter; + } + +} diff --git a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/trace/TraceEndpoint.java b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/trace/TraceEndpoints.java similarity index 94% rename from spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/trace/TraceEndpoint.java rename to spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/trace/TraceEndpoints.java index ae748bc926..49bcaa44cb 100644 --- a/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/trace/TraceEndpoint.java +++ b/spring-bootstrap-actuator/src/main/java/org/springframework/bootstrap/actuate/trace/TraceEndpoints.java @@ -29,14 +29,14 @@ import org.springframework.web.bind.annotation.ResponseBody; * @author Dave Syer */ @Controller -public class TraceEndpoint { +public class TraceEndpoints { private TraceRepository tracer; /** * @param tracer */ - public TraceEndpoint(TraceRepository tracer) { + public TraceEndpoints(TraceRepository tracer) { super(); this.tracer = tracer; }