package jetbrains.mps.core.tool.environment.classloading; /*Generated by MPS */ import java.util.Map; import java.util.List; import java.util.HashMap; import java.util.ArrayList; public class ClasspathCache { private final Map<String, List<Loader>> myClassPackagesCache = new HashMap<String, List<Loader>>(); private final Map<String, List<Loader>> myResourcePackagesCache = new HashMap<String, List<Loader>>(); public ClasspathCache() { } public void addResourceEntry(String resourcePath, Loader loader) { final List<Loader> loaders = getLoaders(resourcePath); if (!(loaders.contains(loader))) { // TODO Make linked hash set instead? loaders.add(loader); } } public List<Loader> getLoaders(String resourcePath) { boolean isClassFile = resourcePath.endsWith(UrlClassLoader.CLASS_EXTENSION); final int idx = resourcePath.lastIndexOf('/'); String packageName = (idx > 0 ? resourcePath.substring(0, idx) : ""); Map<String, List<Loader>> map = (isClassFile ? myClassPackagesCache : myResourcePackagesCache); List<Loader> list = map.get(packageName); if (list == null) { list = new ArrayList<Loader>(1); map.put(packageName, list); } return list; } }