001    package org.apache.turbine.services.jsp;
002    
003    
004    /*
005     * Licensed to the Apache Software Foundation (ASF) under one
006     * or more contributor license agreements.  See the NOTICE file
007     * distributed with this work for additional information
008     * regarding copyright ownership.  The ASF licenses this file
009     * to you under the Apache License, Version 2.0 (the
010     * "License"); you may not use this file except in compliance
011     * with the License.  You may obtain a copy of the License at
012     *
013     *   http://www.apache.org/licenses/LICENSE-2.0
014     *
015     * Unless required by applicable law or agreed to in writing,
016     * software distributed under the License is distributed on an
017     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
018     * KIND, either express or implied.  See the License for the
019     * specific language governing permissions and limitations
020     * under the License.
021     */
022    
023    
024    import org.apache.turbine.pipeline.PipelineData;
025    import org.apache.turbine.services.TurbineServices;
026    
027    import org.apache.turbine.util.RunData;
028    import org.apache.turbine.util.TurbineException;
029    
030    /**
031     * Facade class for the Jsp Service.
032     *
033     * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
034     * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
035     */
036    public abstract class TurbineJsp
037    {
038        /**
039         * Utility method for accessing the service
040         * implementation
041         *
042         * @return a JspService implementation instance
043         */
044        protected static JspService getService()
045        {
046            return (JspService) TurbineServices
047                .getInstance().getService(JspService.SERVICE_NAME);
048        }
049    
050        /**
051         * Adds some convenience objects to the request.  For example an instance
052         * of JspLink which can be used to generate links to other templates.
053         *
054         * @deprecated Use the PipelineData version.
055         * @param data the turbine rundata object
056         */
057        public static void addDefaultObjects(RunData data)
058        {
059            getService().addDefaultObjects(data);
060        }
061    
062    
063        /**
064         * Adds some convenience objects to the request.  For example an instance
065         * of JspLink which can be used to generate links to other templates.
066         *
067         * @param data the turbine pipelinedData object
068         */
069        public static void addDefaultObjects(PipelineData pipelineData)
070        {
071            //Map runDataMap = (Map) pipelineData.get(RunData.class);
072            //RunData data = (RunData)runDataMap.get(RunData.class);
073            RunData runData = (RunData)pipelineData;
074            addDefaultObjects(runData);
075        }
076    
077        /**
078         * executes the JSP given by templateName.
079         *
080         * @deprecated Use the PipelineData version.
081         * @param data A RunData Object
082         * @param templateName The template to execute
083         * @param isForward whether to perform a forward or include.
084         *
085         * @throws TurbineException If a problem occured while executing the JSP
086         */
087        public static void handleRequest(RunData data, String templateName, boolean isForward)
088            throws TurbineException
089        {
090            getService().handleRequest(data, templateName, isForward);
091        }
092    
093        /**
094         * executes the JSP given by templateName.
095         *
096         * @deprecated Use the PipelineData version.
097         * @param data A RunData Object
098         * @param templateName The template to execute
099         *
100         * @throws TurbineException If a problem occured while executing the JSP
101         */
102        public static void handleRequest(RunData data, String templateName)
103            throws TurbineException
104        {
105            getService().handleRequest(data, templateName);
106        }
107    
108        /**
109         * executes the JSP given by templateName.
110         *
111         * @param data A RunData Object
112         * @param templateName The template to execute
113         * @param isForward whether to perform a forward or include.
114         *
115         * @throws TurbineException If a problem occured while executing the JSP
116         */
117        public static void handleRequest(PipelineData pipelineData, String templateName, boolean isForward)
118            throws TurbineException
119        {
120            //Map runDataMap = (Map) pipelineData.get(RunData.class);
121            //RunData data = (RunData)runDataMap.get(RunData.class);
122            RunData runData = (RunData)pipelineData;
123            handleRequest(runData, templateName, isForward);
124        }
125    
126        /**
127         * executes the JSP given by templateName.
128         *
129         * @param data A RunData Object
130         * @param templateName The template to execute
131         *
132         * @throws TurbineException If a problem occured while executing the JSP
133         */
134        public static void handleRequest(PipelineData pipelineData, String templateName)
135            throws TurbineException
136        {
137            if(!(pipelineData instanceof RunData)){
138                throw new RuntimeException("Can't cast to rundata from pipeline data.");
139            }
140            handleRequest((RunData)pipelineData, templateName);
141        }
142    
143    
144        /**
145         * Returns the default buffer size of the JspService
146         *
147         * @return The default buffer size.
148         */
149        public static int getDefaultBufferSize()
150        {
151            return getService().getDefaultBufferSize();
152        }
153    
154        /**
155         * Searchs for a template in the default.template path[s] and
156         * returns the template name with a relative path which is required
157         * by <a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContext.html#getRequestDispatcher(java.lang.String)">javax.servlet.RequestDispatcher</a>
158         *
159         * @param template The name of the template to search for.
160         *
161         * @return the template with a relative path
162         */
163        public static String getRelativeTemplateName(String template)
164        {
165            return getService().getRelativeTemplateName(template);
166        }
167    }