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
ad307678
Commit
ad307678
authored
May 13, 2013
by
Dave Syer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[bs-53] Aid for users debugging auto-configuration failures
Add logging to Condition implementations. [Fixes #48389533]
parent
6fb8ae3d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
54 additions
and
2 deletions
+54
-2
EmbeddedDatabaseAutoConfiguration.java
...autoconfigure/jdbc/EmbeddedDatabaseAutoConfiguration.java
+12
-0
AbstractOnBeanCondition.java
...bootstrap/context/annotation/AbstractOnBeanCondition.java
+15
-1
ExpressionCondition.java
...ork/bootstrap/context/annotation/ExpressionCondition.java
+5
-1
OnClassCondition.java
...mework/bootstrap/context/annotation/OnClassCondition.java
+11
-0
OnResourceCondition.java
...ork/bootstrap/context/annotation/OnResourceCondition.java
+11
-0
No files found.
spring-bootstrap/src/main/java/org/springframework/bootstrap/autoconfigure/jdbc/EmbeddedDatabaseAutoConfiguration.java
View file @
ad307678
...
...
@@ -22,6 +22,8 @@ import java.util.Map;
import
javax.annotation.PostConstruct
;
import
javax.sql.DataSource
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean
;
import
org.springframework.bootstrap.context.annotation.EnableAutoConfiguration
;
...
...
@@ -48,6 +50,9 @@ import org.springframework.util.ClassUtils;
@ConditionalOnMissingBean
(
DataSource
.
class
)
public
class
EmbeddedDatabaseAutoConfiguration
{
private
static
Log
logger
=
LogFactory
.
getLog
(
EmbeddedDatabaseAutoConfiguration
.
class
);
private
static
final
Map
<
EmbeddedDatabaseType
,
String
>
EMBEDDED_DATABASE_TYPE_CLASSES
;
static
{
EMBEDDED_DATABASE_TYPE_CLASSES
=
new
LinkedHashMap
<
EmbeddedDatabaseType
,
String
>();
...
...
@@ -100,8 +105,15 @@ public class EmbeddedDatabaseAutoConfiguration {
if
(!
ClassUtils
.
isPresent
(
"org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType"
,
context
.
getClassLoader
()))
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Spring JDBC not detected (EmbeddedDatabaseCondition evaluated false)."
);
}
return
false
;
}
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Spring JDBC detected (embedded database type is "
+
getEmbeddedDatabaseType
()
+
")."
);
}
return
getEmbeddedDatabaseType
()
!=
null
;
}
}
...
...
spring-bootstrap/src/main/java/org/springframework/bootstrap/context/annotation/AbstractOnBeanCondition.java
View file @
ad307678
...
...
@@ -19,6 +19,8 @@ package org.springframework.bootstrap.context.annotation;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.beans.factory.BeanFactoryUtils
;
import
org.springframework.context.annotation.Condition
;
import
org.springframework.context.annotation.ConditionContext
;
...
...
@@ -34,6 +36,8 @@ import org.springframework.util.MultiValueMap;
*/
abstract
class
AbstractOnBeanCondition
implements
Condition
{
private
static
Log
logger
=
LogFactory
.
getLog
(
OnBeanCondition
.
class
);
protected
abstract
Class
<?>
annotationClass
();
@Override
...
...
@@ -49,6 +53,9 @@ abstract class AbstractOnBeanCondition implements Condition {
List
<
String
>
beanClassesFound
=
new
ArrayList
<
String
>();
List
<
String
>
beanNamesFound
=
new
ArrayList
<
String
>();
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Looking for beans with class: "
+
beanClasses
);
}
for
(
String
beanClass
:
beanClasses
)
{
try
{
// eagerInit set to false to prevent early instantiation (some
...
...
@@ -65,13 +72,20 @@ abstract class AbstractOnBeanCondition implements Condition {
}
}
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Looking for beans with names: "
+
beanNames
);
}
for
(
String
beanName
:
beanNames
)
{
if
(
context
.
getBeanFactory
().
containsBeanDefinition
(
beanName
))
{
beanNamesFound
.
add
(
beanName
);
}
}
return
evaluate
(
beanClassesFound
,
beanNamesFound
);
boolean
result
=
evaluate
(
beanClassesFound
,
beanNamesFound
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Finished matching and result is matches"
+
result
);
}
return
result
;
}
protected
boolean
evaluate
(
List
<
String
>
beanClassesFound
,
List
<
String
>
beanNamesFound
)
{
...
...
spring-bootstrap/src/main/java/org/springframework/bootstrap/context/annotation/ExpressionCondition.java
View file @
ad307678
...
...
@@ -57,7 +57,11 @@ public class ExpressionCondition implements Condition {
BeanExpressionResolver
resolver
=
beanFactory
.
getBeanExpressionResolver
();
BeanExpressionContext
expressionContext
=
(
beanFactory
!=
null
)
?
new
BeanExpressionContext
(
beanFactory
,
null
)
:
null
;
return
(
Boolean
)
resolver
.
evaluate
(
value
,
expressionContext
);
Boolean
result
=
(
Boolean
)
resolver
.
evaluate
(
value
,
expressionContext
);
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Finished matching and result is matches="
+
result
);
}
return
result
;
}
}
\ No newline at end of file
spring-bootstrap/src/main/java/org/springframework/bootstrap/context/annotation/OnClassCondition.java
View file @
ad307678
...
...
@@ -19,6 +19,8 @@ package org.springframework.bootstrap.context.annotation;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.context.annotation.Condition
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.core.type.AnnotatedTypeMetadata
;
...
...
@@ -34,6 +36,8 @@ import org.springframework.util.MultiValueMap;
*/
class
OnClassCondition
implements
Condition
{
private
static
Log
logger
=
LogFactory
.
getLog
(
OnClassCondition
.
class
);
@Override
public
boolean
matches
(
ConditionContext
context
,
AnnotatedTypeMetadata
metadata
)
{
MultiValueMap
<
String
,
Object
>
attributes
=
metadata
.
getAllAnnotationAttributes
(
...
...
@@ -45,7 +49,14 @@ class OnClassCondition implements Condition {
Assert
.
isTrue
(
classNames
.
size
()
>
0
,
"@ConditionalOnClass annotations must specify at least one class value"
);
for
(
String
className
:
classNames
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Checking for class: "
+
className
);
}
if
(!
ClassUtils
.
isPresent
(
className
,
context
.
getClassLoader
()))
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Found class: "
+
className
+
" (search terminated with matches=false)"
);
}
return
false
;
}
}
...
...
spring-bootstrap/src/main/java/org/springframework/bootstrap/context/annotation/OnResourceCondition.java
View file @
ad307678
...
...
@@ -19,6 +19,8 @@ package org.springframework.bootstrap.context.annotation;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.context.annotation.Condition
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.core.io.DefaultResourceLoader
;
...
...
@@ -35,6 +37,8 @@ import org.springframework.util.MultiValueMap;
*/
class
OnResourceCondition
implements
Condition
{
private
static
Log
logger
=
LogFactory
.
getLog
(
OnResourceCondition
.
class
);
private
ResourceLoader
loader
=
new
DefaultResourceLoader
();
@Override
...
...
@@ -47,7 +51,14 @@ class OnResourceCondition implements Condition {
Assert
.
isTrue
(
locations
.
size
()
>
0
,
"@ConditionalOnResource annotations must specify at least one resource location"
);
for
(
String
location
:
locations
)
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Checking for resource: "
+
location
);
}
if
(!
this
.
loader
.
getResource
(
location
).
exists
())
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Found resource: "
+
location
+
" (search terminated with matches=false)"
);
}
return
false
;
}
}
...
...
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