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.services.Service;
025    
026    import org.apache.turbine.util.RunData;
027    import org.apache.turbine.util.TurbineException;
028    
029    
030    /**
031     * Implementations of the JspService interface.
032     *
033     * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
034     */
035    public interface JspService
036        extends Service
037    {
038        /** The name used to specify this service in Turbine.properties */
039        String SERVICE_NAME = "JspService";
040    
041        /** The key used to store an instance of RunData in the request */
042        String RUNDATA = "rundata";
043    
044        /** The key used to store an instance of JspLink in the request */
045        String LINK = "link";
046    
047        /** The default extension of JSPs */
048        String JSP_EXTENSION = "jsp";
049    
050        /** Property key for Template Pathes */
051        String TEMPLATE_PATH_KEY = "templates";
052    
053        /** Property for Jsp Page Buffer Size */
054        String BUFFER_SIZE_KEY = "buffer.size";
055    
056        /** Default Value for Jsp Page Buffer Size */
057        int BUFFER_SIZE_DEFAULT = 8192;
058    
059        /**
060         * Adds some convenience objects to the request.  For example an instance
061         * of JspLink which can be used to generate links to other templates.
062         *
063         * @param data the turbine rundata object
064         */
065        void addDefaultObjects(RunData data);
066    
067        /**
068         * executes the JSP given by templateName.
069         *
070         * @param data A RunData Object
071         * @param templateName The template to execute
072         * @param isForward whether to perform a forward or include.
073         *
074         * @throws TurbineException If a problem occured while executing the JSP
075         */
076        void handleRequest(RunData data, String templateName, boolean isForward)
077            throws TurbineException;
078    
079        /**
080         * executes the JSP given by templateName.
081         *
082         * @param data A RunData Object
083         * @param templateName The template to execute
084         *
085         * @throws TurbineException If a problem occured while executing the JSP
086         */
087        void handleRequest(RunData data, String templateName)
088            throws TurbineException;
089    
090        /**
091         * Returns the default buffer size of the JspService
092         *
093         * @return The default buffer size.
094         */
095        int getDefaultBufferSize();
096    
097        /**
098         * Searchs for a template in the default.template path[s] and
099         * returns the template name with a relative path which is required
100         * by <a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContext.html#getRequestDispatcher(java.lang.String)">javax.servlet.RequestDispatcher</a>
101         *
102         * @param template The name of the template to search for.
103         *
104         * @return the template with a relative path
105         */
106        String getRelativeTemplateName(String template);
107    
108    }