##### Coverage Report - org.apache.turbine.services.template.BaseTemplateEngineService

Classes in this File | Line Coverage | Branch Coverage | Complexity
BaseTemplateEngineService |
88% | 15/17
66% | 4/6
| 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 | 22 |
     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 | 22 |
         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 | 26 |
             initConfiguration(defaultExt);
60 | 26 |
             TurbineTemplate.registerTemplateEngineService(this);
61 | 26 |
         }
62 |  |
63 |  |
         /**
64 |  |
          * @see org.apache.turbine.services.template.TemplateEngineService#getTemplateEngineServiceConfiguration
65 |  |
          */
66 |  |
         public Hashtable<String, Object> getTemplateEngineServiceConfiguration()
67 |  |
         {
68 | 60 |
             return configuration;
69 |  |
         }
70 |  |
71 |  |
         /**
72 |  |
          * @see org.apache.turbine.services.template.TemplateEngineService#getAssociatedFileExtensions
73 |  |
          */
74 |  |
         public String[] getAssociatedFileExtensions()
75 |  |
         {
76 | 26 |
             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 | 26 |
             Configuration config = getConfiguration();
95 |  |
96 |  |
             //
97 |  |
             // Should modify the configuration class to take defaults
98 |  |
             // here, should have to do this.
99 |  |
             //
100 | 26 |
             String[] fileExtensionAssociations =
101 |  |
                     config.getStringArray(TEMPLATE_EXTENSIONS);
102 |  |
103 | 26 |
             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 | 26 |
             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 | 26 |
             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 | 208 |
             for (int i = 0; i < copyParams.length; i++)
130 |  |
             {
131 | 182 |
                 configuration.put(copyParams[i], config.getString(copyParams[i], ""));
132 |  |
             }
133 | 26 |
         }
134 |  |
135 |  |
         /**
136 |  |
          * @see org.apache.turbine.services.template.TemplateEngineService#templateExists
137 |  |
          */
138 |  |
         public abstract boolean templateExists(String template);
139 |  |
     }