    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
    028     * Layout 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: LayoutLoader.java 1078552 2011-03-06 19:58:46Z tv $
    034     */
    035    public class LayoutLoader
    036        extends GenericLoader<Layout>
    037        implements Loader<Layout>
    038    {
    039        /** The single instance of this class. */
    040        private static LayoutLoader instance = new LayoutLoader();
    041
    042        /**
    043         * These ctor's are private to force clients to use getInstance()
    044         * to access this class.
    045         */
    046        private LayoutLoader()
    047        {
    048            super();
    049        }
    050
    051        /**
    052         * Attempts to load and execute the external layout.
    053         *
    054         * @deprecated Use PipelineData version instead.
    055         * @param data Turbine information.
    056         * @param name Name of object that will execute the layout.
    057         * @exception Exception a generic exception.
    058         */
    059        @Deprecated
    060        @Override
    061        public void exec(RunData data, String name)
    062                throws Exception
    063        {
    064            // Execute layout
    065            getAssembler(name).build(data);
    066        }
    067
    068        /**
    069         * Attempts to load and execute the external layout.
    070         *
    071         * @param pipelineData Turbine information.
    072         * @param name Name of object that will execute the layout.
    073         * @exception Exception a generic exception.
    074         */
    075        @Override
    076        public void exec(PipelineData pipelineData, String name)
    077                    throws Exception
    078        {
    079            getAssembler(name).build(pipelineData);
    080        }
    081
    082        /**
    083         * Pulls out an instance of the object by name.  Name is just the
    084         * single name of the object. This is equal to getInstance but
    085         * returns an Assembler object and is needed to fulfil the Loader
    086         * interface.
    087         *
    088         * @param name Name of object instance.
    089         * @return A Layout with the specified name, or null.
    090         * @exception Exception a generic exception.
    091         */
    092        public Layout getAssembler(String name)
    093            throws Exception
    094        {
    095            return getAssembler(Layout.NAME, name);
    096        }
    097
    098        /**
    099         * @see org.apache.turbine.modules.Loader#getCacheSize()
    100         */
    101        public int getCacheSize()
    102        {
    103            return LayoutLoader.getConfiguredCacheSize();
    104        }
    105
    106        /**
    107         * The method through which this class is accessed.
    108         *
    109         * @return The single instance of this class.
    110         */
    111        public static LayoutLoader getInstance()
    112        {
    113            return instance;
    114        }
    115
    116        /**
    117         * Helper method to get the configured cache size for this module
    118         *
    119         * @return the configure cache size
    120         */
    121        private static int getConfiguredCacheSize()
    122        {
    123            return Turbine.getConfiguration().getInt(Layout.CACHE_SIZE_KEY,
    124                    Layout.CACHE_SIZE_DEFAULT);
    125        }
    126    }