private void processClasses()

in html4j-maven-plugin/src/main/java/org/netbeans/html/mojo/ProcessJsAnnotations.java [94:131]


    private void processClasses(ClassLoader l, MultiFile master, MultiFile f) throws IOException {
        if (!f.exists()) {
            return;
        }
        if (f.isDirectory()) {
            boolean classes = f.child("net.java.html.js.classes").exists();
            MultiFile[] arr = f.listFiles();
            if (arr != null) {
                for (MultiFile file : arr) {
                    if (classes || file.isDirectory()) {
                        processClasses(l, master, file);
                    }
                }
            }
        }

        if (!f.isFile() || !f.getName().endsWith(".class")) {
            return;
        }

        byte[] arr = f.readFully();
        byte[] newArr = null;
        try {
            Class<?> fnUtils = l.loadClass("org.netbeans.html.boot.impl.FnUtils");
            Method transform = fnUtils.getMethod("transform", byte[].class, ClassLoader.class);

            newArr = (byte[]) transform.invoke(null, arr, l);
            if (newArr == null || newArr == arr) {
                return;
            }
            filterClass(f.getParentFile().child("net.java.html.js.classes"), f.getName());
            filterClass(master, f.getName());
        } catch (Exception ex) {
            throw new IOException("Can't process " + f, ex);
        }
        log("Processing " + f);
        f.writeArr(newArr);
    }