001 /* 002 * Licensed under the Apache License, Version 2.0 (the "License"); 003 * you may not use this file except in compliance with the License. 004 * You may obtain a copy of the License at 005 * 006 * http://www.apache.org/licenses/LICENSE-2.0 007 * 008 * Unless required by applicable law or agreed to in writing, software 009 * distributed under the License is distributed on an "AS IS" BASIS, 010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 011 * See the License for the specific language governing permissions and 012 * limitations under the License. 013 */ 014 package org.apache.commons.classscan; 015 016 import org.apache.commons.classscan.builtin.DefaultMetaRegistry; 017 018 /** 019 * The entry point from which to find information about the ClassPath and the classes 020 * available from the ClassPath. 021 */ 022 public interface MetaRegistry { 023 024 public static final MetaRegistry DEFAULT_REGISTRY = new DefaultMetaRegistry(); 025 026 /** 027 * Get the MetaClassLoader for a ClassLoader. If possible, an existing 028 * MetaClassLoader is returned. Otherwise, the MetaClassLoader is created. 029 * 030 * @param classLoader 031 * The ClassLoader for which metadata is desired (may be be null, 032 * for the bootstrap ClassLoader) 033 * @return The metadata about a ClassLoader 034 */ 035 MetaClassLoader getMetaClassLoader(ClassLoader classLoader); 036 037 /** 038 * Get the ClassPath for a ClassLoader 039 * 040 * @param classLoader 041 * The ClassLoader for which metadata is desired (may be be null, 042 * for the bootstrap ClassLoader) 043 * @return The ClassPath for the ClassLoader 044 */ 045 ClassPath getClassPath(ClassLoader classLoader); 046 }