1 /* 2 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. 3 * 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 * 6 * The contents of this file are subject to the terms of either the Universal Permissive License 7 * v 1.0 as shown at http://oss.oracle.com/licenses/upl 8 * 9 * or the following license: 10 * 11 * Redistribution and use in source and binary forms, with or without modification, are permitted 12 * provided that the following conditions are met: 13 * 14 * 1. Redistributions of source code must retain the above copyright notice, this list of conditions 15 * and the following disclaimer. 16 * 17 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of 18 * conditions and the following disclaimer in the documentation and/or other materials provided with 19 * the distribution. 20 * 21 * 3. Neither the name of the copyright holder nor the names of its contributors may be used to 22 * endorse or promote products derived from this software without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 26 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 30 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY 31 * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 package org.openjdk.jmc.agent.test.util; 34 35 import java.util.Arrays; 36 37 import org.objectweb.asm.AnnotationVisitor; 38 import org.objectweb.asm.Attribute; 39 import org.objectweb.asm.ClassVisitor; 40 import org.objectweb.asm.FieldVisitor; 41 import org.objectweb.asm.MethodVisitor; 42 import org.objectweb.asm.Opcodes; 43 44 public class TestVisitor extends ClassVisitor { 45 46 public TestVisitor() { 47 super(Opcodes.ASM5); 48 } 49 50 @Override 51 public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { 52 System.out.println("Visiting class: " + name); //$NON-NLS-1$ 53 System.out.println("Class Major Version: " + version); //$NON-NLS-1$ 54 System.out.println("Super class: " + superName); //$NON-NLS-1$ 55 System.out.println("Signature: " + signature); //$NON-NLS-1$ 56 System.out.println("Interfaces: " + Arrays.toString(interfaces)); //$NON-NLS-1$ 57 58 super.visit(version, access, name, signature, superName, interfaces); 59 } 60 61 @Override 62 public void visitOuterClass(String owner, String name, String desc) { 63 System.out.println("Outer class: " + owner); //$NON-NLS-1$ 64 super.visitOuterClass(owner, name, desc); 65 } 66 67 @Override 68 public AnnotationVisitor visitAnnotation(String desc, boolean visible) { 69 System.out.println("Annotation: " + desc); //$NON-NLS-1$ 70 return super.visitAnnotation(desc, visible); 71 } 72 73 @Override 74 public void visitAttribute(Attribute attr) { 75 System.out.println("Class Attribute: " + attr.type); //$NON-NLS-1$ 76 super.visitAttribute(attr); 77 } 78 79 @Override 80 public void visitInnerClass(String name, String outerName, String innerName, int access) { 81 System.out.println("Inner Class: " + innerName + " defined in " + outerName); //$NON-NLS-1$ //$NON-NLS-2$ 82 super.visitInnerClass(name, outerName, innerName, access); 83 } 84 85 @Override 86 public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { 87 System.out.println("Field: " + name + " " + desc + " value:" + value); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 88 return super.visitField(access, name, desc, signature, value); 89 } 90 91 @Override 92 public void visitEnd() { 93 System.out.println("Visit ended"); //$NON-NLS-1$ 94 super.visitEnd(); 95 } 96 97 @Override 98 public MethodVisitor visitMethod( 99 int access, String name, String descriptor, String signature, String[] exceptions) { 100 System.out.println("Method: " + name + descriptor); //$NON-NLS-1$ 101 return super.visitMethod(access, name, descriptor, signature, exceptions); 102 } 103 104 @Override 105 public void visitSource(String source, String debug) { 106 System.out.println("Source: " + source); //$NON-NLS-1$ 107 super.visitSource(source, debug); 108 } 109 110 }