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.bcel;
015    
016    import org.apache.bcel.classfile.AnnotationEntry;
017    import org.apache.commons.classscan.util.NameSet;
018    
019    public class AnnotationMap extends NameSet<BcelAnnotation> {
020    
021            private static AnnotationMap EMPTY_ANNOTATIONS= new AnnotationMap(new AnnotationEntry[0]);
022            
023            public static AnnotationMap createAnnotations(AnnotationEntry[] annotationEntries) {
024            if(annotationEntries==null || annotationEntries.length==0) {
025                    return EMPTY_ANNOTATIONS;
026            }
027                    return new AnnotationMap(annotationEntries);
028            }
029            
030        private AnnotationMap(AnnotationEntry[] entries) {
031            super(transformEntries(entries));
032        }
033    
034        static private BcelAnnotation[] transformEntries(AnnotationEntry[] entries) {
035                    
036            BcelAnnotation[] annotations = new BcelAnnotation[entries.length];
037            for(int i = 0; i<entries.length; ++i) {
038                    annotations[i]= new BcelAnnotation(entries[i]);
039            }
040            return annotations;
041        }
042    }