/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.container.internal; import org.mule.runtime.module.artifact.classloader.ExportedService; import org.mule.runtime.module.artifact.classloader.ArtifactClassLoader; import org.mule.runtime.module.artifact.classloader.ClassLoaderFilter; import org.mule.runtime.module.artifact.classloader.FilteringArtifactClassLoader; import java.io.IOException; import java.net.URL; import java.util.Enumeration; import java.util.List; /** * Filtering artifact classLoader that to use as the parent classloader for all mule tops artifact (domains, server plugins, etc). * <p> * Differs from the base class is that exposes all the resources available in the delegate classLoader and the delegate's parent * classLoader. */ public class FilteringContainerClassLoader extends FilteringArtifactClassLoader { static { registerAsParallelCapable(); } /** * Creates a new instance * * @param containerClassLoader delegate classLoader. Not null. * @param filter filter used to determine which classes and resources are exported on the delegate classLoader. * @param exportedServices service providers that will be available from the filtered class loader. Non null. */ public FilteringContainerClassLoader(ArtifactClassLoader containerClassLoader, ClassLoaderFilter filter, List<ExportedService> exportedServices) { super(containerClassLoader, filter, exportedServices); } @Override protected URL getResourceFromDelegate(ArtifactClassLoader artifactClassLoader, String name) { return artifactClassLoader.getClassLoader().getResource(name); } @Override protected Enumeration<URL> getResourcesFromDelegate(ArtifactClassLoader artifactClassLoader, String name) throws IOException { return artifactClassLoader.getClassLoader().getResources(name); } }