From 1f6776f237cb98c1222ee9dd2f75220de0d02c34 Mon Sep 17 00:00:00 2001 From: ulrich Date: Sun, 01 Dec 2024 17:07:47 +0000 Subject: [PATCH] wireActors zugunsten von Scanner aufgeloest --- src/de/uhilger/neon/Scanner.java | 61 +++++++++++++++++------------- 1 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/de/uhilger/neon/Scanner.java b/src/de/uhilger/neon/Scanner.java index d328c83..01ad324 100644 --- a/src/de/uhilger/neon/Scanner.java +++ b/src/de/uhilger/neon/Scanner.java @@ -35,8 +35,8 @@ 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, in welcher JAR-Datei sie + * liegt und diese JAR-Datei nach Klassen zu durchsuchen. * * @author Ulrich Hilger * @version 0.1, 30.11.2024 @@ -50,8 +50,8 @@ private final ClassLoader urlCL; /** - * Einen Scanner erzeugen, der das Archiv, in dem sich eine gegebene Klasse befindet, nach - * Klassen durchsucht, die eine bestimmte Annotation besitzen + * Einen Scanner erzeugen, der das Archiv, in dem sich eine gegebene Klasse befindet, nach Klassen + * durchsucht, die eine bestimmte Annotation besitzen * * @param c eine Klasse die sich im Archiv befindet, das durchsucht werden soll * @param annotation die Annotation, nach der gesucht wird @@ -65,6 +65,14 @@ public Class getAnnotation() { return annotation; + } + + public void process(ScannerListener l, String packageName, Handler h, String contextName) { + if (isJar()) { + processZipContent(packageName, l, h, contextName); + } else { + processClasses(l, packageName, h, contextName); + } } /** @@ -127,31 +135,32 @@ } } + @SuppressWarnings("unchecked") public 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)); - Iterator i = reader.lines().iterator(); - while (i.hasNext()) { - String line = i.next().toString(); - if (line.endsWith(".class")) { - try { - Class actorClass = cl.loadClass(packageName + "." - + line.substring(0, line.lastIndexOf('.'))); - if (actorClass != null && actorClass.isAnnotationPresent(getAnnotation())) { - //wire(h, actorClass, contextName); - l.annotationFound(actorClass, h, contextName); - } - } catch (ClassNotFoundException ex) { - // Klasse nicht gefunden. Muss das geloggt oder sonstwie behandel werden? + ClassLoader cl = getCl(); + InputStream stream = cl.getResourceAsStream(packageName.replaceAll("[.]", "/")); + BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); + Iterator i = reader.lines().iterator(); + while (i.hasNext()) { + String line = i.next().toString(); + if (line.endsWith(".class")) { + try { + Class actorClass = cl.loadClass(packageName + "." + + line.substring(0, line.lastIndexOf('.'))); + if (actorClass != null && actorClass.isAnnotationPresent(getAnnotation())) { + //wire(h, actorClass, contextName); + l.annotationFound(actorClass, h, contextName); } - } else { - //wireActors(js, packageName + "." + line, h, contextName); - processClasses(l, packageName + "." + line, h, contextName); + } catch (ClassNotFoundException ex) { + // Klasse nicht gefunden. Muss das geloggt oder sonstwie behandel werden? } + } else { + //wireActors(js, packageName + "." + line, h, contextName); + processClasses(l, packageName + "." + line, h, contextName); } + } } - + private String getPackageName(String fullClassName) { String packageName; int pos = fullClassName.lastIndexOf("."); @@ -227,8 +236,6 @@ } public interface ScannerListener { - public void annotationFound(Class foundClass, Handler h, String contextName); } - -} +} \ No newline at end of file -- Gitblit v1.9.3