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.service;
21  
22  import java.util.Locale;
23  
24  import org.peaseplate.Messages;
25  import org.peaseplate.Template;
26  import org.peaseplate.TemplateEngine;
27  import org.peaseplate.TemplateException;
28  import org.peaseplate.internal.ResourceKey;
29  import org.peaseplate.resolver.Resolver;
30  
31  /**
32   * The cache service is responsible for caching templates and messages,
33   * to load them if they are on in the cache and 
34   * to reload them if they are outdated.
35   * 
36   * @author Manfred Hantschel
37   */
38  public interface CacheService {
39  
40  	/**
41  	 * Returns the template with the specified name. 
42  	 * <br/><br/>
43  	 * The name of the template is usually some path on the file system or
44  	 * the resources but you can enhance this by implementing an own {@link Resolver}.
45  	 *  
46  	 * @param engine the template engine
47  	 * @param name the name of the template
48  	 * @return the template or null if not found
49  	 * @throws TemplateException if anything goes wrong
50  	 */
51  	public Template getTemplate(TemplateEngine engine, String name) throws TemplateException;
52  	
53  	/**
54  	 * Returns the template with the specified name. 
55  	 * <br/><br/>
56  	 * The name of the template is usually some path on the file system or
57  	 * the resources but you can enhance this by implementing an own {@link Resolver}.
58  	 *  
59  	 * @param engine the template engine
60  	 * @param name the name of the template
61  	 * @param locale the locale; uses the default locale if null
62  	 * @return the template or null if not found
63  	 * @throws TemplateException if anything goes wrong
64  	 */
65  	public Template getTemplate(TemplateEngine engine, String name, Locale locale) throws TemplateException;
66  
67  	/**
68  	 * Returns the template with the specified name. 
69  	 * <br/><br/>
70  	 * The name of the template is usually some path on the file system or
71  	 * the resources but you can enhance this by implementing an own {@link Resolver}.
72  	 *  
73  	 * @param engine the template engine
74  	 * @param name the name of the template
75  	 * @param encoding the encoding; uses the default encoding if null
76  	 * @return the template or null if not found
77  	 * @throws TemplateException if anything goes wrong
78  	 */
79  	public Template getTemplate(TemplateEngine engine, String name, String encoding) throws TemplateException;
80  
81  	/**
82  	 * Returns the template with the specified name. 
83  	 * <br/><br/>
84  	 * The name of the template is usually some path on the file system or
85  	 * the resources but you can enhance this by implementing an own {@link Resolver}.
86  	 *  
87  	 * @param engine the template engine
88  	 * @param name the name of the template
89  	 * @param locale the locale; uses the default locale if null
90  	 * @param encoding the encoding; uses the default encoding if null
91  	 * @return the template or null if not found
92  	 * @throws TemplateException if anything goes wrong
93  	 */
94  	public Template getTemplate(TemplateEngine engine, String name, Locale locale, String encoding) throws TemplateException;
95  
96  	public Template getTemplate(TemplateEngine engine, ResourceKey key) throws TemplateException;
97  	
98  	/**
99  	 * Returns the messages with the specified name. Makes use of the CacheService.
100 	 * <br/><br/>
101 	 * The name is usually the template name. The extension will get replaced by ".properties".
102 	 * But internally it depends on the resolver, which you can enhance by implementing your own.
103 	 * 
104 	 * @param engine the template engine
105 	 * @param name the name of the template (The extension will get replaces by ".properties"
106 	 * @return the messages or null if not found
107 	 * @throws TemplateException if anything goes wrong
108 	 */
109 	public Messages getMessages(TemplateEngine engine, String name) throws TemplateException;
110 	
111 	/**
112 	 * Returns the messages with the specified name. Makes use of the CacheService.
113 	 * <br/><br/>
114 	 * The name is usually the template name. The extension will get replaced by ".properties".
115 	 * But internally it depends on the resolver, which you can enhance by implementing your own.
116 	 * 
117 	 * @param engine the template engine
118 	 * @param name the name of the template (The extension will get replaces by ".properties"
119 	 * @param locale the locale; uses the default locale if null
120 	 * @return the messages or null if not found
121 	 * @throws TemplateException if anything goes wrong
122 	 */
123 	public Messages getMessages(TemplateEngine engine, String name, Locale locale) throws TemplateException;
124 	
125 	/**
126 	 * Returns the messages with the specified name. Makes use of the CacheService.
127 	 * <br/><br/>
128 	 * The name is usually the template name. The extension will get replaced by ".properties".
129 	 * But internally it depends on the resolver, which you can enhance by implementing your own.
130 	 * 
131 	 * @param engine the template engine
132 	 * @param name the name of the template (The extension will get replaces by ".properties"
133 	 * @param encoding the encoding; uses the default encoding if null, but usually not needed, 
134 	 * 				   the messages are loaded from properties file, and properties files have their own
135 	 * 				   encoding
136 	 * @return the messages or null if not found
137 	 * @throws TemplateException if anything goes wrong
138 	 */
139 	public Messages getMessages(TemplateEngine engine, String name, String encoding) throws TemplateException;
140 	
141 	/**
142 	 * Returns the messages with the specified name. Makes use of the CacheService.
143 	 * <br/><br/>
144 	 * The name is usually the template name. The extension will get replaced by ".properties".
145 	 * But internally it depends on the resolver, which you can enhance by implementing your own.
146 	 * 
147 	 * @param engine the template engine
148 	 * @param name the name of the template (The extension will get replaces by ".properties"
149 	 * @param locale the locale; uses the default locale if null
150 	 * @param encoding the encoding; uses the default encoding if null, but usually not needed, 
151 	 * 				   the messages are loaded from properties file, and properties files have their own
152 	 * 				   encoding
153 	 * @return the messages or null if not found
154 	 * @throws TemplateException if anything goes wrong
155 	 */
156 	public Messages getMessages(TemplateEngine engine, String name, Locale locale, String encoding) throws TemplateException;
157 
158 	public Messages getMessages(TemplateEngine engine, ResourceKey key) throws TemplateException;
159 
160 }