Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
BaseTemplateEngineService |
|
| 1.6;1,6 |
1 | package org.apache.turbine.services.template; | |
2 | ||
3 | ||
4 | /* | |
5 | * Licensed to the Apache Software Foundation (ASF) under one | |
6 | * or more contributor license agreements. See the NOTICE file | |
7 | * distributed with this work for additional information | |
8 | * regarding copyright ownership. The ASF licenses this file | |
9 | * to you under the Apache License, Version 2.0 (the | |
10 | * "License"); you may not use this file except in compliance | |
11 | * with the License. You may obtain a copy of the License at | |
12 | * | |
13 | * http://www.apache.org/licenses/LICENSE-2.0 | |
14 | * | |
15 | * Unless required by applicable law or agreed to in writing, | |
16 | * software distributed under the License is distributed on an | |
17 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
18 | * KIND, either express or implied. See the License for the | |
19 | * specific language governing permissions and limitations | |
20 | * under the License. | |
21 | */ | |
22 | ||
23 | ||
24 | import java.util.Hashtable; | |
25 | ||
26 | import org.apache.commons.configuration.Configuration; | |
27 | import org.apache.turbine.services.TurbineBaseService; | |
28 | ||
29 | /** | |
30 | * The base implementation of Turbine {@link | |
31 | * org.apache.turbine.services.template.TemplateEngineService}. | |
32 | * | |
33 | * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a> | |
34 | * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> | |
35 | * @version $Id: BaseTemplateEngineService.java 1078552 2011-03-06 19:58:46Z tv $ | |
36 | */ | |
37 | 42 | public abstract class BaseTemplateEngineService |
38 | extends TurbineBaseService | |
39 | implements TemplateEngineService | |
40 | { | |
41 | /** | |
42 | * A Map containing the configuration for the template | |
43 | * engine service. The configuration contains: | |
44 | * | |
45 | * 1) template extensions | |
46 | * 2) default page | |
47 | * 3) default screen | |
48 | * 4) default layout | |
49 | * 5) default navigation | |
50 | * 6) default error screen | |
51 | */ | |
52 | 42 | private final Hashtable<String, Object> configuration = new Hashtable<String, Object>(); |
53 | ||
54 | /** | |
55 | * @see org.apache.turbine.services.template.TemplateEngineService#registerConfiguration | |
56 | */ | |
57 | public void registerConfiguration(String defaultExt) | |
58 | { | |
59 | 62 | initConfiguration(defaultExt); |
60 | 62 | TurbineTemplate.registerTemplateEngineService(this); |
61 | 62 | } |
62 | ||
63 | /** | |
64 | * @see org.apache.turbine.services.template.TemplateEngineService#getTemplateEngineServiceConfiguration | |
65 | */ | |
66 | public Hashtable<String, Object> getTemplateEngineServiceConfiguration() | |
67 | { | |
68 | 118 | return configuration; |
69 | } | |
70 | ||
71 | /** | |
72 | * @see org.apache.turbine.services.template.TemplateEngineService#getAssociatedFileExtensions | |
73 | */ | |
74 | public String[] getAssociatedFileExtensions() | |
75 | { | |
76 | 62 | return (String[]) configuration.get(TEMPLATE_EXTENSIONS); |
77 | } | |
78 | ||
79 | /** | |
80 | * Initialize the Template Engine Service. | |
81 | * | |
82 | * Note engine file extension associations. First attempts to | |
83 | * pull a list of custom extensions from the property file value | |
84 | * keyed by <code>template.extension</code>. If none are defined, | |
85 | * uses the value keyed by | |
86 | * <code>template.default.extension</code>, defaulting to the | |
87 | * emergency value supplied by <code>defaultExt</code>. | |
88 | * | |
89 | * @param defaultExt The default used when the default defined in the | |
90 | * properties file is missing or misconfigured. | |
91 | */ | |
92 | protected void initConfiguration(String defaultExt) | |
93 | { | |
94 | 62 | Configuration config = getConfiguration(); |
95 | ||
96 | // | |
97 | // Should modify the configuration class to take defaults | |
98 | // here, should have to do this. | |
99 | // | |
100 | 62 | String[] fileExtensionAssociations = |
101 | config.getStringArray(TEMPLATE_EXTENSIONS); | |
102 | ||
103 | 62 | if (fileExtensionAssociations == null || |
104 | fileExtensionAssociations.length == 0) | |
105 | { | |
106 | 0 | fileExtensionAssociations = new String[1]; |
107 | 0 | fileExtensionAssociations[0] = config.getString( |
108 | DEFAULT_TEMPLATE_EXTENSION, defaultExt); | |
109 | } | |
110 | ||
111 | 62 | configuration.put(TEMPLATE_EXTENSIONS, fileExtensionAssociations); |
112 | ||
113 | /* | |
114 | * We need some better error checking here and should probably | |
115 | * throw an exception here if these things aren't set | |
116 | * up correctly. | |
117 | */ | |
118 | ||
119 | 62 | String[] copyParams = { |
120 | DEFAULT_PAGE, | |
121 | DEFAULT_SCREEN, | |
122 | DEFAULT_LAYOUT, | |
123 | DEFAULT_NAVIGATION, | |
124 | DEFAULT_ERROR_SCREEN, | |
125 | DEFAULT_LAYOUT_TEMPLATE, | |
126 | DEFAULT_SCREEN_TEMPLATE | |
127 | }; | |
128 | ||
129 | 496 | for (int i = 0; i < copyParams.length; i++) |
130 | { | |
131 | 434 | configuration.put(copyParams[i], config.getString(copyParams[i], "")); |
132 | } | |
133 | 62 | } |
134 | ||
135 | /** | |
136 | * @see org.apache.turbine.services.template.TemplateEngineService#templateExists | |
137 | */ | |
138 | public abstract boolean templateExists(String template); | |
139 | } |