1/* 2 * Javassist, a Java-bytecode translator toolkit. 3 * Copyright (C) 1999-2007 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 16package javassist.tools.reflect; 17 18/** 19 * A template used for defining a reflective class. 20 */ 21public 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 { 37 return _classobject.trapMethodcall(identifier, args); 38 } 39 40 public static Object trapRead(Object[] args, String name) { 41 if (args[0] == null) 42 return _classobject.trapFieldRead(name); 43 else 44 return ((Metalevel)args[0])._getMetaobject().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} 57