View Javadoc

    1   package org.apache.turbine.modules;
    2
    3   /*
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *   http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21
    22  import org.apache.ecs.ConcreteElement;
    23  import org.apache.turbine.Turbine;
    24  import org.apache.turbine.pipeline.PipelineData;
    25  import org.apache.turbine.util.RunData;
    26
    27  /**
    28   * The purpose of this class is to allow one to load and execute
    29   * Navigation modules.
    30   *
    31   * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a>
    32   * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
    33   * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
    34   * @version $Id: NavigationLoader.java 1078552 2011-03-06 19:58:46Z tv $
    35   */
    36  public class NavigationLoader
    37      extends GenericLoader<Navigation>
    38      implements Loader<Navigation>
    39  {
    40      /** The single instance of this class. */
    41      private static NavigationLoader instance = new NavigationLoader();
    42
    43      /**
    44       * These ctor's are private to force clients to use getInstance()
    45       * to access this class.
    46       */
    47      private NavigationLoader()
    48      {
    49          super();
    50      }
    51
    52      /**
    53       * Attempts to load and execute the external Navigation. This is
    54       * used when you want to execute a Navigation which returns its
    55       * output via a MultiPartElement instead of out the data.getPage()
    56       * value.  This allows you to easily chain the execution of
    57       * Navigation modules together.
    58       *
    59       * @deprecated Use PipelineData version instead.
    60       * @param data Turbine information.
    61       * @param name Name of object that will execute the navigation.
    62       * @exception Exception a generic exception.
    63       */
    64      @Deprecated
    65      public ConcreteElement eval(RunData data, String name)
    66              throws Exception
    67      {
    68          // Execute Navigation
    69          return getAssembler(name).build(data);
    70      }
    71
    72      /**
    73       * Attempts to load and execute the external Navigation. This is
    74       * used when you want to execute a Navigation which returns its
    75       * output via a MultiPartElement instead of out the data.getPage()
    76       * value.  This allows you to easily chain the execution of
    77       * Navigation modules together.
    78       *
    79       * @param data Turbine information.
    80       * @param name Name of object that will execute the navigation.
    81       * @exception Exception a generic exception.
    82       */
    83      public ConcreteElement eval(PipelineData pipelineData, String name)
    84              throws Exception
    85      {
    86          // Execute Navigation
    87          return getAssembler(name).build(pipelineData);
    88      }
    89
    90
    91      /**
    92       * Attempts to load and execute the external Navigation.
    93       * @deprecated Use PipelineData version instead.
    94       * @param data Turbine information.
    95       * @param name Name of object instance.
    96       * @exception Exception a generic exception.
    97       */
    98      @Deprecated
    99      @Override
    100     public void exec(RunData data, String name)
    101             throws Exception
    102     {
    103         this.eval(data, name);
    104     }
    105
    106     /**
    107      * Attempts to load and execute the external Navigation.
    108      *
    109      * @param pipelineData Turbine information.
    110      * @param name Name of object instance.
    111      * @exception Exception a generic exception.
    112      */
    113     @Override
    114     public void exec(PipelineData pipelineData, String name)
    115     		throws Exception
    116     {
    117         this.eval(pipelineData, name);
    118     }
    119
    120
    121     /**
    122      * Pulls out an instance of the object by name.  Name is just the
    123      * single name of the object. This is equal to getInstance but
    124      * returns an Assembler object and is needed to fulfil the Loader
    125      * interface.
    126      *
    127      * @param name Name of object instance.
    128      * @return A Layout with the specified name, or null.
    129      * @exception Exception a generic exception.
    130      */
    131     public Navigation getAssembler(String name)
    132         throws Exception
    133     {
    134         return getAssembler(Navigation.NAME, name);
    135     }
    136
    137     /**
    138      * @see org.apache.turbine.modules.Loader#getCacheSize()
    139      */
    140     public int getCacheSize()
    141     {
    142         return NavigationLoader.getConfiguredCacheSize();
    143     }
    144
    145     /**
    146      * The method through which this class is accessed.
    147      *
    148      * @return The single instance of this class.
    149      */
    150     public static NavigationLoader getInstance()
    151     {
    152         return instance;
    153     }
    154
    155     /**
    156      * Helper method to get the configured cache size for this module
    157      *
    158      * @return the configure cache size
    159      */
    160     private static int getConfiguredCacheSize()
    161     {
    162         return Turbine.getConfiguration().getInt(Navigation.CACHE_SIZE_KEY,
    163                 Navigation.CACHE_SIZE_DEFAULT);
    164     }
    165 }