Example usage for org.apache.commons.discovery.resource ClassLoaders put

List of usage examples for org.apache.commons.discovery.resource ClassLoaders put

Introduction

In this page you can find the example usage for org.apache.commons.discovery.resource ClassLoaders put.

Prototype

public void put(ClassLoader classLoader) 

Source Link

Document

Specify a new class loader to be used in searching.

Usage

From source file:org.apache.axis.components.encoding.XMLEncoderFactory.java

/**
 Look for file META-INF/services/org.apache.axis.components.encoding.XMLEncoder
 in all the JARS, get the classes listed in those files and add them to 
 encoders list if they are valid encoders. 
        //from   w  w  w  .j a v  a2s  .  co  m
 Here is how the scheme would work.
        
 A company providing a new encoder will jar up their encoder related
 classes in a JAR file. The following file containing the name of the new 
 encoder class is also made part of this JAR file. 
        
 META-INF/services/org.apache.axis.components.encoding.XMLEncoder
        
 By making this JAR part of the webapp, the new encoder will be 
 automatically discovered. 
 */
private static void loadPluggableEncoders() {
    ClassLoader clzLoader = XMLEncoder.class.getClassLoader();
    ClassLoaders loaders = new ClassLoaders();
    loaders.put(clzLoader);
    DiscoverServiceNames dsn = new DiscoverServiceNames(loaders);
    ResourceNameIterator iter = dsn.findResourceNames(PLUGABLE_PROVIDER_FILENAME);
    while (iter.hasNext()) {
        String className = iter.nextResourceName();
        try {
            Object o = Class.forName(className).newInstance();
            if (o instanceof XMLEncoder) {
                XMLEncoder encoder = (XMLEncoder) o;
                encoderMap.put(encoder.getEncoding(), encoder);
                encoderMap.put(encoder.getEncoding().toLowerCase(), encoder);
            }
        } catch (Exception e) {
            String msg = e + JavaUtils.LS + JavaUtils.stackToString(e);
            log.info(Messages.getMessage("exception01", msg));
            continue;
        }
    }
}

From source file:org.apache.axis.deployment.wsdd.WSDDProvider.java

/**
   Look for file META-INF/services/org.apache.axis.deployment.wsdd.Provider
   in all the JARS, get the classes listed in those files and add them to 
   providers list if they are valid providers. 
        /*from   w  w  w .  j ava 2  s.c  o  m*/
   Here is how the scheme would work.
        
   A company providing a new provider will jar up their provider related
   classes in a JAR file. The following file containing the name of the new 
   provider class is also made part of this JAR file. 
        
   META-INF/services/org.apache.axis.deployment.wsdd.Provider
        
   By making this JAR part of the webapp, the new provider will be 
   automatically discovered. 
*/
private static void loadPluggableProviders() {
    ClassLoader clzLoader = WSDDProvider.class.getClassLoader();
    ClassLoaders loaders = new ClassLoaders();
    loaders.put(clzLoader);
    DiscoverServiceNames dsn = new DiscoverServiceNames(loaders);
    ResourceNameIterator iter = dsn.findResourceNames(PLUGABLE_PROVIDER_FILENAME);
    while (iter.hasNext()) {
        String className = iter.nextResourceName();
        try {
            Object o = Class.forName(className).newInstance();
            if (o instanceof WSDDProvider) {
                WSDDProvider provider = (WSDDProvider) o;
                String providerName = provider.getName();
                QName q = new QName(WSDDConstants.URI_WSDD_JAVA, providerName);
                providers.put(q, provider);
            }
        } catch (Exception e) {
            String msg = e + JavaUtils.LS + JavaUtils.stackToString(e);
            log.info(Messages.getMessage("exception01", msg));
            continue;
        }
    }
}

From source file:org.codehaus.cargo.generic.AbstractFactoryRegistry.java

/**
 * Lists up {@link AbstractFactoryRegistry}s that are discovered.
 * /*from w ww.ja v  a 2  s  . c o m*/
 * @param classLoader See {@link #register(ClassLoader, DeployableFactory)} for more details.
 * @return always non-null but can be empty.
 */
private static List<AbstractFactoryRegistry> list(ClassLoader classLoader) {
    ClassLoader cl;
    ClassLoaders loaders = new ClassLoaders();

    cl = classLoader;
    if (cl != null) {
        loaders.put(cl);
    }

    cl = Thread.currentThread().getContextClassLoader();
    if (cl != null) {
        loaders.put(cl);
    }

    cl = AbstractFactoryRegistry.class.getClassLoader();
    if (cl != null) {
        loaders.put(cl);
    }

    cl = ResourceUtils.getResourceLoader();
    if (cl != null) {
        loaders.put(cl);
    }

    cl = JDKHooks.getJDKHooks().getSystemClassLoader();
    if (cl != null) {
        loaders.put(cl);
    }

    if (loaders.size() == 0) {
        // this is not our day. bail out.
        return Collections.EMPTY_LIST;
    }

    List<AbstractFactoryRegistry> registries = new ArrayList<AbstractFactoryRegistry>();
    Enumeration providers = Service.providers(new SPInterface(AbstractFactoryRegistry.class), loaders);
    while (providers.hasMoreElements()) {
        Object provider = providers.nextElement();
        if (provider instanceof AbstractFactoryRegistry) {
            registries.add((AbstractFactoryRegistry) provider);
        }
    }

    return registries;
}