001 /* $Id: AbstractObjectCreationFactory.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 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 }