KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > aspectwerkz > reflect > impl > asm > AsmMemberInfo


1 /**************************************************************************************
2  * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved. *
3  * http://aspectwerkz.codehaus.org *
4  * ---------------------------------------------------------------------------------- *
5  * The software in this package is published under the terms of the LGPL license *
6  * a copy of which has been included with this distribution in the license.txt file. *
7  **************************************************************************************/

8 package org.codehaus.aspectwerkz.reflect.impl.asm;
9
10 import org.codehaus.aspectwerkz.annotation.instrumentation.asm.CustomAttribute;
11 import org.codehaus.aspectwerkz.annotation.instrumentation.asm.CustomAttributeHelper;
12 import org.codehaus.aspectwerkz.annotation.AnnotationInfo;
13 import org.codehaus.aspectwerkz.reflect.ClassInfo;
14 import org.codehaus.aspectwerkz.reflect.MemberInfo;
15 import org.codehaus.aspectwerkz.transform.inlining.AsmHelper;
16 import org.objectweb.asm.Attribute;
17 import org.objectweb.asm.attrs.RuntimeInvisibleAnnotations;
18 import org.objectweb.asm.attrs.Annotation;
19 import org.objectweb.asm.attrs.RuntimeVisibleAnnotations;
20
21 import java.lang.ref.WeakReference JavaDoc;
22 import java.util.*;
23
24 /**
25  * ASM implementation of the MemberInfo interface.
26  *
27  * @author <a HREF="mailto:jboner@codehaus.org">Jonas BonŽr </a>
28  */

29 public abstract class AsmMemberInfo implements MemberInfo {
30
31     /**
32      * The member info.
33      */

34     protected final MemberStruct m_member;
35
36     /**
37      * The class loader wrapped in a weak ref.
38      */

39     protected final WeakReference JavaDoc m_loaderRef;
40
41     /**
42      * The declaring type name.
43      */

44     protected final String JavaDoc m_declaringTypeName;
45
46     /**
47      * The declaring type.
48      */

49     protected ClassInfo m_declaringType;
50
51     /**
52      * The annotations.
53      */

54     protected List m_annotations = null;
55
56     /**
57      * The class info repository.
58      */

59     protected final AsmClassInfoRepository m_classInfoRepository;
60
61     /**
62      * Creates a new member meta data instance.
63      *
64      * @param member
65      * @param declaringType
66      * @param loader
67      */

68     AsmMemberInfo(final MemberStruct member, final String JavaDoc declaringType, final ClassLoader JavaDoc loader) {
69         if (member == null) {
70             throw new IllegalArgumentException JavaDoc("member can not be null");
71         }
72         if (declaringType == null) {
73             throw new IllegalArgumentException JavaDoc("declaring type can not be null");
74         }
75         m_member = member;
76         m_loaderRef = new WeakReference JavaDoc(loader);
77         m_declaringTypeName = declaringType.replace('/', '.');
78         m_classInfoRepository = AsmClassInfoRepository.getRepository(loader);
79     }
80
81     /**
82      * Returns the name.
83      *
84      * @return the name
85      */

86     public String JavaDoc getName() {
87         return m_member.name;
88     }
89
90     /**
91      * Returns the modifiers.
92      *
93      * @return the modifiers
94      */

95     public int getModifiers() {
96         return m_member.modifiers;
97     }
98
99     /**
100      * Returns the declaring type.
101      *
102      * @return the declaring type
103      */

104     public ClassInfo getDeclaringType() {
105         if (m_declaringType == null) {
106             m_declaringType = m_classInfoRepository.getClassInfo(m_declaringTypeName);
107         }
108         return m_declaringType;
109     }
110 }
Popular Tags