From 12fdfa4c6bd2515e142a996673489cfdd656cb0a Mon Sep 17 00:00:00 2001 From: ulrich Date: Sun, 01 Dec 2024 17:17:55 +0000 Subject: [PATCH] Kommantare ergaenzt --- src/de/uhilger/neon/Scanner.java | 37 ++++++++++++++++++++++++++++++++----- 1 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/de/uhilger/neon/Scanner.java b/src/de/uhilger/neon/Scanner.java index 01ad324..8efdec0 100644 --- a/src/de/uhilger/neon/Scanner.java +++ b/src/de/uhilger/neon/Scanner.java @@ -35,8 +35,10 @@ 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 @@ -50,8 +52,10 @@ private final ClassLoader urlCL; /** - * Einen Scanner erzeugen, der das Archiv, 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. * * @param c eine Klasse die sich im Archiv befindet, das durchsucht werden soll * @param annotation die Annotation, nach der gesucht wird @@ -67,6 +71,19 @@ return annotation; } + /** + * 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. + * + * @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 l ein Objekt, das verstaendigt wird, wenn eine annotierte Klasse gefunden wurde + * @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); @@ -85,7 +102,7 @@ * @param h der Handler, dem die gefundene Klasse hinzugefuegt werden soll * @param contextName Name des Kontext, dem gefundene Klassen hinzugefuegt werden sollen */ - public void processZipContent(String packageName, ScannerListener l, Handler h, String contextName) { + private void processZipContent(String packageName, ScannerListener l, Handler h, String contextName) { try { ZipFile zipfile = new ZipFile(new File(path)); Enumeration en = zipfile.entries(); @@ -135,8 +152,17 @@ } } + /** + * Einen Ordner mit Klassen durchsuchen + * + * @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 l ein Objekt, das verstaendigt wird, wenn eine annotierte Klasse gefunden wurde + * @param h der Handler, dem die gefundene Klasse hinzugefuegt werden soll + * @param contextName Name des Kontext, dem gefundene Klassen hinzugefuegt werden sollen + */ @SuppressWarnings("unchecked") - public void processClasses(ScannerListener l, String packageName, Handler h, String contextName) { + private void processClasses(ScannerListener l, String packageName, Handler h, String contextName) { ClassLoader cl = getCl(); InputStream stream = cl.getResourceAsStream(packageName.replaceAll("[.]", "/")); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); @@ -236,6 +262,7 @@ } public interface ScannerListener { + public void annotationFound(Class foundClass, Handler h, String contextName); } } \ No newline at end of file -- Gitblit v1.9.3