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
5ac5aa3e
Commit
5ac5aa3e
authored
Apr 10, 2017
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.5.x'
parents
6399ed78
f6a7e176
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
124 additions
and
25 deletions
+124
-25
FreeMarkerTemplateAvailabilityProvider.java
...re/freemarker/FreeMarkerTemplateAvailabilityProvider.java
+54
-12
GroovyTemplateAvailabilityProvider.java
...e/groovy/template/GroovyTemplateAvailabilityProvider.java
+53
-12
FreeMarkerTemplateAvailabilityProviderTests.java
...eemarker/FreeMarkerTemplateAvailabilityProviderTests.java
+9
-1
GroovyTemplateAvailabilityProviderTests.java
...ovy/template/GroovyTemplateAvailabilityProviderTests.java
+8
-0
No files found.
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/freemarker/FreeMarkerTemplateAvailabilityProvider.java
View file @
5ac5aa3e
/*
* Copyright 2012-201
5
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -16,8 +16,14 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
freemarker
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider
;
import
org.springframework.boot.bind.RelaxedPropertyResolver
;
import
org.springframework.boot.bind.PropertySourcesPropertyValues
;
import
org.springframework.boot.bind.RelaxedDataBinder
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.io.ResourceLoader
;
import
org.springframework.util.ClassUtils
;
...
...
@@ -36,18 +42,54 @@ public class FreeMarkerTemplateAvailabilityProvider
public
boolean
isTemplateAvailable
(
String
view
,
Environment
environment
,
ClassLoader
classLoader
,
ResourceLoader
resourceLoader
)
{
if
(
ClassUtils
.
isPresent
(
"freemarker.template.Configuration"
,
classLoader
))
{
RelaxedPropertyResolver
resolver
=
new
RelaxedPropertyResolver
(
environment
,
"spring.freemarker."
);
String
loaderPath
=
resolver
.
getProperty
(
"template-loader-path"
,
FreeMarkerProperties
.
DEFAULT_TEMPLATE_LOADER_PATH
);
String
prefix
=
resolver
.
getProperty
(
"prefix"
,
FreeMarkerProperties
.
DEFAULT_PREFIX
);
String
suffix
=
resolver
.
getProperty
(
"suffix"
,
FreeMarkerProperties
.
DEFAULT_SUFFIX
);
return
resourceLoader
.
getResource
(
loaderPath
+
prefix
+
view
+
suffix
)
.
exists
();
FreeMarkerTemplateAvailabilityProperties
properties
=
new
FreeMarkerTemplateAvailabilityProperties
();
RelaxedDataBinder
binder
=
new
RelaxedDataBinder
(
properties
,
"spring.freemarker"
);
binder
.
bind
(
new
PropertySourcesPropertyValues
(
((
ConfigurableEnvironment
)
environment
).
getPropertySources
()));
for
(
String
loaderPath
:
properties
.
getTemplateLoaderPath
())
{
if
(
resourceLoader
.
getResource
(
loaderPath
+
properties
.
getPrefix
()
+
view
+
properties
.
getSuffix
()).
exists
())
{
return
true
;
}
}
}
return
false
;
}
static
final
class
FreeMarkerTemplateAvailabilityProperties
{
private
List
<
String
>
templateLoaderPath
=
new
ArrayList
<
String
>(
Arrays
.
asList
(
FreeMarkerProperties
.
DEFAULT_TEMPLATE_LOADER_PATH
));
private
String
prefix
=
FreeMarkerProperties
.
DEFAULT_PREFIX
;
private
String
suffix
=
FreeMarkerProperties
.
DEFAULT_SUFFIX
;
public
List
<
String
>
getTemplateLoaderPath
()
{
return
this
.
templateLoaderPath
;
}
public
void
setTemplateLoaderPath
(
List
<
String
>
templateLoaderPath
)
{
this
.
templateLoaderPath
=
templateLoaderPath
;
}
public
String
getPrefix
()
{
return
this
.
prefix
;
}
public
void
setPrefix
(
String
prefix
)
{
this
.
prefix
=
prefix
;
}
public
String
getSuffix
()
{
return
this
.
suffix
;
}
public
void
setSuffix
(
String
suffix
)
{
this
.
suffix
=
suffix
;
}
}
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/groovy/template/GroovyTemplateAvailabilityProvider.java
View file @
5ac5aa3e
...
...
@@ -16,10 +16,15 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
groovy
.
template
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider
;
import
org.springframework.boot.bind.RelaxedPropertyResolver
;
import
org.springframework.boot.bind.PropertySourcesPropertyValues
;
import
org.springframework.boot.bind.RelaxedDataBinder
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.env.PropertyResolver
;
import
org.springframework.core.io.ResourceLoader
;
import
org.springframework.util.ClassUtils
;
...
...
@@ -36,18 +41,54 @@ public class GroovyTemplateAvailabilityProvider implements TemplateAvailabilityP
public
boolean
isTemplateAvailable
(
String
view
,
Environment
environment
,
ClassLoader
classLoader
,
ResourceLoader
resourceLoader
)
{
if
(
ClassUtils
.
isPresent
(
"groovy.text.TemplateEngine"
,
classLoader
))
{
PropertyResolver
resolver
=
new
RelaxedPropertyResolver
(
environment
,
"spring.groovy.template."
);
String
loaderPath
=
resolver
.
getProperty
(
"resource-loader-path"
,
GroovyTemplateProperties
.
DEFAULT_RESOURCE_LOADER_PATH
);
String
prefix
=
resolver
.
getProperty
(
"prefix"
,
GroovyTemplateProperties
.
DEFAULT_PREFIX
);
String
suffix
=
resolver
.
getProperty
(
"suffix"
,
GroovyTemplateProperties
.
DEFAULT_SUFFIX
);
return
resourceLoader
.
getResource
(
loaderPath
+
prefix
+
view
+
suffix
)
.
exists
();
GroovyTemplateAvailabilityProperties
properties
=
new
GroovyTemplateAvailabilityProperties
();
RelaxedDataBinder
binder
=
new
RelaxedDataBinder
(
properties
,
"spring.groovy.template"
);
binder
.
bind
(
new
PropertySourcesPropertyValues
(
((
ConfigurableEnvironment
)
environment
).
getPropertySources
()));
for
(
String
loaderPath
:
properties
.
getResourceLoaderPath
())
{
if
(
resourceLoader
.
getResource
(
loaderPath
+
properties
.
getPrefix
()
+
view
+
properties
.
getSuffix
()).
exists
())
{
return
true
;
}
}
}
return
false
;
}
static
final
class
GroovyTemplateAvailabilityProperties
{
private
List
<
String
>
resourceLoaderPath
=
new
ArrayList
<
String
>(
Arrays
.
asList
(
GroovyTemplateProperties
.
DEFAULT_RESOURCE_LOADER_PATH
));
private
String
prefix
=
GroovyTemplateProperties
.
DEFAULT_PREFIX
;
private
String
suffix
=
GroovyTemplateProperties
.
DEFAULT_SUFFIX
;
public
List
<
String
>
getResourceLoaderPath
()
{
return
this
.
resourceLoaderPath
;
}
public
void
setResourceLoaderPath
(
List
<
String
>
resourceLoaderPath
)
{
this
.
resourceLoaderPath
=
resourceLoaderPath
;
}
public
String
getPrefix
()
{
return
this
.
prefix
;
}
public
void
setPrefix
(
String
prefix
)
{
this
.
prefix
=
prefix
;
}
public
String
getSuffix
()
{
return
this
.
suffix
;
}
public
void
setSuffix
(
String
suffix
)
{
this
.
suffix
=
suffix
;
}
}
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/freemarker/FreeMarkerTemplateAvailabilityProviderTests.java
View file @
5ac5aa3e
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -58,6 +58,14 @@ public class FreeMarkerTemplateAvailabilityProviderTests {
getClass
().
getClassLoader
(),
this
.
resourceLoader
)).
isTrue
();
}
@Test
public
void
availabilityOfTemplateWithCustomLoaderPathConfiguredAsAList
()
{
this
.
environment
.
setProperty
(
"spring.freemarker.template-loader-path[0]"
,
"classpath:/custom-templates/"
);
assertThat
(
this
.
provider
.
isTemplateAvailable
(
"custom"
,
this
.
environment
,
getClass
().
getClassLoader
(),
this
.
resourceLoader
)).
isTrue
();
}
@Test
public
void
availabilityOfTemplateWithCustomPrefix
()
{
this
.
environment
.
setProperty
(
"spring.freemarker.prefix"
,
"prefix/"
);
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/groovy/template/GroovyTemplateAvailabilityProviderTests.java
View file @
5ac5aa3e
...
...
@@ -58,6 +58,14 @@ public class GroovyTemplateAvailabilityProviderTests {
getClass
().
getClassLoader
(),
this
.
resourceLoader
)).
isTrue
();
}
@Test
public
void
availabilityOfTemplateWithCustomLoaderPathConfiguredAsAList
()
{
this
.
environment
.
setProperty
(
"spring.groovy.template.resource-loader-path[0]"
,
"classpath:/custom-templates/"
);
assertThat
(
this
.
provider
.
isTemplateAvailable
(
"custom"
,
this
.
environment
,
getClass
().
getClassLoader
(),
this
.
resourceLoader
)).
isTrue
();
}
@Test
public
void
availabilityOfTemplateWithCustomPrefix
()
{
this
.
environment
.
setProperty
(
"spring.groovy.template.prefix"
,
"prefix/"
);
...
...
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