View Javadoc

1   /*
2    * This file is part of Pease Plate Template Engine.
3    * 
4    * Pease Plate Template Engine is free software: you can redistribute
5    * it and/or modify it under the terms of the GNU Lesser General 
6    * Public License as published by the Free Software Foundation, 
7    * either version 3 of the License, or any later version.
8    * 
9    * Pease Plate Template Engine is distributed in the hope that it 
10   * will be useful, but WITHOUT ANY WARRANTY; without even the implied
11   * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12   * See the GNU Lesser General Public License for more details.
13   * 
14   * You should have received a copy of the GNU Lesser General Public 
15   * License along with Pease Plate Template Engine. If not, see 
16   * <http://www.gnu.org/licenses/>.
17   * 
18   * Copyright (c) 2008 Manfred HANTSCHEL
19   */
20  package org.peaseplate;
21  
22  import java.io.IOException;
23  import java.io.Writer;
24  import java.util.Collection;
25  import java.util.Locale;
26  
27  import org.peaseplate.internal.ResourceKey;
28  import org.peaseplate.internal.locator.InMemoryTemplateLocator;
29  import org.peaseplate.locator.TemplateLocator;
30  import org.peaseplate.resolver.Resolver;
31  import org.peaseplate.service.CacheService;
32  import org.peaseplate.service.ConversionService;
33  import org.peaseplate.service.DesignatorService;
34  import org.peaseplate.service.MacroService;
35  import org.peaseplate.service.ResolverService;
36  import org.peaseplate.service.TransformerService;
37  
38  /**
39   * <p>
40   * This class represents the central engine of the Pease Plate engine.
41   * </p>
42   * <p>
43   * Usually just create exactly one instance of this class for all your
44   * rendering duties. It stores all global and reusable settings for 
45   * template rendering and is thread safe. It contains a cache that
46   * stores compiled templates. 
47   * </p>
48   * 
49   * @author Manfred HANTSCHEL
50   */
51  public interface TemplateEngine {
52  
53  	/**
54  	 * Adds the specified class loaders to the facotry. The class loader
55  	 * is used for multiple purposes, like initializing the services.
56  	 * The there is a new class loader added, the services will
57  	 * get initialized with it.
58  	 * 
59  	 * @param classLoaders the class loaders
60  	 */
61  	public void addClassLoader(ClassLoader... classLoaders);
62  
63  	/**
64  	 * Returns all the class loaders in an unmodifiable collection.
65  	 * 
66       * @return the classLoaders
67       */
68      public Collection<ClassLoader> getClassLoaders();
69      
70  	/**
71  	 * Returns the cache service used to cache templates and messages
72  	 * @return the cache service
73  	 */
74  	public CacheService getCacheService();
75  	
76  	/**
77  	 * Returns the resolver service used to resolve templates and messages
78  	 * @return the resolver service
79  	 */
80  	public ResolverService getResolverService();
81  	
82  	/**
83  	 * Returns the designator service used to resolve and handle designators
84  	 * @return the designator service
85  	 */
86  	public DesignatorService getDesignatorService();
87  	
88  	/**
89  	 * Returns the transformer service used to resolve and handle transformers
90  	 * @return the transformer service
91  	 */
92  	public TransformerService getTransformerService();
93  	
94  	/**
95  	 * Returns the macro service used to resolve and handle predefined macros
96  	 * @return the macro service
97  	 */
98  	public MacroService getMacroService();
99  	
100 	/**
101 	 * Returns the conversion service used to convert objects from one type to another
102 	 * @return the conversion service
103 	 */
104 	public ConversionService getConversionService();
105 	
106 	/**
107 	 * Returns the default locale used when no locale is specified somewhere where needed
108 	 * @return teh default locale
109 	 */
110 	public Locale getDefaultLocale();
111 
112 	/**
113 	 * Sets the default locale used when no locale is specified somewhere where needed
114 	 * @param defaultLocale the default locale
115 	 */
116 	public void setDefaultLocale(Locale defaultLocale);
117 
118 	/**
119 	 * Returns the default encoding used when no encoding is specified somewhere where needed
120 	 * @return the default encoding
121 	 */
122 	public String getDefaultEncoding();
123 
124 	/**
125 	 * Sets the default encoding used when no encoding is specified somewhere where needed
126 	 * @param defaultEncoding the default encoding
127 	 */
128 	public void setDefaultEncoding(String defaultEncoding);
129 
130 	/**
131 	 * Returns the default line separator
132 	 * @return the default line separator
133 	 */
134 	public LineSeparator getDefaultLineSeparator();
135 	
136 	/**
137 	 * Sets the default line separator
138 	 * @param defaultLineSeparator the default line separator
139 	 */
140 	public void setDefaultLineSeparator(LineSeparator defaultLineSeparator);
141 	
142 	/**
143 	 * Compiles the template defined by the specified locator.
144 	 * This is the base method for compiling templates.
145 	 * @param locator the locator
146 	 * @return the compiled template
147 	 * @throws TemplateException on occasion
148 	 */
149 	public Template compile(TemplateLocator locator) throws TemplateException;
150 		
151 	/**
152 	 * Compiles the template defined by the source.
153 	 * Makes use of the {@link InMemoryTemplateLocator}, 
154 	 * which stores the source in memory. 
155 	 * @param source the source
156 	 * @return the compiled template
157 	 * @throws TemplateException
158 	 */
159     public Template compile(String source) throws TemplateException;
160     
161 	/**
162 	 * Compiles the template defined by the source. 
163 	 * Makes use of the {@link InMemoryTemplateLocator}, 
164 	 * which stores the source in memory. 
165 	 * @param source the source
166 	 * @return the compiled template
167 	 * @throws TemplateException
168 	 */
169     public Template compile(char[] source) throws TemplateException;
170 	
171 	/**
172 	 * Renders the template with the specified name to the specified writer.
173 	 * <br/><br/>
174 	 * The workingObject is just any object or bean, that contains the data
175 	 * that should be integrated in the template. 
176 	 * <br/><br/>
177 	 * The name of the template is usually some path on the file system or
178 	 * the resources but you can enhance this by implementing an own {@link Resolver}. 
179 	 * 
180 	 * @param writer the writer
181 	 * @param workingObject the working object
182 	 * @param name the name of the template
183 	 * @throws TemplateException if anything goes wrong
184 	 * @throws IOException if it cannot write to the writer
185 	 */
186 	public void render(Writer writer, Object workingObject, String name) throws TemplateException, IOException;
187 	
188 	/**
189 	 * Renders the template with the specified name to the specified writer.
190 	 * <br/><br/>
191 	 * The workingObject is just any object or bean, that contains the data
192 	 * that should be integrated in the template. 
193 	 * <br/><br/>
194 	 * The name of the template is usually some path on the file system or
195 	 * the resources but you can enhance this by implementing an own {@link Resolver}. 
196 	 * 
197 	 * @param writer the writer
198 	 * @param workingObject the working object
199 	 * @param name the name of the template
200 	 * @param locale the locale; uses the default locale if null
201 	 * @throws TemplateException if anything goes wrong
202 	 * @throws IOException if it cannot write to the writer
203 	 */
204 	public void render(Writer writer, Object workingObject, String name, Locale locale) throws TemplateException, IOException;
205 
206 	/**
207 	 * Renders the template with the specified name to the specified writer.
208 	 * <br/><br/>
209 	 * The workingObject is just any object or bean, that contains the data
210 	 * that should be integrated in the template. 
211 	 * <br/><br/>
212 	 * The name of the template is usually some path on the file system or
213 	 * the resources but you can enhance this by implementing an own {@link Resolver}. 
214 	 * 
215 	 * @param writer the writer
216 	 * @param workingObject the working object
217 	 * @param name the name of the template
218 	 * @param encoding the encoding; uses the default encoding if null
219 	 * @throws TemplateException if anything goes wrong
220 	 * @throws IOException if it cannot write to the writer
221 	 */
222 	public void render(Writer writer, Object workingObject, String name, String encoding) throws TemplateException, IOException;
223 
224 	/**
225 	 * Renders the template with the specified name to the specified writer.
226 	 * <br/><br/>
227 	 * The workingObject is just any object or bean, that contains the data
228 	 * that should be integrated in the template. 
229 	 * <br/><br/>
230 	 * The name of the template is usually some path on the file system or
231 	 * the resources but you can enhance this by implementing an own {@link Resolver}. 
232 	 * 
233 	 * @param writer the writer
234 	 * @param workingObject the working object
235 	 * @param name the name of the template
236 	 * @param locale the locale; uses the default locale if null
237 	 * @param encoding the encoding; uses the default encoding if null
238 	 * @throws TemplateException if anything goes wrong
239 	 * @throws IOException if it cannot write to the writer
240 	 */
241 	public void render(Writer writer, Object workingObject, String name, Locale locale, String encoding) throws TemplateException, IOException;
242 
243 	/**
244 	 * Renders the template specified by the descriptor
245 	 * <br/><br/>
246 	 * The workingObject is just any object or bean, that contains the data
247 	 * that should be integrated in the template. 
248 	 * <br/><br/>
249 	 * The name of the template is usually some path on the file system or
250 	 * the resources but you can enhance this by implementing an own {@link Resolver}. 
251 	 * 
252 	 * @param writer the writer
253 	 * @param workingObject the working object
254 	 * @param key the key
255 	 * @throws TemplateException if anything goes wrong
256 	 * @throws IOException if it cannot write to the writer
257 	 */
258 	public void render(Writer writer, Object workingObject, ResourceKey key) throws TemplateException, IOException;
259 
260 }