Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
aaa2ff54
Commit
aaa2ff54
authored
Jun 02, 2015
by
Phillip Webb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extract @ConditionalOnEnabledEndpoint
Extract @ConditionalOnEnabledEndpoint to a top level class. See gh-2798
parent
968b68c3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
144 additions
and
85 deletions
+144
-85
EndpointWebMvcAutoConfiguration.java
...ctuate/autoconfigure/EndpointWebMvcAutoConfiguration.java
+1
-85
ConditionalOnEnabledEndpoint.java
.../boot/actuate/condition/ConditionalOnEnabledEndpoint.java
+53
-0
OnEnabledEndpointCondition.java
...rk/boot/actuate/condition/OnEnabledEndpointCondition.java
+70
-0
package-info.java
.../springframework/boot/actuate/condition/package-info.java
+20
-0
No files found.
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointWebMvcAutoConfiguration.java
View file @
aaa2ff54
...
...
@@ -17,10 +17,6 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
;
import
java.io.IOException
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
java.util.List
;
import
javax.servlet.Filter
;
...
...
@@ -38,6 +34,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import
org.springframework.beans.factory.SmartInitializingSingleton
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.actuate.autoconfigure.ManagementServerProperties.Security
;
import
org.springframework.boot.actuate.condition.ConditionalOnEnabledEndpoint
;
import
org.springframework.boot.actuate.endpoint.Endpoint
;
import
org.springframework.boot.actuate.endpoint.EnvironmentEndpoint
;
import
org.springframework.boot.actuate.endpoint.HealthEndpoint
;
...
...
@@ -53,17 +50,14 @@ import org.springframework.boot.actuate.endpoint.mvc.ShutdownMvcEndpoint;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionOutcome
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
;
import
org.springframework.boot.autoconfigure.condition.SpringBootCondition
;
import
org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.ServerProperties
;
import
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration
;
import
org.springframework.boot.bind.RelaxedPropertyResolver
;
import
org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
;
import
org.springframework.boot.context.embedded.EmbeddedServletContainerException
;
import
org.springframework.boot.context.embedded.EmbeddedWebApplicationContext
;
...
...
@@ -73,14 +67,10 @@ import org.springframework.context.ApplicationContextAware;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.event.ContextClosedEvent
;
import
org.springframework.core.annotation.AnnotationAttributes
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.PropertySource
;
import
org.springframework.core.type.AnnotatedTypeMetadata
;
import
org.springframework.web.context.WebApplicationContext
;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
org.springframework.web.servlet.DispatcherServlet
;
...
...
@@ -343,78 +333,4 @@ public class EndpointWebMvcAutoConfiguration implements ApplicationContextAware,
}
/**
* {@link Conditional} that checks whether or not an endpoint is enabled. Matches if
* the value of the {@code endpoints.<name>.enabled} property is {@code true}. Does
* not match if the property's value or {@code enabledByDefault} is {@code false}.
* Otherwise, matches if the value of the {@code endpoints.enabled} property is
* {@code true} or if the property is not configured.
*
* @since 1.2.4
*/
@Conditional
(
OnEnabledEndpointCondition
.
class
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
METHOD
)
public
static
@interface
ConditionalOnEnabledEndpoint
{
/**
* The name of the endpoint.
* @return The name of the endpoint
*/
public
String
value
();
/**
* Returns whether or not the endpoint is enabled by default.
* @return {@code true} if the endpoint is enabled by default, otherwise
* {@code false}
*/
public
boolean
enabledByDefault
()
default
true
;
}
private
static
class
OnEnabledEndpointCondition
extends
SpringBootCondition
{
@Override
public
ConditionOutcome
getMatchOutcome
(
ConditionContext
context
,
AnnotatedTypeMetadata
metadata
)
{
AnnotationAttributes
annotationAttributes
=
AnnotationAttributes
.
fromMap
(
metadata
.
getAnnotationAttributes
(
ConditionalOnEnabledEndpoint
.
class
.
getName
()));
String
endpointName
=
annotationAttributes
.
getString
(
"value"
);
boolean
enabledByDefault
=
annotationAttributes
.
getBoolean
(
"enabledByDefault"
);
ConditionOutcome
specificEndpointOutcome
=
determineSpecificEndpointOutcome
(
endpointName
,
enabledByDefault
,
context
);
if
(
specificEndpointOutcome
!=
null
)
{
return
specificEndpointOutcome
;
}
return
determineAllEndpointsOutcome
(
context
);
}
private
ConditionOutcome
determineSpecificEndpointOutcome
(
String
endpointName
,
boolean
enabledByDefault
,
ConditionContext
context
)
{
RelaxedPropertyResolver
endpointPropertyResolver
=
new
RelaxedPropertyResolver
(
context
.
getEnvironment
(),
"endpoints."
+
endpointName
+
"."
);
if
(
endpointPropertyResolver
.
containsProperty
(
"enabled"
)
||
!
enabledByDefault
)
{
boolean
match
=
endpointPropertyResolver
.
getProperty
(
"enabled"
,
Boolean
.
class
,
enabledByDefault
);
return
new
ConditionOutcome
(
match
,
"The "
+
endpointName
+
" is "
+
(
match
?
"enabled"
:
"disabled"
));
}
return
null
;
}
private
ConditionOutcome
determineAllEndpointsOutcome
(
ConditionContext
context
)
{
RelaxedPropertyResolver
allEndpointsPropertyResolver
=
new
RelaxedPropertyResolver
(
context
.
getEnvironment
(),
"endpoints."
);
boolean
match
=
Boolean
.
valueOf
(
allEndpointsPropertyResolver
.
getProperty
(
"enabled"
,
"true"
));
return
new
ConditionOutcome
(
match
,
"All endpoints are "
+
(
match
?
"enabled"
:
"disabled"
)
+
" by default"
);
}
}
}
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/condition/ConditionalOnEnabledEndpoint.java
0 → 100644
View file @
aaa2ff54
/*
* Copyright 2012-2015 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
.
boot
.
actuate
.
condition
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
org.springframework.context.annotation.Conditional
;
/**
* {@link Conditional} that checks whether or not an endpoint is enabled. Matches if the
* value of the {@code endpoints.<name>.enabled} property is {@code true}. Does not match
* if the property's value or {@code enabledByDefault} is {@code false}. Otherwise,
* matches if the value of the {@code endpoints.enabled} property is {@code true} or if
* the property is not configured.
*
* @author Andy Wilkinson
* @since 1.2.4
*/
@Conditional
(
OnEnabledEndpointCondition
.
class
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
METHOD
)
public
@interface
ConditionalOnEnabledEndpoint
{
/**
* The name of the endpoint.
* @return The name of the endpoint
*/
public
String
value
();
/**
* Returns whether or not the endpoint is enabled by default.
* @return {@code true} if the endpoint is enabled by default, otherwise {@code false}
*/
public
boolean
enabledByDefault
()
default
true
;
}
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/condition/OnEnabledEndpointCondition.java
0 → 100644
View file @
aaa2ff54
/*
* Copyright 2012-2015 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
.
boot
.
actuate
.
condition
;
import
org.springframework.boot.autoconfigure.condition.ConditionOutcome
;
import
org.springframework.boot.autoconfigure.condition.SpringBootCondition
;
import
org.springframework.boot.bind.RelaxedPropertyResolver
;
import
org.springframework.context.annotation.Condition
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.core.annotation.AnnotationAttributes
;
import
org.springframework.core.type.AnnotatedTypeMetadata
;
/**
* {@link Condition} that checks whether or not an endpoint is enabled.
*
* @author Andy Wilkinson
*/
class
OnEnabledEndpointCondition
extends
SpringBootCondition
{
@Override
public
ConditionOutcome
getMatchOutcome
(
ConditionContext
context
,
AnnotatedTypeMetadata
metadata
)
{
AnnotationAttributes
annotationAttributes
=
AnnotationAttributes
.
fromMap
(
metadata
.
getAnnotationAttributes
(
ConditionalOnEnabledEndpoint
.
class
.
getName
()));
String
endpointName
=
annotationAttributes
.
getString
(
"value"
);
boolean
enabledByDefault
=
annotationAttributes
.
getBoolean
(
"enabledByDefault"
);
ConditionOutcome
outcome
=
determineEndpointOutcome
(
endpointName
,
enabledByDefault
,
context
);
if
(
outcome
!=
null
)
{
return
outcome
;
}
return
determineAllEndpointsOutcome
(
context
);
}
private
ConditionOutcome
determineEndpointOutcome
(
String
endpointName
,
boolean
enabledByDefault
,
ConditionContext
context
)
{
RelaxedPropertyResolver
resolver
=
new
RelaxedPropertyResolver
(
context
.
getEnvironment
(),
"endpoints."
+
endpointName
+
"."
);
if
(
resolver
.
containsProperty
(
"enabled"
)
||
!
enabledByDefault
)
{
boolean
match
=
resolver
.
getProperty
(
"enabled"
,
Boolean
.
class
,
enabledByDefault
);
return
new
ConditionOutcome
(
match
,
"The "
+
endpointName
+
" is "
+
(
match
?
"enabled"
:
"disabled"
));
}
return
null
;
}
private
ConditionOutcome
determineAllEndpointsOutcome
(
ConditionContext
context
)
{
RelaxedPropertyResolver
resolver
=
new
RelaxedPropertyResolver
(
context
.
getEnvironment
(),
"endpoints."
);
boolean
match
=
Boolean
.
valueOf
(
resolver
.
getProperty
(
"enabled"
,
"true"
));
return
new
ConditionOutcome
(
match
,
"All endpoints are "
+
(
match
?
"enabled"
:
"disabled"
)
+
" by default"
);
}
}
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/condition/package-info.java
0 → 100644
View file @
aaa2ff54
/*
* Copyright 2012-2015 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.
*/
/**
* {@code @Condition} annotations and supporting classes.
*/
package
org
.
springframework
.
boot
.
actuate
.
condition
;
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment