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
e360e4a7
Commit
e360e4a7
authored
Oct 15, 2020
by
Phillip Webb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish 'Add a FailureAnalyzer for ConfigDataNotFound'
See gh-23633
parent
be7d6971
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
181 additions
and
53 deletions
+181
-53
ConfigDataLocationNotFoundExceptionFailureAnalyzer.java
...g/ConfigDataLocationNotFoundExceptionFailureAnalyzer.java
+0
-21
ConfigDataNotFoundFailureAnalyzer.java
...oot/context/config/ConfigDataNotFoundFailureAnalyzer.java
+62
-0
spring.factories
.../spring-boot/src/main/resources/META-INF/spring.factories
+2
-2
ConfigDataLocationNotFoundExceptionFailureAnalyzerTests.java
...figDataLocationNotFoundExceptionFailureAnalyzerTests.java
+0
-30
ConfigDataNotFoundFailureAnalyzerTests.java
...ontext/config/ConfigDataNotFoundFailureAnalyzerTests.java
+117
-0
No files found.
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzer.java
deleted
100644 → 0
View file @
be7d6971
package
org
.
springframework
.
boot
.
context
.
config
;
import
org.springframework.boot.diagnostics.AbstractFailureAnalyzer
;
import
org.springframework.boot.diagnostics.FailureAnalysis
;
/**
*
* An implementation of {@link AbstractFailureAnalyzer} to analyze failures caused by
* {@link ConfigDataLocationNotFoundException}.
*
* @author Michal Mlak
*/
public
class
ConfigDataLocationNotFoundExceptionFailureAnalyzer
extends
AbstractFailureAnalyzer
<
ConfigDataLocationNotFoundException
>
{
@Override
protected
FailureAnalysis
analyze
(
Throwable
rootFailure
,
ConfigDataLocationNotFoundException
cause
)
{
return
new
FailureAnalysis
(
cause
.
getMessage
(),
null
,
cause
);
}
}
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/config/ConfigDataNotFoundFailureAnalyzer.java
0 → 100644
View file @
e360e4a7
/*
* Copyright 2012-2020 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
*
* https://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
.
context
.
config
;
import
org.springframework.boot.diagnostics.AbstractFailureAnalyzer
;
import
org.springframework.boot.diagnostics.FailureAnalysis
;
import
org.springframework.boot.origin.Origin
;
/**
* An implementation of {@link AbstractFailureAnalyzer} to analyze failures caused by
* {@link ConfigDataNotFoundException}.
*
* @author Michal Mlak
* @author Phillip Webb
*/
class
ConfigDataNotFoundFailureAnalyzer
extends
AbstractFailureAnalyzer
<
ConfigDataNotFoundException
>
{
@Override
protected
FailureAnalysis
analyze
(
Throwable
rootFailure
,
ConfigDataNotFoundException
cause
)
{
ConfigDataLocation
location
=
getLocation
(
cause
);
Origin
origin
=
Origin
.
from
(
location
);
StringBuilder
message
=
new
StringBuilder
(
String
.
format
(
"Config data %s does not exist"
,
cause
.
getReferenceDescription
()));
StringBuilder
action
=
new
StringBuilder
(
"Check that the value "
);
if
(
location
!=
null
)
{
action
.
append
(
String
.
format
(
"'%s' "
,
location
));
}
if
(
origin
!=
null
)
{
action
.
append
(
String
.
format
(
"at %s "
,
origin
));
}
action
.
append
(
"is correct"
);
if
(
location
!=
null
&&
!
location
.
isOptional
())
{
action
.
append
(
String
.
format
(
", or prefix it with '%s'"
,
ConfigDataLocation
.
OPTIONAL_PREFIX
));
}
return
new
FailureAnalysis
(
message
.
toString
(),
action
.
toString
(),
cause
);
}
private
ConfigDataLocation
getLocation
(
ConfigDataNotFoundException
cause
)
{
if
(
cause
instanceof
ConfigDataLocationNotFoundException
)
{
return
((
ConfigDataLocationNotFoundException
)
cause
).
getLocation
();
}
if
(
cause
instanceof
ConfigDataResourceNotFoundException
)
{
return
((
ConfigDataResourceNotFoundException
)
cause
).
getLocation
();
}
return
null
;
}
}
spring-boot-project/spring-boot/src/main/resources/META-INF/spring.factories
View file @
e360e4a7
...
@@ -58,6 +58,7 @@ org.springframework.boot.reactor.DebugAgentEnvironmentPostProcessor
...
@@ -58,6 +58,7 @@ org.springframework.boot.reactor.DebugAgentEnvironmentPostProcessor
# Failure Analyzers
# Failure Analyzers
org.springframework.boot.diagnostics.FailureAnalyzer=\
org.springframework.boot.diagnostics.FailureAnalyzer=\
org.springframework.boot.context.config.ConfigDataNotFoundFailureAnalyzer,\
org.springframework.boot.context.properties.IncompatibleConfigurationFailureAnalyzer,\
org.springframework.boot.context.properties.IncompatibleConfigurationFailureAnalyzer,\
org.springframework.boot.context.properties.NotConstructorBoundInjectionFailureAnalyzer,\
org.springframework.boot.context.properties.NotConstructorBoundInjectionFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BeanCurrentlyInCreationFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BeanCurrentlyInCreationFailureAnalyzer,\
...
@@ -74,8 +75,7 @@ org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer
...
@@ -74,8 +75,7 @@ org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer
org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyNameFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyNameFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyValueFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyValueFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.PatternParseFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.PatternParseFailureAnalyzer,\
org.springframework.boot.liquibase.LiquibaseChangelogMissingFailureAnalyzer,\
org.springframework.boot.liquibase.LiquibaseChangelogMissingFailureAnalyzer
org.springframework.boot.context.config.ConfigDataLocationNotFoundExceptionFailureAnalyzer
# Failure Analysis Reporters
# Failure Analysis Reporters
org.springframework.boot.diagnostics.FailureAnalysisReporter=\
org.springframework.boot.diagnostics.FailureAnalysisReporter=\
...
...
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigDataLocationNotFoundExceptionFailureAnalyzerTests.java
deleted
100644 → 0
View file @
be7d6971
package
org
.
springframework
.
boot
.
context
.
config
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.diagnostics.FailureAnalysis
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
mockito
.
Mockito
.
mock
;
/**
*
* Tests for {@link ConfigDataLocationNotFoundExceptionFailureAnalyzer}
*
* @author Michal Mlak
*/
class
ConfigDataLocationNotFoundExceptionFailureAnalyzerTests
{
private
final
ConfigDataLocationNotFoundExceptionFailureAnalyzer
analyzer
=
new
ConfigDataLocationNotFoundExceptionFailureAnalyzer
();
@Test
void
failureAnalysisForConfigDataLocationNotFound
()
{
ConfigDataLocation
location
=
mock
(
ConfigDataLocation
.
class
);
ConfigDataLocationNotFoundException
exception
=
new
ConfigDataLocationNotFoundException
(
location
);
FailureAnalysis
result
=
analyzer
.
analyze
(
exception
);
assertThat
(
result
.
getDescription
()).
isEqualTo
(
"Config data location '"
+
location
+
"' does not exist"
);
assertThat
(
result
.
getAction
()).
isNull
();
}
}
\ No newline at end of file
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigDataNotFoundFailureAnalyzerTests.java
0 → 100644
View file @
e360e4a7
/*
* Copyright 2012-2020 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
*
* https://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
.
context
.
config
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.diagnostics.FailureAnalysis
;
import
org.springframework.boot.origin.Origin
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link ConfigDataNotFoundFailureAnalyzer}
*
* @author Michal Mlak
* @author Phillip Webb
*/
class
ConfigDataNotFoundFailureAnalyzerTests
{
private
final
ConfigDataNotFoundFailureAnalyzer
analyzer
=
new
ConfigDataNotFoundFailureAnalyzer
();
@Test
void
analyzeWhenConfigDataLocationNotFoundException
()
{
ConfigDataLocation
location
=
ConfigDataLocation
.
of
(
"test"
);
ConfigDataLocationNotFoundException
exception
=
new
ConfigDataLocationNotFoundException
(
location
);
FailureAnalysis
result
=
this
.
analyzer
.
analyze
(
exception
);
assertThat
(
result
.
getDescription
()).
isEqualTo
(
"Config data location 'test' does not exist"
);
assertThat
(
result
.
getAction
())
.
isEqualTo
(
"Check that the value 'test' is correct, or prefix it with 'optional:'"
);
}
@Test
void
analyzeWhenOptionalConfigDataLocationNotFoundException
()
{
ConfigDataLocation
location
=
ConfigDataLocation
.
of
(
"optional:test"
);
ConfigDataLocationNotFoundException
exception
=
new
ConfigDataLocationNotFoundException
(
location
);
FailureAnalysis
result
=
this
.
analyzer
.
analyze
(
exception
);
assertThat
(
result
.
getDescription
()).
isEqualTo
(
"Config data location 'optional:test' does not exist"
);
assertThat
(
result
.
getAction
()).
isEqualTo
(
"Check that the value 'optional:test' is correct"
);
}
@Test
void
analyzeWhenConfigDataLocationWithOriginNotFoundException
()
{
ConfigDataLocation
location
=
ConfigDataLocation
.
of
(
"test"
).
withOrigin
(
new
TestOrigin
(
"origin"
));
ConfigDataLocationNotFoundException
exception
=
new
ConfigDataLocationNotFoundException
(
location
);
FailureAnalysis
result
=
this
.
analyzer
.
analyze
(
exception
);
assertThat
(
result
.
getDescription
()).
isEqualTo
(
"Config data location 'test' does not exist"
);
assertThat
(
result
.
getAction
())
.
isEqualTo
(
"Check that the value 'test' at origin is correct, or prefix it with 'optional:'"
);
}
@Test
void
analyzeWhenConfigDataResourceNotFoundException
()
{
ConfigDataResource
resource
=
new
TestConfigDataResource
(
"myresource"
);
ConfigDataResourceNotFoundException
exception
=
new
ConfigDataResourceNotFoundException
(
resource
);
FailureAnalysis
result
=
this
.
analyzer
.
analyze
(
exception
);
assertThat
(
result
.
getDescription
()).
isEqualTo
(
"Config data resource 'myresource' does not exist"
);
assertThat
(
result
.
getAction
()).
isEqualTo
(
"Check that the value is correct"
);
}
@Test
void
analyzeWhenConfigDataResourceWithLocationNotFoundException
()
{
ConfigDataLocation
location
=
ConfigDataLocation
.
of
(
"test"
);
ConfigDataResource
resource
=
new
TestConfigDataResource
(
"myresource"
);
ConfigDataResourceNotFoundException
exception
=
new
ConfigDataResourceNotFoundException
(
resource
)
.
withLocation
(
location
);
FailureAnalysis
result
=
this
.
analyzer
.
analyze
(
exception
);
assertThat
(
result
.
getDescription
())
.
isEqualTo
(
"Config data resource 'myresource' via location 'test' does not exist"
);
assertThat
(
result
.
getAction
())
.
isEqualTo
(
"Check that the value 'test' is correct, or prefix it with 'optional:'"
);
}
static
class
TestOrigin
implements
Origin
{
private
final
String
string
;
TestOrigin
(
String
string
)
{
this
.
string
=
string
;
}
@Override
public
String
toString
()
{
return
this
.
string
;
}
}
static
class
TestConfigDataResource
extends
ConfigDataResource
{
private
final
String
string
;
TestConfigDataResource
(
String
string
)
{
this
.
string
=
string
;
}
@Override
public
String
toString
()
{
return
this
.
string
;
}
}
}
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