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
08a8bb0f
Commit
08a8bb0f
authored
May 30, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Add failure analyzer for BeanCreationException"
Closes gh-9220
parent
07ec13d4
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
29 additions
and
145 deletions
+29
-145
BeanCreationFailureAnalyzer.java
...oot/diagnostics/analyzer/BeanCreationFailureAnalyzer.java
+0
-58
BeanCurrentlyInCreationFailureAnalyzer.java
...tics/analyzer/BeanCurrentlyInCreationFailureAnalyzer.java
+0
-2
spring.factories
spring-boot/src/main/resources/META-INF/spring.factories
+0
-1
SpringApplicationTests.java
...java/org/springframework/boot/SpringApplicationTests.java
+29
-0
BeanCreationFailureAnalyzerTest.java
...diagnostics/analyzer/BeanCreationFailureAnalyzerTest.java
+0
-84
No files found.
spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanCreationFailureAnalyzer.java
deleted
100644 → 0
View file @
07ec13d4
/*
* Copyright 2012-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
.
boot
.
diagnostics
.
analyzer
;
import
org.springframework.beans.factory.BeanCreationException
;
import
org.springframework.boot.diagnostics.AbstractFailureAnalyzer
;
import
org.springframework.boot.diagnostics.FailureAnalysis
;
import
org.springframework.boot.diagnostics.FailureAnalyzer
;
import
org.springframework.core.annotation.Order
;
/**
* A {@link FailureAnalyzer} that performs analysis of failures caused by a
* {@link BeanCreationException}.
*
* @author Stephane Nicoll
* @see BeanCurrentlyInCreationFailureAnalyzer
*/
@Order
(
100
)
public
class
BeanCreationFailureAnalyzer
extends
AbstractFailureAnalyzer
<
BeanCreationException
>
{
@Override
protected
FailureAnalysis
analyze
(
Throwable
rootFailure
,
BeanCreationException
cause
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"A bean named '"
).
append
(
cause
.
getBeanName
()).
append
(
"'"
);
if
(
cause
.
getResourceDescription
()
!=
null
)
{
sb
.
append
(
" defined in "
).
append
(
cause
.
getResourceDescription
());
}
sb
.
append
(
" failed to be created:"
);
sb
.
append
(
String
.
format
(
"%n%n"
));
Throwable
nested
=
findMostNestedCause
(
cause
);
sb
.
append
(
String
.
format
(
"\t%s"
,
nested
.
getMessage
()));
return
new
FailureAnalysis
(
sb
.
toString
(),
null
,
cause
);
}
private
Throwable
findMostNestedCause
(
Throwable
exception
)
{
if
(
exception
.
getCause
()
==
null
)
{
return
exception
;
}
return
findMostNestedCause
(
exception
.
getCause
());
}
}
spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzer.java
View file @
08a8bb0f
...
...
@@ -25,7 +25,6 @@ import org.springframework.beans.factory.InjectionPoint;
import
org.springframework.beans.factory.UnsatisfiedDependencyException
;
import
org.springframework.boot.diagnostics.AbstractFailureAnalyzer
;
import
org.springframework.boot.diagnostics.FailureAnalysis
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.util.StringUtils
;
/**
...
...
@@ -34,7 +33,6 @@ import org.springframework.util.StringUtils;
*
* @author Andy Wilkinson
*/
@Order
(
0
)
class
BeanCurrentlyInCreationFailureAnalyzer
extends
AbstractFailureAnalyzer
<
BeanCurrentlyInCreationException
>
{
...
...
spring-boot/src/main/resources/META-INF/spring.factories
View file @
08a8bb0f
...
...
@@ -33,7 +33,6 @@ org.springframework.boot.env.SpringApplicationJsonEnvironmentPostProcessor
# Failure Analyzers
org.springframework.boot.diagnostics.FailureAnalyzer=\
org.springframework.boot.diagnostics.analyzer.BeanCreationFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BeanCurrentlyInCreationFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BeanNotOfRequiredTypeFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BindFailureAnalyzer,\
...
...
spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java
View file @
08a8bb0f
...
...
@@ -805,6 +805,25 @@ public class SpringApplicationTests {
TestPropertySourceUtils
.
INLINED_PROPERTIES_PROPERTY_SOURCE_NAME
);
}
@Test
public
void
failureResultsInSingleStackTrace
()
throws
Exception
{
ThreadGroup
group
=
new
ThreadGroup
(
"main"
);
Thread
thread
=
new
Thread
(
group
,
"main"
)
{
@Override
public
void
run
()
{
SpringApplication
application
=
new
SpringApplication
(
FailingConfig
.
class
);
application
.
setWebEnvironment
(
false
);
application
.
run
();
};
};
thread
.
start
();
thread
.
join
(
6000
);
int
occurrences
=
StringUtils
.
countOccurrencesOf
(
this
.
output
.
toString
(),
"Caused by: java.lang.RuntimeException: ExpectedError"
);
assertThat
(
occurrences
).
as
(
"Expected single stacktrace"
).
isEqualTo
(
1
);
}
private
Condition
<
ConfigurableEnvironment
>
matchingPropertySource
(
final
Class
<?>
propertySourceClass
,
final
String
name
)
{
return
new
Condition
<
ConfigurableEnvironment
>(
"has property source"
)
{
...
...
@@ -947,6 +966,16 @@ public class SpringApplicationTests {
}
@Configuration
static
class
FailingConfig
{
@Bean
public
Object
fail
()
{
throw
new
RuntimeException
(
"ExpectedError"
);
}
}
@Configuration
static
class
CommandLineRunConfig
{
...
...
spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BeanCreationFailureAnalyzerTest.java
deleted
100644 → 0
View file @
07ec13d4
/*
* Copyright 2012-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
.
boot
.
diagnostics
.
analyzer
;
import
org.junit.Test
;
import
org.springframework.boot.diagnostics.FailureAnalysis
;
import
org.springframework.boot.diagnostics.FailureAnalyzer
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
junit
.
Assert
.
fail
;
/**
* Tests for {@link BeanCreationFailureAnalyzer}.
*
* @author Stephane Nicoll
*/
public
class
BeanCreationFailureAnalyzerTest
{
private
final
FailureAnalyzer
analyzer
=
new
BeanCreationFailureAnalyzer
();
@Test
public
void
failureWithDefinition
()
{
FailureAnalysis
analysis
=
performAnalysis
(
BeanCreationFailureConfiguration
.
class
);
assertThat
(
analysis
.
getDescription
()).
contains
(
"bean named 'foo'"
,
"Property bar is not set"
,
"defined in "
+
BeanCreationFailureConfiguration
.
class
.
getName
());
assertThat
(
analysis
.
getDescription
()).
doesNotContain
(
"Failed to instantiate"
);
assertThat
(
analysis
.
getAction
()).
isNull
();
}
private
FailureAnalysis
performAnalysis
(
Class
<?>
configuration
)
{
FailureAnalysis
analysis
=
this
.
analyzer
.
analyze
(
createFailure
(
configuration
));
assertThat
(
analysis
).
isNotNull
();
return
analysis
;
}
private
Exception
createFailure
(
Class
<?>
configuration
)
{
ConfigurableApplicationContext
context
=
null
;
try
{
context
=
new
AnnotationConfigApplicationContext
(
configuration
);
}
catch
(
Exception
ex
)
{
return
ex
;
}
finally
{
if
(
context
!=
null
)
{
context
.
close
();
}
}
fail
(
"Expected failure did not occur"
);
return
null
;
}
@Configuration
static
class
BeanCreationFailureConfiguration
{
@Bean
public
String
foo
()
{
throw
new
IllegalStateException
(
"Property bar is not set"
);
}
}
}
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