KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > cglib > transform > hook > ExamplePreProcessor


1 /*
2  * Copyright 2003 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package net.sf.cglib.transform.hook;
17
18 import net.sf.cglib.core.*;
19 import net.sf.cglib.transform.*;
20 import org.objectweb.asm.Attribute;
21 import org.objectweb.asm.Type;
22
23 public class ExamplePreProcessor extends AbstractPreProcessor {
24     private static final Type PRINT_STREAM =
25       TypeUtils.parseType("java.io.PrintStream");
26     private static final Signature PRINTLN =
27       TypeUtils.parseSignature("void println(String)");
28     
29     protected ClassTransformer getClassTransformer(String JavaDoc name) {
30         return new ClassEmitterTransformer() {
31             public CodeEmitter begin_method(int access, Signature sig, Type[] exceptions, Attribute attrs) {
32                 CodeEmitter e = super.begin_method(access, sig, exceptions, attrs);
33                 if (!TypeUtils.isAbstract(access)) {
34                     e.getstatic(Constants.TYPE_SYSTEM, "err", PRINT_STREAM);
35                     e.push("Running " + sig.getName() + sig.getDescriptor());
36                     e.invoke_virtual(PRINT_STREAM, PRINTLN);
37                 }
38                 return e;
39             }
40         };
41     }
42 }
43
Popular Tags