/* * Copyright 2010-2015 Institut Pasteur. * * This file is part of Icy. * * Icy is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Icy is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Icy. If not, see <http://www.gnu.org/licenses/>. */ package icy.plugin.classloader; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Enumeration; /** * @author Kamran Zafar */ public abstract class ProxyClassLoader implements Comparable<ProxyClassLoader> { protected int order; protected boolean enabled; public ProxyClassLoader(int order) { super(); // Default order this.order = order; // Enabled by default enabled = true; } public int getOrder() { return order; } /** * Returns the internal {@link ClassLoader} object used to load class. */ public abstract Object getLoader(); /** * Loads the class and returns it. * * @throws ClassNotFoundException */ public abstract Class loadClass(String className, boolean resolveIt) throws ClassNotFoundException; /** * Loads the resource and returns an input stream for reading it. */ public abstract InputStream getResourceAsStream(String name); /** * Find the resource and returns it as a URL (if it exists). */ public abstract URL getResource(String name); /** * Finds all resources with the given name and returns them as a URL Enumeration. */ public abstract Enumeration<URL> getResources(String name) throws IOException; public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } @Override public int compareTo(ProxyClassLoader o) { return order - o.getOrder(); } }