wireActors zugunsten von Scanner aufgeloest
 
	
	
	
	
	
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |         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); | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  | 
 |  |  |             | 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); | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 
 |  |  | 
 |  |  | 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 | 
 |  |  | 
 |  |  |   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 | 
 |  |  | 
 |  |  |  | 
 |  |  |   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); | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   /** | 
 |  |  | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   @SuppressWarnings("unchecked") | 
 |  |  |   public void processClasses(ScannerListener l, String packageName, Handler h, String contextName) { | 
 |  |  |       ClassLoader cl = getCl(); | 
 |  |  |       InputStream stream = cl.getResourceAsStream(packageName.replaceAll("[.]", "/")); | 
 |  |  | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   public interface ScannerListener { | 
 |  |  |  | 
 |  |  |     public void annotationFound(Class foundClass, Handler h, String contextName); | 
 |  |  |   } | 
 |  |  |  | 
 |  |  | } |