    001    package org.apache.turbine.services.jsp.util;
    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.commons.logging.Log;
    025    import org.apache.commons.logging.LogFactory;
    026    import org.apache.turbine.modules.NavigationLoader;
    027    import org.apache.turbine.services.template.TurbineTemplate;
    028    import org.apache.turbine.util.RunData;
    029
    030    /**
    031     * Returns output of a Navigation module. An instance of this is placed in the
    032     * request by the JspLayout. This allows template authors to
    033     * set the navigation template they'd like to place in their templates.<br>
    034     * Here's how it's used in a JSP template:<br>
    035     * <code>
    036     * <%useBean id="navigation" class="JspNavigation" scope="request"/%>
    037     * ...
    038     * <%= navigation.setTemplate("admin_navigation.jsp") %>
    039     * </code>
    040     * @author <a href="john.mcnally@clearink.com">John D. McNally</a>
    041     * @author <a href="mbryson@mont.mindspring.com">Dave Bryson</a>
    042     * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
    043     * @version $Id: JspNavigation.java 1078552 2011-03-06 19:58:46Z tv $
    044     */
    045    public class JspNavigation
    046    {
    047        /** Logging */
    048        private static Log log = LogFactory.getLog(JspNavigation.class);
    049
    050        /* The RunData object */
    051        private final RunData data;
    052
    053        /**
    054         * Constructor
    055         *
    056         * @param data
    057         */
    058        public JspNavigation(RunData data)
    059        {
    060            this.data = data;
    061        }
    062
    063        /**
    064         * builds the output of the navigation template
    065         * @param template the name of the navigation template
    066         */
    067        public void setTemplate(String template)
    068        {
    069            data.getTemplateInfo().setNavigationTemplate(template);
    070            String module = null;
    071            try
    072            {
    073                module = TurbineTemplate.getNavigationName(template);
    074                NavigationLoader.getInstance().exec(data, module);
    075            }
    076            catch (Exception e)
    077            {
    078                String message = "Error processing navigation template:" +
    079                        template + " using module: " + module;
    080                log.error(message, e);
    081                try
    082                {
    083                    data.getResponse().getWriter().print("Error processing navigation template: "
    084                            + template + " using module: " + module);
    085                }
    086                catch (java.io.IOException ioe)
    087                {
    088                    // ignore
    089                }
    090            }
    091        }
    092    }