package org.kevoree.kcl.impl; import java.util.ArrayList; import java.util.List; /** * Created by duke on 9/25/14. */ public class ProxyClassLoaderImpl extends FlexyClassLoaderImpl { private List<String> packageNames = new ArrayList<String>(); public ProxyClassLoaderImpl addFilter(String filter) { packageNames.add(filter); return this; } private boolean accept(String name) { for (int i = 0; i < packageNames.size(); i++) { if (name.startsWith(packageNames.get(i))) { return false; } } return true; } public Class internal_loadClass(KlassLoadRequest request) { if (accept(request.className)) { return super.internal_loadClass(request); } else { request.passedKlassLoader.add(getKey()); return null; } } @Override public Class loadClass(String className, boolean resolveIt) throws ClassNotFoundException { if (accept(className)) { return super.loadClass(className, true); } else { throw new ClassNotFoundException(className); } } }