# HG changeset patch # User tzezula # Date 1380745977 -7200 # Node ID f7f25ea1bbecdb28011e70fef20a3e585a736aed # Parent 263482b074e94f9211618984bcf5ba535ecd0781 Fixed ClassLoader problems. diff -r 263482b074e9 -r f7f25ea1bbec dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderFileManager.java --- a/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderFileManager.java Wed Oct 02 21:00:24 2013 +0200 +++ b/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderFileManager.java Wed Oct 02 22:32:57 2013 +0200 @@ -9,7 +9,9 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; +import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.EnumSet; @@ -61,7 +63,7 @@ @Override public ClassLoader getClassLoader(Location location) { if (canClassLoad(location)) { - return getClass().getClassLoader(); + return new SafeClassLoader(getClass().getClassLoader()); } else { return null; } @@ -328,4 +330,33 @@ return res; } + private static final class SafeClassLoader extends ClassLoader { + private final ClassLoader delegate; + + SafeClassLoader(final ClassLoader delegate) { + this.delegate = delegate; + + } + + @Override + public URL getResource(String name) { + return delegate.getResource(name); + } + + @Override + public InputStream getResourceAsStream(String name) { + return delegate.getResourceAsStream(name); + } + + @Override + public Enumeration getResources(String name) throws IOException { + return delegate.getResources(name); + } + + @Override + public Class loadClass(String name) throws ClassNotFoundException { + return delegate.loadClass(name); + } + } + } diff -r 263482b074e9 -r f7f25ea1bbec dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderJavaFileObject.java --- a/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderJavaFileObject.java Wed Oct 02 21:00:24 2013 +0200 +++ b/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderJavaFileObject.java Wed Oct 02 22:32:57 2013 +0200 @@ -30,9 +30,7 @@ public InputStream openInputStream() throws IOException { final InputStream in = getClass().getClassLoader().getResourceAsStream(path.substring(1)); if (in == null) { - getClass().getClassLoader().getResourceAsStream(path.substring(1)); throw new FileNotFoundException(path); - } return in; } diff -r 263482b074e9 -r f7f25ea1bbec dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java --- a/dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java Wed Oct 02 21:00:24 2013 +0200 +++ b/dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java Wed Oct 02 22:32:57 2013 +0200 @@ -108,11 +108,9 @@ }; final Boolean res = ToolProvider.getSystemJavaCompiler().getTask(null, jfm, this, /*XXX:*/Arrays.asList("-source", "1.7", "-target", "1.7"), null, Arrays.asList(file)).call(); - - Map result = new HashMap<>(); for (MemoryFileObject generated : clfm.getGeneratedFiles(Kind.CLASS)) { - result.put(generated.infer(), generated.getContent()); + result.put(generated.getName().substring(1), generated.getContent()); } return result; }