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

com.opensymphony.xwork2.config.entities.ActionConfig Maven / Gradle / Ivy

Go to download

XWork is an command-pattern framework that is used to power WebWork as well as other applications. XWork provides an Inversion of Control container, a powerful expression language, data type conversion, validation, and pluggable configuration.

The newest version!
/*
 * Copyright (c) 2002-2006 by OpenSymphony
 * All rights reserved.
 */
package com.opensymphony.xwork2.config.entities;

import com.opensymphony.xwork2.util.location.Located;
import com.opensymphony.xwork2.util.location.Location;

import java.io.Serializable;
import java.util.*;

import org.apache.commons.lang.StringUtils;


/**
 * Contains everything needed to configure and execute an action:
 * 
    *
  • methodName - the method name to execute on the action. If this is null, the Action will be cast to the Action * Interface and the execute() method called
  • *
  • clazz - the class name for the action
  • *
  • params - the params to be set for this action just before execution
  • *
  • results - the result map {String -> View class}
  • *
  • resultParameters - params for results {String -> Map}
  • *
  • typeConverter - the Ognl TypeConverter to use when getting/setting properties
  • *
* * @author Mike * @author Rainer Hermanns * @version $Revision: 1947 $ */ public class ActionConfig extends Located implements Serializable { public static final String WILDCARD = "*"; protected List interceptors; // a list of interceptorMapping Objects eg. List protected Map params; protected Map results; protected List exceptionMappings; protected String className; protected String methodName; protected String packageName; protected String name; protected Set allowedMethods; protected ActionConfig(String packageName, String name, String className) { this.packageName = packageName; this.name = name; this.className = className; params = new LinkedHashMap(); results = new LinkedHashMap(); interceptors = new ArrayList(); exceptionMappings = new ArrayList(); allowedMethods = new HashSet(); allowedMethods.add(WILDCARD); } /** * Clones an ActionConfig, copying data into new maps and lists * @param orig The ActionConfig to clone * @Since 2.1 */ protected ActionConfig(ActionConfig orig) { this.name = orig.name; this.className = orig.className; this.methodName = orig.methodName; this.packageName = orig.packageName; this.params = new LinkedHashMap(orig.params); this.interceptors = new ArrayList(orig.interceptors); this.results = new LinkedHashMap(orig.results); this.exceptionMappings = new ArrayList(orig.exceptionMappings); this.allowedMethods = new HashSet(orig.allowedMethods); } public String getName() { return name; } public String getClassName() { return className; } public List getExceptionMappings() { return exceptionMappings; } public List getInterceptors() { return interceptors; } public Set getAllowedMethods() { return allowedMethods; } /** * Returns name of the action method * * @return name of the method to execute */ public String getMethodName() { return methodName; } /** * @return Returns the packageName. */ public String getPackageName() { return packageName; } public Map getParams() { return params; } public Map getResults() { return results; } public boolean isAllowedMethod(String method) { if (allowedMethods.size() == 1 && WILDCARD.equals(allowedMethods.iterator().next())) { return true; } else { return allowedMethods.contains(method); } } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof ActionConfig)) { return false; } final ActionConfig actionConfig = (ActionConfig) o; if ((className != null) ? (!className.equals(actionConfig.className)) : (actionConfig.className != null)) { return false; } if ((name != null) ? (!name.equals(actionConfig.name)) : (actionConfig.name != null)) { return false; } if ((interceptors != null) ? (!interceptors.equals(actionConfig.interceptors)) : (actionConfig.interceptors != null)) { return false; } if ((methodName != null) ? (!methodName.equals(actionConfig.methodName)) : (actionConfig.methodName != null)) { return false; } if ((params != null) ? (!params.equals(actionConfig.params)) : (actionConfig.params != null)) { return false; } if ((results != null) ? (!results.equals(actionConfig.results)) : (actionConfig.results != null)) { return false; } if ((allowedMethods != null) ? (!allowedMethods.equals(actionConfig.allowedMethods)) : (actionConfig.allowedMethods != null)) { return false; } return true; } @Override public int hashCode() { int result; result = (interceptors != null ? interceptors.hashCode() : 0); result = 31 * result + (params != null ? params.hashCode() : 0); result = 31 * result + (results != null ? results.hashCode() : 0); result = 31 * result + (exceptionMappings != null ? exceptionMappings.hashCode() : 0); result = 31 * result + (className != null ? className.hashCode() : 0); result = 31 * result + (methodName != null ? methodName.hashCode() : 0); result = 31 * result + (packageName != null ? packageName.hashCode() : 0); result = 31 * result + (name != null ? name.hashCode() : 0); result = 31 * result + (allowedMethods != null ? allowedMethods.hashCode() : 0); return result; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{ActionConfig "); sb.append(name).append(" ("); sb.append(className); if (methodName != null) { sb.append(".").append(methodName).append("()"); } sb.append(")"); sb.append(" - ").append(location); sb.append("}"); return sb.toString(); } /** * The builder for this object. An instance of this object is the only way to construct a new instance. The * purpose is to enforce the immutability of the object. The methods are structured in a way to support chaining. * After setting any values you need, call the {@link #build()} method to create the object. */ public static class Builder implements InterceptorListHolder{ private ActionConfig target; public Builder(ActionConfig toClone) { target = new ActionConfig(toClone); } public Builder(String packageName, String name, String className) { target = new ActionConfig(packageName, name, className); } public Builder packageName(String name) { target.packageName = name; return this; } public Builder name(String name) { target.name = name; return this; } public Builder className(String name) { target.className = name; return this; } public Builder defaultClassName(String name) { if (StringUtils.isEmpty(target.className)) { target.className = name; } return this; } public Builder methodName(String method) { target.methodName = method; return this; } public Builder addExceptionMapping(ExceptionMappingConfig exceptionMapping) { target.exceptionMappings.add(exceptionMapping); return this; } public Builder addExceptionMappings(Collection mappings) { target.exceptionMappings.addAll(mappings); return this; } public Builder exceptionMappings(Collection mappings) { target.exceptionMappings.clear(); target.exceptionMappings.addAll(mappings); return this; } public Builder addInterceptor(InterceptorMapping interceptor) { target.interceptors.add(interceptor); return this; } public Builder addInterceptors(List interceptors) { target.interceptors.addAll(interceptors); return this; } public Builder interceptors(List interceptors) { target.interceptors.clear(); target.interceptors.addAll(interceptors); return this; } public Builder addParam(String name, String value) { target.params.put(name, value); return this; } public Builder addParams(Map params) { target.params.putAll(params); return this; } public Builder addResultConfig(ResultConfig resultConfig) { target.results.put(resultConfig.getName(), resultConfig); return this; } public Builder addResultConfigs(Collection configs) { for (ResultConfig rc : configs) { target.results.put(rc.getName(), rc); } return this; } public Builder addResultConfigs(Map configs) { target.results.putAll(configs); return this; } public Builder addAllowedMethod(String methodName) { target.allowedMethods.add(methodName); return this; } public Builder addAllowedMethod(Collection methods) { target.allowedMethods.addAll(methods); return this; } public Builder location(Location loc) { target.location = loc; return this; } public ActionConfig build() { target.params = Collections.unmodifiableMap(target.params); target.results = Collections.unmodifiableMap(target.results); target.interceptors = Collections.unmodifiableList(target.interceptors); target.exceptionMappings = Collections.unmodifiableList(target.exceptionMappings); target.allowedMethods = Collections.unmodifiableSet(target.allowedMethods); ActionConfig result = target; target = new ActionConfig(target); return result; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy