/* * 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 java.util.Map; /** * Defines which resources in a class loader should be looked up using parent-first, child-first or child only strategies. * <p/> * Default lookup strategy is parent first. To use child-first, the corresponding package must be added as an overridden. To use * child-only, the corresponding package must be added as blocked. */ public interface ClassLoaderLookupPolicy { /** * Returns the lookup strategy to use for a given class. * * @param className class to lookup. * @return the configured lookup strategy for the class's package or {@link ChildFirstLookupStrategy#CHILD_FIRST} if not * explicit configuration was defined for the class's package. */ LookupStrategy getClassLookupStrategy(String className); /** * Returns the lookup strategy to use for a given package. * * @param packageName package to lookup. * @return the configured lookup strategy for the class's package or {@link ChildFirstLookupStrategy#CHILD_FIRST} if not * explicit configuration was defined for the package. */ LookupStrategy getPackageLookupStrategy(String packageName); /** * Creates a new instance extending the original poclicy configuration * * @param lookupStrategies lookup strategies to use with specific packages. Non null. * @return a new policy containing the lookup strategies from the original policy and the lookup strategies passed on the * parameter. */ ClassLoaderLookupPolicy extend(Map<String, LookupStrategy> lookupStrategies); }