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/Factory.java |   13 ------
 src/de/uhilger/neon/Scanner.java |   61 +++++++++++++++++-------------
 2 files changed, 35 insertions(+), 39 deletions(-)

diff --git a/src/de/uhilger/neon/Factory.java b/src/de/uhilger/neon/Factory.java
index 7cb2a86..ddbb717 100644
--- a/src/de/uhilger/neon/Factory.java
+++ b/src/de/uhilger/neon/Factory.java
@@ -187,9 +187,7 @@
         ctxAttrs.putAll(cd.attributes);
         if (h instanceof Handler) {
           for (String packageName : packageNames) {
-            wireActors(scn,
-                    packageName, (Handler) h,
-                    cd.attributes.get("contextName"));
+            scn.process(this, packageName, (Handler) h, cd.attributes.get("contextName"));
             ctx.getAttributes().put("serverDataProviderList", sdp);
           }
         }
@@ -262,15 +260,6 @@
             | InvocationTargetException ex) {
       // Klasse nicht gefunden. Muss das geloggt oder sonstwie behandel werden?
       return null;
-    }
-  }
-
-  @SuppressWarnings("unchecked")
-  private void wireActors(Scanner scn, String packageName, /*Class annotation, */Handler h, String contextName) {
-    if (!scn.isJar()) {
-      scn.processClasses(this, packageName, h, contextName);
-    } else {
-      scn.processZipContent(packageName, this, h, contextName);
     }
   }
 
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