You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by ma...@apache.org on 2004/02/17 06:51:48 UTC
cvs commit: jakarta-struts/src/share/org/apache/struts/config/impl ModuleConfigImpl.java
martinc 2004/02/16 21:51:48
Modified: conf/share struts-config_1_1.dtd
src/share/org/apache/struts/config ConfigRuleSet.java
ModuleConfig.java
src/share/org/apache/struts/config/impl
ModuleConfigImpl.java
Log:
Restore the functionality for the 'type' attribute on form-beans and
global-forwards elements in the config file. This allows the class name
to be specified for all sub-elements, rather than having to specify it
explicitly for each one.
PR: 26942
Submitted by: Charlie Jones
Revision Changes Path
1.42 +1 -3 jakarta-struts/conf/share/struts-config_1_1.dtd
Index: struts-config_1_1.dtd
===================================================================
RCS file: /home/cvs/jakarta-struts/conf/share/struts-config_1_1.dtd,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- struts-config_1_1.dtd 1 Feb 2004 16:14:07 -0000 1.41
+++ struts-config_1_1.dtd 17 Feb 2004 05:51:47 -0000 1.42
@@ -135,7 +135,6 @@
type Fully qualified Java class to use when instantiating
ActionFormBean objects. If specified, the object must be a
subclass of the default class type.
- DEPRECATED.
WARNING: For Struts 1.0, this value is ignored. You
can set the default implementation class name with the
@@ -282,7 +281,6 @@
type Fully qualified Java class to use when instantiating
ActionForward objects. If specified, the object must be a
subclass of the default class type.
- DEPRECATED.
WARNING: For Struts 1.0, this value is ignored. You
can set the default implementation class name with the
1.17 +128 -12 jakarta-struts/src/share/org/apache/struts/config/ConfigRuleSet.java
Index: ConfigRuleSet.java
===================================================================
RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/config/ConfigRuleSet.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ConfigRuleSet.java 10 Jan 2004 21:03:34 -0000 1.16
+++ ConfigRuleSet.java 17 Feb 2004 05:51:47 -0000 1.17
@@ -177,11 +177,13 @@
("struts-config/controller/set-property",
"property", "value");
- digester.addObjectCreate
+ digester.addRule
+ ("struts-config/form-beans",
+ new SetActionFormBeanClassRule());
+
+ digester.addFactoryCreate
("struts-config/form-beans/form-bean",
- // "org.apache.struts.config.FormBeanConfig",
- "org.apache.struts.action.ActionFormBean",
- "className");
+ new ActionFormBeanFactory());
digester.addSetProperties
("struts-config/form-beans/form-bean");
digester.addSetNext
@@ -223,11 +225,13 @@
("struts-config/global-exceptions/exception/set-property",
"property", "value");
- digester.addObjectCreate
+ digester.addRule
+ ("struts-config/global-forwards",
+ new SetGlobalForwardClassRule());
+
+ digester.addFactoryCreate
("struts-config/global-forwards/forward",
- // "org.apache.struts.config.ForwardConfig",
- "org.apache.struts.action.ActionForward",
- "className");
+ new GlobalForwardFactory());
digester.addSetProperties
("struts-config/global-forwards/forward");
digester.addSetNext
@@ -315,6 +319,62 @@
/**
+ * Class that sets the name of the class to use when creating action form bean
+ * instances. The value is set on the object on the top of the stack, which
+ * must be a <code>org.apache.struts.config.ModuleConfig</code>.
+ */
+final class SetActionFormBeanClassRule extends Rule {
+
+ public SetActionFormBeanClassRule() {
+ super();
+ }
+
+ public void begin(String namespace, String name, Attributes attributes) throws Exception {
+ String className = attributes.getValue("type");
+ if (className != null) {
+ ModuleConfig mc = (ModuleConfig) digester.peek();
+ mc.setActionFormBeanClass(className);
+ }
+ }
+
+}
+
+
+/**
+ * An object creation factory which creates action form bean instances, taking
+ * into account the default class name, which may have been specified on the
+ * parent element and which is made available through the object on the top
+ * of the stack, which must be a
+ * <code>org.apache.struts.config.ModuleConfig</code>.
+ */
+final class ActionFormBeanFactory extends AbstractObjectCreationFactory {
+
+ public Object createObject(Attributes attributes) {
+
+ // Identify the name of the class to instantiate
+ String className = attributes.getValue("className");
+ if (className == null) {
+ ModuleConfig mc = (ModuleConfig) digester.peek();
+ className = mc.getActionFormBeanClass();
+ }
+
+ // Instantiate the new object and return it
+ Object actionFormBean = null;
+ try {
+ actionFormBean =
+ RequestUtils.applicationInstance(className);
+ } catch (Exception e) {
+ digester.getLogger().error(
+ "ActionFormBeanFactory.createObject: ", e);
+ }
+
+ return actionFormBean;
+ }
+
+}
+
+
+/**
* Class that sets the name of the class to use when creating action mapping
* instances. The value is set on the object on the top of the stack, which
* must be a <code>org.apache.struts.config.ModuleConfig</code>.
@@ -365,6 +425,62 @@
}
return actionMapping;
+ }
+
+}
+
+
+/**
+ * Class that sets the name of the class to use when creating global forward
+ * instances. The value is set on the object on the top of the stack, which
+ * must be a <code>org.apache.struts.config.ModuleConfig</code>.
+ */
+final class SetGlobalForwardClassRule extends Rule {
+
+ public SetGlobalForwardClassRule() {
+ super();
+ }
+
+ public void begin(String namespace, String name, Attributes attributes) throws Exception {
+ String className = attributes.getValue("type");
+ if (className != null) {
+ ModuleConfig mc = (ModuleConfig) digester.peek();
+ mc.setGlobalForwardClass(className);
+ }
+ }
+
+}
+
+
+/**
+ * An object creation factory which creates global forward instances, taking
+ * into account the default class name, which may have been specified on the
+ * parent element and which is made available through the object on the top
+ * of the stack, which must be a
+ * <code>org.apache.struts.config.ModuleConfig</code>.
+ */
+final class GlobalForwardFactory extends AbstractObjectCreationFactory {
+
+ public Object createObject(Attributes attributes) {
+
+ // Identify the name of the class to instantiate
+ String className = attributes.getValue("className");
+ if (className == null) {
+ ModuleConfig mc = (ModuleConfig) digester.peek();
+ className = mc.getGlobalForwardClass();
+ }
+
+ // Instantiate the new object and return it
+ Object globalForward = null;
+ try {
+ globalForward =
+ RequestUtils.applicationInstance(className);
+ } catch (Exception e) {
+ digester.getLogger().error(
+ "GlobalForwardFactory.createObject: ", e);
+ }
+
+ return globalForward;
}
}
1.6 +37 -9 jakarta-struts/src/share/org/apache/struts/config/ModuleConfig.java
Index: ModuleConfig.java
===================================================================
RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/config/ModuleConfig.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ModuleConfig.java 13 Jan 2004 12:48:45 -0000 1.5
+++ ModuleConfig.java 17 Feb 2004 05:51:47 -0000 1.6
@@ -107,18 +107,33 @@
* @param prefix The prefix of the context-relative portion of the request URI.
*/
public void setPrefix(String prefix);
+
/**
- * The default class name to be used when creating action mapping
+ * The default class name to be used when creating action form bean
* instances.
*/
- String getActionMappingClass();
+ String getActionFormBeanClass();
+
/**
- * The default class name to be used when creating action mapping
- * instances.
- * @param actionMappingClass default class name to be used when creating action mapping
+ * The default class name to be used when creating action form bean
* instances.
+ *
+ * @param actionFormBeanClass default class name to be used when creating
+ * action form bean instances.
*/
+ void setActionFormBeanClass(String actionFormBeanClass);
+ /**
+ * The default class name to be used when creating action mapping instances.
+ */
+ String getActionMappingClass();
+
+ /**
+ * The default class name to be used when creating action mapping instances.
+ *
+ * @param actionMappingClass default class name to be used when creating
+ * action mapping instances.
+ */
void setActionMappingClass(String actionMappingClass);
/**
@@ -164,6 +179,19 @@
* has been frozen
*/
void addFormBeanConfig(FormBeanConfig config);
+
+ /**
+ * The default class name to be used when creating global forward instances.
+ */
+ String getGlobalForwardClass();
+
+ /**
+ * The default class name to be used when creating global forward instances.
+ *
+ * @param globalForwardClass default class name to be used when creating
+ * global forward instances.
+ */
+ void setGlobalForwardClass(String globalForwardClass);
/**
* Add a new <code>ForwardConfig</code> instance to the set of global
1.10 +57 -11 jakarta-struts/src/share/org/apache/struts/config/impl/ModuleConfigImpl.java
Index: ModuleConfigImpl.java
===================================================================
RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/config/impl/ModuleConfigImpl.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ModuleConfigImpl.java 13 Jan 2004 12:48:45 -0000 1.9
+++ ModuleConfigImpl.java 17 Feb 2004 05:51:48 -0000 1.10
@@ -100,7 +100,9 @@
super();
this.prefix = prefix;
this.actionConfigs = new HashMap();
- this.actionMappingClass = "org.apache.struts.action.ActionMapping";
+ this.actionFormBeanClass = "org.apache.struts.action.ActionFormBean";
+ this.actionMappingClass = "org.apache.struts.action.ActionMapping";
+ this.globalForwardClass = "org.apache.struts.action.ActionForward";
this.configured = false;
this.controllerConfig = null;
this.dataSources = new HashMap();
@@ -167,20 +169,37 @@
this.prefix = prefix;
}
+ /**
+ * The default class name to be used when creating action form bean
+ * instances.
+ */
+ public String getActionFormBeanClass() {
+ return this.actionFormBeanClass;
+ }
/**
- * The default class name to be used when creating action mapping
+ * The default class name to be used when creating action form bean
* instances.
+ *
+ * @param actionFormBeanClass default class name to be used when creating
+ * action form bean instances.
+ */
+ public void setActionFormBeanClass(String actionFormBeanClass) {
+ this.actionFormBeanClass = actionFormBeanClass;
+ }
+
+ /**
+ * The default class name to be used when creating action mapping instances.
*/
public String getActionMappingClass() {
return this.actionMappingClass;
}
/**
- * The default class name to be used when creating action mapping
- * instances.
- * @param actionMappingClass default class name to be used when creating
- * action mapping instances.
+ * The default class name to be used when creating action mapping instances.
+ *
+ * @param actionMappingClass default class name to be used when creating
+ * action mapping instances.
*/
public void setActionMappingClass(String actionMappingClass) {
this.actionMappingClass = actionMappingClass;
@@ -261,6 +280,23 @@
}
/**
+ * The default class name to be used when creating global forward instances.
+ */
+ public String getGlobalForwardClass() {
+ return this.globalForwardClass;
+ }
+
+ /**
+ * The default class name to be used when creating global forward instances.
+ *
+ * @param globalForwardClass default class name to be used when creating
+ * action mapping instances.
+ */
+ public void setGlobalForwardClass(String globalForwardClass) {
+ this.globalForwardClass = globalForwardClass;
+ }
+
+ /**
* Add a new <code>ForwardConfig</code> instance to the set of global
* forwards associated with this module.
*
@@ -690,10 +726,20 @@
protected String prefix = null;
/**
- * The default class name to be used when creating action mapping
+ * The default class name to be used when creating action form bean
* instances.
*/
+ protected String actionFormBeanClass = "org.apache.struts.action.ActionFormBean";
+
+ /**
+ * The default class name to be used when creating action mapping instances.
+ */
protected String actionMappingClass = "org.apache.struts.action.ActionMapping";
+
+ /**
+ * The default class name to be used when creating global forward instances.
+ */
+ protected String globalForwardClass = "org.apache.struts.action.ActionForward";
/**
* Matches action config paths against compiled wildcard patterns
---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org