You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2015/06/17 23:09:12 UTC
[12/57] [partial] struts git commit: Merges xwork packages into struts
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
deleted file mode 100644
index d4a3c5c..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/PackageConfig.java
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
- * Copyright 2002-2006,2009 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.entities;
-
-import com.opensymphony.xwork2.util.location.Located;
-import com.opensymphony.xwork2.util.location.Location;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.Serializable;
-import java.util.*;
-
-
-/**
- * Configuration for Package.
- * <p/>
- * In the xml configuration file this is defined as the <code>package</code> tag.
- *
- * @author Rainer Hermanns
- * @version $Revision$
- */
-public class PackageConfig extends Located implements Comparable, Serializable, InterceptorLocator {
-
- private static final Logger LOG = LogManager.getLogger(PackageConfig.class);
-
- protected Map<String, ActionConfig> actionConfigs;
- protected Map<String, ResultConfig> globalResultConfigs;
- protected Map<String, Object> interceptorConfigs;
- protected Map<String, ResultTypeConfig> resultTypeConfigs;
- protected List<ExceptionMappingConfig> globalExceptionMappingConfigs;
- protected List<PackageConfig> parents;
- protected String defaultInterceptorRef;
- protected String defaultActionRef;
- protected String defaultResultType;
- protected String defaultClassRef;
- protected String name;
- protected String namespace = "";
- protected boolean isAbstract = false;
- protected boolean needsRefresh;
-
- protected PackageConfig(String name) {
- this.name = name;
- actionConfigs = new LinkedHashMap<>();
- globalResultConfigs = new LinkedHashMap<>();
- interceptorConfigs = new LinkedHashMap<>();
- resultTypeConfigs = new LinkedHashMap<>();
- globalExceptionMappingConfigs = new ArrayList<>();
- parents = new ArrayList<>();
- }
-
- protected PackageConfig(PackageConfig orig) {
- this.defaultInterceptorRef = orig.defaultInterceptorRef;
- this.defaultActionRef = orig.defaultActionRef;
- this.defaultResultType = orig.defaultResultType;
- this.defaultClassRef = orig.defaultClassRef;
- this.name = orig.name;
- this.namespace = orig.namespace;
- this.isAbstract = orig.isAbstract;
- this.needsRefresh = orig.needsRefresh;
- this.actionConfigs = new LinkedHashMap<>(orig.actionConfigs);
- this.globalResultConfigs = new LinkedHashMap<>(orig.globalResultConfigs);
- this.interceptorConfigs = new LinkedHashMap<>(orig.interceptorConfigs);
- this.resultTypeConfigs = new LinkedHashMap<>(orig.resultTypeConfigs);
- this.globalExceptionMappingConfigs = new ArrayList<>(orig.globalExceptionMappingConfigs);
- this.parents = new ArrayList<>(orig.parents);
- this.location = orig.location;
- }
-
- public boolean isAbstract() {
- return isAbstract;
- }
-
- public Map<String, ActionConfig> getActionConfigs() {
- return actionConfigs;
- }
-
- /**
- * returns the Map of all the ActionConfigs available in the current package.
- * ActionConfigs defined in ancestor packages will be included in this Map.
- *
- * @return a Map of ActionConfig Objects with the action name as the key
- * @see ActionConfig
- */
- public Map<String, ActionConfig> getAllActionConfigs() {
- Map<String, ActionConfig> retMap = new LinkedHashMap<>();
-
- if (!parents.isEmpty()) {
- for (PackageConfig parent : parents) {
- retMap.putAll(parent.getAllActionConfigs());
- }
- }
-
- retMap.putAll(getActionConfigs());
-
- return retMap;
- }
-
- /**
- * returns the Map of all the global ResultConfigs available in the current package.
- * Global ResultConfigs defined in ancestor packages will be included in this Map.
- *
- * @return a Map of Result Objects with the result name as the key
- * @see ResultConfig
- */
- public Map<String, ResultConfig> getAllGlobalResults() {
- Map<String, ResultConfig> retMap = new LinkedHashMap<>();
-
- if (!parents.isEmpty()) {
- for (PackageConfig parentConfig : parents) {
- retMap.putAll(parentConfig.getAllGlobalResults());
- }
- }
-
- retMap.putAll(getGlobalResultConfigs());
-
- return retMap;
- }
-
- /**
- * returns the Map of all InterceptorConfigs and InterceptorStackConfigs available in the current package.
- * InterceptorConfigs defined in ancestor packages will be included in this Map.
- *
- * @return a Map of InterceptorConfig and InterceptorStackConfig Objects with the ref-name as the key
- * @see InterceptorConfig
- * @see InterceptorStackConfig
- */
- public Map<String, Object> getAllInterceptorConfigs() {
- Map<String, Object> retMap = new LinkedHashMap<>();
-
- if (!parents.isEmpty()) {
- for (PackageConfig parentContext : parents) {
- retMap.putAll(parentContext.getAllInterceptorConfigs());
- }
- }
-
- retMap.putAll(getInterceptorConfigs());
-
- return retMap;
- }
-
- /**
- * returns the Map of all the ResultTypeConfigs available in the current package.
- * ResultTypeConfigs defined in ancestor packages will be included in this Map.
- *
- * @return a Map of ResultTypeConfig Objects with the result type name as the key
- * @see ResultTypeConfig
- */
- public Map<String, ResultTypeConfig> getAllResultTypeConfigs() {
- Map<String, ResultTypeConfig> retMap = new LinkedHashMap<>();
-
- if (!parents.isEmpty()) {
- for (PackageConfig parentContext : parents) {
- retMap.putAll(parentContext.getAllResultTypeConfigs());
- }
- }
-
- retMap.putAll(getResultTypeConfigs());
-
- return retMap;
- }
-
- /**
- * returns the List of all the ExceptionMappingConfigs available in the current package.
- * ExceptionMappingConfigs defined in ancestor packages will be included in this list.
- *
- * @return a List of ExceptionMappingConfigs Objects with the result type name as the key
- * @see ExceptionMappingConfig
- */
- public List<ExceptionMappingConfig> getAllExceptionMappingConfigs() {
- List<ExceptionMappingConfig> allExceptionMappings = new ArrayList<>();
-
- if (!parents.isEmpty()) {
- for (PackageConfig parentContext : parents) {
- allExceptionMappings.addAll(parentContext.getAllExceptionMappingConfigs());
- }
- }
-
- allExceptionMappings.addAll(getGlobalExceptionMappingConfigs());
-
- return allExceptionMappings;
- }
-
-
- public String getDefaultInterceptorRef() {
- return defaultInterceptorRef;
- }
-
- public String getDefaultActionRef() {
- return defaultActionRef;
- }
-
- public String getDefaultClassRef() {
- if ((defaultClassRef == null) && !parents.isEmpty()) {
- for (PackageConfig parent : parents) {
- String parentDefault = parent.getDefaultClassRef();
- if (parentDefault != null) {
- return parentDefault;
- }
- }
- }
- return defaultClassRef;
- }
-
- /**
- * Returns the default result type for this package.
- */
- public String getDefaultResultType() {
- return defaultResultType;
- }
-
- /**
- * gets the default interceptor-ref name. If this is not set on this PackageConfig, it searches the parent
- * PackageConfigs in order until it finds one.
- */
- public String getFullDefaultInterceptorRef() {
- if ((defaultInterceptorRef == null) && !parents.isEmpty()) {
- for (PackageConfig parent : parents) {
- String parentDefault = parent.getFullDefaultInterceptorRef();
-
- if (parentDefault != null) {
- return parentDefault;
- }
- }
- }
-
- return defaultInterceptorRef;
- }
-
- /**
- * gets the default action-ref name. If this is not set on this PackageConfig, it searches the parent
- * PackageConfigs in order until it finds one.
- */
- public String getFullDefaultActionRef() {
- if ((defaultActionRef == null) && !parents.isEmpty()) {
- for (PackageConfig parent : parents) {
- String parentDefault = parent.getFullDefaultActionRef();
-
- if (parentDefault != null) {
- return parentDefault;
- }
- }
- }
- return defaultActionRef;
- }
-
- /**
- * Returns the default result type for this package.
- * <p/>
- * If there is no default result type, but this package has parents - we will try to
- * look up the default result type of a parent.
- */
- public String getFullDefaultResultType() {
- if ((defaultResultType == null) && !parents.isEmpty()) {
- for (PackageConfig parent : parents) {
- String parentDefault = parent.getFullDefaultResultType();
-
- if (parentDefault != null) {
- return parentDefault;
- }
- }
- }
-
- return defaultResultType;
- }
-
- /**
- * gets the global ResultConfigs local to this package
- *
- * @return a Map of ResultConfig objects keyed by result name
- * @see ResultConfig
- */
- public Map<String, ResultConfig> getGlobalResultConfigs() {
- return globalResultConfigs;
- }
-
- /**
- * gets the InterceptorConfigs and InterceptorStackConfigs local to this package
- *
- * @return a Map of InterceptorConfig and InterceptorStackConfig objects keyed by ref-name
- * @see InterceptorConfig
- * @see InterceptorStackConfig
- */
- public Map<String, Object> getInterceptorConfigs() {
- return interceptorConfigs;
- }
-
- public String getName() {
- return name;
- }
-
- public String getNamespace() {
- return namespace;
- }
-
- public List<PackageConfig> getParents() {
- return new ArrayList<>(parents);
- }
-
- /**
- * gets the ResultTypeConfigs local to this package
- *
- * @return a Map of ResultTypeConfig objects keyed by result name
- * @see ResultTypeConfig
- */
- public Map<String, ResultTypeConfig> getResultTypeConfigs() {
- return resultTypeConfigs;
- }
-
-
- public boolean isNeedsRefresh() {
- return needsRefresh;
- }
-
- /**
- * gets the ExceptionMappingConfigs local to this package
- *
- * @return a Map of ExceptionMappingConfig objects keyed by result name
- * @see ExceptionMappingConfig
- */
- public List<ExceptionMappingConfig> getGlobalExceptionMappingConfigs() {
- return globalExceptionMappingConfigs;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
-
- if (!(o instanceof PackageConfig)) {
- return false;
- }
-
- final PackageConfig packageConfig = (PackageConfig) o;
-
- if (isAbstract != packageConfig.isAbstract) {
- return false;
- }
-
- if ((actionConfigs != null) ? (!actionConfigs.equals(packageConfig.actionConfigs)) : (packageConfig.actionConfigs != null)) {
- return false;
- }
-
- if ((defaultResultType != null) ? (!defaultResultType.equals(packageConfig.defaultResultType)) : (packageConfig.defaultResultType != null)) {
- return false;
- }
-
- if ((defaultClassRef != null) ? (!defaultClassRef.equals(packageConfig.defaultClassRef)) : (packageConfig.defaultClassRef != null)) {
- return false;
- }
-
- if ((globalResultConfigs != null) ? (!globalResultConfigs.equals(packageConfig.globalResultConfigs)) : (packageConfig.globalResultConfigs != null)) {
- return false;
- }
-
- if ((interceptorConfigs != null) ? (!interceptorConfigs.equals(packageConfig.interceptorConfigs)) : (packageConfig.interceptorConfigs != null)) {
- return false;
- }
-
- if ((name != null) ? (!name.equals(packageConfig.name)) : (packageConfig.name != null)) {
- return false;
- }
-
- if ((namespace != null) ? (!namespace.equals(packageConfig.namespace)) : (packageConfig.namespace != null)) {
- return false;
- }
-
- if ((parents != null) ? (!parents.equals(packageConfig.parents)) : (packageConfig.parents != null)) {
- return false;
- }
-
- if ((resultTypeConfigs != null) ? (!resultTypeConfigs.equals(packageConfig.resultTypeConfigs)) : (packageConfig.resultTypeConfigs != null)) {
- return false;
- }
-
- if ((globalExceptionMappingConfigs != null) ? (!globalExceptionMappingConfigs.equals(packageConfig.globalExceptionMappingConfigs)) : (packageConfig.globalExceptionMappingConfigs != null)) {
- return false;
- }
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result;
- result = ((name != null) ? name.hashCode() : 0);
- result = (29 * result) + ((parents != null) ? parents.hashCode() : 0);
- result = (29 * result) + ((actionConfigs != null) ? actionConfigs.hashCode() : 0);
- result = (29 * result) + ((globalResultConfigs != null) ? globalResultConfigs.hashCode() : 0);
- result = (29 * result) + ((interceptorConfigs != null) ? interceptorConfigs.hashCode() : 0);
- result = (29 * result) + ((resultTypeConfigs != null) ? resultTypeConfigs.hashCode() : 0);
- result = (29 * result) + ((globalExceptionMappingConfigs != null) ? globalExceptionMappingConfigs.hashCode() : 0);
- result = (29 * result) + ((defaultResultType != null) ? defaultResultType.hashCode() : 0);
- result = (29 * result) + ((defaultClassRef != null) ? defaultClassRef.hashCode() : 0);
- result = (29 * result) + ((namespace != null) ? namespace.hashCode() : 0);
- result = (29 * result) + (isAbstract ? 1 : 0);
-
- return result;
- }
-
- @Override
- public String toString() {
- return "PackageConfig: [" + name + "] for namespace [" + namespace + "] with parents [" + parents + "]";
- }
-
- public int compareTo(Object o) {
- PackageConfig other = (PackageConfig) o;
- String full = namespace + "!" + name;
- String otherFull = other.namespace + "!" + other.name;
-
- // note, this isn't perfect (could come from different parents), but it is "good enough"
- return full.compareTo(otherFull);
- }
-
- public Object getInterceptorConfig(String name) {
- return getAllInterceptorConfigs().get(name);
- }
-
- /**
- * 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 InterceptorLocator {
-
- protected PackageConfig target;
- private boolean strictDMI;
-
- public Builder(String name) {
- target = new PackageConfig(name);
- }
-
- public Builder(PackageConfig config) {
- target = new PackageConfig(config);
- }
-
- public Builder name(String name) {
- target.name = name;
- return this;
- }
-
- public Builder isAbstract(boolean isAbstract) {
- target.isAbstract = isAbstract;
- return this;
- }
-
- public Builder defaultInterceptorRef(String name) {
- target.defaultInterceptorRef = name;
- return this;
- }
-
- public Builder defaultActionRef(String name) {
- target.defaultActionRef = name;
- return this;
- }
-
- public Builder defaultClassRef(String defaultClassRef) {
- target.defaultClassRef = defaultClassRef;
- return this;
- }
-
- /**
- * sets the default Result type for this package
- *
- * @param defaultResultType
- */
- public Builder defaultResultType(String defaultResultType) {
- target.defaultResultType = defaultResultType;
- return this;
- }
-
- public Builder namespace(String namespace) {
- if (namespace == null) {
- target.namespace = "";
- } else {
- target.namespace = namespace;
- }
- return this;
- }
-
- public Builder needsRefresh(boolean needsRefresh) {
- target.needsRefresh = needsRefresh;
- return this;
- }
-
- public Builder addActionConfig(String name, ActionConfig action) {
- target.actionConfigs.put(name, action);
- return this;
- }
-
- public Builder addParents(List<PackageConfig> parents) {
- for (PackageConfig config : parents) {
- addParent(config);
- }
- return this;
- }
-
- public Builder addGlobalResultConfig(ResultConfig resultConfig) {
- target.globalResultConfigs.put(resultConfig.getName(), resultConfig);
- return this;
- }
-
- public Builder addGlobalResultConfigs(Map<String, ResultConfig> resultConfigs) {
- target.globalResultConfigs.putAll(resultConfigs);
- return this;
- }
-
- public Builder addExceptionMappingConfig(ExceptionMappingConfig exceptionMappingConfig) {
- target.globalExceptionMappingConfigs.add(exceptionMappingConfig);
- return this;
- }
-
- public Builder addGlobalExceptionMappingConfigs(List<ExceptionMappingConfig> exceptionMappingConfigs) {
- target.globalExceptionMappingConfigs.addAll(exceptionMappingConfigs);
- return this;
- }
-
- public Builder addInterceptorConfig(InterceptorConfig config) {
- target.interceptorConfigs.put(config.getName(), config);
- return this;
- }
-
- public Builder addInterceptorStackConfig(InterceptorStackConfig config) {
- target.interceptorConfigs.put(config.getName(), config);
- return this;
- }
-
- public Builder addParent(PackageConfig parent) {
- target.parents.add(0, parent);
- return this;
- }
-
- public Builder addResultTypeConfig(ResultTypeConfig config) {
- target.resultTypeConfigs.put(config.getName(), config);
- return this;
- }
-
- public Builder location(Location loc) {
- target.location = loc;
- return this;
- }
-
- public boolean isNeedsRefresh() {
- return target.needsRefresh;
- }
-
- public String getDefaultClassRef() {
- return target.defaultClassRef;
- }
-
- public String getName() {
- return target.name;
- }
-
- public String getNamespace() {
- return target.namespace;
- }
-
- public String getFullDefaultResultType() {
- return target.getFullDefaultResultType();
- }
-
- public ResultTypeConfig getResultType(String type) {
- return target.getAllResultTypeConfigs().get(type);
- }
-
- public Object getInterceptorConfig(String name) {
- return target.getAllInterceptorConfigs().get(name);
- }
-
- public Builder strictMethodInvocation(boolean strict) {
- strictDMI = strict;
- return this;
- }
-
- public boolean isStrictMethodInvocation() {
- return strictDMI;
- }
-
- public PackageConfig build() {
- embalmTarget();
- PackageConfig result = target;
- target = new PackageConfig(result);
- return result;
- }
-
- protected void embalmTarget() {
- target.actionConfigs = Collections.unmodifiableMap(target.actionConfigs);
- target.globalResultConfigs = Collections.unmodifiableMap(target.globalResultConfigs);
- target.interceptorConfigs = Collections.unmodifiableMap(target.interceptorConfigs);
- target.resultTypeConfigs = Collections.unmodifiableMap(target.resultTypeConfigs);
- target.globalExceptionMappingConfigs = Collections.unmodifiableList(target.globalExceptionMappingConfigs);
- target.parents = Collections.unmodifiableList(target.parents);
- }
-
- @Override
- public String toString() {
- return "[BUILDER] " + target.toString();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/Parameterizable.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/Parameterizable.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/Parameterizable.java
deleted file mode 100644
index 42b6cb3..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/Parameterizable.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2002-2006,2009 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.entities;
-
-import java.util.Map;
-
-/**
- * <!-- START SNIPPET: javadoc -->
- * <p/>
- * Actions implementing Parameterizable will receive a map of the static parameters defined in the action
- * configuration.
- * <p/>
- * <p/> The {@link com.opensymphony.xwork2.interceptor.StaticParametersInterceptor} must be in the action's interceptor
- * queue for this to work.
- * <p/>
- * <!-- END SNIPPET: javadoc -->
- *
- * @author Jason Carreira
- */
-public interface Parameterizable {
-
- public void addParam(String name, String value);
-
- void setParams(Map<String, String> params);
-
- Map<String, String> getParams();
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultConfig.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultConfig.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultConfig.java
deleted file mode 100644
index b9ed588..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultConfig.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright 2002-2006,2009 The Apache Software Foundation.
- *
- * Licensed 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 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.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-
-/**
- * Configuration for Result.
- * <p/>
- * In the xml configuration file this is defined as the <code>result</code> tag.
- *
- * @author Mike
- */
-public class ResultConfig extends Located implements Serializable {
-
- protected Map<String,String> params;
- protected String className;
- protected String name;
-
- protected ResultConfig(String name, String className) {
- this.name = name;
- this.className = className;
- params = new LinkedHashMap<>();
- }
-
- protected ResultConfig(ResultConfig orig) {
- this.params = orig.params;
- this.name = orig.name;
- this.className = orig.className;
- this.location = orig.location;
- }
-
- public String getClassName() {
- return className;
- }
-
- public String getName() {
- return name;
- }
-
- public Map<String,String> getParams() {
- return params;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
-
- if (!(o instanceof ResultConfig)) {
- return false;
- }
-
- final ResultConfig resultConfig = (ResultConfig) o;
-
- if ((className != null) ? (!className.equals(resultConfig.className)) : (resultConfig.className != null)) {
- return false;
- }
-
- if ((name != null) ? (!name.equals(resultConfig.name)) : (resultConfig.name != null)) {
- return false;
- }
-
- if ((params != null) ? (!params.equals(resultConfig.params)) : (resultConfig.params != null)) {
- return false;
- }
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result;
- result = ((name != null) ? name.hashCode() : 0);
- result = (29 * result) + ((className != null) ? className.hashCode() : 0);
- result = (29 * result) + ((params != null) ? params.hashCode() : 0);
-
- return result;
- }
-
- @Override
- public String toString() {
- return "ResultConfig: [" + name + "] => [" + className + "] with params " + params;
- }
-
- /**
- * 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 final class Builder {
- protected ResultConfig target;
-
- public Builder(String name, String className) {
- target = new ResultConfig(name, className);
- }
-
- public Builder(ResultConfig orig) {
- target = new ResultConfig(orig);
- }
-
- public Builder name(String name) {
- target.name = name;
- return this;
- }
-
- public Builder className(String name) {
- target.className = name;
- return this;
- }
-
- public Builder addParam(String name, String value) {
- target.params.put(name, value);
- return this;
- }
-
- public Builder addParams(Map<String,String> params) {
- target.params.putAll(params);
- return this;
- }
-
- public Builder location(Location loc) {
- target.location = loc;
- return this;
- }
-
- public ResultConfig build() {
- embalmTarget();
- ResultConfig result = target;
- target = new ResultConfig(target);
- return result;
- }
-
- protected void embalmTarget() {
- target.params = Collections.unmodifiableMap(target.params);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultTypeConfig.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultTypeConfig.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultTypeConfig.java
deleted file mode 100644
index 96ff4ff..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/ResultTypeConfig.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 2002-2006,2009 The Apache Software Foundation.
- *
- * Licensed 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 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.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-
-/**
- * Configuration class for result types.
- * <p/>
- * In the xml configuration file this is defined as the <code>result-type</code> tag.
- *
- * @author Mike
- * @author Rainer Hermanns
- * @author Neo
- */
-public class ResultTypeConfig extends Located implements Serializable {
-
- protected String className;
- protected String name;
- protected String defaultResultParam;
- protected Map<String,String> params;
-
- protected ResultTypeConfig(String name, String className) {
- this.name = name;
- this.className = className;
- params = new LinkedHashMap<>();
- }
-
- protected ResultTypeConfig(ResultTypeConfig orig) {
- this.name = orig.name;
- this.className = orig.className;
- this.defaultResultParam = orig.defaultResultParam;
- this.params = orig.params;
- this.location = orig.location;
- }
-
- public void setDefaultResultParam(String defaultResultParam) {
- this.defaultResultParam = defaultResultParam;
- }
-
- public String getDefaultResultParam() {
- return this.defaultResultParam;
- }
-
- /**
- * @deprecated Since 2.1, use {@link #getClassName()} instead
- */
- @Deprecated public String getClazz() {
- return className;
- }
-
- public String getClassName() {
- return className;
- }
-
- public String getName() {
- return name;
- }
-
- public Map<String,String> getParams() {
- return this.params;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- final ResultTypeConfig that = (ResultTypeConfig) o;
-
- if (className != null ? !className.equals(that.className) : that.className != null) return false;
- if (name != null ? !name.equals(that.name) : that.name != null) return false;
- if (params != null ? !params.equals(that.params) : that.params != null) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result;
- result = (className != null ? className.hashCode() : 0);
- result = 29 * result + (name != null ? name.hashCode() : 0);
- result = 29 * result + (params != null ? params.hashCode() : 0);
- return result;
- }
-
- @Override
- public String toString() {
- return "ResultTypeConfig: [" + name + "] => [" + className + "] " +
- "with defaultParam [" + defaultResultParam + "] with params " + params;
- }
-
- /**
- * 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 final class Builder {
- protected ResultTypeConfig target;
-
- public Builder(String name, String className) {
- target = new ResultTypeConfig(name, className);
- }
-
- public Builder(ResultTypeConfig orig) {
- target = new ResultTypeConfig(orig);
- }
-
- public Builder name(String name) {
- target.name = name;
- return this;
- }
-
- public Builder className(String name) {
- target.className = name;
- return this;
- }
-
- public Builder addParam(String name, String value) {
- target.params.put(name, value);
- return this;
- }
-
- public Builder addParams(Map<String,String> params) {
- target.params.putAll(params);
- return this;
- }
-
- public Builder defaultResultParam(String defaultResultParam) {
- target.defaultResultParam = defaultResultParam;
- return this;
- }
-
- public Builder location(Location loc) {
- target.location = loc;
- return this;
- }
-
- public ResultTypeConfig build() {
- embalmTarget();
- ResultTypeConfig result = target;
- target = new ResultTypeConfig(target);
- return result;
- }
-
- protected void embalmTarget() {
- target.params = Collections.unmodifiableMap(target.params);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/UnknownHandlerConfig.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/UnknownHandlerConfig.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/UnknownHandlerConfig.java
deleted file mode 100644
index 3d6692f..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/UnknownHandlerConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2002-2006,2009 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.entities;
-
-import com.opensymphony.xwork2.util.location.Located;
-import com.opensymphony.xwork2.util.location.Location;
-
-public class UnknownHandlerConfig extends Located {
-
- private String name;
-
- public UnknownHandlerConfig(String name, Location location) {
- this.name = name;
- this.location = location;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public String toString() {
- return "UnknownHandlerConfig: [" + name + "]";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/package.html
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/package.html b/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/package.html
deleted file mode 100644
index d05a357..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/entities/package.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<body>
-
-<p>
-Configuration entity classes. All objects ending in "Config" are immutable and must be constructed using
-their inner "Builder" class. For example, a PackageConfig object can be created via:
-</p>
-<pre>
- PackageConfig config = new PackageConfig.Builder("myPackage").build();
-</pre>
-<p>
- The methods on the builder object are chainable to support constructions like this:
-</p>
-<pre>
- ResultConfig config = new ResultConfig.Builder("success", "myapp.MyResult")
- .addParam("location", "/foo.jsp")
- .build();
-</pre>
-</body>
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java
deleted file mode 100644
index 5deb7cb..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/AbstractMatcher.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * $Id$
- *
- * Copyright 2003,2004 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.impl;
-
-import com.opensymphony.xwork2.util.PatternMatcher;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.Serializable;
-import java.util.*;
-
-/**
- * <p> Matches patterns against pre-compiled wildcard expressions pulled from
- * target objects. It uses the wildcard matcher from the Apache Cocoon
- * project. Patterns will be matched in the order they were added. The first
- * match wins, so more specific patterns should be defined before less specific
- * patterns.
- *
- * @since 2.1
- */
-public abstract class AbstractMatcher<E> implements Serializable {
- /**
- * <p> The logging instance </p>
- */
- private static final Logger log = LogManager.getLogger(AbstractMatcher.class);
-
- /**
- * <p> Handles all wildcard pattern matching. </p>
- */
- PatternMatcher<Object> wildcard;
-
- /**
- * <p> The compiled patterns and their associated target objects </p>
- */
- List<Mapping<E>> compiledPatterns = new ArrayList<>();
- ;
-
- public AbstractMatcher(PatternMatcher<?> helper) {
- this.wildcard = (PatternMatcher<Object>) helper;
- }
-
- /**
- * <p>
- * Finds and precompiles the wildcard patterns. Patterns will be evaluated
- * in the order they were added. Only patterns that actually contain a
- * wildcard will be compiled.
- * </p>
- *
- * <p>
- * Patterns can optionally be matched "loosely". When the end of the pattern
- * matches \*[^*]\*$ (wildcard, no wildcard, wildcard), if the pattern
- * fails, it is also matched as if the last two characters didn't exist. The
- * goal is to support the legacy "*!*" syntax, where the "!*" is optional.
- * </p>
- *
- * @param name The pattern
- * @param target The object to associate with the pattern
- * @param looseMatch
- * To loosely match wildcards or not
- */
- public void addPattern(String name, E target, boolean looseMatch) {
-
- Object pattern;
-
- if (!wildcard.isLiteral(name)) {
- if (looseMatch && (name.length() > 0) && (name.charAt(0) == '/')) {
- name = name.substring(1);
- }
-
- log.debug("Compiling pattern '{}'", name);
-
- pattern = wildcard.compilePattern(name);
- compiledPatterns.add(new Mapping<E>(name, pattern, target));
-
- if (looseMatch) {
- int lastStar = name.lastIndexOf('*');
- if (lastStar > 1 && lastStar == name.length() - 1) {
- if (name.charAt(lastStar - 1) != '*') {
- pattern = wildcard.compilePattern(name.substring(0, lastStar - 1));
- compiledPatterns.add(new Mapping<E>(name, pattern, target));
- }
- }
- }
- }
- }
-
- public void freeze() {
- compiledPatterns = Collections.unmodifiableList(new ArrayList<Mapping<E>>());
- }
-
- /**
- * <p> Matches the path against the compiled wildcard patterns. </p>
- *
- * @param potentialMatch The portion of the request URI for selecting a config.
- * @return The action config if matched, else null
- */
- public E match(String potentialMatch) {
- E config = null;
-
- if (compiledPatterns.size() > 0) {
- log.debug("Attempting to match '{}' to a wildcard pattern, {} available", potentialMatch, compiledPatterns.size());
-
- Map<String,String> vars = new LinkedHashMap<String,String>();
- for (Mapping<E> m : compiledPatterns) {
- if (wildcard.match(vars, potentialMatch, m.getPattern())) {
- log.debug("Value matches pattern '{}'", m.getOriginalPattern());
- config = convert(potentialMatch, m.getTarget(), vars);
- break;
- }
- }
- }
-
- return config;
- }
-
- /**
- * <p> Clones the target object and its children, replacing various
- * properties with the values of the wildcard-matched strings. </p>
- *
- * @param path The requested path
- * @param orig The original object
- * @param vars A Map of wildcard-matched strings
- * @return A cloned object with appropriate properties replaced with
- * wildcard-matched values
- */
- protected abstract E convert(String path, E orig, Map<String, String> vars);
-
- /**
- * <p> Replaces parameter values
- * </p>
- *
- * @param orig The original parameters with placeholder values
- * @param vars A Map of wildcard-matched strings
- */
- protected Map<String,String> replaceParameters(Map<String, String> orig, Map<String,String> vars) {
- Map<String, String> map = new LinkedHashMap<>();
-
- //this will set the group index references, like {1}
- for (String key : orig.keySet()) {
- map.put(key, convertParam(orig.get(key), vars));
- }
-
- //the values map will contain entries like name->"Lex Luthor" and 1->"Lex Luthor"
- //now add the non-numeric values
- for (String key: vars.keySet()) {
- if (!NumberUtils.isNumber(key)) {
- map.put(key, vars.get(key));
- }
- }
-
- return map;
- }
-
- /**
- * <p> Inserts into a value wildcard-matched strings where specified
- * with the {x} syntax. If a wildcard-matched value isn't found, the
- * replacement token is turned into an empty string.
- * </p>
- *
- * @param val The value to convert
- * @param vars A Map of wildcard-matched strings
- * @return The new value
- */
- protected String convertParam(String val, Map<String, String> vars) {
- if (val == null) {
- return null;
- }
-
- int len = val.length();
- StringBuilder ret = new StringBuilder();
- char c;
- String varVal;
- for (int x=0; x<len; x++) {
- c = val.charAt(x);
- if (x < len - 2 &&
- c == '{' && '}' == val.charAt(x+2)) {
- varVal = (String)vars.get(String.valueOf(val.charAt(x + 1)));
- if (varVal != null) {
- ret.append(varVal);
- }
- x += 2;
- } else {
- ret.append(c);
- }
- }
-
- return ret.toString();
- }
-
- /**
- * <p> Stores a compiled wildcard pattern and the object it came
- * from. </p>
- */
- private static class Mapping<E> implements Serializable {
- /**
- * <p> The original pattern. </p>
- */
- private String original;
-
-
- /**
- * <p> The compiled pattern. </p>
- */
- private Object pattern;
-
- /**
- * <p> The original object. </p>
- */
- private E config;
-
- /**
- * <p> Contructs a read-only Mapping instance. </p>
- *
- * @param original The original pattern
- * @param pattern The compiled pattern
- * @param config The original object
- */
- public Mapping(String original, Object pattern, E config) {
- this.original = original;
- this.pattern = pattern;
- this.config = config;
- }
-
- /**
- * <p> Gets the compiled wildcard pattern. </p>
- *
- * @return The compiled pattern
- */
- public Object getPattern() {
- return this.pattern;
- }
-
- /**
- * <p> Gets the object that contains the pattern. </p>
- *
- * @return The associated object
- */
- public E getTarget() {
- return this.config;
- }
-
- /**
- * <p> Gets the original wildcard pattern. </p>
- *
- * @return The original pattern
- */
- public String getOriginalPattern() {
- return this.original;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java
deleted file mode 100644
index e282c1a..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/ActionConfigMatcher.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * $Id$
- *
- * Copyright 2003,2004 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.impl;
-
-import com.opensymphony.xwork2.config.entities.ActionConfig;
-import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
-import com.opensymphony.xwork2.config.entities.ResultConfig;
-import com.opensymphony.xwork2.util.PatternMatcher;
-import com.opensymphony.xwork2.util.WildcardHelper;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * <p> Matches paths against pre-compiled wildcard expressions pulled from
- * action configs. It uses the wildcard matcher from the Apache Cocoon
- * project. Patterns will be matched in the order they exist in the
- * config file. The first match wins, so more specific patterns should be
- * defined before less specific patterns.
- */
-public class ActionConfigMatcher extends AbstractMatcher<ActionConfig> implements Serializable {
-
- /**
- * <p> Finds and precompiles the wildcard patterns from the ActionConfig
- * "path" attributes. ActionConfig's will be evaluated in the order they
- * exist in the config file. Only paths that actually contain a
- * wildcard will be compiled. Patterns will matched strictly.</p>
- *
- * @param configs An array of ActionConfig's to process
- * @deprecated Since 2.1, use {@link #ActionConfigMatcher(PatternMatcher, Map, boolean)} instead
- */
- @Deprecated public ActionConfigMatcher(Map<String, ActionConfig> configs) {
- this(configs, false);
- }
-
- /**
- * <p> Finds and precompiles the wildcard patterns from the ActionConfig
- * "path" attributes. ActionConfig's will be evaluated in the order they
- * exist in the config file. Only paths that actually contain a
- * wildcard will be compiled. </p>
- *
- * <p>Patterns can optionally be matched "loosely". When
- * the end of the pattern matches \*[^*]\*$ (wildcard, no wildcard,
- * wildcard), if the pattern fails, it is also matched as if the
- * last two characters didn't exist. The goal is to support the
- * legacy "*!*" syntax, where the "!*" is optional.</p>
- *
- * @param configs An array of ActionConfig's to process
- * @param looseMatch To loosely match wildcards or not
- * @deprecated Since 2.1, use {@link #ActionConfigMatcher(PatternMatcher, Map, boolean)} instead
- */
- @Deprecated public ActionConfigMatcher(Map<String, ActionConfig> configs,
- boolean looseMatch) {
-
- this(new WildcardHelper(), configs, looseMatch);
- }
-
- /**
- * <p> Finds and precompiles the wildcard patterns from the ActionConfig
- * "path" attributes. ActionConfig's will be evaluated in the order they
- * exist in the config file. Only paths that actually contain a
- * wildcard will be compiled. </p>
- *
- * <p>Patterns can optionally be matched "loosely". When
- * the end of the pattern matches \*[^*]\*$ (wildcard, no wildcard,
- * wildcard), if the pattern fails, it is also matched as if the
- * last two characters didn't exist. The goal is to support the
- * legacy "*!*" syntax, where the "!*" is optional.</p>
- *
- * @param configs An array of ActionConfig's to process
- * @param looseMatch To loosely match wildcards or not
- */
- public ActionConfigMatcher(PatternMatcher<?> patternMatcher,
- Map<String, ActionConfig> configs,
- boolean looseMatch) {
- super(patternMatcher);
- for (String name : configs.keySet()) {
- addPattern(name, configs.get(name), looseMatch);
- }
- }
-
- /**
- * <p> Clones the ActionConfig and its children, replacing various
- * properties with the values of the wildcard-matched strings. </p>
- *
- * @param path The requested path
- * @param orig The original ActionConfig
- * @param vars A Map of wildcard-matched strings
- * @return A cloned ActionConfig with appropriate properties replaced with
- * wildcard-matched values
- */
- @Override public ActionConfig convert(String path, ActionConfig orig,
- Map<String, String> vars) {
-
- String methodName = convertParam(orig.getMethodName(), vars);
- if (!orig.isAllowedMethod(methodName)) {
- return null;
- }
-
- String className = convertParam(orig.getClassName(), vars);
- String pkgName = convertParam(orig.getPackageName(), vars);
-
- Map<String,String> params = replaceParameters(orig.getParams(), vars);
-
- Map<String, ResultConfig> results = new LinkedHashMap<>();
- for (String name : orig.getResults().keySet()) {
- ResultConfig result = orig.getResults().get(name);
- name = convertParam(name, vars);
- ResultConfig r = new ResultConfig.Builder(name, convertParam(result.getClassName(), vars))
- .addParams(replaceParameters(result.getParams(), vars))
- .build();
- results.put(name, r);
- }
-
- List<ExceptionMappingConfig> exs = new ArrayList<ExceptionMappingConfig>();
- for (ExceptionMappingConfig ex : orig.getExceptionMappings()) {
- String name = convertParam(ex.getName(), vars);
- String exClassName = convertParam(ex.getExceptionClassName(), vars);
- String exResult = convertParam(ex.getResult(), vars);
- Map<String,String> exParams = replaceParameters(ex.getParams(), vars);
- ExceptionMappingConfig e = new ExceptionMappingConfig.Builder(name, exClassName, exResult).addParams(exParams).build();
- exs.add(e);
- }
-
- return new ActionConfig.Builder(pkgName, orig.getName(), className)
- .methodName(methodName)
- .addParams(params)
- .addResultConfigs(results)
- .addInterceptors(orig.getInterceptors())
- .addExceptionMappings(exs)
- .location(orig.getLocation())
- .build();
- }
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
deleted file mode 100644
index 7d5e5cc..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * Copyright 2002-2006,2009 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.impl;
-
-import com.opensymphony.xwork2.*;
-import com.opensymphony.xwork2.config.*;
-import com.opensymphony.xwork2.config.entities.*;
-import com.opensymphony.xwork2.config.providers.InterceptorBuilder;
-import com.opensymphony.xwork2.conversion.*;
-import com.opensymphony.xwork2.conversion.impl.*;
-import com.opensymphony.xwork2.factory.*;
-import com.opensymphony.xwork2.inject.*;
-import com.opensymphony.xwork2.ognl.OgnlReflectionProvider;
-import com.opensymphony.xwork2.ognl.OgnlUtil;
-import com.opensymphony.xwork2.ognl.OgnlValueStackFactory;
-import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor;
-import com.opensymphony.xwork2.util.*;
-import com.opensymphony.xwork2.util.fs.DefaultFileManager;
-import com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory;
-import com.opensymphony.xwork2.util.location.LocatableProperties;
-import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
-import ognl.PropertyAccessor;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.*;
-
-
-/**
- * DefaultConfiguration
- *
- * @author Jason Carreira
- * Created Feb 24, 2003 7:38:06 AM
- */
-public class DefaultConfiguration implements Configuration {
-
- protected static final Logger LOG = LogManager.getLogger(DefaultConfiguration.class);
-
-
- // Programmatic Action Configurations
- protected Map<String, PackageConfig> packageContexts = new LinkedHashMap<>();
- protected RuntimeConfiguration runtimeConfiguration;
- protected Container container;
- protected String defaultFrameworkBeanName;
- protected Set<String> loadedFileNames = new TreeSet<>();
- protected List<UnknownHandlerConfig> unknownHandlerStack;
-
-
- ObjectFactory objectFactory;
-
- public DefaultConfiguration() {
- this("xwork");
- }
-
- public DefaultConfiguration(String defaultBeanName) {
- this.defaultFrameworkBeanName = defaultBeanName;
- }
-
-
- public PackageConfig getPackageConfig(String name) {
- return packageContexts.get(name);
- }
-
- public List<UnknownHandlerConfig> getUnknownHandlerStack() {
- return unknownHandlerStack;
- }
-
- public void setUnknownHandlerStack(List<UnknownHandlerConfig> unknownHandlerStack) {
- this.unknownHandlerStack = unknownHandlerStack;
- }
-
- public Set<String> getPackageConfigNames() {
- return packageContexts.keySet();
- }
-
- public Map<String, PackageConfig> getPackageConfigs() {
- return packageContexts;
- }
-
- public Set<String> getLoadedFileNames() {
- return loadedFileNames;
- }
-
- public RuntimeConfiguration getRuntimeConfiguration() {
- return runtimeConfiguration;
- }
-
- /**
- * @return the container
- */
- public Container getContainer() {
- return container;
- }
-
- public void addPackageConfig(String name, PackageConfig packageContext) {
- PackageConfig check = packageContexts.get(name);
- if (check != null) {
- if (check.getLocation() != null && packageContext.getLocation() != null
- && check.getLocation().equals(packageContext.getLocation())) {
- LOG.debug("The package name '{}' is already been loaded by the same location and could be removed: {}",
- name, packageContext.getLocation());
- } else {
- throw new ConfigurationException("The package name '" + name
- + "' at location "+packageContext.getLocation()
- + " is already been used by another package at location " + check.getLocation(),
- packageContext);
- }
- }
- packageContexts.put(name, packageContext);
- }
-
- public PackageConfig removePackageConfig(String packageName) {
- return packageContexts.remove(packageName);
- }
-
- /**
- * Allows the configuration to clean up any resources used
- */
- public void destroy() {
- packageContexts.clear();
- loadedFileNames.clear();
- }
-
- public void rebuildRuntimeConfiguration() {
- runtimeConfiguration = buildRuntimeConfiguration();
- }
-
- /**
- * Calls the ConfigurationProviderFactory.getConfig() to tell it to reload the configuration and then calls
- * buildRuntimeConfiguration().
- *
- * @throws ConfigurationException
- */
- public synchronized void reload(List<ConfigurationProvider> providers) throws ConfigurationException {
-
- // Silly copy necessary due to lack of ability to cast generic lists
- List<ContainerProvider> contProviders = new ArrayList<>();
- contProviders.addAll(providers);
-
- reloadContainer(contProviders);
- }
-
- /**
- * Calls the ConfigurationProviderFactory.getConfig() to tell it to reload the configuration and then calls
- * buildRuntimeConfiguration().
- *
- * @throws ConfigurationException
- */
- public synchronized List<PackageProvider> reloadContainer(List<ContainerProvider> providers) throws ConfigurationException {
- packageContexts.clear();
- loadedFileNames.clear();
- List<PackageProvider> packageProviders = new ArrayList<>();
-
- ContainerProperties props = new ContainerProperties();
- ContainerBuilder builder = new ContainerBuilder();
- Container bootstrap = createBootstrapContainer(providers);
- for (final ContainerProvider containerProvider : providers)
- {
- bootstrap.inject(containerProvider);
- containerProvider.init(this);
- containerProvider.register(builder, props);
- }
- props.setConstants(builder);
-
- builder.factory(Configuration.class, new Factory<Configuration>() {
- public Configuration create(Context context) throws Exception {
- return DefaultConfiguration.this;
- }
- });
-
- ActionContext oldContext = ActionContext.getContext();
- try {
- // Set the bootstrap container for the purposes of factory creation
-
- setContext(bootstrap);
- container = builder.create(false);
- setContext(container);
- objectFactory = container.getInstance(ObjectFactory.class);
-
- // Process the configuration providers first
- for (final ContainerProvider containerProvider : providers)
- {
- if (containerProvider instanceof PackageProvider) {
- container.inject(containerProvider);
- ((PackageProvider)containerProvider).loadPackages();
- packageProviders.add((PackageProvider)containerProvider);
- }
- }
-
- // Then process any package providers from the plugins
- Set<String> packageProviderNames = container.getInstanceNames(PackageProvider.class);
- for (String name : packageProviderNames) {
- PackageProvider provider = container.getInstance(PackageProvider.class, name);
- provider.init(this);
- provider.loadPackages();
- packageProviders.add(provider);
- }
-
- rebuildRuntimeConfiguration();
- } finally {
- if (oldContext == null) {
- ActionContext.setContext(null);
- }
- }
- return packageProviders;
- }
-
- protected ActionContext setContext(Container cont) {
- ActionContext context = ActionContext.getContext();
- if (context == null) {
- ValueStack vs = cont.getInstance(ValueStackFactory.class).createValueStack();
- context = new ActionContext(vs.getContext());
- ActionContext.setContext(context);
- }
- return context;
- }
-
- protected Container createBootstrapContainer(List<ContainerProvider> providers) {
- ContainerBuilder builder = new ContainerBuilder();
- boolean fmFactoryRegistered = false;
- for (ContainerProvider provider : providers) {
- if (provider instanceof FileManagerProvider) {
- provider.register(builder, null);
- }
- if (provider instanceof FileManagerFactoryProvider) {
- provider.register(builder, null);
- fmFactoryRegistered = true;
- }
- }
- builder.factory(ObjectFactory.class, Scope.SINGLETON);
- builder.factory(ActionFactory.class, DefaultActionFactory.class, Scope.SINGLETON);
- builder.factory(ResultFactory.class, DefaultResultFactory.class, Scope.SINGLETON);
- builder.factory(InterceptorFactory.class, DefaultInterceptorFactory.class, Scope.SINGLETON);
- builder.factory(com.opensymphony.xwork2.factory.ValidatorFactory.class, com.opensymphony.xwork2.factory.DefaultValidatorFactory.class, Scope.SINGLETON);
- builder.factory(ConverterFactory.class, DefaultConverterFactory.class, Scope.SINGLETON);
- builder.factory(UnknownHandlerFactory.class, DefaultUnknownHandlerFactory.class, Scope.SINGLETON);
-
- builder.factory(FileManager.class, "system", DefaultFileManager.class, Scope.SINGLETON);
- if (!fmFactoryRegistered) {
- builder.factory(FileManagerFactory.class, DefaultFileManagerFactory.class, Scope.SINGLETON);
- }
- builder.factory(ReflectionProvider.class, OgnlReflectionProvider.class, Scope.SINGLETON);
- builder.factory(ValueStackFactory.class, OgnlValueStackFactory.class, Scope.SINGLETON);
-
- builder.factory(XWorkConverter.class, Scope.SINGLETON);
- builder.factory(ConversionPropertiesProcessor.class, DefaultConversionPropertiesProcessor.class, Scope.SINGLETON);
- builder.factory(ConversionFileProcessor.class, DefaultConversionFileProcessor.class, Scope.SINGLETON);
- builder.factory(ConversionAnnotationProcessor.class, DefaultConversionAnnotationProcessor.class, Scope.SINGLETON);
- builder.factory(TypeConverterCreator.class, DefaultTypeConverterCreator.class, Scope.SINGLETON);
- builder.factory(TypeConverterHolder.class, DefaultTypeConverterHolder.class, Scope.SINGLETON);
-
- builder.factory(XWorkBasicConverter.class, Scope.SINGLETON);
- builder.factory(TypeConverter.class, XWorkConstants.COLLECTION_CONVERTER, CollectionConverter.class, Scope.SINGLETON);
- builder.factory(TypeConverter.class, XWorkConstants.ARRAY_CONVERTER, ArrayConverter.class, Scope.SINGLETON);
- builder.factory(TypeConverter.class, XWorkConstants.DATE_CONVERTER, DateConverter.class, Scope.SINGLETON);
- builder.factory(TypeConverter.class, XWorkConstants.NUMBER_CONVERTER, NumberConverter.class, Scope.SINGLETON);
- builder.factory(TypeConverter.class, XWorkConstants.STRING_CONVERTER, StringConverter.class, Scope.SINGLETON);
-
- builder.factory(TextParser.class, OgnlTextParser.class, Scope.SINGLETON);
- builder.factory(TextProvider.class, "system", DefaultTextProvider.class, Scope.SINGLETON);
-
- builder.factory(ObjectTypeDeterminer.class, DefaultObjectTypeDeterminer.class, Scope.SINGLETON);
- builder.factory(PropertyAccessor.class, CompoundRoot.class.getName(), CompoundRootAccessor.class, Scope.SINGLETON);
- builder.factory(OgnlUtil.class, Scope.SINGLETON);
-
- builder.constant(XWorkConstants.DEV_MODE, "false");
- builder.constant(XWorkConstants.LOG_MISSING_PROPERTIES, "false");
- builder.constant(XWorkConstants.ENABLE_OGNL_EVAL_EXPRESSION, "false");
- builder.constant(XWorkConstants.ENABLE_OGNL_EXPRESSION_CACHE, "true");
- builder.constant(XWorkConstants.RELOAD_XML_CONFIGURATION, "false");
-
- return builder.create(true);
- }
-
- /**
- * This builds the internal runtime configuration used by Xwork for finding and configuring Actions from the
- * programmatic configuration data structures. All of the old runtime configuration will be discarded and rebuilt.
- *
- * <p>
- * It basically flattens the data structures to make the information easier to access. It will take
- * an {@link ActionConfig} and combine its data with all inherited dast. For example, if the {@link ActionConfig}
- * is in a package that contains a global result and it also contains a result, the resulting {@link ActionConfig}
- * will have two results.
- */
- protected synchronized RuntimeConfiguration buildRuntimeConfiguration() throws ConfigurationException {
- Map<String, Map<String, ActionConfig>> namespaceActionConfigs = new LinkedHashMap<>();
- Map<String, String> namespaceConfigs = new LinkedHashMap<>();
-
- for (PackageConfig packageConfig : packageContexts.values()) {
-
- if (!packageConfig.isAbstract()) {
- String namespace = packageConfig.getNamespace();
- Map<String, ActionConfig> configs = namespaceActionConfigs.get(namespace);
-
- if (configs == null) {
- configs = new LinkedHashMap<>();
- }
-
- Map<String, ActionConfig> actionConfigs = packageConfig.getAllActionConfigs();
-
- for (Object o : actionConfigs.keySet()) {
- String actionName = (String) o;
- ActionConfig baseConfig = actionConfigs.get(actionName);
- configs.put(actionName, buildFullActionConfig(packageConfig, baseConfig));
- }
-
- namespaceActionConfigs.put(namespace, configs);
- if (packageConfig.getFullDefaultActionRef() != null) {
- namespaceConfigs.put(namespace, packageConfig.getFullDefaultActionRef());
- }
- }
- }
-
- PatternMatcher<int[]> matcher = container.getInstance(PatternMatcher.class);
- return new RuntimeConfigurationImpl(Collections.unmodifiableMap(namespaceActionConfigs),
- Collections.unmodifiableMap(namespaceConfigs), matcher);
- }
-
- private void setDefaultResults(Map<String, ResultConfig> results, PackageConfig packageContext) {
- String defaultResult = packageContext.getFullDefaultResultType();
-
- for (Map.Entry<String, ResultConfig> entry : results.entrySet()) {
-
- if (entry.getValue() == null) {
- ResultTypeConfig resultTypeConfig = packageContext.getAllResultTypeConfigs().get(defaultResult);
- entry.setValue(new ResultConfig.Builder(null, resultTypeConfig.getClassName()).build());
- }
- }
- }
-
- /**
- * Builds the full runtime actionconfig with all of the defaults and inheritance
- *
- * @param packageContext the PackageConfig which holds the base config we're building from
- * @param baseConfig the ActionConfig which holds only the configuration specific to itself, without the defaults
- * and inheritance
- * @return a full ActionConfig for runtime configuration with all of the inherited and default params
- * @throws com.opensymphony.xwork2.config.ConfigurationException
- *
- */
- private ActionConfig buildFullActionConfig(PackageConfig packageContext, ActionConfig baseConfig) throws ConfigurationException {
- Map<String, String> params = new TreeMap<>(baseConfig.getParams());
- Map<String, ResultConfig> results = new TreeMap<>();
-
- if (!baseConfig.getPackageName().equals(packageContext.getName()) && packageContexts.containsKey(baseConfig.getPackageName())) {
- results.putAll(packageContexts.get(baseConfig.getPackageName()).getAllGlobalResults());
- } else {
- results.putAll(packageContext.getAllGlobalResults());
- }
-
- results.putAll(baseConfig.getResults());
-
- setDefaultResults(results, packageContext);
-
- List<InterceptorMapping> interceptors = new ArrayList<>(baseConfig.getInterceptors());
-
- if (interceptors.size() <= 0) {
- String defaultInterceptorRefName = packageContext.getFullDefaultInterceptorRef();
-
- if (defaultInterceptorRefName != null) {
- interceptors.addAll(InterceptorBuilder.constructInterceptorReference(new PackageConfig.Builder(packageContext), defaultInterceptorRefName,
- new LinkedHashMap<String, String>(), packageContext.getLocation(), objectFactory));
- }
- }
-
- return new ActionConfig.Builder(baseConfig)
- .addParams(params)
- .addResultConfigs(results)
- .defaultClassName(packageContext.getDefaultClassRef()) // fill in default if non class has been provided
- .interceptors(interceptors)
- .addExceptionMappings(packageContext.getAllExceptionMappingConfigs())
- .build();
- }
-
-
- private static class RuntimeConfigurationImpl implements RuntimeConfiguration {
-
- private Map<String, Map<String, ActionConfig>> namespaceActionConfigs;
- private Map<String, ActionConfigMatcher> namespaceActionConfigMatchers;
- private NamespaceMatcher namespaceMatcher;
- private Map<String, String> namespaceConfigs;
-
- public RuntimeConfigurationImpl(Map<String, Map<String, ActionConfig>> namespaceActionConfigs,
- Map<String, String> namespaceConfigs,
- PatternMatcher<int[]> matcher) {
- this.namespaceActionConfigs = namespaceActionConfigs;
- this.namespaceConfigs = namespaceConfigs;
-
- this.namespaceActionConfigMatchers = new LinkedHashMap<>();
- this.namespaceMatcher = new NamespaceMatcher(matcher, namespaceActionConfigs.keySet());
-
- for (String ns : namespaceActionConfigs.keySet()) {
- namespaceActionConfigMatchers.put(ns, new ActionConfigMatcher(matcher, namespaceActionConfigs.get(ns), true));
- }
- }
-
-
- /**
- * Gets the configuration information for an action name, or returns null if the
- * name is not recognized.
- *
- * @param name the name of the action
- * @param namespace the namespace for the action or null for the empty namespace, ""
- * @return the configuration information for action requested
- */
- public ActionConfig getActionConfig(String namespace, String name) {
- ActionConfig config = findActionConfigInNamespace(namespace, name);
-
- // try wildcarded namespaces
- if (config == null) {
- NamespaceMatch match = namespaceMatcher.match(namespace);
- if (match != null) {
- config = findActionConfigInNamespace(match.getPattern(), name);
-
- // If config found, place all the matches found in the namespace processing in the action's parameters
- if (config != null) {
- config = new ActionConfig.Builder(config)
- .addParams(match.getVariables())
- .build();
- }
- }
- }
-
- // fail over to empty namespace
- if (config == null && StringUtils.isNotBlank(namespace)) {
- config = findActionConfigInNamespace("", name);
- }
-
-
- return config;
- }
-
- private ActionConfig findActionConfigInNamespace(String namespace, String name) {
- ActionConfig config = null;
- if (namespace == null) {
- namespace = "";
- }
- Map<String, ActionConfig> actions = namespaceActionConfigs.get(namespace);
- if (actions != null) {
- config = actions.get(name);
- // Check wildcards
- if (config == null) {
- config = namespaceActionConfigMatchers.get(namespace).match(name);
- // fail over to default action
- if (config == null) {
- String defaultActionRef = namespaceConfigs.get(namespace);
- if (defaultActionRef != null) {
- config = actions.get(defaultActionRef);
- }
- }
- }
- }
- return config;
- }
-
- /**
- * Gets the configuration settings for every action.
- *
- * @return a Map of namespace - > Map of ActionConfig objects, with the key being the action name
- */
- public Map<String, Map<String, ActionConfig>> getActionConfigs() {
- return namespaceActionConfigs;
- }
-
- @Override
- public String toString() {
- StringBuilder buff = new StringBuilder("RuntimeConfiguration - actions are\n");
-
- for (String namespace : namespaceActionConfigs.keySet()) {
- Map<String, ActionConfig> actionConfigs = namespaceActionConfigs.get(namespace);
-
- for (String s : actionConfigs.keySet()) {
- buff.append(namespace).append("/").append(s).append("\n");
- }
- }
-
- return buff.toString();
- }
- }
-
- class ContainerProperties extends LocatableProperties {
- private static final long serialVersionUID = -7320625750836896089L;
-
- @Override
- public Object setProperty(String key, String value) {
- String oldValue = getProperty(key);
- if (LOG.isInfoEnabled() && oldValue != null && !oldValue.equals(value) && !defaultFrameworkBeanName.equals(oldValue)) {
- LOG.info("Overriding property {} - old value: {} new value: {}", key, oldValue, value);
- }
- return super.setProperty(key, value);
- }
-
- public void setConstants(ContainerBuilder builder) {
- for (Object keyobj : keySet()) {
- String key = (String)keyobj;
- builder.factory(String.class, key, new LocatableConstantFactory<>(getProperty(key), getPropertyLocation(key)));
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableConstantFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableConstantFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableConstantFactory.java
deleted file mode 100644
index eb218f8..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableConstantFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- *
- */
-package com.opensymphony.xwork2.config.impl;
-
-import com.opensymphony.xwork2.inject.Context;
-import com.opensymphony.xwork2.inject.Factory;
-import com.opensymphony.xwork2.util.location.Located;
-import com.opensymphony.xwork2.util.location.LocationUtils;
-
-/**
- * Factory that remembers where a constant came from
- */
-public class LocatableConstantFactory<T> extends Located implements Factory {
- T constant;
- public LocatableConstantFactory(T constant, Object location) {
- this.constant = constant;
- setLocation(LocationUtils.getLocation(location));
- }
-
- public T create(Context ignored) {
- return constant;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append(super.toString());
- sb.append(" defined at ");
- sb.append(getLocation().toString());
- return sb.toString();
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableFactory.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableFactory.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableFactory.java
deleted file mode 100644
index 2f95dfe..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/LocatableFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.opensymphony.xwork2.config.impl;
-
-import com.opensymphony.xwork2.inject.Context;
-import com.opensymphony.xwork2.inject.Factory;
-import com.opensymphony.xwork2.inject.Scope;
-import com.opensymphony.xwork2.util.location.Located;
-import com.opensymphony.xwork2.util.location.LocationUtils;
-
-import java.util.LinkedHashMap;
-
-/**
- * Attaches location information to the factory.
- */
-public class LocatableFactory<T> extends Located implements Factory<T> {
-
-
- private Class implementation;
- private Class type;
- private String name;
- private Scope scope;
-
- public LocatableFactory(String name, Class type, Class implementation, Scope scope, Object location) {
- this.implementation = implementation;
- this.type = type;
- this.name = name;
- this.scope = scope;
- setLocation(LocationUtils.getLocation(location));
- }
-
- @SuppressWarnings("unchecked")
- public T create(Context context) {
- Object obj = context.getContainer().inject(implementation);
- return (T) obj;
- }
-
- @Override
- public String toString() {
- String fields = new LinkedHashMap<String, Object>() {
- {
- put("type", type);
- put("name", name);
- put("implementation", implementation);
- put("scope", scope);
- }
- }.toString();
- StringBuilder sb = new StringBuilder(fields);
- sb.append(super.toString());
- sb.append(" defined at ");
- sb.append(getLocation().toString());
- return sb.toString();
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java
deleted file mode 100644
index d5359fe..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright 2002-2003,2009 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.impl;
-
-import com.opensymphony.xwork2.XWorkConstants;
-import com.opensymphony.xwork2.config.*;
-import com.opensymphony.xwork2.config.entities.PackageConfig;
-import com.opensymphony.xwork2.config.entities.UnknownHandlerConfig;
-import com.opensymphony.xwork2.config.providers.XWorkConfigurationProvider;
-import com.opensymphony.xwork2.inject.Container;
-import com.opensymphony.xwork2.inject.ContainerBuilder;
-import com.opensymphony.xwork2.inject.Scope;
-import com.opensymphony.xwork2.util.location.LocatableProperties;
-
-import java.util.*;
-
-
-/**
- * Simple configuration used for unit testing
- */
-public class MockConfiguration implements Configuration {
-
- private Map<String, PackageConfig> packages = new HashMap<>();
- private Set<String> loadedFiles = new HashSet<>();
- private Container container;
- protected List<UnknownHandlerConfig> unknownHandlerStack;
- private ContainerBuilder builder;
-
- public MockConfiguration() {
- builder = new ContainerBuilder();
- }
-
- public void selfRegister() {
- //this cannot be done in the constructor, as it causes an infinite loop
- builder.factory(Configuration.class, MockConfiguration.class, Scope.SINGLETON);
- LocatableProperties props = new LocatableProperties();
- new XWorkConfigurationProvider().register(builder, props);
- builder.constant(XWorkConstants.DEV_MODE, "false");
- builder.constant(XWorkConstants.RELOAD_XML_CONFIGURATION, "true");
- builder.constant(XWorkConstants.ENABLE_OGNL_EXPRESSION_CACHE, "true");
- container = builder.create(true);
- }
-
- public PackageConfig getPackageConfig(String name) {
- return packages.get(name);
- }
-
- public Set<String> getPackageConfigNames() {
- return packages.keySet();
- }
-
- public Map<String, PackageConfig> getPackageConfigs() {
- return packages;
- }
-
- public RuntimeConfiguration getRuntimeConfiguration() {
- throw new UnsupportedOperationException();
- }
-
- public void addPackageConfig(String name, PackageConfig packageContext) {
- packages.put(name, packageContext);
- }
-
- public void buildRuntimeConfiguration() {
- throw new UnsupportedOperationException();
- }
-
- public void destroy() {
- throw new UnsupportedOperationException();
- }
-
- public void rebuildRuntimeConfiguration() {
- throw new UnsupportedOperationException();
- }
-
- public void reload(List<ConfigurationProvider> providers) throws ConfigurationException {
- throw new UnsupportedOperationException();
- }
-
- public PackageConfig removePackageConfig(String name) {
- return packages.remove(name);
- }
-
- public Container getContainer() {
- return container;
- }
-
- public Set<String> getLoadedFileNames() {
- return loadedFiles;
- }
-
- public List<PackageProvider> reloadContainer(
- List<ContainerProvider> containerProviders)
- throws ConfigurationException {
- throw new UnsupportedOperationException();
- }
-
- public List<UnknownHandlerConfig> getUnknownHandlerStack() {
- return unknownHandlerStack;
- }
-
- public void setUnknownHandlerStack(List<UnknownHandlerConfig> unknownHandlerStack) {
- this.unknownHandlerStack = unknownHandlerStack;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/struts/blob/31af5842/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/NamespaceMatch.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/NamespaceMatch.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/NamespaceMatch.java
deleted file mode 100644
index 52a0886..0000000
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/NamespaceMatch.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2002-2006,2009 The Apache Software Foundation.
- *
- * Licensed 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 com.opensymphony.xwork2.config.impl;
-
-import java.util.Map;
-
-/**
- * Represents a match from a namespace pattern matching.
- *
- * @Since 2.1
- */
-public class NamespaceMatch {
- private String pattern;
- private Map<String,String> variables;
-
- public NamespaceMatch(String pattern, Map<String, String> variables) {
- this.pattern = pattern;
- this.variables = variables;
- }
-
- /**
- * @return The pattern that was matched
- */
- public String getPattern() {
- return pattern;
- }
-
- /**
- * @return The variables containing the matched values
- */
- public Map<String, String> getVariables() {
- return variables;
- }
-}