sanders 01/08/13 12:49:34 Modified: digester/src/java/org/apache/commons/digester FactoryCreateRule.java ObjectCreationFactory.java Log: Added the ability to pass the Digester instance on to the factory. This is to allow for classloading, debugging, checking parser props, etc. Revision Changes Path 1.2 +8 -7 jakarta-commons/digester/src/java/org/apache/commons/digester/FactoryCreateRule.java Index: FactoryCreateRule.java =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/FactoryCreateRule.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FactoryCreateRule.java 2001/08/04 23:46:29 1.1 +++ FactoryCreateRule.java 2001/08/13 19:49:34 1.2 @@ -74,7 +74,7 @@ * in a call to either a factory method or to a non-empty constructor. * * @author Robert Burrell Donkin - * @version $Revision: 1.1 $ $Date: 2001/08/04 23:46:29 $ + * @version $Revision: 1.2 $ $Date: 2001/08/13 19:49:34 $ */ public class FactoryCreateRule extends Rule { @@ -129,7 +129,7 @@ public FactoryCreateRule(Digester digester, ObjectCreationFactory creationFactory) { - super(digester); + super(digester); this.creationFactory = creationFactory; } @@ -168,7 +168,7 @@ * @param attributes The attribute list of this element */ public void begin(Attributes attributes) throws Exception { - + Object instance = getFactory(attributes).createObject(attributes); if (digester.getDebug() >= 1) digester.log("New " + instance.getClass().getName()); @@ -182,9 +182,9 @@ */ public void end() throws Exception { - Object top = digester.pop(); - if (digester.getDebug() >= 1) - digester.log("Pop " + top.getClass().getName()); + Object top = digester.pop(); + if (digester.getDebug() >= 1) + digester.log("Pop " + top.getClass().getName()); } @@ -194,7 +194,7 @@ */ public void finish() throws Exception { - creationFactory = null; + creationFactory = null; } @@ -225,6 +225,7 @@ Class clazz = digester.getClassLoader().loadClass(realClassName); creationFactory = (ObjectCreationFactory) clazz.newInstance(); + creationFactory.setDigester(digester); } return (creationFactory); 1.2 +20 -6 jakarta-commons/digester/src/java/org/apache/commons/digester/ObjectCreationFactory.java Index: ObjectCreationFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/ObjectCreationFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ObjectCreationFactory.java 2001/08/04 23:46:29 1.1 +++ ObjectCreationFactory.java 2001/08/13 19:49:34 1.2 @@ -53,7 +53,7 @@ * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * - */ + */ package org.apache.commons.digester; @@ -65,17 +65,31 @@ * <p> Interface for use with {@link FactoryCreateRule}. * * @author Robert Burrell Donkin - * @version $Revision: 1.1 $ $Date: 2001/08/04 23:46:29 $ + * @version $Revision: 1.2 $ $Date: 2001/08/13 19:49:34 $ */ -public interface ObjectCreationFactory -{ +public interface ObjectCreationFactory +{ /** * <p>Factory method called by {@link FactoryCreateRule} to supply an * object based on the element's attributes. * * @param attributes the element's attributes - */ - Object createObject(Attributes attributes); + */ + public Object createObject(Attributes attributes); + + /** + * <p>Returns the {@link Digester} that was set by the + * {@link FactoryCreateRule} upon initialization. + */ + public Digester getDigester(); + + /** + * <p>Set the {@link Digester} to allow the implementation to do logging, + * classloading based on the digester's classloader, etc. + * + * @param digester parent Digester object + */ + public void setDigester(Digester digester); }