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