/Users/lyon/j4p/src/javassist/reflect/Sample.java

1    /* 
2     * Javassist, a Java-bytecode translator toolkit. 
3     * Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved. 
4     * 
5     * The contents of this file are subject to the Mozilla Public License Version 
6     * 1.1 (the "License"); you may not use this file except in compliance with 
7     * the License.  Alternatively, the contents of this file may be used under 
8     * the terms of the GNU Lesser General Public License Version 2.1 or later. 
9     * 
10    * Software distributed under the License is distributed on an "AS IS" basis, 
11    * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
12    * for the specific language governing rights and limitations under the 
13    * License. 
14    */ 
15    
16   package javassist.reflect; 
17    
18   /** 
19    * A template used for defining a reflective class. 
20    */ 
21   public class Sample { 
22       private Metaobject _metaobject; 
23       private static ClassMetaobject _classobject; 
24    
25       public Object trap(Object[] args, int identifier) throws Throwable { 
26           Metaobject mobj; 
27           mobj = _metaobject; 
28           if (mobj == null) 
29               return ClassMetaobject.invoke(this, identifier, args); 
30           else 
31               return mobj.trapMethodcall(identifier, args); 
32       } 
33    
34       public static Object trapStatic(Object[] args, int identifier) 
35               throws Throwable { 
36           return _classobject.trapMethodcall(identifier, args); 
37       } 
38    
39       public static Object trapRead(Object[] args, String name) { 
40           if (args[0] == null) 
41               return _classobject.trapFieldRead(name); 
42           else 
43               return ((Metalevel) args[0])._getMetaobject().trapFieldRead(name); 
44       } 
45    
46       public static Object trapWrite(Object[] args, String name) { 
47           Metalevel base = (Metalevel) args[0]; 
48           if (base == null) 
49               _classobject.trapFieldWrite(name, args[1]); 
50           else 
51               base._getMetaobject().trapFieldWrite(name, args[1]); 
52    
53           return null; 
54       } 
55   } 
56