1. /* $Id: ObjectCreationFactory.java,v 1.13 2004/05/10 06:30:06 skitching Exp $
  2. *
  3. * Copyright 2001-2004 The Apache Software Foundation.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.apache.commons.digester;
  18. import org.xml.sax.Attributes;
  19. /**
  20. * <p> Interface for use with {@link FactoryCreateRule}.
  21. * The rule calls {@link #createObject} to create an object
  22. * to be pushed onto the <code>Digester</code> stack
  23. * whenever it is matched.</p>
  24. *
  25. * <p> {@link AbstractObjectCreationFactory} is an abstract
  26. * implementation suitable for creating anonymous
  27. * <code>ObjectCreationFactory</code> implementations.
  28. */
  29. public interface ObjectCreationFactory {
  30. /**
  31. * <p>Factory method called by {@link FactoryCreateRule} to supply an
  32. * object based on the element's attributes.
  33. *
  34. * @param attributes the element's attributes
  35. *
  36. * @throws Exception any exception thrown will be propagated upwards
  37. */
  38. public Object createObject(Attributes attributes) throws Exception;
  39. /**
  40. * <p>Returns the {@link Digester} that was set by the
  41. * {@link FactoryCreateRule} upon initialization.
  42. */
  43. public Digester getDigester();
  44. /**
  45. * <p>Set the {@link Digester} to allow the implementation to do logging,
  46. * classloading based on the digester's classloader, etc.
  47. *
  48. * @param digester parent Digester object
  49. */
  50. public void setDigester(Digester digester);
  51. }