Frames | No Frames |
1: /* ======================================================================== 2: * JCommon : a free general purpose class library for the Java(tm) platform 3: * ======================================================================== 4: * 5: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 6: * 7: * Project Info: http://www.jfree.org/jcommon/index.html 8: * 9: * This library is free software; you can redistribute it and/or modify it 10: * under the terms of the GNU Lesser General Public License as published by 11: * the Free Software Foundation; either version 2.1 of the License, or 12: * (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but 15: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17: * License for more details. 18: * 19: * You should have received a copy of the GNU Lesser General Public 20: * License along with this library; if not, write to the Free Software 21: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 22: * USA. 23: * 24: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 25: * in the United States and other countries.] 26: * 27: * ----------------- 28: * ClassFactory.java 29: * ----------------- 30: * (C)opyright 2003, 2004, by Thomas Morgner and Contributors. 31: * 32: * Original Author: Thomas Morgner; 33: * Contributor(s): David Gilbert (for Object Refinery Limited); 34: * 35: * $Id: ClassFactory.java,v 1.3 2005/11/14 10:59:58 mungady Exp $ 36: * 37: * Changes (from 19-Feb-2003) 38: * ------------------------- 39: * 19-Feb-2003 : Added standard header and Javadocs (DG); 40: * 29-Apr-2003 : Distilled from the JFreeReport project and moved into JCommon 41: * 42: */ 43: 44: package org.jfree.xml.factory.objects; 45: 46: import java.io.Serializable; 47: import java.util.Iterator; 48: 49: import org.jfree.util.Configuration; 50: 51: /** 52: * A class factory. 53: * 54: * @author Thomas Morgner 55: */ 56: public interface ClassFactory extends Serializable { 57: 58: /** 59: * Returns an object description for a class. 60: * 61: * @param c the class. 62: * 63: * @return The object description. 64: */ 65: public ObjectDescription getDescriptionForClass(Class c); 66: 67: /** 68: * Returns an object description for the super class of a class. 69: * 70: * @param d the class. 71: * @param knownSuperClass the last known super class or null. 72: * 73: * @return The object description. 74: */ 75: public ObjectDescription getSuperClassObjectDescription 76: (Class d, ObjectDescription knownSuperClass); 77: 78: /** 79: * Returns an iterator for the registered classes. This returns a list 80: * of pre-registered classes known to this ClassFactory. A class may be able 81: * to handle more than the registered classes. 82: * <p> 83: * This method exists to support query tools for UI design, do not rely on it 84: * for day to day work. 85: * 86: * @return The iterator. 87: */ 88: public Iterator getRegisteredClasses(); 89: 90: /** 91: * Configures this factory. The configuration contains several keys and 92: * their defined values. The given reference to the configuration object 93: * will remain valid until the report parsing or writing ends. 94: * <p> 95: * The configuration contents may change during the reporting. 96: * 97: * @param config the configuration, never null 98: */ 99: public void configure(Configuration config); 100: 101: 102: /** 103: * Compares whether two object factories are equal. This method must be 104: * implemented! 105: * 106: * @param o the other object. 107: * @return true, if both object factories describe the same objects, false otherwise. 108: */ 109: public boolean equals (Object o); 110: 111: /** 112: * Computes the hashCode for this ClassFactory. As equals() must be implemented, 113: * a corresponding hashCode() should be implemented as well. 114: * 115: * @return the hashcode. 116: */ 117: public int hashCode(); 118: }