Author: pbenedict
Date: Sat Jul 21 20:33:53 2007
New Revision: 558457
URL: http://svn.apache.org/viewvc?view=rev&rev=558457
Log:
STR-3078: action configs to also extend by actionId
Modified:
struts/struts1/trunk/core/src/main/java/org/apache/struts/action/ActionServlet.java
struts/struts1/trunk/core/src/main/java/org/apache/struts/config/ActionConfig.java
struts/struts1/trunk/core/src/main/resources/org/apache/struts/resources/struts-config_1_4.dtd
Modified:
struts/struts1/trunk/core/src/main/java/org/apache/struts/action/ActionServlet.java
URL:
http://svn.apache.org/viewvc/struts/struts1/trunk/core/src/main/java/org/apache/struts/action/ActionServlet.java?view=diff&rev=558457&r1=558456&r2=558457
==============================================================================
---
struts/struts1/trunk/core/src/main/java/org/apache/struts/action/ActionServlet.java
(original)
+++
struts/struts1/trunk/core/src/main/java/org/apache/struts/action/ActionServlet.java
Sat Jul 21 20:33:53 2007
@@ -1468,7 +1468,10 @@
// Make sure that this config is of the right class
ActionConfig baseConfig = moduleConfig.findActionConfig(ancestor);
-
+ if (baseConfig == null) {
+ baseConfig = moduleConfig.findActionConfigId(ancestor);
+ }
+
if (baseConfig == null) {
throw new UnavailableException("Unable to find "
+ "action config for '" + ancestor + "' to extend.");
Modified:
struts/struts1/trunk/core/src/main/java/org/apache/struts/config/ActionConfig.java
URL:
http://svn.apache.org/viewvc/struts/struts1/trunk/core/src/main/java/org/apache/struts/config/ActionConfig.java?view=diff&rev=558457&r1=558456&r2=558457
==============================================================================
---
struts/struts1/trunk/core/src/main/java/org/apache/struts/config/ActionConfig.java
(original)
+++
struts/struts1/trunk/core/src/main/java/org/apache/struts/config/ActionConfig.java
Sat Jul 21 20:33:53 2007
@@ -385,22 +385,24 @@
}
/**
- * <p>Returns the path of the ActionConfig that this object should inherit
- * properties from.</p>
+ * <p>Returns the <code>path</code> or <code>actionId</code> of the
+ * <code>ActionConfig</code> that this object should inherit properties
+ * from.</p>
*
- * @return the path of the ActionConfig that this object should inherit
- * properties from.
+ * @return the path or action id of the action mapping that this object
+ * should inherit properties from.
*/
public String getExtends() {
return (this.inherit);
}
/**
- * <p>Set the path of the ActionConfig that this object should inherit
- * properties from.</p>
+ * <p>Set the <code>path</code> or <code>actionId</code> of the
+ * <code>ActionConfig</code> that this object should inherit properties
+ * from.</p>
*
- * @param inherit the path of the ActionConfig that this object should
- * inherit properties from.
+ * @param inherit the path or action id of the action mapping that this
+ * object should inherit properties from.
*/
public void setExtends(String inherit) {
if (configured) {
@@ -882,21 +884,24 @@
* @return true if circular inheritance was detected.
*/
protected boolean checkCircularInheritance(ModuleConfig moduleConfig) {
- String ancestorPath = getExtends();
+ String ancestor = getExtends();
- while (ancestorPath != null) {
- // check if we have the same path as an ancestor
- if (getPath().equals(ancestorPath)) {
+ while (ancestor != null) {
+ // check if we have the same path or id as an ancestor
+ if (getPath().equals(ancestor) || ancestor.equals(getActionId())) {
return true;
}
- // get our ancestor's ancestor
- ActionConfig ancestor =
moduleConfig.findActionConfig(ancestorPath);
+ // get our ancestor's config
+ ActionConfig baseConfig = moduleConfig.findActionConfig(ancestor);
+ if (baseConfig == null) {
+ baseConfig = moduleConfig.findActionConfigId(ancestor);
+ }
- if (ancestor != null) {
- ancestorPath = ancestor.getExtends();
+ if (baseConfig != null) {
+ ancestor = baseConfig.getExtends();
} else {
- ancestorPath = null;
+ ancestor = null;
}
}
@@ -1249,15 +1254,18 @@
throw new IllegalStateException("Configuration is frozen");
}
- String ancestorPath = getExtends();
+ String ancestor = getExtends();
- if ((!extensionProcessed) && (ancestorPath != null)) {
+ if ((!extensionProcessed) && (ancestor != null)) {
ActionConfig baseConfig =
- moduleConfig.findActionConfig(ancestorPath);
-
+ moduleConfig.findActionConfig(ancestor);
+ if (baseConfig == null) {
+ baseConfig = moduleConfig.findActionConfigId(ancestor);
+ }
+
if (baseConfig == null) {
throw new NullPointerException("Unable to find "
- + "action for '" + ancestorPath + "' to extend.");
+ + "action for '" + ancestor + "' to extend.");
}
// Check against circular inheritance and make sure the base
Modified:
struts/struts1/trunk/core/src/main/resources/org/apache/struts/resources/struts-config_1_4.dtd
URL:
http://svn.apache.org/viewvc/struts/struts1/trunk/core/src/main/resources/org/apache/struts/resources/struts-config_1_4.dtd?view=diff&rev=558457&r1=558456&r2=558457
==============================================================================
---
struts/struts1/trunk/core/src/main/resources/org/apache/struts/resources/struts-config_1_4.dtd
(original)
+++
struts/struts1/trunk/core/src/main/resources/org/apache/struts/resources/struts-config_1_4.dtd
Sat Jul 21 20:33:53 2007
@@ -386,8 +386,8 @@
command The name of a commons-chain command which should be
looked up
and executed as part of servicing this request.
- extends The path of the action mapping configuration that this
- will inherit configuration information from.
+ extends The path or actionId of the action mapping configuration
+ that this will inherit configuration information from.
forward Module-relative path of the servlet or other resource that
will process this request, instead of the Action class