/* sbt -- Simple Build Tool * Copyright 2008, 2009 Mark Harrah */ package xsbti; import java.io.File; public interface AnalysisCallback { /** The names of classes that the analyzer should find subclasses of.*/ public String[] superclassNames(); /** The names of annotations that the analyzer should look for on methods and classes.*/ public String[] annotationNames(); /** Called when the the given superclass could not be found on the classpath by the compiler.*/ public void superclassNotFound(String superclassName); /** Called before the source at the given location is processed. */ public void beginSource(File source); /** Called when the a subclass of one of the classes given in superclassNames is * discovered.*/ public void foundSubclass(File source, String subclassName, String superclassName, boolean isModule); /** Called when an annotation with name annotationName is found on a class or one of its methods.*/ public void foundAnnotated(File source, String className, String annotationName, boolean isModule); /** Called to indicate that the source file source depends on the source file * dependsOn. Note that only source files included in the current compilation will * passed to this method. Dependencies on classes generated by sources not in the current compilation will * be passed as class dependencies to the classDependency method.*/ public void sourceDependency(File dependsOn, File source); /** Called to indicate that the source file source depends on the jar * jar.*/ public void jarDependency(File jar, File source); /** Called to indicate that the source file source depends on the class file * clazz.*/ public void classDependency(File clazz, File source); /** Called to indicate that the source file sourcePath depends on the class file * classFile that is a product of some source. This differs from classDependency * because it is really a sourceDependency. The source corresponding to classFile * was not incuded in the compilation so the plugin doesn't know what the source is though. It * only knows that the class file came from the output directory.*/ public void productDependency(File classFile, File sourcePath); /** Called to indicate that the source file source produces a class file at * module.*/ public void generatedClass(File source, File module); /** Called after the source at the given location has been processed. */ public void endSource(File sourcePath); /** Called when a module with a public 'main' method with the right signature is found.*/ public void foundApplication(File source, String className); /** Called when the public API of a source file is extracted. */ public void api(File sourceFile, xsbti.api.Source source); }