public class ToolingPluginClassLoaderBuilder extends AbstractArtifactClassLoaderBuilder<ToolingPluginClassLoaderBuilder>
ArtifactPluginDescriptor as a starting point, it will generate a ArtifactClassLoader capable of
working with the plugin and any other plugins it relies on.
So, if we take HTTP as a sample which depends on Sockets, it will (a) generate a ClassLoader for HTTP, (b) its Socket
dependency and (c) a RegionClassLoader as well.
This builder object will return a wrapper to the HTTP ArtifactClassLoader to allow further consumers of it to believe
they have the actual HTTP, allowing them to DisposableClassLoader.dispose() properly.
artifactDescriptor, logger| Constructor and Description |
|---|
ToolingPluginClassLoaderBuilder(DeployableArtifactClassLoaderFactory artifactClassLoaderFactory,
PluginDependenciesResolver pluginDependenciesResolver,
ArtifactPluginDescriptor artifactPluginDescriptor,
RegionPluginClassLoadersFactory pluginClassLoadersFactory) |
| Modifier and Type | Method and Description |
|---|---|
ToolingArtifactClassLoader |
build()
Creates a new
ArtifactClassLoader using the provided configuration. |
protected ArtifactClassLoader |
createArtifactClassLoader(String artifactId,
RegionClassLoader regionClassLoader)
Creates the class loader for the artifact being built.
|
protected RegionClassLoader |
createRegionClassLoader(String artifactId,
ArtifactDescriptor artifactDescriptor,
ClassLoader parentClassLoader,
ClassLoaderLookupPolicy parentLookupPolicy)
Template method to build different implementations of a
RegionClassLoader |
protected String |
getArtifactId(ArtifactDescriptor artifactDescriptor) |
protected ArtifactClassLoader |
getParentClassLoader()
Implementation must redefine this method and it should provide the root class loader which is going to be used as parent
class loader for every other class loader created by this builder.
|
protected static ArtifactClassLoader |
getPluginArtifactClassLoader(ArtifactPluginDescriptor artifactPluginDescriptor,
List<ArtifactClassLoader> artifactPluginClassLoaders) |
ToolingPluginClassLoaderBuilder |
setParentClassLoader(ArtifactClassLoader parentClassLoader) |
addArtifactPluginDescriptors, getParentLookupPolicy, setArtifactDescriptorpublic ToolingPluginClassLoaderBuilder(DeployableArtifactClassLoaderFactory artifactClassLoaderFactory, PluginDependenciesResolver pluginDependenciesResolver, ArtifactPluginDescriptor artifactPluginDescriptor, RegionPluginClassLoadersFactory pluginClassLoadersFactory)
artifactClassLoaderFactory - factory for the classloader specific to the artifact resource and classesartifactPluginDescriptor - desired plugin to generate an ArtifactClassLoader for.pluginDependenciesResolver - resolver for the plugins on which the artifactPluginDescriptor declares it depends.pluginClassLoadersFactory - creates the class loaders for the plugins included in the policy's region. Non nullbuild()protected ArtifactClassLoader createArtifactClassLoader(String artifactId, RegionClassLoader regionClassLoader)
AbstractArtifactClassLoaderBuildercreateArtifactClassLoader in class AbstractArtifactClassLoaderBuilder<ToolingPluginClassLoaderBuilder>artifactId - identifies the artifact being created. Non empty.regionClassLoader - class loader containing the artifact and dependant class loaders. Non null.public ToolingPluginClassLoaderBuilder setParentClassLoader(ArtifactClassLoader parentClassLoader)
parentClassLoader - parent class loader for the artifact class loader that should have all the URLs needed from
tooling side when loading the ExtensionModel. Among those, there will be mule-api,
extensions-api, extensions-support and so on.protected ArtifactClassLoader getParentClassLoader()
AbstractArtifactClassLoaderBuildergetParentClassLoader in class AbstractArtifactClassLoaderBuilder<ToolingPluginClassLoaderBuilder>protected String getArtifactId(ArtifactDescriptor artifactDescriptor)
getArtifactId in class AbstractArtifactClassLoaderBuilder<ToolingPluginClassLoaderBuilder>public ToolingArtifactClassLoader build()
AbstractArtifactClassLoaderBuilderArtifactClassLoader using the provided configuration. It will create the proper class loader hierarchy
and filters the artifact resources and plugins classes and resources are resolve correctly.build in class AbstractArtifactClassLoaderBuilder<ToolingPluginClassLoaderBuilder>ArtifactClassLoader created from the provided configuration.protected RegionClassLoader createRegionClassLoader(String artifactId, ArtifactDescriptor artifactDescriptor, ClassLoader parentClassLoader, ClassLoaderLookupPolicy parentLookupPolicy)
AbstractArtifactClassLoaderBuilderRegionClassLoadercreateRegionClassLoader in class AbstractArtifactClassLoaderBuilder<ToolingPluginClassLoaderBuilder>RegionClassLoaderprotected static ArtifactClassLoader getPluginArtifactClassLoader(ArtifactPluginDescriptor artifactPluginDescriptor, List<ArtifactClassLoader> artifactPluginClassLoaders)
artifactPluginDescriptor - to look for within the collection of ArtifactClassLoadersartifactPluginClassLoaders - plugins class loaders to look for, at least one of them must contain the
pluginDescriptor.ArtifactClassLoader that was generated for the artifactPluginDescriptorPluginResolutionError - if the plugin wasn't found in the collection of artifactPluginClassLoadersCopyright © 2003–2023 MuleSoft, Inc.. All rights reserved.