001/* $Id: AbstractObjectCreationFactory.java 992060 2010-09-02 19:09:47Z simonetripodi $
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 */
018package org.apache.commons.digester;
019
020
021import org.xml.sax.Attributes;
022
023
024/**
025 * <p>Abstract base class for <code>ObjectCreationFactory</code>
026 * implementations.</p>
027 */
028abstract public class AbstractObjectCreationFactory implements ObjectCreationFactory {
029
030
031    // ----------------------------------------------------- Instance Variables
032
033
034    /**
035     * The associated <code>Digester</code> instance that was set up by
036     * {@link FactoryCreateRule} upon initialization.
037     */
038    protected Digester digester = null;
039
040
041    // --------------------------------------------------------- Public Methods
042
043
044    /**
045     * <p>Factory method called by {@link FactoryCreateRule} to supply an
046     * object based on the element's attributes.
047     *
048     * @param attributes the element's attributes
049     *
050     * @throws Exception any exception thrown will be propagated upwards
051     */
052    public abstract Object createObject(Attributes attributes) throws Exception;
053
054
055    /**
056     * <p>Returns the {@link Digester} that was set by the
057     * {@link FactoryCreateRule} upon initialization.
058     */
059    public Digester getDigester() {
060
061        return (this.digester);
062
063    }
064
065
066    /**
067     * <p>Set the {@link Digester} to allow the implementation to do logging,
068     * classloading based on the digester's classloader, etc.
069     *
070     * @param digester parent Digester object
071     */
072    public void setDigester(Digester digester) {
073
074        this.digester = digester;
075
076    }
077
078
079}