    001    package org.apache.turbine.modules;
    002
    003    /*
    004     * Licensed to the Apache Software Foundation (ASF) under one
    005     * or more contributor license agreements.  See the NOTICE file
    006     * distributed with this work for additional information
    007     * regarding copyright ownership.  The ASF licenses this file
    008     * to you under the Apache License, Version 2.0 (the
    009     * "License"); you may not use this file except in compliance
    010     * with the License.  You may obtain a copy of the License at
    011     *
    012     *   http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing,
    015     * software distributed under the License is distributed on an
    016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    017     * KIND, either express or implied.  See the License for the
    018     * specific language governing permissions and limitations
    019     * under the License.
    020     */
    021
    022    import org.apache.turbine.Turbine;
    023    import org.apache.turbine.pipeline.PipelineData;
    024    import org.apache.turbine.util.RunData;
    025
    026    /**
    027     * The purpose of this class is to allow one to load and execute Page
    028     * modules.
    029     *
    030     * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a>
    031     * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
    032     * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
    033     * @version $Id: PageLoader.java 1078552 2011-03-06 19:58:46Z tv $
    034     */
    035    public class PageLoader
    036        extends GenericLoader<Page>
    037        implements Loader<Page>
    038    {
    039        /** The single instance of this class. */
    040        private static PageLoader instance = new PageLoader();
    041
    042        /**
    043         * These ctor's are private to force clients to use getInstance()
    044         * to access this class.
    045         */
    046        private PageLoader()
    047        {
    048            super();
    049        }
    050
    051        /**
    052         * Attempts to load and execute the external page.
    053         * @deprecated Use PipelineData version instead.
    054         * @param data Turbine information.
    055         * @param name Name of object that will execute the page.
    056         * @exception Exception a generic exception.
    057         */
    058        @Deprecated
    059        @Override
    060        public void exec(RunData data, String name)
    061                throws Exception
    062        {
    063            // Execute page
    064            getAssembler(name).build(data);
    065        }
    066
    067        /**
    068         * Attempts to load and execute the external page.
    069         *
    070         * @param data Turbine information.
    071         * @param name Name of object that will execute the page.
    072         * @exception Exception a generic exception.
    073         */
    074        @Override
    075        public void exec(PipelineData pipelineData, String name)
    076                throws Exception
    077        {
    078            // Execute page
    079            getAssembler(name).build(pipelineData);
    080        }
    081
    082
    083
    084        /**
    085         * Pulls out an instance of the object by name.  Name is just the
    086         * single name of the object. This is equal to getInstance but
    087         * returns an Assembler object and is needed to fulfil the Loader
    088         * interface.
    089         *
    090         * @param name Name of object instance.
    091         * @return A Screen with the specified name, or null.
    092         * @exception Exception a generic exception.
    093         */
    094        public Page getAssembler(String name)
    095            throws Exception
    096        {
    097            return getAssembler(Page.NAME, name);
    098        }
    099
    100        /**
    101         * @see org.apache.turbine.modules.Loader#getCacheSize()
    102         */
    103        public int getCacheSize()
    104        {
    105            return PageLoader.getConfiguredCacheSize();
    106        }
    107
    108        /**
    109         * The method through which this class is accessed.
    110         *
    111         * @return The single instance of this class.
    112         */
    113        public static PageLoader getInstance()
    114        {
    115            return instance;
    116        }
    117
    118        /**
    119         * Helper method to get the configured cache size for this module
    120         *
    121         * @return the configure cache size
    122         */
    123        private static int getConfiguredCacheSize()
    124        {
    125            return Turbine.getConfiguration().getInt(Page.CACHE_SIZE_KEY,
    126                    Page.CACHE_SIZE_DEFAULT);
    127        }
    128    }