View Javadoc

    1   /*
    2    * $Id: AbstractPerformInclude.java 471754 2006-11-06 14:55:09Z husted $
    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  package org.apache.struts.chain.commands;
    22
    23  import org.apache.struts.chain.contexts.ActionContext;
    24  import org.apache.struts.config.ModuleConfig;
    25
    26  /**
    27   * <p>Perform forwarding or redirection based on the specified
    28   * <code>String</code> (if any).</p>
    29   *
    30   * @version $Rev: 471754 $ $Date: 2005-06-04 10:58:46 -0400 (Sat, 04 Jun 2005)
    31   *          $
    32   */
    33  public abstract class AbstractPerformInclude extends ActionCommandBase {
    34      // ---------------------------------------------------------- Public Methods
    35
    36      /**
    37       * <p>Perform an include based on the specified include uri (if any).</p>
    38       *
    39       * @param actionCtx The <code>Context</code> for the current request
    40       * @return <code>true</code> so that processing completes
    41       * @throws Exception if thrown by the <code>Action</code>
    42       */
    43      public boolean execute(ActionContext actionCtx)
    44          throws Exception {
    45
    46          // Is there an include to be performed?
    47          String include = actionCtx.getInclude();
    48
    49          if (include == null) {
    50              return (false);
    51          }
    52
    53          // Determine the currect uri
    54          String uri = includePath(actionCtx, include);
    55
    56          // Perform the appropriate processing on this include uri
    57          perform(actionCtx, uri);
    58
    59          return (true);
    60      }
    61
    62      // ------------------------------------------------------- Protected Methods
    63
    64      /**
    65       * <p>Returns the path to perform the include. Override this method to provide
    66       * a different path.</p>
    67       *
    68       * @param actionContext The context for this request
    69       * @param include The forward to be performed
    70       * @since Struts 1.3.6
    71       */
    72      protected String includePath(ActionContext actionContext, String include) {
    73          ModuleConfig moduleConfig = actionContext.getModuleConfig();
    74          return moduleConfig.getPrefix() + include;
    75      }
    76
    77      /**
    78       * <p>Perform the appropriate processing on the specified include
    79       * uri.</p>
    80       *
    81       * @param context The context for this request
    82       * @param include The forward to be performed
    83       * @throws Exception if thrown by the <code>Action</code>
    84       */
    85      protected abstract void perform(ActionContext context, String include)
    86          throws Exception;
    87  }