rmannibucau commented on code in PR #34: URL: https://github.com/apache/geronimo-xbean/pull/34#discussion_r1045281235
########## 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: > jar:foo:file is actually prohibited by new URL(), why not allow this impossible scenario? Prohibited by who? Thing is that we actually only support `jar` and `file`, now you allow `jar:(whatever:)*file` - this is allowed by `URL` and `URLHandler` API. Don't think it is what we want so we should just unwrap once or let the caller unwrap it more before passing the path to the archive IMHO. Nested jar support is done through other `Archive` implementation like https://github.com/Talend/component-runtime/blob/master/component-runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/xbean/NestedJarArchive.java but it requires some knowledge about the enclosing structure so better to not try to be too clever there IMHO. -- 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