/** * Creates a new ConstantPoolEditor that automatically initializes class * references and class member references in new constants. * @param targetClass the target class in which constants are to be * edited. * @param programClassPool the program class pool from which new constants * can be initialized. * @param libraryClassPool the library class pool from which new constants * can be initialized. */ public ConstantPoolEditor(ProgramClass targetClass, ClassPool programClassPool, ClassPool libraryClassPool) { this.targetClass = targetClass; constantReferenceInitializer = programClassPool == null ? null : new WildcardConstantFilter( new ClassReferenceInitializer(programClassPool, libraryClassPool)); }
public void visitStringConstant(Clazz clazz, StringConstant stringConstant) { // Fill out the String class. stringConstant.javaLangStringClass = findClass(clazz, ClassConstants.NAME_JAVA_LANG_STRING); }
public void visitLocalVariableInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableInfo localVariableInfo) { localVariableInfo.referencedClass = findReferencedClass(clazz, localVariableInfo.getDescriptor(clazz)); }
public void visitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue) { initializeElementValue(clazz, annotation, classElementValue); classElementValue.referencedClasses = findReferencedClasses(clazz, classElementValue.getClassName(clazz)); }
public void visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant) { // Fill out the MethodType class. methodTypeConstant.javaLangInvokeMethodTypeClass = findClass(clazz, ClassConstants.NAME_JAVA_LANG_INVOKE_METHOD_TYPE); methodTypeConstant.referencedClasses = findReferencedClasses(clazz, methodTypeConstant.getType(clazz)); }
public void visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant) { invokeDynamicConstant.referencedClasses = findReferencedClasses(clazz, invokeDynamicConstant.getType(clazz)); }
public void visitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue) { initializeElementValue(clazz, annotation, constantElementValue); }
/** * Finalizes the editing of the class, and initializes all references * of the edited class w.r.t. the given program and library class pool. * At least one of the finishEditing methods should be called before * calling {@link #getProgramClass}. * * @param programClassPool the program class pool * @param libraryClassPool the library class pool */ public void finishEditing(ClassPool programClassPool, ClassPool libraryClassPool) { for (CodeComposer composer : methodComposers) { composer.finishEditing(); } // Initialize all references to/from the edited class. if (superClassName != null) { new ClassSuperHierarchyInitializer(programClassPool, libraryClassPool, null, null).visitProgramClass(programClass); new ClassSubHierarchyInitializer().visitProgramClass(programClass); } new ClassReferenceInitializer(programClassPool, libraryClassPool).visitProgramClass(programClass); }
public void visitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue) { initializeElementValue(clazz, annotation, enumConstantElementValue); enumConstantElementValue.referencedClasses = findReferencedClasses(clazz, enumConstantElementValue.getTypeName(clazz)); }
public void visitLocalVariableTypeInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeInfo localVariableTypeInfo) { localVariableTypeInfo.referencedClasses = findReferencedClasses(clazz, localVariableTypeInfo.getSignature(clazz)); }
public void visitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue) { initializeElementValue(clazz, annotation, constantElementValue); }
public void visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant) { // Fill out the MethodType class. methodTypeConstant.javaLangInvokeMethodTypeClass = findClass(clazz, ClassConstants.NAME_JAVA_LANG_INVOKE_METHOD_TYPE); methodTypeConstant.referencedClasses = findReferencedClasses(clazz, methodTypeConstant.getType(clazz)); }
/** * Finalizes the editing of the class, and initializes all references * of the edited class w.r.t. the given program and library class pool. * At least one of the finishEditing methods should be called before * calling {@link #getProgramClass}. * * @param programClassPool the program class pool * @param libraryClassPool the library class pool */ public void finishEditing(ClassPool programClassPool, ClassPool libraryClassPool) { for (CodeComposer composer : methodComposers) { composer.finishEditing(); } // Initialize all references to/from the edited class. if (superClassName != null) { new ClassSuperHierarchyInitializer(programClassPool, libraryClassPool, null, null).visitProgramClass(programClass); new ClassSubHierarchyInitializer().visitProgramClass(programClass); } new ClassReferenceInitializer(programClassPool, libraryClassPool).visitProgramClass(programClass); }
public void visitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue) { initializeElementValue(clazz, annotation, enumConstantElementValue); enumConstantElementValue.referencedClasses = findReferencedClasses(clazz, enumConstantElementValue.getTypeName(clazz)); }
public void visitStringConstant(Clazz clazz, StringConstant stringConstant) { // Fill out the String class. stringConstant.javaLangStringClass = findClass(clazz, ClassConstants.NAME_JAVA_LANG_STRING); }
/** * Creates a new ConstantPoolEditor that automatically initializes class * references and class member references in new constants. * @param targetClass the target class in which constants are to be * edited. * @param programClassPool the program class pool from which new constants * can be initialized. * @param libraryClassPool the library class pool from which new constants * can be initialized. */ public ConstantPoolEditor(ProgramClass targetClass, ClassPool programClassPool, ClassPool libraryClassPool) { this.targetClass = targetClass; constantReferenceInitializer = programClassPool == null ? null : new WildcardConstantFilter( new ClassReferenceInitializer(programClassPool, libraryClassPool)); }
public void visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant) { invokeDynamicConstant.referencedClasses = findReferencedClasses(clazz, invokeDynamicConstant.getType(clazz)); }
public void visitLibraryField(LibraryClass libraryClass, LibraryField libraryField) { libraryField.referencedClass = findReferencedClass(libraryClass, libraryField.getDescriptor(libraryClass)); }
public void visitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue) { initializeElementValue(clazz, annotation, constantElementValue); }
public void visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant) { // Fill out the MethodType class. methodTypeConstant.javaLangInvokeMethodTypeClass = findClass(clazz, ClassConstants.NAME_JAVA_LANG_INVOKE_METHOD_TYPE); methodTypeConstant.referencedClasses = findReferencedClasses(clazz, methodTypeConstant.getType(clazz)); }