    001    /* $Id: ObjectCreationFactory.java 471661 2006-11-06 08:09:25Z skitching $
    002     *
    003     * Licensed to the Apache Software Foundation (ASF) under one or more
    004     * contributor license agreements.  See the NOTICE file distributed with
    005     * this work for additional information regarding copyright ownership.
    006     * The ASF licenses this file to You under the Apache License, Version 2.0
    007     * (the "License"); you may not use this file except in compliance with
    008     * the License.  You may obtain a copy of the License at
    009     *
    010     *      http://www.apache.org/licenses/LICENSE-2.0
    011     *
    012     * Unless required by applicable law or agreed to in writing, software
    013     * distributed under the License is distributed on an "AS IS" BASIS,
    014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    015     * See the License for the specific language governing permissions and
    016     * limitations under the License.
    017     */
    018
    019    package org.apache.commons.digester;
    020
    021
    022    import org.xml.sax.Attributes;
    023
    024    /**
    025     * <p> Interface for use with {@link FactoryCreateRule}.
    026     * The rule calls {@link #createObject} to create an object
    027     * to be pushed onto the <code>Digester</code> stack
    028     * whenever it is matched.</p>
    029     *
    030     * <p> {@link AbstractObjectCreationFactory} is an abstract
    031     * implementation suitable for creating anonymous
    032     * <code>ObjectCreationFactory</code> implementations.
    033     */
    034    public interface ObjectCreationFactory {
    035
    036        /**
    037         * <p>Factory method called by {@link FactoryCreateRule} to supply an
    038         * object based on the element's attributes.
    039         *
    040         * @param attributes the element's attributes
    041         *
    042         * @throws Exception any exception thrown will be propagated upwards
    043         */
    044        public Object createObject(Attributes attributes) throws Exception;
    045
    046        /**
    047         * <p>Returns the {@link Digester} that was set by the
    048         * {@link FactoryCreateRule} upon initialization.
    049         */
    050        public Digester getDigester();
    051
    052        /**
    053         * <p>Set the {@link Digester} to allow the implementation to do logging,
    054         * classloading based on the digester's classloader, etc.
    055         *
    056         * @param digester parent Digester object
    057         */
    058        public void setDigester(Digester digester);
    059
    060    }