01: /*
02: * Javassist, a Java-bytecode translator toolkit.
03: * Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
04: *
05: * The contents of this file are subject to the Mozilla Public License Version
06: * 1.1 (the "License"); you may not use this file except in compliance with
07: * the License. Alternatively, the contents of this file may be used under
08: * the terms of the GNU Lesser General Public License Version 2.1 or later.
09: *
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.tools.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()
44: .trapFieldRead(name);
45: }
46:
47: public static Object trapWrite(Object[] args, String name) {
48: Metalevel base = (Metalevel) args[0];
49: if (base == null)
50: _classobject.trapFieldWrite(name, args[1]);
51: else
52: base._getMetaobject().trapFieldWrite(name, args[1]);
53:
54: return null;
55: }
56: }
|