Package net.djpowell.liverepl.discovery

Source Code of net.djpowell.liverepl.discovery.Discovery

package net.djpowell.liverepl.discovery;

import net.djpowell.liverepl.discovery.impl.SystemDiscovery;
import net.djpowell.liverepl.discovery.impl.ThreadDiscovery;
import net.djpowell.liverepl.discovery.impl.TomcatDiscovery;

import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
* API for obtaining a list of ClassLoaders by using available implementations of ClassLoaderDiscovery
*/
public class Discovery implements ClassLoaderDiscovery {

    private final List<ClassLoaderDiscovery> impls = new ArrayList<ClassLoaderDiscovery>();

    public Discovery() {
        ClassLoaderRegistry registry=new ClassLoaderRegistry();
        impls.add(new SystemDiscovery(registry));
        impls.add(new TomcatDiscovery(registry));
        impls.add(new ThreadDiscovery(registry));
    }

    public Collection<ClassLoaderInfo> listClassLoaders() {
        List<ClassLoaderInfo> ret = new ArrayList();
        for (ClassLoaderDiscovery discovery : impls) {
            ret.addAll(discovery.listClassLoaders());
        }
        return ret;
    }

    public String discoveryName() {
        return "All ClassLoaders";
    }

    public void dumpList(PrintStream out) {
        for (ClassLoaderDiscovery discovery : impls) {
            Collection<ClassLoaderInfo> clis = discovery.listClassLoaders();
            if (!clis.isEmpty()) {
                out.println();
                out.println(discovery.discoveryName() + ":");
                out.println();
                out.println(ClassLoaderInfo.header);
                for (ClassLoaderInfo cli : clis) {
                    out.println(cli.toString());
                }
            }
        }
    }

    public ClassLoaderInfo findClassLoader(String clId) {
        for (ClassLoaderInfo cli : listClassLoaders()) {
            if (cli.id.equals(clId)) {
                return cli;
            }
        }
        return null;
    }

}
TOP

Related Classes of net.djpowell.liverepl.discovery.Discovery

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.