11/* 
2-  * Copyright 2002-2010  the original author or authors. 
2+  * Copyright 2002-2013  the original author or authors. 
33 * 
44 * Licensed under the Apache License, Version 2.0 (the "License"); 
55 * you may not use this file except in compliance with the License. 
2020import  java .io .IOException ;
2121import  java .util .ArrayList ;
2222import  java .util .Arrays ;
23+ import  java .util .LinkedList ;
2324import  java .util .List ;
2425import  java .util .Map ;
2526import  java .util .Properties ;
4748 * <p>The optional "configLocation" property sets the location of a FreeMarker 
4849 * properties file, within the current application. FreeMarker properties can be 
4950 * overridden via "freemarkerSettings". All of these properties will be set by 
50-  * calling FreeMarker's < code> Configuration.setSettings()</code>  method and are 
51+  * calling FreeMarker's {@ code  Configuration.setSettings()}  method and are 
5152 * subject to constraints set by FreeMarker. 
5253 * 
5354 * <p>The "freemarkerVariables" property can be used to specify a Map of 
5455 * shared variables that will be applied to the Configuration via the 
55-  * < code> setAllSharedVariables()</code>  method. Like < code> setSettings()</code> , 
56+  * {@ code  setAllSharedVariables()}  method. Like {@ code  setSettings()} , 
5657 * these entries are subject to FreeMarker constraints. 
5758 * 
5859 * <p>The simplest way to use this class is to specify a "templateLoaderPath"; 
@@ -109,7 +110,7 @@ public void setConfigLocation(Resource resource) {
109110
110111	/** 
111112	 * Set properties that contain well-known FreeMarker keys which will be 
112- 	 * passed to FreeMarker's < code> Configuration.setSettings</code>  method. 
113+ 	 * passed to FreeMarker's {@ code  Configuration.setSettings}  method. 
113114	 * @see freemarker.template.Configuration#setSettings 
114115	 */ 
115116	public  void  setFreemarkerSettings (Properties  settings ) {
@@ -118,7 +119,7 @@ public void setFreemarkerSettings(Properties settings) {
118119
119120	/** 
120121	 * Set a Map that contains well-known FreeMarker objects which will be passed 
121- 	 * to FreeMarker's < code> Configuration.setAllSharedVariables()</code>  method. 
122+ 	 * to FreeMarker's {@ code  Configuration.setAllSharedVariables()}  method. 
122123	 * @see freemarker.template.Configuration#setAllSharedVariables 
123124	 */ 
124125	public  void  setFreemarkerVariables (Map <String , Object > variables ) {
@@ -138,7 +139,7 @@ public void setDefaultEncoding(String defaultEncoding) {
138139	}
139140
140141	/** 
141- 	 * Set a List of < code> TemplateLoader<code> s that will be used to search 
142+ 	 * Set a List of {@ code  TemplateLoader} s that will be used to search 
142143	 * for templates. For example, one or more custom loaders such as database 
143144	 * loaders could be configured and injected here. 
144145	 * @deprecated as of Spring 2.0.1, in favor of the "preTemplateLoaders" 
@@ -147,14 +148,14 @@ public void setDefaultEncoding(String defaultEncoding) {
147148	 * @see #setPostTemplateLoaders 
148149	 */ 
149150	@ Deprecated 
150- 	public  void  setTemplateLoaders (TemplateLoader []  templateLoaders ) {
151+ 	public  void  setTemplateLoaders (TemplateLoader ...  templateLoaders ) {
151152		if  (templateLoaders  != null ) {
152153			this .templateLoaders .addAll (Arrays .asList (templateLoaders ));
153154		}
154155	}
155156
156157	/** 
157- 	 * Set a List of < code> TemplateLoader<code> s that will be used to search 
158+ 	 * Set a List of {@ code  TemplateLoader} s that will be used to search 
158159	 * for templates. For example, one or more custom loaders such as database 
159160	 * loaders could be configured and injected here. 
160161	 * <p>The {@link TemplateLoader TemplateLoaders} specified here will be 
@@ -164,12 +165,12 @@ public void setTemplateLoaders(TemplateLoader[] templateLoaders) {
164165	 * @see #setTemplateLoaderPaths 
165166	 * @see #postProcessTemplateLoaders 
166167	 */ 
167- 	public  void  setPreTemplateLoaders (TemplateLoader []  preTemplateLoaders ) {
168+ 	public  void  setPreTemplateLoaders (TemplateLoader ...  preTemplateLoaders ) {
168169		this .preTemplateLoaders  = Arrays .asList (preTemplateLoaders );
169170	}
170171
171172	/** 
172- 	 * Set a List of < code> TemplateLoader<code> s that will be used to search 
173+ 	 * Set a List of {@ code  TemplateLoader} s that will be used to search 
173174	 * for templates. For example, one or more custom loaders such as database 
174175	 * loaders can be configured. 
175176	 * <p>The {@link TemplateLoader TemplateLoaders} specified here will be 
@@ -179,7 +180,7 @@ public void setPreTemplateLoaders(TemplateLoader[] preTemplateLoaders) {
179180	 * @see #setTemplateLoaderPaths 
180181	 * @see #postProcessTemplateLoaders 
181182	 */ 
182- 	public  void  setPostTemplateLoaders (TemplateLoader []  postTemplateLoaders ) {
183+ 	public  void  setPostTemplateLoaders (TemplateLoader ...  postTemplateLoaders ) {
183184		this .postTemplateLoaders  = Arrays .asList (postTemplateLoaders );
184185	}
185186
@@ -198,20 +199,20 @@ public void setTemplateLoaderPath(String templateLoaderPath) {
198199	 * pseudo URLs are supported, as understood by ResourceEditor. Allows for 
199200	 * relative paths when running in an ApplicationContext. 
200201	 * <p>Will define a path for the default FreeMarker template loader. 
201- 	 * If a specified resource cannot be resolved to a < code> java.io.File</code> , 
202+ 	 * If a specified resource cannot be resolved to a {@ code  java.io.File} , 
202203	 * a generic SpringTemplateLoader will be used, without modification detection. 
203204	 * <p>To enforce the use of SpringTemplateLoader, i.e. to not resolve a path 
204205	 * as file system resource in any case, turn off the "preferFileSystemAccess" 
205206	 * flag. See the latter's javadoc for details. 
206207	 * <p>If you wish to specify your own list of TemplateLoaders, do not set this 
207- 	 * property and instead use < code> setTemplateLoaders(List templateLoaders)</code>  
208+ 	 * property and instead use {@ code  setTemplateLoaders(List templateLoaders)}  
208209	 * @see org.springframework.core.io.ResourceEditor 
209210	 * @see org.springframework.context.ApplicationContext#getResource 
210211	 * @see freemarker.template.Configuration#setDirectoryForTemplateLoading 
211212	 * @see SpringTemplateLoader 
212213	 * @see #setTemplateLoaders 
213214	 */ 
214- 	public  void  setTemplateLoaderPaths (String []  templateLoaderPaths ) {
215+ 	public  void  setTemplateLoaderPaths (String ...  templateLoaderPaths ) {
215216		this .templateLoaderPaths  = templateLoaderPaths ;
216217	}
217218
@@ -229,7 +230,7 @@ public void setResourceLoader(ResourceLoader resourceLoader) {
229230	 * Return the Spring ResourceLoader to use for loading FreeMarker template files. 
230231	 */ 
231232	protected  ResourceLoader  getResourceLoader () {
232- 		return  resourceLoader ;
233+ 		return  this . resourceLoader ;
233234	}
234235
235236	/** 
@@ -252,7 +253,7 @@ public void setPreferFileSystemAccess(boolean preferFileSystemAccess) {
252253	 * Return whether to prefer file system access for template loading. 
253254	 */ 
254255	protected  boolean  isPreferFileSystemAccess () {
255- 		return  preferFileSystemAccess ;
256+ 		return  this . preferFileSystemAccess ;
256257	}
257258
258259
@@ -293,25 +294,27 @@ public Configuration createConfiguration() throws IOException, TemplateException
293294			config .setDefaultEncoding (this .defaultEncoding );
294295		}
295296
297+ 		List <TemplateLoader > templateLoaders  = new  LinkedList <TemplateLoader >(this .templateLoaders );
298+ 
296299		// Register template loaders that are supposed to kick in early. 
297300		if  (this .preTemplateLoaders  != null ) {
298- 			this . templateLoaders .addAll (this .preTemplateLoaders );
301+ 			templateLoaders .addAll (this .preTemplateLoaders );
299302		}
300303
301304		// Register default template loaders. 
302305		if  (this .templateLoaderPaths  != null ) {
303306			for  (String  path  : this .templateLoaderPaths ) {
304- 				this . templateLoaders .add (getTemplateLoaderForPath (path ));
307+ 				templateLoaders .add (getTemplateLoaderForPath (path ));
305308			}
306309		}
307- 		postProcessTemplateLoaders (this . templateLoaders );
310+ 		postProcessTemplateLoaders (templateLoaders );
308311
309312		// Register template loaders that are supposed to kick in late. 
310313		if  (this .postTemplateLoaders  != null ) {
311- 			this . templateLoaders .addAll (this .postTemplateLoaders );
314+ 			templateLoaders .addAll (this .postTemplateLoaders );
312315		}
313316
314- 		TemplateLoader  loader  = getAggregateTemplateLoader (this . templateLoaders );
317+ 		TemplateLoader  loader  = getAggregateTemplateLoader (templateLoaders );
315318		if  (loader  != null ) {
316319			config .setTemplateLoader (loader );
317320		}
@@ -323,7 +326,7 @@ public Configuration createConfiguration() throws IOException, TemplateException
323326	/** 
324327	 * Return a new Configuration object. Subclasses can override this for 
325328	 * custom initialization, or for using a mock object for testing. 
326- 	 * <p>Called by < code> createConfiguration()</code> . 
329+ 	 * <p>Called by {@ code  createConfiguration()} . 
327330	 * @return the Configuration object 
328331	 * @throws IOException if a config file wasn't found 
329332	 * @throws TemplateException on FreeMarker initialization failure 
@@ -374,7 +377,7 @@ protected TemplateLoader getTemplateLoaderForPath(String templateLoaderPath) {
374377	 * To be overridden by subclasses that want to to register custom 
375378	 * TemplateLoader instances after this factory created its default 
376379	 * template loaders. 
377- 	 * <p>Called by < code> createConfiguration()</code> . Note that specified 
380+ 	 * <p>Called by {@ code  createConfiguration()} . Note that specified 
378381	 * "postTemplateLoaders" will be registered <i>after</i> any loaders 
379382	 * registered by this callback; as a consequence, they are are <i>not</i> 
380383	 * included in the given List. 
@@ -411,7 +414,7 @@ protected TemplateLoader getAggregateTemplateLoader(List<TemplateLoader> templat
411414	 * To be overridden by subclasses that want to to perform custom 
412415	 * post-processing of the Configuration object after this factory 
413416	 * performed its default initialization. 
414- 	 * <p>Called by < code> createConfiguration()</code> . 
417+ 	 * <p>Called by {@ code  createConfiguration()} . 
415418	 * @param config the current Configuration object 
416419	 * @throws IOException if a config file wasn't found 
417420	 * @throws TemplateException on FreeMarker initialization failure 
0 commit comments