KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > transparency > InnerClassInstrumentationTestApp


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tctest.transparency;
5
6 import com.tc.exception.TCNonPortableObjectError;
7 import com.tc.object.config.ConfigLockLevel;
8 import com.tc.object.config.ConfigVisitor;
9 import com.tc.object.config.DSOClientConfigHelper;
10 import com.tc.simulator.app.ApplicationConfig;
11 import com.tc.simulator.listener.ListenerProvider;
12 import com.tctest.runner.AbstractTransparentApp;
13
14 import java.util.HashMap JavaDoc;
15 import java.util.Map JavaDoc;
16
17 public class InnerClassInstrumentationTestApp extends AbstractTransparentApp {
18
19   private static final String JavaDoc INSTRUMENTED_KEY = "instrumented";
20   private static final String JavaDoc NOT_INSTRUMENTED_KEY = "not instrumented";
21
22   private final Map JavaDoc root = new HashMap JavaDoc();
23
24   public InnerClassInstrumentationTestApp(String JavaDoc appId, ApplicationConfig config, ListenerProvider listenerProvider) {
25     super(appId, config, listenerProvider);
26   }
27
28   public static void visitL1DSOConfig(ConfigVisitor visitor, DSOClientConfigHelper config) {
29     String JavaDoc testClassName = InnerClassInstrumentationTestApp.class.getName();
30     config.addIncludePattern(testClassName);
31     config.addIncludePattern(MyInstrumentedInnerClass.class.getName());
32     
33     config.addIncludePattern(InnerInnerExtendsInstrumentedClass.class.getName());
34     config.addIncludePattern(InnerInnerExtendsInstrumentedClass.InnerInnerClass.class.getName());
35     config.addIncludePattern(InnerInnerExtendsInstrumentedClass.InnerInnerClass.InnerInnerInnerClass.class.getName());
36     
37     config.addIncludePattern(MyNonInstrumentedInnerSubclass.class.getName());
38     
39     config.addIncludePattern(InnerInnerExtendsNonInstrumentedClass.class.getName());
40     config.addIncludePattern(InnerInnerExtendsNonInstrumentedClass.InnerInnerClass.class.getName());
41     config.addIncludePattern(InnerInnerExtendsNonInstrumentedClass.InnerInnerClass.InnerInnerInnerClass.class.getName());
42     
43     config.addIncludePattern(InnerInnerStaticExtendsInstrumentedClass.class.getName());
44     config.addIncludePattern(InnerInnerStaticExtendsInstrumentedClass.InnerInnerClass.class.getName());
45     
46     config.addIncludePattern(InnerInnerStaticExtendsNonInstrumentedClass.class.getName());
47     config.addIncludePattern(InnerInnerStaticExtendsNonInstrumentedClass.InnerInnerClass.class.getName());
48     
49     config.addIncludePattern(AnonymousInstrumentedInnerInnerClass.class.getName());
50     config.addIncludePattern(testClassName+"$1");
51     config.addIncludePattern(AnonymousNonInstrumentedInnerInnerClass.class.getName());
52     config.addIncludePattern(testClassName+"$2");
53     config.addRoot(testClassName, "root", "root", true);
54     config.addAutolock("* " + testClassName + ".*(..)", ConfigLockLevel.WRITE);
55   }
56
57   public void run() {
58     synchronized (root) {
59       root.put(INSTRUMENTED_KEY, new MyInstrumentedInnerClass());
60       try {
61         root.put(NOT_INSTRUMENTED_KEY, new MyNonInstrumentedInnerClass());
62         throw new AssertionError JavaDoc("This should have thrown an exception!");
63       } catch ( TCNonPortableObjectError t) {
64           // expected.
65
}
66       root.put(INSTRUMENTED_KEY, new InnerInnerExtendsInstrumentedClass());
67       try {
68         root.put(NOT_INSTRUMENTED_KEY, new MyNonInstrumentedInnerSubclass());
69         throw new AssertionError JavaDoc("This should have thrown an exception!");
70       } catch ( TCNonPortableObjectError t) {
71           // expected.
72
}
73       
74       try {
75         root.put(NOT_INSTRUMENTED_KEY, new InnerInnerExtendsNonInstrumentedClass());
76         throw new AssertionError JavaDoc("This should have thrown an exception!");
77       } catch ( TCNonPortableObjectError t) {
78           // expected.
79
}
80       
81       root.put(INSTRUMENTED_KEY, new InnerInnerStaticExtendsInstrumentedClass());
82       
83       try {
84         root.put(NOT_INSTRUMENTED_KEY, new InnerInnerStaticExtendsNonInstrumentedClass());
85         throw new AssertionError JavaDoc("This should have thrown an exception!");
86       } catch ( TCNonPortableObjectError t) {
87           // expected.
88
}
89       
90       root.put(INSTRUMENTED_KEY, new AnonymousInstrumentedInnerInnerClass());
91       
92       try {
93         root.put(NOT_INSTRUMENTED_KEY, new AnonymousNonInstrumentedInnerInnerClass());
94         throw new AssertionError JavaDoc("This should have thrown an exception!");
95       } catch ( TCNonPortableObjectError t) {
96           // expected.
97
}
98     }
99   }
100
101   private static class MyNonInstrumentedInnerClass {
102     //
103
}
104
105   private static class MyInstrumentedInnerClass {
106     //
107
}
108   
109   private static final class InnerInnerExtendsInstrumentedClass {
110     private final InnerInnerClass inner = new InnerInnerClass();
111     
112     // This method is to remove eclipse warning.
113
public Object JavaDoc getInner() {
114       return inner;
115     }
116     
117     private class InnerInnerClass extends MyInstrumentedInnerClass {
118       private final InnerInnerInnerClass innerInner = new InnerInnerInnerClass();
119       
120       // This method is to remove eclipse warning.
121
public Object JavaDoc getInnerInner() {
122         return innerInner;
123       }
124       
125       private class InnerInnerInnerClass extends MyInstrumentedInnerClass {
126         //
127
}
128     }
129   }
130   
131   private static final class InnerInnerStaticExtendsInstrumentedClass {
132     private final InnerInnerClass inner = new InnerInnerClass();
133     
134     // This method is to remove eclipse warning.
135
public Object JavaDoc getInner() {
136       return inner;
137     }
138     
139     private static class InnerInnerClass extends MyInstrumentedInnerClass {
140       //
141
}
142   }
143   
144   private static final class MyNonInstrumentedInnerSubclass extends MyNonInstrumentedInnerClass {
145     //
146
}
147   
148   private static final class InnerInnerExtendsNonInstrumentedClass {
149     private final InnerInnerClass inner = new InnerInnerClass();
150     
151     // This method is to remove eclipse warning.
152
public Object JavaDoc getInner() {
153       return inner;
154     }
155
156     
157     private class InnerInnerClass extends MyInstrumentedInnerClass {
158       private final InnerInnerInnerClass innerInner = new InnerInnerInnerClass();
159       
160       // This method is to remove eclipse warning.
161
public Object JavaDoc getInnerInner() {
162         return innerInner;
163       }
164       
165       private class InnerInnerInnerClass extends MyNonInstrumentedInnerClass {
166         //
167
}
168     }
169   }
170   
171   private static final class InnerInnerStaticExtendsNonInstrumentedClass {
172     private final InnerInnerClass inner = new InnerInnerClass();
173     
174     // This method is to remove eclipse warning.
175
public Object JavaDoc getInner() {
176       return inner;
177     }
178     
179     private static class InnerInnerClass extends MyNonInstrumentedInnerClass {
180       //
181
}
182   }
183   
184   private static final class AnonymousInstrumentedInnerInnerClass extends MyInstrumentedInnerClass {
185     public final MyInstrumentedInnerClass innerInner = new MyInstrumentedInnerClass() {
186       //
187
};
188   }
189   
190   private static final class AnonymousNonInstrumentedInnerInnerClass extends MyInstrumentedInnerClass {
191     public final MyNonInstrumentedInnerClass innerInner = new MyNonInstrumentedInnerClass() {
192       //
193
};
194   }
195 }
196
Popular Tags