/*
* 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.module.deployment.impl.internal.policy;
import org.mule.runtime.deployment.model.internal.policy.PolicyTemplateClassLoaderBuilder;
import org.mule.runtime.module.artifact.classloader.ArtifactClassLoaderFactory;
import org.mule.runtime.module.artifact.classloader.DeployableArtifactClassLoaderFactory;
/**
* Creates {@link PolicyTemplateClassLoaderBuilder} for application artifacts.
*/
public class ApplicationPolicyTemplateClassLoaderBuilderFactory implements PolicyTemplateClassLoaderBuilderFactory {
private final DeployableArtifactClassLoaderFactory artifactClassLoaderFactory;
private final ArtifactClassLoaderFactory artifactPluginClassLoaderFactory;
/**
* Creates a new factory instance
*
* @param artifactClassLoaderFactory factory for the classloader specific to the artifact resource and classes. Must be not
* null.
* @param artifactPluginClassLoaderFactory factory to create class loaders for each used plugin. Non be not null.
*/
public ApplicationPolicyTemplateClassLoaderBuilderFactory(DeployableArtifactClassLoaderFactory artifactClassLoaderFactory,
ArtifactClassLoaderFactory artifactPluginClassLoaderFactory) {
this.artifactClassLoaderFactory = artifactClassLoaderFactory;
this.artifactPluginClassLoaderFactory = artifactPluginClassLoaderFactory;
}
@Override
public PolicyTemplateClassLoaderBuilder createArtifactClassLoaderBuilder() {
return new PolicyTemplateClassLoaderBuilder(artifactClassLoaderFactory,
artifactPluginClassLoaderFactory);
}
}