KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fulcrum > template > BaseTemplateEngineService


1 package org.apache.fulcrum.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.io.OutputStream JavaDoc;
58 import java.io.Writer JavaDoc;
59 import java.util.Hashtable JavaDoc;
60
61 import org.apache.fulcrum.BaseService;
62 import org.apache.fulcrum.ServiceException;
63
64 /**
65  * The base implementation of Turbine {@link
66  * org.apache.fulcrum.template.TemplateEngineService}.
67  *
68  * @author <a HREF="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
69  * @author <a HREF="mailto:jvanzyl@apache.org">Jason van Zyl</a>
70  * @version $Id: BaseTemplateEngineService.java,v 1.1 2004/11/12 10:26:02 epugh Exp $
71  */

72 public abstract class BaseTemplateEngineService
73     extends BaseService
74     implements TemplateEngineService
75 {
76     /**
77      * A Map containing the configuration for the template
78      * engine service. The configuration contains:
79      *
80      * 1) template extensions
81      * 2) default page
82      * 3) default screen
83      * 4) default layout
84      * 5) default navigation
85      * 6) default error screen
86      */

87     private Hashtable JavaDoc configuration = new Hashtable JavaDoc();
88
89     /**
90      * @see org.apache.fulcrum.template.TemplateEngineService#registerConfiguration
91      */

92     public void registerConfiguration(String JavaDoc defaultExt)
93     {
94         initConfiguration(defaultExt);
95         TurbineTemplate.registerTemplateEngineService(this);
96     }
97
98     /**
99      * @see org.apache.fulcrum.template.TemplateEngineService#getTemplateEngineServiceConfiguration
100      */

101     public Hashtable JavaDoc getTemplateEngineServiceConfiguration()
102     {
103         return configuration;
104     }
105
106     /**
107      * @see org.apache.fulcrum.template.TemplateEngineService#getAssociatedFileExtensions
108      */

109     public String JavaDoc[] getAssociatedFileExtensions()
110     {
111         return (String JavaDoc []) configuration.get(TEMPLATE_EXTENSIONS);
112     }
113
114     /**
115      * Note engine file extension associations. First attempts to
116      * pull a list of custom extensions from the property file value
117      * keyed by <code>template.extension</code>. If none are defined,
118      * uses the value keyed by
119      * <code>template.default.extension</code>, defaulting to the
120      * emergency value supplied by <code>defaultExt</code>.
121      *
122      * @param defaultExt The default used when the default defined in the
123      * properties file is missing or misconfigured.
124      */

125     protected void initConfiguration(String JavaDoc defaultExt)
126     {
127         /*
128          * Should modify the configuration class to take defaults
129          * here, should have to do this.
130          */

131         String JavaDoc[] fileExtensionAssociations =
132             getConfiguration().getStringArray(TEMPLATE_EXTENSIONS);
133
134         if (fileExtensionAssociations == null ||
135             fileExtensionAssociations.length == 0)
136         {
137             fileExtensionAssociations = new String JavaDoc[1];
138             fileExtensionAssociations[0] = getConfiguration().getString(
139                 DEFAULT_TEMPLATE_EXTENSION, defaultExt);
140         }
141
142         configuration.put(TEMPLATE_EXTENSIONS, fileExtensionAssociations);
143
144         configuration.put(DEFAULT_PAGE_TEMPLATE,
145             getConfiguration().getString(DEFAULT_PAGE_TEMPLATE));
146
147         configuration.put(DEFAULT_LAYOUT_TEMPLATE,
148             getConfiguration().getString(DEFAULT_LAYOUT_TEMPLATE));
149
150     }
151
152     /**
153      * @see org.apache.fulcrum.template.TemplateEngineService#templateExists
154      */

155     public abstract boolean templateExists(String JavaDoc template);
156
157     public abstract String JavaDoc handleRequest(TemplateContext context,
158                                          String JavaDoc template)
159         throws ServiceException;
160
161     public abstract void handleRequest(TemplateContext context,
162                                        String JavaDoc template, OutputStream JavaDoc os)
163         throws ServiceException;
164
165     /**
166      * @see org.apache.fulcrum.template.TemplateEngineService
167      */

168     public abstract void handleRequest(TemplateContext context,
169                                        String JavaDoc template, Writer JavaDoc writer)
170         throws ServiceException;
171 }
172
Popular Tags