net.sf.retrotranslator.transformer
Class ReferenceVerifyingVisitor

java.lang.Object
  extended by net.sf.retrotranslator.transformer.NameTranslator
      extended by net.sf.retrotranslator.transformer.GenericClassVisitor
          extended by net.sf.retrotranslator.transformer.ReferenceVerifyingVisitor
All Implemented Interfaces:
ClassVisitor

 class ReferenceVerifyingVisitor
extends GenericClassVisitor

Author:
Taras Puchko

Field Summary
private  TargetEnvironment environment
           
private  SystemLogger logger
           
private  ClassVersion target
           
private  java.util.Set<java.lang.String> warnings
           
 
Constructor Summary
ReferenceVerifyingVisitor(ClassVersion target, TargetEnvironment environment, SystemLogger logger)
           
 
Method Summary
private  void cannotVerify(java.lang.String text, java.lang.ClassNotFoundException e)
           
private  void checkVersion(int version, java.lang.String name)
           
private  int findMember(boolean method, boolean stat, java.lang.String name, java.lang.String desc, java.lang.String owner)
           
private static java.lang.String getClassInfo(java.lang.String name)
           
private static java.lang.String getFieldInfo(java.lang.String owner, boolean stat, java.lang.String name, java.lang.String desc, java.lang.String message)
           
private static java.lang.String getMethodInfo(java.lang.String owner, boolean stat, java.lang.String name, java.lang.String desc, java.lang.String message)
           
private  void printClassNotFound(java.lang.ClassNotFoundException e)
           
private  void println(java.lang.String text)
           
protected  java.lang.String typeName(java.lang.String s)
           
 int verify(byte[] bytes)
           
 void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)
          Visits the header of the class.
protected  void visitFieldInstruction(MethodVisitor visitor, int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)
           
protected  void visitMethodInstruction(MethodVisitor visitor, int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)
           
 
Methods inherited from class net.sf.retrotranslator.transformer.GenericClassVisitor
visitAnnotation, visitAttribute, visitEnd, visitField, visitInnerClass, visitMethod, visitOuterClass, visitSource, visitTypeInstruction
 
Methods inherited from class net.sf.retrotranslator.transformer.NameTranslator
declarationSignature, fixIdentifier, identifier, methodDescriptor, type, typeDescriptor, typeNameOrTypeDescriptor, typeNames, typeOrValue, types, typeSignature
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

target

private final ClassVersion target

environment

private final TargetEnvironment environment

logger

private final SystemLogger logger

warnings

private java.util.Set<java.lang.String> warnings
Constructor Detail

ReferenceVerifyingVisitor

public ReferenceVerifyingVisitor(ClassVersion target,
                                 TargetEnvironment environment,
                                 SystemLogger logger)
Method Detail

verify

public int verify(byte[] bytes)

visit

public void visit(int version,
                  int access,
                  java.lang.String name,
                  java.lang.String signature,
                  java.lang.String superName,
                  java.lang.String[] interfaces)
Description copied from interface: ClassVisitor
Visits the header of the class.

Specified by:
visit in interface ClassVisitor
Overrides:
visit in class GenericClassVisitor
Parameters:
version - the class version.
access - the class's access flags (see Opcodes). This parameter also indicates if the class is deprecated.
name - the internal name of the class (see getInternalName).
signature - the signature of this class. May be null if the class is not a generic one, and does not extend or implement generic classes or interfaces.
superName - the internal of name of the super class (see getInternalName). For interfaces, the super class is Object. May be null, but only for the Object class.
interfaces - the internal names of the class's interfaces (see getInternalName). May be null.

checkVersion

private void checkVersion(int version,
                          java.lang.String name)

typeName

protected java.lang.String typeName(java.lang.String s)
Overrides:
typeName in class NameTranslator

printClassNotFound

private void printClassNotFound(java.lang.ClassNotFoundException e)

visitFieldInstruction

protected void visitFieldInstruction(MethodVisitor visitor,
                                     int opcode,
                                     java.lang.String owner,
                                     java.lang.String name,
                                     java.lang.String desc)
Overrides:
visitFieldInstruction in class GenericClassVisitor

visitMethodInstruction

protected void visitMethodInstruction(MethodVisitor visitor,
                                      int opcode,
                                      java.lang.String owner,
                                      java.lang.String name,
                                      java.lang.String desc)
Overrides:
visitMethodInstruction in class GenericClassVisitor

findMember

private int findMember(boolean method,
                       boolean stat,
                       java.lang.String name,
                       java.lang.String desc,
                       java.lang.String owner)
                throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

cannotVerify

private void cannotVerify(java.lang.String text,
                          java.lang.ClassNotFoundException e)

println

private void println(java.lang.String text)

getClassInfo

private static java.lang.String getClassInfo(java.lang.String name)

getFieldInfo

private static java.lang.String getFieldInfo(java.lang.String owner,
                                             boolean stat,
                                             java.lang.String name,
                                             java.lang.String desc,
                                             java.lang.String message)

getMethodInfo

private static java.lang.String getMethodInfo(java.lang.String owner,
                                              boolean stat,
                                              java.lang.String name,
                                              java.lang.String desc,
                                              java.lang.String message)