All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.struts.chain.commands.ExecuteCommand Maven / Gradle / Ivy

/*
 * $Id: ExecuteCommand.java 471754 2006-11-06 14:55:09Z husted $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.struts.chain.commands;

import org.apache.commons.chain.Catalog;
import org.apache.commons.chain.CatalogFactory;
import org.apache.commons.chain.Command;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.chain.contexts.ActionContext;
import org.apache.struts.config.ActionConfig;

/**
 * 

Invoke the appropriate Command for this request. If the * context's ActionConfig has no command property * defined, no action will be taken. If the specified command cannot be * found, a warning will be logged, but processing will continue. Depending * on how the chain is configured, this can be used in place of an * Action or as a method of performing pre-processing.

* *

If used instead of an action, the command which is looked up should put * an ActionForward into the context, unless it has already dealt with the * response.

* * @version $Id: ExecuteCommand.java 471754 2006-11-06 14:55:09Z husted $ */ public class ExecuteCommand extends ActionCommandBase { // ------------------------------------------------------ Instance Variables /** * Provide Commons Logging instance for this class. */ private static final Log LOG = LogFactory.getLog(ExecuteCommand.class); // ---------------------------------------------------------- Public Methods /** *

If the context is "valid", lookup a command and execute * it.

* * @param actionCtx The Context for the current request * @return the result of the lookup command's execute method, * if executed, or false if it was not executed. * @throws Exception on any error */ public boolean execute(ActionContext actionCtx) throws Exception { if (shouldProcess(actionCtx)) { Command command = getCommand(actionCtx); if (command != null) { return (command.execute(actionCtx)); } } return (false); } /** *

Evaluate the current context to see if a command should even be * executed.

* * @param context A valid ActionContext * @return TRUE if the pending Command should be executed */ protected boolean shouldProcess(ActionContext context) { // Skip processing if the current request is not valid Boolean valid = context.getFormValid(); return ((valid != null) && valid.booleanValue()); } /** *

Find the ActionConfig in the current context and, if it * is properly configured, lookup the appropriate commons-chain * command.

* * @param context A valid ActionContext * @return a Command to execute, or null if none is specified * or if the specified command cannot be found. */ protected Command getCommand(ActionContext context) { ActionConfig actionConfig = context.getActionConfig(); String commandName = actionConfig.getCommand(); if (commandName == null) { return null; } String catalogName = actionConfig.getCatalog(); return getCommand(commandName, catalogName); } /** *

Retrieve the specified Command from the specified Catalog.

* * @param commandName The Command to retrieve. * @param catalogName The Catalog to search. * @return Instantiated Command, or null */ protected Command getCommand(String commandName, String catalogName) { if (commandName == null) { return null; } Catalog catalog; if (catalogName != null) { catalog = CatalogFactory.getInstance().getCatalog(catalogName); if (catalog == null) { LOG.warn("When looking up " + commandName + "," + " no catalog found under " + catalogName); return null; } } else { catalogName = "the default catalog"; catalog = CatalogFactory.getInstance().getCatalog(); if (catalog == null) { LOG.warn("When looking up " + commandName + "," + " no default catalog found."); return null; } } if (LOG.isDebugEnabled()) { LOG.debug("looking up command " + commandName + " in " + catalogName); } return catalog.getCommand(commandName); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy