List of usage examples for org.apache.commons.discovery.resource ClassLoaders ClassLoaders
public ClassLoaders()
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 av a 2 s . com 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 a v a 2s. 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.j a v a2s. 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; }