rmannibucau commented on code in PR #34: URL: https://github.com/apache/geronimo-xbean/pull/34#discussion_r1045496483
########## xbean-finder/src/main/java/org/apache/xbean/finder/archive/JarArchive.java: ########## @@ -41,22 +43,52 @@ public class JarArchive implements Archive { private final JarFile jar; private final MJarSupport mjar = new MJarSupport(); - public JarArchive(ClassLoader loader, URL url) { + public JarArchive(ClassLoader loader, URL url){ // if (!"jar".equals(url.getProtocol())) throw new IllegalArgumentException("not a jar url: " + url); + this.loader = loader; + this.url = url; + File jf; + int idx; + + /* + * True URL.getPath(...) wiping out protocol prefixes: + * + * 1. 'jar:file:/c:/temp/...' -> 'jar' + 'file:/c:/temp/...' + * 2. 'file:/c:/temp/...' -> 'file' + '/c:/temp/...' + * + * assuming we accept 'file:/...${xxx.jar}!/' URLs + * AND 'zip:file:/...!/' would be cool too, if + * allowed by new URL(...) + */ try { - this.loader = loader; - this.url = url; - URL u = url; - - String jarPath = url.getFile(); - if (jarPath.contains("!")) { - jarPath = jarPath.substring(0, jarPath.lastIndexOf("!")); - u = new URL(jarPath); + // Underlying JarFile(...) requires RandomAccessFile, + // so only local file URLs here... + while(!"file".equalsIgnoreCase(url.getProtocol())) { Review Comment: Thing is you allow other urls than "jar:file" with this loop so all the mentionned cases. Side note: foo can really be used, just requires to register a handler. Famous example: pax-url and mvn handler. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@geronimo.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org