|  |  | 
 |  |  |    * @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 | 
 |  |  |    * @param params Parameter, die an den Listener weitergereicht werden | 
 |  |  |    */ | 
 |  |  |   public void process(ScannerListener l, String packageName, Handler h, String contextName) { | 
 |  |  |   public void process(ScannerListener l, String packageName, Object... params) { | 
 |  |  |     if (isJar()) { | 
 |  |  |       processZipContent(packageName, l, h, contextName); | 
 |  |  |       processZipContent(packageName, l, params); | 
 |  |  |     } else { | 
 |  |  |       processClasses(l, packageName, h, contextName); | 
 |  |  |       processClasses(l, packageName, params); | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   private void processZipContent(String packageName, ScannerListener l, Object... params) { | 
 |  |  |     try { | 
 |  |  |       ZipFile zipfile = new ZipFile(new File(path)); | 
 |  |  |       Enumeration en = zipfile.entries(); | 
 |  |  |       //ClassLoader cl = getUrlClassLoader(cls); | 
 |  |  |       while (en.hasMoreElements()) { | 
 |  |  |         ZipEntry zipentry = (ZipEntry) en.nextElement(); | 
 |  |  |         if (!zipentry.isDirectory()) { | 
 |  |  |           processZipEntry(zipentry, packageName, l, params); | 
 |  |  |         } else { | 
 |  |  |           // ZIP-Dir muss nicht bearbeitet werden | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } catch (IOException ex) { | 
 |  |  |       log(Level.SEVERE, ex.getLocalizedMessage()); | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  | 
 |  |  |    * @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 | 
 |  |  |    * @param params Parameter, die an den Listener weitergereicht werden | 
 |  |  |    */ | 
 |  |  |   private void processZipContent(String packageName, ScannerListener l, Handler h, String contextName) { | 
 |  |  |     try { | 
 |  |  |       ZipFile zipfile = new ZipFile(new File(path)); | 
 |  |  |       Enumeration en = zipfile.entries(); | 
 |  |  |       //ClassLoader cl = getUrlClassLoader(cls); | 
 |  |  |       while (en.hasMoreElements()) { | 
 |  |  |         ZipEntry zipentry = (ZipEntry) en.nextElement(); | 
 |  |  |         if (!zipentry.isDirectory()) { | 
 |  |  |           processZipEntry(zipentry, packageName, l, h, contextName); | 
 |  |  |         } else { | 
 |  |  |           // ZIP-Dir muss nicht bearbeitet werden | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } catch (IOException ex) { | 
 |  |  |       log(Level.SEVERE, ex.getLocalizedMessage()); | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   @SuppressWarnings("unchecked") | 
 |  |  |   private void processZipEntry(ZipEntry zipentry, String packageName, ScannerListener l, Handler h, String contextName) { | 
 |  |  |   private void processZipEntry(ZipEntry zipentry, String packageName, ScannerListener l, Object... params) { | 
 |  |  |     finest(zipentry.getName()); | 
 |  |  |     String zName = zipentry.getName(); | 
 |  |  |     if (zName.toLowerCase().endsWith(".class")) { | 
 |  |  | 
 |  |  |           if (c != null) { | 
 |  |  |             if (c.isAnnotationPresent(annotation)) { | 
 |  |  |               finest(" ---- ACTOR ---- " + fullClassNameDots); | 
 |  |  |               l.annotationFound(c, h, contextName); | 
 |  |  |               l.annotationFound(c, params); | 
 |  |  |             } else { | 
 |  |  |               finest("kein Actor " + fullClassNameDots); | 
 |  |  |             } | 
 |  |  | 
 |  |  |    * @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 | 
 |  |  |    * @param params Parameter, die an den Listener weitergereicht werden | 
 |  |  |    */ | 
 |  |  |   @SuppressWarnings("unchecked") | 
 |  |  |   private void processClasses(ScannerListener l, String packageName, Handler h, String contextName) { | 
 |  |  |   private void processClasses(ScannerListener l, String packageName, Object... params) { | 
 |  |  |     ClassLoader cl = getCl(); | 
 |  |  |     InputStream stream = cl.getResourceAsStream(packageName.replaceAll("[.]", "/")); | 
 |  |  |     BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); | 
 |  |  | 
 |  |  |                   + line.substring(0, line.lastIndexOf('.'))); | 
 |  |  |           if (actorClass != null && actorClass.isAnnotationPresent(getAnnotation())) { | 
 |  |  |             //wire(h, actorClass, contextName); | 
 |  |  |             l.annotationFound(actorClass, h, contextName); | 
 |  |  |             l.annotationFound(actorClass, params); | 
 |  |  |           } | 
 |  |  |         } 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); | 
 |  |  |         processClasses(l, packageName + "." + line, params); | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   public interface ScannerListener { | 
 |  |  |  | 
 |  |  |     public void annotationFound(Class foundClass, Handler h, String contextName); | 
 |  |  |     public void annotationFound(Class foundClass, Object... params); | 
 |  |  |   } | 
 |  |  | } |