/** * Return a class loader corresponding to a given class loader identifier. * Create one if necessary. * * @param classLoaderReference * identifier for the desired class loader */ @Override public IClassLoader getLoader(ClassLoaderReference classLoaderReference, IClassHierarchy cha, AnalysisScope scope) throws IOException { if (classLoaderReference == null) { throw new IllegalArgumentException("null classLoaderReference"); } IClassLoader result = map.get(classLoaderReference); if (result == null) { ClassLoaderReference parentRef = classLoaderReference.getParent(); IClassLoader parent = null; if (parentRef != null) { parent = getLoader(parentRef, cha, scope); } IClassLoader cl = makeNewClassLoader(classLoaderReference, cha, parent, scope); map.put(classLoaderReference, cl); result = cl; } return result; }
/** * Return a class loader corresponding to a given class loader identifier. * Create one if necessary. * * @param classLoaderReference * identifier for the desired class loader */ @Override public IClassLoader getLoader(ClassLoaderReference classLoaderReference, IClassHierarchy cha, AnalysisScope scope) throws IOException { if (classLoaderReference == null) { throw new IllegalArgumentException("null classLoaderReference"); } IClassLoader result = map.get(classLoaderReference); if (result == null) { ClassLoaderReference parentRef = classLoaderReference.getParent(); IClassLoader parent = null; if (parentRef != null) { parent = getLoader(parentRef, cha, scope); } IClassLoader cl = makeNewClassLoader(classLoaderReference, cha, parent, scope); map.put(classLoaderReference, cl); result = cl; } return result; }
@Override protected IClassLoader makeNewClassLoader(ClassLoaderReference classLoaderReference, IClassHierarchy cha, IClassLoader parent, AnalysisScope scope) throws IOException { if (classLoaderReference.equals(JavaSourceAnalysisScope.SOURCE)) { ClassLoaderImpl cl = makeSourceLoader(classLoaderReference, cha, parent); cl.init(scope.getModules(classLoaderReference)); return cl; } else { return super.makeNewClassLoader(classLoaderReference, cha, parent, scope); } }
@Override protected IClassLoader makeNewClassLoader(ClassLoaderReference classLoaderReference, IClassHierarchy cha, IClassLoader parent, AnalysisScope scope) throws IOException { if (classLoaderReference.equals(JavaSourceAnalysisScope.SOURCE)) { ClassLoaderImpl cl = makeSourceLoader(classLoaderReference, cha, parent); cl.init(scope.getModules(classLoaderReference)); return cl; } else { return super.makeNewClassLoader(classLoaderReference, cha, parent, scope); } }
@Override protected IClassLoader makeNewClassLoader(ClassLoaderReference classLoaderReference, IClassHierarchy cha, IClassLoader parent, AnalysisScope scope) throws IOException { if (classLoaderReference.equals(JavaScriptTypes.jsLoader)) { JavaScriptLoader L = new JavaScriptLoader(cha, jsTranslatorFactory); L.init(scope.getModules(classLoaderReference)); return L; } else { return super.makeNewClassLoader(classLoaderReference, cha, parent, scope); } }