in boot/src/main/java/org/netbeans/html/boot/impl/JsPkgCache.java [44:106]
public static boolean process(ClassLoader l, String className) {
if (className.equals("org.netbeans.html.boot.impl.Test")) { // NOI18N
return true;
}
Set<String> p;
JsPkgCache c;
String pkgName;
synchronized (CACHE) {
c = CACHE.get(l);
if (c == null) {
c = new JsPkgCache();
CACHE.put(l, c);
}
int lastDot = className.lastIndexOf('.');
pkgName = className.substring(0, lastDot + 1).replace('.', '/');
p = c.props.get(pkgName);
if (p == NONE) {
return false;
} else if (p != null) {
return p.contains(className);
}
}
final String res = pkgName + "net.java.html.js.classes";
Enumeration<URL> en;
try {
en = l.getResources(res);
} catch (IOException ex) {
en = null;
}
if (en == null || !en.hasMoreElements()) synchronized (CACHE) {
c.props.put(pkgName, NONE);
return false;
}
try {
Set<String> arr = new TreeSet<String>();
while (en.hasMoreElements()) {
URL u = en.nextElement();
BufferedReader r = new BufferedReader(
new InputStreamReader(u.openStream(), "UTF-8")
);
for (;;) {
String line = r.readLine();
if (line == null) {
break;
}
arr.add(line);
}
r.close();
}
p = arr;
} catch (IOException ex) {
LOG.log(Level.WARNING, "Can't read " + res, ex);
p = NONE;
}
synchronized (CACHE) {
c.props.put(pkgName, p);
return p.contains(className);
}
}