|  |  | 
 |  |  | import java.util.zip.ZipFile; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * Die Klasse Scanner enthaelt Methoden, um fuer eine Klasse zu bestimmen, in welcher JAR-Datei sie | 
 |  |  |  * liegt und diese JAR-Datei nach Klassen zu durchsuchen. | 
 |  |  |  * Die Klasse Scanner enthaelt Methoden, um fuer eine Klasse zu bestimmen, an welchem Ablageort sie | 
 |  |  |  * sich befindet und diesen Ort nach Klassen zu durchsuchen, die eine gegebene Annotation besitzen. | 
 |  |  |  * | 
 |  |  |  * Der Ort fur Klassen kann ein Java-Archiv (.jar) oder ein Ordner im Dateisystem sein. | 
 |  |  |  * | 
 |  |  |  * @author Ulrich Hilger | 
 |  |  |  * @version 0.1, 30.11.2024 | 
 |  |  | 
 |  |  |   private final ClassLoader urlCL; | 
 |  |  |  | 
 |  |  |   /** | 
 |  |  |    * Einen Scanner erzeugen, der den Ort,  | 
 |  |  |    * in dem sich eine gegebene Klasse befindet, nach Klassen | 
 |  |  |    * Einen Scanner erzeugen, der den Ort, in dem sich eine gegebene Klasse befindet, nach Klassen | 
 |  |  |    * durchsucht, die eine bestimmte Annotation besitzen | 
 |  |  |    *  | 
 |  |  |    * Der Ort fur Klassen kann ein Java-Archiv (.jar) oder ein Ordner  | 
 |  |  |    * im Dateisystem sein. | 
 |  |  |    * Der Ort fur Klassen kann ein Java-Archiv (.jar) oder ein Ordner im Dateisystem sein. | 
 |  |  |    * | 
 |  |  |    * @param c eine Klasse die sich im Archiv befindet, das durchsucht werden soll | 
 |  |  |    * @param annotation die Annotation, nach der gesucht wird | 
 |  |  | 
 |  |  |   /** | 
 |  |  |    * Klassen suchen, die die dem Konstruktor gegebene Annotation besitzen. | 
 |  |  |    *  | 
 |  |  |    * Anhand der im Konstruktor uebergebenen Klasse wird deren Ablageort ermittelt, entweder  | 
 |  |  |    * ein Ordner im Dateisystem oder ein Java-Archiv (.jar). Dieser Ablageort wird dann  | 
 |  |  |    * nach annotierten Klassen durchsucht. Gefundene Klassen werden dem Listener gemeldet. | 
 |  |  |    * Anhand der im Konstruktor uebergebenen Klasse wird deren Ablageort ermittelt, entweder ein | 
 |  |  |    * Ordner im Dateisystem oder ein Java-Archiv (.jar). Dieser Ablageort wird dann nach annotierten | 
 |  |  |    * Klassen durchsucht. Gefundene Klassen werden dem Listener gemeldet. | 
 |  |  |    * | 
 |  |  |    * @param packageName Name der Package, die einschl. Unterpackages durchsucht wird, nur Klassen | 
 |  |  |    * dieser Package und ihrer Unterpackages werden geladen und auf die Anotation ueberprueft | 
 |  |  | 
 |  |  |    * @param h der Handler, dem die gefundene Klasse hinzugefuegt werden soll | 
 |  |  |    * @param contextName Name des Kontext, dem gefundene Klassen hinzugefuegt werden sollen | 
 |  |  |    */ | 
 |  |  |    | 
 |  |  |   public void process(ScannerListener l, String packageName, Handler h, String contextName) { | 
 |  |  |     if (isJar()) { | 
 |  |  |       processZipContent(packageName, l, h, contextName); | 
 |  |  | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   public interface ScannerListener { | 
 |  |  |  | 
 |  |  |     public void annotationFound(Class foundClass, Handler h, String contextName); | 
 |  |  |   } | 
 |  |  | } |