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
4398c71d
Commit
4398c71d
authored
Aug 13, 2020
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.3.x'
Closes gh-22938
parents
81ae24e5
8c4e6f76
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
73 deletions
+7
-73
MustacheEnvironmentCollector.java
.../autoconfigure/mustache/MustacheEnvironmentCollector.java
+6
-34
MustacheStandaloneIntegrationTests.java
...onfigure/mustache/MustacheStandaloneIntegrationTests.java
+1
-39
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mustache/MustacheEnvironmentCollector.java
View file @
4398c71d
...
...
@@ -19,7 +19,6 @@ package org.springframework.boot.autoconfigure.mustache;
import
com.samskivert.mustache.DefaultCollector
;
import
com.samskivert.mustache.Mustache.Collector
;
import
com.samskivert.mustache.Mustache.VariableFetcher
;
import
com.samskivert.mustache.Template
;
import
org.springframework.context.EnvironmentAware
;
import
org.springframework.core.env.ConfigurableEnvironment
;
...
...
@@ -36,6 +35,8 @@ public class MustacheEnvironmentCollector extends DefaultCollector implements En
private
ConfigurableEnvironment
environment
;
private
final
VariableFetcher
propertyFetcher
=
new
PropertyVariableFetcher
();
@Override
public
void
setEnvironment
(
Environment
environment
)
{
this
.
environment
=
(
ConfigurableEnvironment
)
environment
;
...
...
@@ -43,49 +44,20 @@ public class MustacheEnvironmentCollector extends DefaultCollector implements En
@Override
public
VariableFetcher
createFetcher
(
Object
ctx
,
String
name
)
{
VariableFetcher
nativeF
etcher
=
super
.
createFetcher
(
ctx
,
name
);
if
(
nativeF
etcher
!=
null
)
{
return
new
PropertyVariableFetcher
(
nativeFetcher
)
;
VariableFetcher
f
etcher
=
super
.
createFetcher
(
ctx
,
name
);
if
(
f
etcher
!=
null
)
{
return
fetcher
;
}
if
(
this
.
environment
.
containsProperty
(
name
))
{
return
new
PropertyVariableFetcher
()
;
return
this
.
propertyFetcher
;
}
return
null
;
}
/**
* {@link VariableFetcher} that also checks the {@link Environment}.
*/
private
class
PropertyVariableFetcher
implements
VariableFetcher
{
private
final
VariableFetcher
nativeFetcher
;
PropertyVariableFetcher
()
{
this
.
nativeFetcher
=
null
;
}
PropertyVariableFetcher
(
VariableFetcher
delegate
)
{
this
.
nativeFetcher
=
delegate
;
}
@Override
public
Object
get
(
Object
ctx
,
String
name
)
{
Object
result
=
getFromNativeFetcher
(
ctx
,
name
);
result
=
(
result
!=
null
)
?
result
:
getFromEnvironment
(
name
);
return
(
result
!=
null
)
?
result
:
Template
.
NO_FETCHER_FOUND
;
}
private
Object
getFromNativeFetcher
(
Object
ctx
,
String
name
)
{
try
{
Object
result
=
(
this
.
nativeFetcher
!=
null
)
?
this
.
nativeFetcher
.
get
(
ctx
,
name
)
:
null
;
return
(
result
!=
Template
.
NO_FETCHER_FOUND
)
?
result
:
null
;
}
catch
(
Exception
ex
)
{
return
null
;
}
}
private
Object
getFromEnvironment
(
String
name
)
{
return
MustacheEnvironmentCollector
.
this
.
environment
.
getProperty
(
name
);
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mustache/MustacheStandaloneIntegrationTests.java
View file @
4398c71d
...
...
@@ -37,7 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Dave Syer
*/
@DirtiesContext
@SpringBootTest
(
webEnvironment
=
WebEnvironment
.
NONE
,
properties
=
{
"env.FOO=There"
,
"foo=World"
,
"bar.name=Bar"
})
@SpringBootTest
(
webEnvironment
=
WebEnvironment
.
NONE
,
properties
=
{
"env.FOO=There"
,
"foo=World"
})
class
MustacheStandaloneIntegrationTests
{
@Autowired
...
...
@@ -60,53 +60,15 @@ class MustacheStandaloneIntegrationTests {
.
isEqualTo
(
"Hello: There"
);
}
@Test
void
environmentCollectorCompoundKeyStandardMap
()
{
assertThat
(
this
.
compiler
.
standardsMode
(
true
).
compile
(
"Hello: {{env.foo}}"
)
.
execute
(
Collections
.
singletonMap
(
"world"
,
"World"
))).
isEqualTo
(
"Hello: There"
);
}
@Test
void
environmentCollectorCompoundKeyWithBean
()
{
assertThat
(
this
.
compiler
.
compile
(
"Hello: {{foo.name}}"
).
execute
(
Collections
.
singletonMap
(
"foo"
,
new
Foo
())))
.
isEqualTo
(
"Hello: Foo"
);
}
@Test
void
environmentCollectorCompoundKeyWithBeanPrefersEnvironment
()
{
assertThat
(
this
.
compiler
.
compile
(
"Hello: {{bar.name}}"
).
execute
(
Collections
.
singletonMap
(
"bar"
,
new
Foo
())))
.
isEqualTo
(
"Hello: Bar"
);
}
@Test
void
environmentCollectorSimpleKey
()
{
assertThat
(
this
.
compiler
.
compile
(
"Hello: {{foo}}"
).
execute
(
new
Object
())).
isEqualTo
(
"Hello: World"
);
}
@Test
void
environmentCollectorSimpleKeyMap
()
{
assertThat
(
this
.
compiler
.
compile
(
"Hello: {{foo}}"
).
execute
(
Collections
.
singletonMap
(
"world"
,
"Foo"
)))
.
isEqualTo
(
"Hello: World"
);
}
@Configuration
(
proxyBeanMethods
=
false
)
@Import
({
MustacheAutoConfiguration
.
class
,
PropertyPlaceholderAutoConfiguration
.
class
})
static
class
Application
{
}
static
class
Foo
{
private
String
name
=
"Foo"
;
String
getName
()
{
return
this
.
name
;
}
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
}
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