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.model;
015    
016    import java.util.Set;
017    
018    /**
019     * Metadata about a method or constructor parameter
020     */
021    public interface MetaParameter {
022        /**
023         * Get metadata about the annotations on the parameter.
024         * 
025         * @return A read-only set of annotations
026         */
027        Set<? extends MetaAnnotation> getAnnotations();
028    
029        /**
030         * Get metadata about a particular annotation on the parameter.
031         * 
032         * @param annotationName
033         *            The name of the annotation desired
034         * 
035         * @return The annotation information, or null if not specified on the
036         *         corresponding parameter
037         */
038        MetaAnnotation getAnnotation(String annotationName);
039    
040        /**
041         * Get metadata about the type of the parameter
042         */
043        MetaType getType();
044    }