KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > object > TCObjectImplTest


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.tc.object;
5
6 import com.tc.exception.ImplementMe;
7 import com.tc.object.bytecode.TransparentAccess;
8 import com.tc.object.dna.api.DNA;
9 import com.tc.object.dna.api.DNAWriter;
10 import com.tc.object.field.TCField;
11 import com.tc.object.field.TCFieldFactory;
12 import com.tc.object.tx.optimistic.OptimisticTransactionManager;
13 import com.tc.objectserver.core.api.TestDNAWriter;
14
15 import java.lang.reflect.Constructor JavaDoc;
16 import java.lang.reflect.Field JavaDoc;
17 import java.util.Collection JavaDoc;
18 import java.util.HashMap JavaDoc;
19 import java.util.Map JavaDoc;
20
21 /**
22  * @author steve
23  */

24 public class TCObjectImplTest extends BaseDSOTestCase {
25
26   public void tests() throws Exception JavaDoc {
27     TestClientObjectManager objectManager = new TestClientObjectManager();
28     TCClass clazz = new TestTCClass(objectManager);
29     TestObject to1 = new TestObject(null, null);
30     TestObject to2 = new TestObject("TestObject2", null);
31     ObjectID id1 = new ObjectID(1);
32     ObjectID id2 = new ObjectID(2);
33     objectManager.add(id2, new TCObjectPhysical(objectManager.getReferenceQueue(), id2, to2, clazz));
34
35     TCObjectImpl tcObj = new TCObjectPhysical(objectManager.getReferenceQueue(), id1, to1, clazz);
36     tcObj.resolveReference(TestObject.class.getName() + ".test1");
37     tcObj.resolveReference(TestObject.class.getName() + ".test2");
38     assertTrue(to1.test1 == null);// nothing should happen from that
39
assertTrue(to1.test2 == null);
40
41     tcObj.setReference(TestObject.class.getName() + ".test2", new ObjectID(2));
42
43     assertTrue(to1.test1 == null);// nothing should happen from that
44
assertTrue(to1.test2 == null);
45
46     tcObj.resolveReference(TestObject.class.getName() + ".test2");
47     assertTrue(to1.test1 == null);// nothing should happen from that
48
assertTrue(to1.test2 == to2);
49
50     tcObj.dehydrate(new TestDNAWriter());
51     tcObj.clearReferences(100);
52     assertTrue(to1.test2 == null);
53     tcObj.resolveReference(TestObject.class.getName() + ".test2");
54     assertTrue(to1.test2 == to2);
55   }
56
57   private static class TestObject implements TransparentAccess {
58     public String JavaDoc test1;
59     public TestObject test2;
60
61     public TCObject managed;
62
63     public TestObject(String JavaDoc test1, TestObject test2) {
64       this.test1 = test1;
65       this.test2 = test2;
66     }
67
68     public void __tc_getallfields(Map JavaDoc map) {
69       map.put(getClass().getName() + "." + "test1", test1);
70       map.put(getClass().getName() + "." + "test2", test2);
71     }
72
73     public void __tc_setfield(String JavaDoc fieldName, Object JavaDoc value) {
74       if (fieldName.equals(TestObject.class.getName() + ".test1")) {
75         test1 = (String JavaDoc) value;
76       }
77       if (fieldName.equals(TestObject.class.getName() + ".test2")) {
78         test2 = (TestObject) value;
79       }
80     }
81
82     public void __tc_managed(TCObject b) {
83       this.managed = b;
84     }
85
86     public TCObject __tc_managed() {
87       return managed;
88     }
89
90     public Object JavaDoc __tc_getmanagedfield(String JavaDoc name) {
91       throw new ImplementMe();
92     }
93
94     public void __tc_setmanagedfield(String JavaDoc name, Object JavaDoc value) {
95       throw new ImplementMe();
96     }
97
98   }
99
100   public class TestTCClass implements TCClass {
101     private TCFieldFactory fieldFactory;
102     private Map JavaDoc fields = new HashMap JavaDoc();
103     private final TestClientObjectManager objectManager;
104
105     public Field getParentField() {
106       return null;
107     }
108
109     public String JavaDoc getParentFieldName() {
110       return "className.this$0";
111     }
112
113     public TestTCClass(TestClientObjectManager objectManager) throws Exception JavaDoc {
114       this.objectManager = objectManager;
115       fieldFactory = new TCFieldFactory(configHelper());
116       Field[] flds = TestObject.class.getDeclaredFields();
117       for (int i = 0; i < flds.length; i++) {
118         fields.put(TestObject.class.getName() + "." + flds[i].getName(), fieldFactory.getInstance(this, flds[i]));
119       }
120     }
121
122     public TCField[] getPortableFields() {
123       Collection JavaDoc fs = fields.values();
124       return (TCField[]) fs.toArray(new TCField[fs.size()]);
125     }
126
127     public Constructor JavaDoc getConstructor() throws SecurityException JavaDoc {
128       // TODO Auto-generated method stub
129
return null;
130     }
131
132     public TCClass getSuperclass() {
133       // TODO Auto-generated method stub
134
return null;
135     }
136
137     public boolean isPortable() {
138       // TODO Auto-generated method stub
139
return false;
140     }
141
142     public TCField getDeclaredField(String JavaDoc name) {
143       try {
144         return (TCField) fields.get(name);
145       } catch (Exception JavaDoc e) {
146         throw new RuntimeException JavaDoc(e);
147       }
148     }
149
150     public TCField getField(String JavaDoc name) {
151       return getDeclaredField(name);
152     }
153
154     public TCField getField(String JavaDoc classname, String JavaDoc fieldname) {
155       // TODO Auto-generated method stub
156
return null;
157     }
158
159     public TCField getField(Field field) {
160       // TODO Auto-generated method stub
161
return null;
162     }
163
164     public boolean isIndexed() {
165       // TODO Auto-generated method stub
166
return false;
167     }
168
169     public void hydrate(TCObject tcObject, DNA dna, Object JavaDoc pojo, boolean force) {
170       //
171
}
172
173     public void dehydrate(TCObject tcObject, DNAWriter writer, Object JavaDoc pojo) {
174       //
175
}
176
177     public String JavaDoc getName() {
178       return TestObject.class.getName();
179     }
180
181     public Class JavaDoc getComponentType() {
182       return null;
183     }
184
185     public TraversedReferences getPortableObjects(Object JavaDoc pojo, TraversedReferences addTo) {
186       return addTo;
187     }
188
189     public String JavaDoc getDefiningLoaderDescription() {
190       throw new ImplementMe();
191     }
192
193     public boolean isNonStaticInner() {
194       return false;
195     }
196
197     public boolean isLogical() {
198       return false;
199     }
200
201     public TCObject createTCObject(ObjectID id, Object JavaDoc peer) {
202       throw new ImplementMe();
203     }
204
205     public boolean hasOnLoadExecuteScript() {
206       return false;
207     }
208
209     public String JavaDoc getOnLoadExecuteScript() {
210
211       return null;
212     }
213
214     public boolean hasOnLoadMethod() {
215       return false;
216     }
217
218     public String JavaDoc getOnLoadMethod() {
219       return null;
220     }
221
222     public boolean isUseNonDefaultConstructor() {
223       return false;
224     }
225
226     public Object JavaDoc getNewInstanceFromNonDefaultConstructor(DNA dna) {
227       return null;
228     }
229
230     public Class JavaDoc getPeerClass() {
231       throw new ImplementMe();
232     }
233
234     public Map JavaDoc connectedCopy(Object JavaDoc source, Object JavaDoc dest, Map JavaDoc visited, OptimisticTransactionManager txManager) {
235       throw new ImplementMe();
236     }
237
238     public String JavaDoc getFieldNameByOffset(long fieldOffset) {
239       throw new ImplementMe();
240     }
241
242     public ClientObjectManager getObjectManager() {
243       return objectManager;
244     }
245
246     public boolean isProxyClass() {
247       return false;
248     }
249
250     public String JavaDoc getExtendingClassName() {
251       return getName();
252     }
253
254     public boolean isEnum() {
255       return false;
256     }
257   }
258 }
259
Popular Tags