You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@locus.apache.org on 2000/02/13 05:03:44 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/xml XmlMapper.java
craigmcc 00/02/12 20:03:44
Modified: src/share/org/apache/tomcat/util/xml XmlMapper.java
Log:
Modify the implementation of ObjectCreate(className, attribute) to use the
attribute value as an override if the attribute exists, and use the
className value as a default otherwise.
Revision Changes Path
1.2 +56 -25 jakarta-tomcat/src/share/org/apache/tomcat/util/xml/XmlMapper.java
Index: XmlMapper.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/xml/XmlMapper.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XmlMapper.java 2000/02/08 20:13:32 1.1
+++ XmlMapper.java 2000/02/13 04:03:44 1.2
@@ -341,46 +341,77 @@
//-------------------- "Core" actions --------------------
-/** Create an object
+/**
+ * Create a new object.
*/
class ObjectCreate extends XmlAction {
String className;
- String attrib;
+ String attribute;
- public ObjectCreate(String classN) {
- className=classN;
+ /**
+ * Create a new object of the specified class only.
+ *
+ * @param className Class name of the object to be created
+ */
+ public ObjectCreate(String className) {
+ this.className = className;
}
- /** Create an object based on an attribute of the current
- tag
- */
- public ObjectCreate(String classN, String attrib) {
- className=classN;
- this.attrib=attrib;
+ /**
+ * Create an object of a class whose name is stored in the specified
+ * attribute (if present), or defaults to the specified class name.
+ *
+ * @param className Default class name to use
+ * @param attribute Name of the attribute containing the override class
+ */
+ public ObjectCreate(String className, String attribute) {
+ this.className=className;
+ this.attribute=attribute;
}
+ /**
+ * Create an object of the specified (or override) class.
+ *
+ * @param ctx Context in which this action takes place
+ */
public void start( SaxContext ctx) throws Exception {
- Stack st=ctx.getObjectStack();
- int top=ctx.getTagCount()-1;
- String tag=ctx.getTag(top);
- String classN=className;
-
- if( attrib!=null) {
- AttributeList attributes = ctx.getAttributeList( top );
- classN= attributes.getValue(attrib);
+
+ // Initialize our local environment
+ Stack st = ctx.getObjectStack();
+ int top = ctx.getTagCount()-1;
+ String tag = ctx.getTag(top);
+ String className = this.className;
+
+ // Override the default class name if specified
+ if (attribute != null) {
+ AttributeList attributes = ctx.getAttributeList(top);
+ String value = attributes.getValue(attribute);
+ if (value != null)
+ className = value;
}
- Class c=Class.forName( classN );
- Object o=c.newInstance();
+
+ // Create a new instance and push it on the stack
+ Class c = Class.forName( className );
+ Object o = c.newInstance();
st.push(o);
- if( ctx.getDebug() > 0 ) ctx.log("new " + attrib + " " + classN + " " + tag + " " + o);
+ if (ctx.getDebug() > 0)
+ ctx.log("new " + attribute + " " + className + " " + tag +
+ " " + o);
}
+ /**
+ * Clean up by popping the object we created off of the stack.
+ *
+ * @param ctx Context in which this action takes place
+ */
public void cleanup( SaxContext ctx) {
- Stack st=ctx.getObjectStack();
- String tag=ctx.getTag(ctx.getTagCount()-1);
- Object o=st.pop();
- if( ctx.getDebug() > 0 ) ctx.log("pop " + tag + " " + o.getClass().getName() + ": " + o);
+ Stack st = ctx.getObjectStack();
+ String tag = ctx.getTag(ctx.getTagCount()-1);
+ Object o = st.pop();
+ if (ctx.getDebug() > 0)
+ ctx.log("pop " + tag + " " + o.getClass().getName() + ": " + o);
}
+
}