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);
}
}