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.spi.model;
015    
016    import java.util.Collection;
017    
018    import org.apache.commons.classscan.ClassPathElement;
019    
020    /**
021     * A single location in a ClassPath.  The location might be a jar or a directory.
022     * In enterprise application environments, the location might be an exploded ear or a war.
023     */
024    public interface SpiClassPathElement extends ClassPathElement {
025            /**
026             * Obtain any additional ClassPath elements specified within the metadata of this element.
027             * e.g. The elements specified by the Class-Path attribute of a jar manifest
028             * 
029             * @param registry
030             * @return null, or an iterator over additional path elements
031             */
032            Collection<SpiClassPathElement> getAdditionalLocations(SpiMetaRegistry registry);
033    }