KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tirsen > nanning > attribute > AttributesTest


1 /*
2  * Nanning Aspects
3  *
4  * Distributable under LGPL license.
5  * See terms of license at gnu.org.
6  */

7 package com.tirsen.nanning.attribute;
8
9 import java.io.IOException JavaDoc;
10 import java.lang.reflect.Field JavaDoc;
11 import java.lang.reflect.Method JavaDoc;
12
13 /**
14  * TODO document AttributesTest
15  *
16  * <!-- $Id: AttributesTest.java,v 1.11 2003/06/10 11:28:15 lecando Exp $ -->
17  *
18  * @author $Author: lecando $
19  * @version $Revision: 1.11 $
20  */

21 public class AttributesTest extends AbstractAttributesTest {
22     public static final String JavaDoc CLASS_ATTRIBUTE = "class.attribute";
23     public static final String JavaDoc FIELD_ATTRIBUTE = "field.attribute";
24     public static final String JavaDoc FIELD_VALUE = "fieldValue";
25     public static final String JavaDoc METHOD_ATTRIBUTE = "method.attribute";
26
27     public static final Method JavaDoc method;
28     public static final Field JavaDoc field;
29     public static final Method JavaDoc argMethod;
30     public static final Method JavaDoc arrayArgMethod;
31     public static final Method JavaDoc overridingMethod;
32     public static final Field JavaDoc innerField;
33
34     public static final String JavaDoc METHOD_VALUE = "methodValue";
35     public static final String JavaDoc INNER_ATTRIBUTE = "inner.attribute";
36     public static final String JavaDoc INNER_FIELD_ATTRIBUTE = "inner.field.attribute";
37     public static final String JavaDoc INNER_VALUE = "innerValue";
38     public static final String JavaDoc INNER_FIELD_VALUE = "innerFieldValue";
39
40     static {
41         try {
42             method = AttributesTestClass.class.getMethod("method", null);
43             overridingMethod = AttributesTestSubClass.class.getMethod("method", null);
44
45             field = AttributesTestClass.class.getDeclaredField("field");
46             argMethod = AttributesTestClass.class.getMethod("method", new Class JavaDoc[]{String JavaDoc.class, String JavaDoc.class});
47             arrayArgMethod = AttributesTestClass.class.getMethod("method", new Class JavaDoc[]{String JavaDoc[].class});
48
49             innerField = AttributesTestClass.InnerClass.class.getDeclaredField("innerField");
50         } catch (Exception JavaDoc e) {
51             throw new Error JavaDoc("Could not reflect AttributesTestClass", e);
52         }
53     }
54
55     public void testClassAttributes() throws IOException JavaDoc, NoSuchMethodException JavaDoc, NoSuchFieldException JavaDoc {
56         ClassAttributes classAttributes = Attributes.getAttributes(AttributesTestClass.class);
57         assertEquals("classValue", classAttributes.getAttribute(CLASS_ATTRIBUTE));
58         assertTrue(classAttributes.hasAttribute("class.attribute"));
59         assertFalse(classAttributes.hasAttribute("stupid.attribute"));
60
61         assertEquals(FIELD_VALUE, classAttributes.getAttribute(field, FIELD_ATTRIBUTE));
62         assertTrue(classAttributes.hasAttribute(field, "field.attribute"));
63         assertFalse(classAttributes.hasAttribute(field, "stupid.attribute"));
64
65         assertEquals(METHOD_VALUE, classAttributes.getAttribute(method, METHOD_ATTRIBUTE));
66         assertTrue(classAttributes.hasAttribute(method, METHOD_ATTRIBUTE));
67         assertFalse(classAttributes.hasAttribute(method, "stupid.attribute"));
68
69         assertEquals("argMethodValue", classAttributes.getAttribute(argMethod, METHOD_ATTRIBUTE));
70         assertTrue(classAttributes.hasAttribute(argMethod, METHOD_ATTRIBUTE));
71         assertFalse(classAttributes.hasAttribute(argMethod, "stupid.attribute"));
72
73         assertTrue(classAttributes.hasAttribute(arrayArgMethod, METHOD_ATTRIBUTE));
74         assertFalse(classAttributes.hasAttribute(arrayArgMethod, "stupid.attribute"));
75         assertEquals("arrayArgMethodValue", classAttributes.getAttribute(arrayArgMethod, METHOD_ATTRIBUTE));
76     }
77
78     public void testInnerClassAttributes() {
79         ClassAttributes classAttributes = Attributes.getAttributes(AttributesTestClass.InnerClass.class);
80         assertTrue(classAttributes.hasAttribute(INNER_ATTRIBUTE));
81         assertFalse(classAttributes.hasAttribute("stupid.attribute"));
82         assertEquals(INNER_VALUE, classAttributes.getAttribute(INNER_ATTRIBUTE));
83
84         assertTrue(classAttributes.hasAttribute(innerField, INNER_FIELD_ATTRIBUTE));
85         assertFalse(classAttributes.hasAttribute(innerField, "stupid.attribute"));
86         assertEquals(INNER_FIELD_VALUE, classAttributes.getAttribute(innerField, INNER_FIELD_ATTRIBUTE));
87     }
88
89     public void testAttributes() throws IOException JavaDoc, NoSuchMethodException JavaDoc, NoSuchFieldException JavaDoc {
90         // Test compiled source attributes...
91
assertEquals("classValue", Attributes.getAttribute(AttributesTestClass.class, CLASS_ATTRIBUTE));
92         assertFalse(Attributes.hasAttribute(AttributesTestClass.class, "stupid.attribute"));
93         Field JavaDoc field = AttributesTestClass.class.getDeclaredField("field");
94         assertEquals(FIELD_VALUE, Attributes.getAttribute(field, FIELD_ATTRIBUTE));
95         assertFalse(Attributes.hasAttribute(field, "stupid.attribute"));
96         Method JavaDoc method = AttributesTestClass.class.getMethod("method", null);
97         assertEquals(METHOD_VALUE, Attributes.getAttribute(method, METHOD_ATTRIBUTE));
98         assertFalse(Attributes.hasAttribute(method, "stupid.attribute"));
99         Method JavaDoc argMethod = AttributesTestClass.class.getMethod("method", new Class JavaDoc[]{String JavaDoc.class, String JavaDoc.class});
100         assertEquals("argMethodValue", Attributes.getAttribute(argMethod, METHOD_ATTRIBUTE));
101         assertFalse(Attributes.hasAttribute(argMethod, "stupid.attribute"));
102
103
104         // Test xml attributes
105
//School
106
assertEquals("classValue", Attributes.getAttribute(School.class, "classAttrib"));
107         assertFalse(Attributes.hasAttribute(School.class, "stupidAttribute"));
108         Field JavaDoc xmlfield = School.class.getDeclaredField("name");
109         assertEquals(FIELD_VALUE, Attributes.getAttribute(xmlfield, "fieldAttrib"));
110         assertFalse(Attributes.hasAttribute(xmlfield, "stupidAttribute"));
111         Method JavaDoc xmlMethod = School.class.getMethod("sackAllTeachers", null);
112         assertEquals("false", Attributes.getAttribute(xmlMethod, "secure"));
113         assertFalse(Attributes.hasAttribute(xmlMethod, "stupidAttribute"));
114         Method JavaDoc xmlArgMethod = School.class.getMethod("setName", new Class JavaDoc[]{String JavaDoc.class});
115         assertEquals(METHOD_VALUE, Attributes.getAttribute(xmlArgMethod, "methodAttrib"));
116         assertFalse(Attributes.hasAttribute(xmlArgMethod, "stupidAttribute"));
117
118         // Job - Shows mixed attributes
119
assertEquals("true", Attributes.getAttribute(Job.class, "persistant"));
120         assertEquals("required", Attributes.getAttribute(Job.class, "transaction"));
121         assertEquals("true", Attributes.getAttribute(Job.class, "secure"));
122
123         Field JavaDoc descfield = Job.class.getDeclaredField("description");
124         assertEquals("true", Attributes.getAttribute(descfield, "persistant"));
125         assertEquals("true", Attributes.getAttribute(descfield, "transient"));
126         assertFalse(Attributes.hasAttribute(descfield, "transaction"));
127
128         Method JavaDoc hireMethod = Job.class.getMethod("hireEmployee", new Class JavaDoc[]{String JavaDoc.class, Employee.class});
129         assertEquals("great", Attributes.getAttribute(hireMethod, "nanning"));
130         assertEquals("false", Attributes.getAttribute(hireMethod, "secure"));
131         assertFalse(Attributes.hasAttribute(hireMethod, "transient"));
132         assertTrue(Attributes.hasAttribute(hireMethod, "nanning"));
133
134         Method JavaDoc fireMethod = Job.class.getMethod("fireAllEmployees", null);
135         assertEquals("true", Attributes.getAttribute(fireMethod, "secure"));
136     }
137
138     public void testHasInheritedAttribute() {
139         assertTrue(Attributes.hasInheritedAttribute(method, METHOD_ATTRIBUTE));
140         assertFalse(Attributes.hasInheritedAttribute(method, "stupid.attribute"));
141
142         assertTrue(Attributes.hasInheritedAttribute(overridingMethod, METHOD_ATTRIBUTE));
143         assertFalse(Attributes.hasInheritedAttribute(overridingMethod, "stupid.attribute"));
144
145         assertTrue(Attributes.hasInheritedAttribute(overridingMethod, "interface.attribute"));
146     }
147 }
148
Popular Tags