All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hudsonci.inject.internal.plugin.PluginClassLoader Maven / Gradle / Ivy

/*******************************************************************************
 *
 * Copyright (c) 2010-2011 Sonatype, Inc.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors: 
 *
 *   
 *     
 *
 *******************************************************************************/ 

package org.hudsonci.inject.internal.plugin;

import hudson.PluginWrapper;
import org.aspectj.weaver.loadtime.WeavingURLClassLoader;

import java.net.URL;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;

/**
 * Plugin class-loader.
 *
 * @author Jason Dillon
 * @since 1.397
 */
public class PluginClassLoader
    extends WeavingURLClassLoader
{
    private PluginWrapper plugin;

    public PluginClassLoader(final List urls, final ClassLoader parent) {
        super(urls.toArray(new URL[urls.size()]), parent);

        // Some optional classes might not exist, so want to avoid excessive tracing
        Logger.getLogger(WeavingURLClassLoader.class.getName()).setLevel(Level.OFF);
    }

    public PluginWrapper getPlugin() {
        checkState(plugin != null);
        return plugin;
    }

    void setPlugin(final PluginWrapper plugin) {
        checkState(this.plugin == null);
        this.plugin = checkNotNull(plugin);
    }

    @Override
    public String toString() {
        return "PluginClassLoader{" +
            (plugin != null ? plugin.getShortName() : "???") +
            '}';
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy