Skip to content

Commit

Permalink
MPS-11365 Method BundleClassLoader.findResoucres(name) is not defined
Browse files Browse the repository at this point in the history
  • Loading branch information
ashatalin committed Jan 21, 2011
1 parent d1189ed commit c2a36e1
Showing 1 changed file with 34 additions and 2 deletions.
36 changes: 34 additions & 2 deletions core/runtime/source/jetbrains/mps/runtime/BundleClassLoader.java
Expand Up @@ -17,9 +17,9 @@


import jetbrains.mps.util.InternUtil; import jetbrains.mps.util.InternUtil;


import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.HashMap; import java.util.*;
import java.util.Map;


public class BundleClassLoader<T> extends BaseClassLoader { public class BundleClassLoader<T> extends BaseClassLoader {
private Map<String, Class> myClassesCache = new HashMap<String, Class>(); private Map<String, Class> myClassesCache = new HashMap<String, Class>();
Expand Down Expand Up @@ -102,6 +102,19 @@ protected URL findResource(String name) {
return null; return null;
} }


@Override
protected Enumeration<URL> findResources(String name) throws IOException {
ArrayList<URL> result = new ArrayList<URL>();
RuntimeEnvironment<T> re = myBundle.getRuntimeEnvironment();
for (T dep : re.getAllDependencies(myBundle)) {
if (re.get(dep).hasResource(name)) {
result.add(re.get(dep).getResource(name));
}
}

return new IterableToEnumWrapper<URL>(result);
}

public void dispose() { public void dispose() {
super.dispose (); super.dispose ();
myClassesCache.clear(); myClassesCache.clear();
Expand All @@ -126,4 +139,23 @@ public RBundle getBundle() {
public String toString() { public String toString() {
return myBundle.getId() + "'s class loader"; return myBundle.getId() + "'s class loader";
} }

private static class IterableToEnumWrapper<E> implements Enumeration<E> {

private Iterator<E> myIterator;

public IterableToEnumWrapper(Iterable<E> iterable) {
myIterator = iterable.iterator();
}

@Override
public boolean hasMoreElements() {
return myIterator.hasNext();
}

@Override
public E nextElement() {
return myIterator.next();
}
}
} }

0 comments on commit c2a36e1

Please sign in to comment.