KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > sample > duplicate > DuplicatedObject


1 package sample.duplicate;
2
3 import javassist.reflect.*;
4
5 public class DuplicatedObject extends Metaobject {
6     private DuplicatedObject backup;
7
8     // if a base-level object is created, this metaobject creates
9
// a copy of the base-level object.
10

11     public DuplicatedObject(Object JavaDoc self, Object JavaDoc[] args) {
12     super(self, args);
13     ClassMetaobject clazz = getClassMetaobject();
14     if (clazz.isInstance(args[0]))
15         backup = null; // self is a backup object.
16
else {
17         Object JavaDoc[] args2 = new Object JavaDoc[1];
18         args2[0] = self;
19         try {
20         Metalevel m = (Metalevel)clazz.newInstance(args2);
21         backup = (DuplicatedObject)m._getMetaobject();
22         }
23         catch (CannotCreateException e) {
24         backup = null;
25         }
26     }
27     }
28
29     public Object JavaDoc trapMethodcall(int identifier, Object JavaDoc[] args)
30     throws Throwable JavaDoc
31     {
32     Object JavaDoc obj = super.trapMethodcall(identifier, args);
33     if (backup != null)
34         backup.trapMethodcall(identifier, args);
35
36     return obj;
37     }
38 }
39
Popular Tags