1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.struts.chain.commands;
19
20 import org.apache.commons.logging.Log;
21 import org.apache.commons.logging.LogFactory;
22 import org.apache.struts.chain.contexts.ActionContext;
23 import org.apache.struts.config.ActionConfig;
24 import org.apache.struts.config.ForwardConfig;
25 import org.apache.struts.config.ModuleConfig;
26
27 /***
28 * <p>Select and cache the <code>ActionForward</code> for this
29 * <code>ActionConfig</code> if specified.</p>
30 *
31 * @version $Rev: 421119 $ $Date: 2005-06-04 10:58:46 -0400 (Sat, 04 Jun 2005)
32 * $
33 */
34 public abstract class AbstractSelectForward extends ActionCommandBase {
35
36
37 /***
38 * <p> Provide Commons Logging instance for this class. </p>
39 */
40 private static final Log LOG =
41 LogFactory.getLog(AbstractSelectForward.class);
42
43
44
45 /***
46 * <p>Select and cache the <code>ActionForward</code> for this
47 * <code>ActionConfig</code> if specified.</p>
48 *
49 * @param actionCtx The <code>Context</code> for the current request
50 * @return <code>false</code> so that processing continues
51 * @throws Exception if thrown by the Action class
52 */
53 public boolean execute(ActionContext actionCtx)
54 throws Exception {
55
56 Boolean valid = actionCtx.getFormValid();
57
58 if ((valid == null) || !valid.booleanValue()) {
59 return (false);
60 }
61
62
63 ActionConfig actionConfig = actionCtx.getActionConfig();
64 ModuleConfig moduleConfig = actionConfig.getModuleConfig();
65
66 ForwardConfig forwardConfig = null;
67 String forward = actionConfig.getForward();
68
69 if (forward != null) {
70 forwardConfig = forward(actionCtx, moduleConfig, forward);
71
72 if (LOG.isDebugEnabled()) {
73 LOG.debug("Forwarding to " + forwardConfig);
74 }
75
76 actionCtx.setForwardConfig(forwardConfig);
77 }
78
79 return (false);
80 }
81
82
83
84 /***
85 * <p>Create and return a <code>ForwardConfig</code> representing the
86 * specified module-relative destination.</p>
87 *
88 * @param context The context for this request
89 * @param moduleConfig The <code>ModuleConfig</code> for this request
90 * @param uri The module-relative URI to be the destination
91 * @return ForwwardConfig representing the destination
92 */
93 protected abstract ForwardConfig forward(ActionContext context,
94 ModuleConfig moduleConfig, String uri);
95 }