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 */
018 package org.apache.commons.digester;
019
020
021 import org.xml.sax.Attributes;
022
023
024 /**
025 * <p>Abstract base class for <code>ObjectCreationFactory</code>
026 * implementations.</p>
027 */
028 abstract 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 }