Fixed ClassLoader problems.
1.1 --- a/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderFileManager.java Wed Oct 02 21:00:24 2013 +0200
1.2 +++ b/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderFileManager.java Wed Oct 02 22:32:57 2013 +0200
1.3 @@ -9,7 +9,9 @@
1.4 import java.io.BufferedReader;
1.5 import java.io.File;
1.6 import java.io.IOException;
1.7 +import java.io.InputStream;
1.8 import java.io.InputStreamReader;
1.9 +import java.net.URL;
1.10 import java.util.ArrayList;
1.11 import java.util.Collections;
1.12 import java.util.EnumSet;
1.13 @@ -61,7 +63,7 @@
1.14 @Override
1.15 public ClassLoader getClassLoader(Location location) {
1.16 if (canClassLoad(location)) {
1.17 - return getClass().getClassLoader();
1.18 + return new SafeClassLoader(getClass().getClassLoader());
1.19 } else {
1.20 return null;
1.21 }
1.22 @@ -328,4 +330,33 @@
1.23 return res;
1.24 }
1.25
1.26 + private static final class SafeClassLoader extends ClassLoader {
1.27 + private final ClassLoader delegate;
1.28 +
1.29 + SafeClassLoader(final ClassLoader delegate) {
1.30 + this.delegate = delegate;
1.31 +
1.32 + }
1.33 +
1.34 + @Override
1.35 + public URL getResource(String name) {
1.36 + return delegate.getResource(name);
1.37 + }
1.38 +
1.39 + @Override
1.40 + public InputStream getResourceAsStream(String name) {
1.41 + return delegate.getResourceAsStream(name);
1.42 + }
1.43 +
1.44 + @Override
1.45 + public Enumeration<URL> getResources(String name) throws IOException {
1.46 + return delegate.getResources(name);
1.47 + }
1.48 +
1.49 + @Override
1.50 + public Class<?> loadClass(String name) throws ClassNotFoundException {
1.51 + return delegate.loadClass(name);
1.52 + }
1.53 + }
1.54 +
1.55 }
2.1 --- a/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderJavaFileObject.java Wed Oct 02 21:00:24 2013 +0200
2.2 +++ b/dew/src/main/java/org/apidesign/bck2brwsr/dew/ClassLoaderJavaFileObject.java Wed Oct 02 22:32:57 2013 +0200
2.3 @@ -30,9 +30,7 @@
2.4 public InputStream openInputStream() throws IOException {
2.5 final InputStream in = getClass().getClassLoader().getResourceAsStream(path.substring(1));
2.6 if (in == null) {
2.7 - getClass().getClassLoader().getResourceAsStream(path.substring(1));
2.8 throw new FileNotFoundException(path);
2.9 -
2.10 }
2.11 return in;
2.12 }
3.1 --- a/dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java Wed Oct 02 21:00:24 2013 +0200
3.2 +++ b/dew/src/main/java/org/apidesign/bck2brwsr/dew/Compile.java Wed Oct 02 22:32:57 2013 +0200
3.3 @@ -108,11 +108,9 @@
3.4 };
3.5
3.6 final Boolean res = ToolProvider.getSystemJavaCompiler().getTask(null, jfm, this, /*XXX:*/Arrays.asList("-source", "1.7", "-target", "1.7"), null, Arrays.asList(file)).call();
3.7 -
3.8 -
3.9 Map<String, byte[]> result = new HashMap<>();
3.10 for (MemoryFileObject generated : clfm.getGeneratedFiles(Kind.CLASS)) {
3.11 - result.put(generated.infer(), generated.getContent());
3.12 + result.put(generated.getName().substring(1), generated.getContent());
3.13 }
3.14 return result;
3.15 }