KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > aspectwerkz > joinpoint > impl > FieldRttiImpl


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.joinpoint.impl;
9
10 import org.codehaus.aspectwerkz.joinpoint.FieldRtti;
11 import org.codehaus.aspectwerkz.joinpoint.Rtti;
12
13 import java.lang.ref.WeakReference JavaDoc;
14 import java.lang.reflect.Field JavaDoc;
15
16 /**
17  * Implementation for the field signature.
18  *
19  * @author <a HREF="mailto:jboner@codehaus.org">Jonas BonŽr </a>
20  */

21 public class FieldRttiImpl implements FieldRtti {
22     private final FieldSignatureImpl m_signature;
23
24     private WeakReference JavaDoc m_thisRef;
25
26     private WeakReference JavaDoc m_targetRef;
27
28     private Object JavaDoc m_fieldValue;
29
30     /**
31      * Creates a new field RTTI.
32      *
33      * @param signature
34      * @param thisInstance
35      * @param targetInstance
36      */

37     public FieldRttiImpl(final FieldSignatureImpl signature, final Object JavaDoc thisInstance, final Object JavaDoc targetInstance) {
38         m_signature = signature;
39         m_thisRef = new WeakReference JavaDoc(thisInstance);
40         m_targetRef = new WeakReference JavaDoc(targetInstance);
41     }
42
43     /**
44      * Clones the RTTI instance.
45      *
46      * @param thisInstance
47      * @param targetInstance
48      * @return
49      */

50     public Rtti cloneFor(final Object JavaDoc thisInstance, final Object JavaDoc targetInstance) {
51         return new FieldRttiImpl(m_signature, thisInstance, targetInstance);
52     }
53
54     /**
55      * Returns the target instance.
56      *
57      * @return the target instance
58      */

59     public Object JavaDoc getTarget() {
60         return m_targetRef.get();
61     }
62
63     /**
64      * Returns the instance currently executing.
65      *
66      * @return the instance currently executing
67      */

68     public Object JavaDoc getThis() {
69         return m_thisRef.get();
70     }
71
72     /**
73      * Returns the declaring class.
74      *
75      * @return the declaring class
76      */

77     public Class JavaDoc getDeclaringType() {
78         return m_signature.getDeclaringType();
79     }
80
81     /**
82      * Returns the modifiers for the signature. <p/>Could be used like this:
83      * <p/>
84      * <pre>
85      * boolean isPublic = java.lang.reflect.Modifier.isPublic(signature.getModifiers());
86      * </pre>
87      *
88      * @return the mofifiers
89      */

90     public int getModifiers() {
91         return m_signature.getModifiers();
92     }
93
94     /**
95      * Returns the name (f.e. name of method of field).
96      *
97      * @return the name
98      */

99     public String JavaDoc getName() {
100         return m_signature.getName();
101     }
102
103     /**
104      * Returns the field.
105      *
106      * @return the field
107      */

108     public Field JavaDoc getField() {
109         return m_signature.getField();
110     }
111
112     /**
113      * Returns the field type.
114      *
115      * @return the field type
116      */

117     public Class JavaDoc getFieldType() {
118         return m_signature.getFieldType();
119     }
120
121     /**
122      * Returns the value of the field.
123      *
124      * @return the value of the field
125      */

126     public Object JavaDoc getFieldValue() {
127         return m_fieldValue;
128     }
129
130     /**
131      * Sets the value of the field.
132      *
133      * @param fieldValue the value of the field
134      */

135     public void setFieldValue(final Object JavaDoc fieldValue) {
136         m_fieldValue = fieldValue;
137     }
138
139     /**
140      * Returns a string representation of the signature.
141      *
142      * @return a string representation
143      * @TODO: implement toString to something meaningful
144      */

145     public String JavaDoc toString() {
146         return super.toString();
147     }
148
149     /**
150      * TODO: Needed for stupid JIT compiler. Remove for 2.0.
151      *
152      * @return
153      */

154     public Object JavaDoc[] getParameterValues() {
155         return new Object JavaDoc[]{m_fieldValue};
156     }
157 }
Popular Tags