1 16 17 package org.apache.struts.chain; 18 19 20 import org.apache.commons.chain.Command; 21 import org.apache.commons.chain.Context; 22 import org.apache.commons.logging.Log; 23 import org.apache.commons.logging.LogFactory; 24 import org.apache.struts.chain.Constants; 25 import org.apache.struts.config.ActionConfig; 26 import org.apache.struts.config.ForwardConfig; 27 import org.apache.struts.config.ModuleConfig; 28 29 30 37 38 public abstract class AbstractSelectInput implements Command { 39 40 41 43 44 private String actionConfigKey = Constants.ACTION_CONFIG_KEY; 45 private String forwardConfigKey = Constants.FORWARD_CONFIG_KEY; 46 private String validKey = Constants.VALID_KEY; 47 48 private static final Log log = LogFactory.getLog(AbstractSelectInput.class); 49 50 51 53 54 59 public String getActionConfigKey() { 60 61 return (this.actionConfigKey); 62 63 } 64 65 66 73 public void setActionConfigKey(String actionConfigKey) { 74 75 this.actionConfigKey = actionConfigKey; 76 77 } 78 79 80 85 public String getForwardConfigKey() { 86 87 return (this.forwardConfigKey); 88 89 } 90 91 92 99 public void setForwardConfigKey(String forwardConfigKey) { 100 101 this.forwardConfigKey = forwardConfigKey; 102 103 } 104 105 106 110 public String getValidKey() { 111 112 return (this.validKey); 113 114 } 115 116 117 123 public void setValidKey(String validKey) { 124 125 this.validKey = validKey; 126 127 } 128 129 130 132 133 141 public boolean execute(Context context) throws Exception { 142 143 Boolean valid = (Boolean ) context.get(getValidKey()); 145 if ((valid != null) && valid.booleanValue()) { 146 return (false); 147 } 148 149 ActionConfig actionConfig = (ActionConfig) 151 context.get(getActionConfigKey()); 152 ModuleConfig moduleConfig = actionConfig.getModuleConfig(); 153 154 ForwardConfig forwardConfig = null; 156 String input = actionConfig.getInput(); 157 if (moduleConfig.getControllerConfig().getInputForward()) { 158 if (log.isTraceEnabled()) { 159 log.trace("Finding ForwardConfig for '" + input + "'"); 160 } 161 forwardConfig = actionConfig.findForwardConfig(input); 162 if (forwardConfig == null) { 163 forwardConfig = moduleConfig.findForwardConfig(input); 164 } 165 } else { 166 if (log.isTraceEnabled()) { 167 log.trace("Delegating to forward() for '" + input + "'"); 168 } 169 forwardConfig = forward(context, moduleConfig, input); 170 } 171 if (log.isDebugEnabled()) { 172 log.debug("Forwarding back to " + forwardConfig); 173 } 174 context.put(getForwardConfigKey(), forwardConfig); 175 return (false); 176 177 } 178 179 180 182 183 191 protected abstract ForwardConfig forward(Context context, 192 ModuleConfig moduleConfig, 193 String uri); 194 195 196 } 197 198 199 200 | Popular Tags |