public void visit()

in src/main/java/org/apache/sling/testing/teleporter/client/ClassResourceVisitor.java [54:95]


    public void visit(Processor p) throws IOException {
        final URL resourceURL = clazz.getResource(path);
        if(resourceURL == null) {
            return;
        }
        
        final String protocol = resourceURL.getProtocol();
        
        if("file".equals(protocol)) {
            // Get base path and remove ending slash
            //String basePath = clazz.getResource("/").getPath();
            //basePath = basePath.substring(0, basePath.length() - 1);
            final String basePath = new File(clazz.getResource("/").getPath()).getAbsolutePath();
            processFile(basePath, new File(resourceURL.getPath()), p);
            
        } else if("jar".equals(protocol)) {
            // Jar entries use relative paths
            final String rPath = path.startsWith("/") ? path.substring(1) : path;
            final String jarFilePath = resourceURL.getPath().split("!")[0].substring("file:".length());
            final JarFile jar = new JarFile(jarFilePath);
            try {
                final Enumeration<JarEntry> entries = jar.entries();
                while (entries.hasMoreElements()) {
                    final JarEntry e = entries.nextElement();
                    if(!e.isDirectory() && jarEntryMatches(rPath, e.getName())) {
                        final InputStream is = jar.getInputStream(e);
                        try {
                            p.process("/" + e.getName(), is);
                        } finally {
                            is.close();
                        }
                    }
                }
            } finally {
                jar.close();
            }
           
            
        } else {
            throw new IllegalArgumentException("Unkown protocol " + protocol);
        }
    }