1 package org.apache.turbine.services.template;
2
3 /* ====================================================================
4 * The Apache Software License, Version 1.1
5 *
6 * Copyright (c) 2001 The Apache Software Foundation. All rights
7 * reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in
18 * the documentation and/or other materials provided with the
19 * distribution.
20 *
21 * 3. The end-user documentation included with the redistribution,
22 * if any, must include the following acknowledgment:
23 * "This product includes software developed by the
24 * Apache Software Foundation (http://www.apache.org/)."
25 * Alternately, this acknowledgment may appear in the software itself,
26 * if and wherever such third-party acknowledgments normally appear.
27 *
28 * 4. The names "Apache" and "Apache Software Foundation" and
29 * "Apache Turbine" must not be used to endorse or promote products
30 * derived from this software without prior written permission. For
31 * written permission, please contact apache@apache.org.
32 *
33 * 5. Products derived from this software may not be called "Apache",
34 * "Apache Turbine", nor may "Apache" appear in their name, without
35 * prior written permission of the Apache Software Foundation.
36 *
37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48 * SUCH DAMAGE.
49 * ====================================================================
50 *
51 * This software consists of voluntary contributions made by many
52 * individuals on behalf of the Apache Software Foundation. For more
53 * information on the Apache Software Foundation, please see
54 * <http://www.apache.org/>.
55 */
56
57 import java.util.Hashtable;
58 import org.apache.commons.configuration.Configuration;
59 import org.apache.turbine.services.TurbineBaseService;
60
61
62 /***
63 * The base implementation of Turbine {@link
64 * org.apache.turbine.services.template.TemplateEngineService}.
65 *
66 * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
67 * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
68 * @version $Id: BaseTemplateEngineService.java,v 1.4 2002/07/11 16:53:24 mpoeschl Exp $
69 */
70 public abstract class BaseTemplateEngineService extends TurbineBaseService
71 implements TemplateEngineService
72 {
73 /***
74 * A Map containing the configuration for the template
75 * engine service. The configuration contains:
76 *
77 * 1) template extensions
78 * 2) default page
79 * 3) default screen
80 * 4) default layout
81 * 5) default navigation
82 * 6) default error screen
83 */
84 private Hashtable configuration = new Hashtable();
85
86 /***
87 * @see org.apache.turbine.services.template.TemplateEngineService#registerConfiguration
88 */
89 public void registerConfiguration(String defaultExt)
90 {
91 initConfiguration(defaultExt);
92 TurbineTemplate.registerTemplateEngineService(this);
93 }
94
95 /***
96 * @see org.apache.turbine.services.template.TemplateEngineService#getTemplateEngineServiceConfiguration
97 */
98 public Hashtable getTemplateEngineServiceConfiguration()
99 {
100 return configuration;
101 }
102
103 /***
104 * @see org.apache.turbine.services.template.TemplateEngineService#getAssociatedFileExtensions
105 */
106 public String[] getAssociatedFileExtensions()
107 {
108 return (String []) configuration.get(TEMPLATE_EXTENSIONS);
109 }
110
111 /***
112 * Note engine file extension associations. First attempts to
113 * pull a list of custom extensions from the property file value
114 * keyed by <code>template.extension</code>. If none are defined,
115 * uses the value keyed by
116 * <code>template.default.extension</code>, defaulting to the
117 * emergency value supplied by <code>defaultExt</code>.
118 *
119 * @param defaultExt The default used when the default defined in the
120 * properties file is missing or misconfigured.
121 */
122 protected void initConfiguration(String defaultExt)
123 {
124 Configuration config = getConfiguration();
125
126 /*
127 * Should modify the configuration class to take defaults
128 * here, should have to do this.
129 */
130 String[] fileExtensionAssociations =
131 config.getStringArray(TEMPLATE_EXTENSIONS);
132
133 if (fileExtensionAssociations == null ||
134 fileExtensionAssociations.length == 0)
135 {
136 fileExtensionAssociations = new String[1];
137 fileExtensionAssociations[0] = config.getString(
138 DEFAULT_TEMPLATE_EXTENSION, defaultExt);
139 }
140
141 configuration.put(TEMPLATE_EXTENSIONS, fileExtensionAssociations);
142
143 /*
144 * We need some better error checking here and should probably
145 * throw an exception here if these things aren't set
146 * up correctly.
147 */
148 configuration.put(DEFAULT_PAGE, config.getString(DEFAULT_PAGE));
149 configuration.put(DEFAULT_SCREEN, config.getString(DEFAULT_SCREEN));
150 configuration.put(DEFAULT_LAYOUT, config.getString(DEFAULT_LAYOUT));
151 configuration.put(DEFAULT_NAVIGATION,
152 config.getString(DEFAULT_NAVIGATION));
153 configuration.put(DEFAULT_ERROR_SCREEN,
154 config.getString(DEFAULT_ERROR_SCREEN));
155 configuration.put(DEFAULT_LAYOUT_TEMPLATE,
156 config.getString(DEFAULT_LAYOUT_TEMPLATE));
157 }
158
159 /***
160 * @see org.apache.turbine.services.template.TemplateEngineService#templateExists
161 */
162 public abstract boolean templateExists(String template);
163 }
This page was automatically generated by Maven