KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > cglib > transform > AnnotationVisitorTee


1 /*
2  * Copyright 2003 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package net.sf.cglib.transform;
17
18 import org.objectweb.asm.AnnotationVisitor;
19
20 public class AnnotationVisitorTee implements AnnotationVisitor {
21     private AnnotationVisitor av1, av2;
22
23     public static AnnotationVisitor getInstance(AnnotationVisitor av1, AnnotationVisitor av2) {
24         if (av1 == null)
25             return av2;
26         if (av2 == null)
27             return av1;
28         return new AnnotationVisitorTee(av1, av2);
29     }
30
31     public AnnotationVisitorTee(AnnotationVisitor av1, AnnotationVisitor av2) {
32         this.av1 = av1;
33         this.av2 = av2;
34     }
35
36     public void visit(String JavaDoc name, Object JavaDoc value) {
37         av2.visit(name, value);
38         av2.visit(name, value);
39     }
40     
41     public void visitEnum(String JavaDoc name, String JavaDoc desc, String JavaDoc value) {
42         av1.visitEnum(name, desc, value);
43         av2.visitEnum(name, desc, value);
44     }
45     
46     public AnnotationVisitor visitAnnotation(String JavaDoc name, String JavaDoc desc) {
47         return getInstance(av1.visitAnnotation(name, desc),
48                            av2.visitAnnotation(name, desc));
49     }
50     
51     public AnnotationVisitor visitArray(String JavaDoc name) {
52         return getInstance(av1.visitArray(name), av2.visitArray(name));
53     }
54     
55     public void visitEnd() {
56         av1.visitEnd();
57         av2.visitEnd();
58     }
59 }
60
Popular Tags