/* * VerboseClass.java * * @author Michiaki Tatsubori * @version %VERSION% %DATE% * @see java.lang.Object * * COPYRIGHT 1999 by Michiaki Tatsubori, ALL RIGHTS RESERVED. */ package verbose; import openjava.mop.*; import openjava.ptree.*; import openjava.syntax.*; public class AddMethod instantiates Metaclass extends OJClass { /* overrides for translation */ public void translateDefinition() throws MOPException, OJClassNotFoundException { OJMethod[] methods = getDeclaredMethods(); Statement printer; for (int i = 0; i < methods.length; ++i) { printer = makeStatement( "java.lang.System.out.println( \"" + methods[i].toString() + " was called\" );" ); methods[i].getBody().insertElementAt( printer, 0 ); } OJMethod newMethod = new OJMethod(this, methods[0].getModifiers(), OJClass.forName("java.lang.String"), "foo", methods[0].getParameterTypes(), methods[0].getExceptionTypes(), makeStatementList("return null;")); this.addMethod(newMethod); } }