public void accept(Clazz clazz, MemberVisitor memberVisitor) { accept((ProgramClass)clazz, memberVisitor); }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Fix the attributes. programMember.attributesAccept(programClass, this); }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Let the visitor visit the classes referenced in the descriptor string. programMember.referencedClassesAccept(classVisitor); // Visit the attributes. programMember.attributesAccept(programClass, this); }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { String oldName = programMember.getName(programClass); String newName = MemberObfuscator.newMemberName(programMember); if (newName != null && !newName.equals(oldName)) { programMember.u2accessFlags |= ClassConstants.ACC_RENAMED; } } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { int currentAccessFlags = programMember.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); // Compute the required access level. int requiredAccessLevel = programClass.equals(referencingClass) ? AccessUtil.PRIVATE : inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : referencedClass.extends_(referencingClass) && referencingClass.extends_(programClass) ? AccessUtil.PROTECTED : AccessUtil.PUBLIC; // Fix the class member access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programMember.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Let the visitor visit the classes referenced in the descriptor string. programMember.referencedClassesAccept(classVisitor); }
/** * Returns the line number range of the given class member, followed by a * colon, or just an empty String if no range is available. */ private static String lineNumberRange(ProgramClass programClass, ProgramMember programMember) { String range = programMember.getLineNumberRange(programClass); return range != null ? (" (" + range + ")") : ""; } }
/** * Returns the line number range of the given class member as "m:n", * if it can find it, or <code>null</code> otherwise. */ public String getLineNumberRange(Clazz clazz) { CodeAttribute codeAttribute = (CodeAttribute)getAttribute(clazz, ClassConstants.ATTR_Code); if (codeAttribute == null) { return null; } LineNumberTableAttribute lineNumberTableAttribute = (LineNumberTableAttribute)codeAttribute.getAttribute(clazz, ClassConstants.ATTR_LineNumberTable); if (lineNumberTableAttribute == null) { return null; } return "" + lineNumberTableAttribute.getLineNumber(0) + ":" + lineNumberTableAttribute.getLineNumber(Integer.MAX_VALUE); }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { String oldName = programMember.getName(programClass); String newName = MemberObfuscator.newMemberName(programMember); if (newName != null && !newName.equals(oldName)) { programMember.u2accessFlags |= ClassConstants.ACC_RENAMED; } } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Do we need to update the access flags? int currentAccessFlags = programMember.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); if (currentAccessLevel < AccessUtil.PUBLIC) { // Compute the required access level. // For protected access, the referencing method may not be // static. We're also taking into account the class in the // invocation and the class that actually contains the member. int requiredAccessLevel = programClass.equals(referencingClass) ? AccessUtil.PRIVATE : inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : (referencingMethodAccessFlags & ClassConstants.ACC_STATIC) == 0 && (referencedClass == null || referencingClass.extends_(referencedClass)) && referencingClass.extends_(programClass) ? AccessUtil.PROTECTED : AccessUtil.PUBLIC; // Fix the class member access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programMember.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } } } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Let the visitor visit the classes referenced in the descriptor string. programMember.referencedClassesAccept(classVisitor); }
/** * Returns the line number range of the given class member, followed by a * colon, or just an empty String if no range is available. */ private static String lineNumberRange(ProgramClass programClass, ProgramMember programMember) { String range = programMember.getLineNumberRange(programClass); return range != null ? (range + ":") : ""; } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Fix the attributes. programMember.attributesAccept(programClass, this); }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Let the visitor visit the classes referenced in the descriptor string. programMember.referencedClassesAccept(classVisitor); // Visit the attributes. programMember.attributesAccept(programClass, this); }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { String oldName = programMember.getName(programClass); String newName = MemberObfuscator.newMemberName(programMember); if (newName != null && !newName.equals(oldName)) { programMember.u2accessFlags |= ClassConstants.ACC_RENAMED; } } }
public void accept(Clazz clazz, MemberVisitor memberVisitor) { accept((ProgramClass)clazz, memberVisitor); }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Do we need to update the access flags? int currentAccessFlags = programMember.getAccessFlags(); int currentAccessLevel = AccessUtil.accessLevel(currentAccessFlags); if (currentAccessLevel < AccessUtil.PUBLIC) { // Compute the required access level. // For protected access, the referencing method may not be // static. We're also taking into account the class in the // invocation and the class that actually contains the member. int requiredAccessLevel = programClass.equals(referencingClass) ? AccessUtil.PRIVATE : inSamePackage(programClass, referencingClass) ? AccessUtil.PACKAGE_VISIBLE : (referencingMethodAccessFlags & ClassConstants.ACC_STATIC) == 0 && (referencedClass == null || referencingClass.extends_(referencedClass)) && referencingClass.extends_(programClass) ? AccessUtil.PROTECTED : AccessUtil.PUBLIC; // Fix the class member access flags if necessary. if (currentAccessLevel < requiredAccessLevel) { programMember.u2accessFlags = AccessUtil.replaceAccessFlags(currentAccessFlags, AccessUtil.accessFlags(requiredAccessLevel)); } } } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { // Let the visitor visit the classes referenced in the descriptor string. programMember.referencedClassesAccept(classVisitor); }
/** * Returns the line number range of the given class member, followed by a * colon, or just an empty String if no range is available. */ private static String lineNumberRange(ProgramClass programClass, ProgramMember programMember) { String range = programMember.getLineNumberRange(programClass); return range != null ? (range + ":") : ""; } }
public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) { programMember.attributesAccept(programClass, attributeVisitor); // Visit the attributes further down the member structure, if required. if (deep) { programMember.attributesAccept(programClass, this); } }