package jdepend.framework; import java.io.*; import java.util.*; /** * The <code>AbstractParser</code> class is the base class * for classes capable of parsing files to create a * <code>JavaClass</code> instance. * * @author <b>Mike Clark</b> * @author Clarkware Consulting, Inc. */ public abstract class AbstractParser { private ArrayList parseListeners; private PackageFilter filter; public static boolean DEBUG = false; public AbstractParser() { this(new PackageFilter()); } public AbstractParser(PackageFilter filter) { setFilter(filter); parseListeners = new ArrayList(); } public void addParseListener(ParserListener listener) { parseListeners.add(listener); } /** * Registered parser listeners are informed that the resulting * <code>JavaClass</code> was parsed. */ public abstract JavaClass parse(InputStream is) throws IOException; /** * Informs registered parser listeners that the specified * <code>JavaClass</code> was parsed. * * @param jClass Parsed Java class. */ protected void onParsedJavaClass(JavaClass jClass) { for (Iterator i = parseListeners.iterator(); i.hasNext();) { ((ParserListener) i.next()).onParsedJavaClass(jClass); } } protected PackageFilter getFilter() { if (filter == null) { setFilter(new PackageFilter()); } return filter; } protected void setFilter(PackageFilter filter) { this.filter = filter; } protected void debug(String message) { if (DEBUG) { System.err.println(message); } } }