001: /*
002: * $Id: ActionMapping.java 471754 2006-11-06 14:55:09Z husted $
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: package org.apache.struts.action;
022:
023: import org.apache.commons.logging.Log;
024: import org.apache.commons.logging.LogFactory;
025: import org.apache.struts.config.ActionConfig;
026: import org.apache.struts.config.ForwardConfig;
027:
028: import java.util.ArrayList;
029:
030: /**
031: * <p>An <strong>ActionMapping</strong> represents the information that the
032: * controller, <code>RequestProcessor</code>, knows about the mapping of a
033: * particular request to an instance of a particular <code>Action</code>
034: * class. The <code>ActionMapping</code> instance used to select a particular
035: * <code>Action</code> is passed on to that <code>Action</code>, thereby
036: * providing access to any custom configuration information included with the
037: * <code>ActionMapping</code> object.</p>
038: *
039: * <p>Since Struts 1.1 this class extends <code>ActionConfig</code>.
040: *
041: * <p><strong>NOTE</strong> - This class would have been deprecated and
042: * replaced by <code>org.apache.struts.config.ActionConfig</code> except for
043: * the fact that it is part of the public API that existing applications are
044: * using.</p>
045: *
046: * @version $Rev: 471754 $ $Date: 2005-08-26 21:58:39 -0400 (Fri, 26 Aug 2005)
047: * $
048: */
049: public class ActionMapping extends ActionConfig {
050: /**
051: * <p>Commons Logging instance.</p>
052: *
053: * @since Struts 1.2.8
054: */
055: private static Log log = LogFactory.getLog(ActionMapping.class);
056:
057: /**
058: * <p>Find and return the <code>ForwardConfig</code> instance defining how
059: * forwarding to the specified logical name should be handled. This is
060: * performed by checking local and then global configurations for the
061: * specified forwarding configuration. If no forwarding configuration can
062: * be found, return <code>null</code>.</p>
063: *
064: * @param forwardName Logical name of the forwarding instance to be
065: * returned
066: * @return The local or global forward with the specified name.
067: */
068: public ActionForward findForward(String forwardName) {
069: ForwardConfig config = findForwardConfig(forwardName);
070:
071: if (config == null) {
072: config = getModuleConfig().findForwardConfig(forwardName);
073: }
074:
075: if (config == null) {
076: if (log.isWarnEnabled()) {
077: log.warn("Unable to find '" + forwardName
078: + "' forward.");
079: }
080: }
081:
082: return ((ActionForward) config);
083: }
084:
085: /**
086: * <p>Return the logical names of all locally defined forwards for this
087: * mapping. If there are no such forwards, a zero-length array is
088: * returned.</p>
089: *
090: * @return The forward names for this action mapping.
091: */
092: public String[] findForwards() {
093: ArrayList results = new ArrayList();
094: ForwardConfig[] fcs = findForwardConfigs();
095:
096: for (int i = 0; i < fcs.length; i++) {
097: results.add(fcs[i].getName());
098: }
099:
100: return ((String[]) results.toArray(new String[results.size()]));
101: }
102:
103: /**
104: * <p>Create (if necessary) and return an {@link ActionForward} that
105: * corresponds to the <code>input</code> property of this Action.</p>
106: *
107: * @return The input forward for this action mapping.
108: * @since Struts 1.1
109: */
110: public ActionForward getInputForward() {
111: if (getModuleConfig().getControllerConfig().getInputForward()) {
112: return (findForward(getInput()));
113: } else {
114: return (new ActionForward(getInput()));
115: }
116: }
117: }
|