/*
* 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.artifact.classloader;
import org.mule.runtime.core.util.StringUtils;
import java.util.HashSet;
import java.util.Set;
/**
* Creates {@link DefaultArtifactClassLoaderFilter} instances
*/
public class ArtifactClassLoaderFilterFactory implements ClassLoaderFilterFactory {
private static final String PACKAGE_SEPARATOR = "/";
@Override
public ArtifactClassLoaderFilter create(String exportedClassPackages, String exportedResources) {
Set<String> exportedArtifactPackages = parseExportedResource(exportedClassPackages);
Set<String> exportedArtifactResources = parseExportedResource(exportedResources);
if (exportedArtifactPackages.isEmpty() && exportedArtifactResources.isEmpty()) {
return DefaultArtifactClassLoaderFilter.NULL_CLASSLOADER_FILTER;
} else {
return new DefaultArtifactClassLoaderFilter(exportedArtifactPackages, exportedArtifactResources);
}
}
public static Set<String> parseExportedResource(String exportedPackages) {
Set<String> exported = new HashSet<>();
if (StringUtils.isNotBlank(exportedPackages)) {
final String[] exports = exportedPackages.split(",");
for (String export : exports) {
export = export.trim();
if (export.startsWith(PACKAGE_SEPARATOR)) {
export = export.substring(1);
}
if (export.endsWith(PACKAGE_SEPARATOR)) {
export = export.substring(0, export.length() - 1);
}
exported.add(export);
}
}
return exported;
}
}