diff --git a/deobfuscator-api/src/main/java/uwu/narumi/deobfuscator/api/asm/remapper/NamesRemapper.java b/deobfuscator-api/src/main/java/uwu/narumi/deobfuscator/api/asm/remapper/NamesRemapper.java index d283bb78..b34c99fd 100644 --- a/deobfuscator-api/src/main/java/uwu/narumi/deobfuscator/api/asm/remapper/NamesRemapper.java +++ b/deobfuscator-api/src/main/java/uwu/narumi/deobfuscator/api/asm/remapper/NamesRemapper.java @@ -1,5 +1,6 @@ package uwu.narumi.deobfuscator.api.asm.remapper; +import org.objectweb.asm.Type; import org.objectweb.asm.commons.Remapper; import uwu.narumi.deobfuscator.api.asm.FieldRef; import uwu.narumi.deobfuscator.api.asm.MethodRef; @@ -29,4 +30,11 @@ public String map(String internalName) { String newName = this.classMappings.get(internalName); return newName != null ? newName : internalName; } + + @Override + public String mapAnnotationAttributeName(String descriptor, String name) { + String owner = Type.getType(descriptor).getInternalName(); + String newName = this.methodMappings.get(new MethodRef(owner, name, descriptor)); + return newName != null ? newName : name; + } } diff --git a/testData/src/java/src/main/java/remap/Cat.java b/testData/src/java/src/main/java/remap/Cat.java index 60611088..867c2484 100644 --- a/testData/src/java/src/main/java/remap/Cat.java +++ b/testData/src/java/src/main/java/remap/Cat.java @@ -1,24 +1,28 @@ package remap; +@PetMeta(type = "Cat") public class Cat extends Pet { - private final String name; + private final String name; - public Cat(String name) { - this.name = name; - } + public Cat(String name) { + this.name = name; + } - @Override - public void eat() { - System.out.println(this.name + ": Cat is eating"); - } + @Override + public void eat() { + String type = getClass().getAnnotation(PetMeta.class).type(); + System.out.println(this.name + ": " + type + " is eating"); + } - @Override - public void sleep() { - System.out.println(this.name + ": Cat is sleeping"); - } + @Override + public void sleep() { + String type = getClass().getAnnotation(PetMeta.class).type(); + System.out.println(this.name + ": " + type + " is sleeping"); + } - @Override - public void play() { - System.out.println(this.name + ": Cat is playing"); - } + @Override + public void play() { + String type = getClass().getAnnotation(PetMeta.class).type(); + System.out.println(this.name + ": " + type + " is playing"); + } } diff --git a/testData/src/java/src/main/java/remap/PetMeta.java b/testData/src/java/src/main/java/remap/PetMeta.java new file mode 100644 index 00000000..051bd837 --- /dev/null +++ b/testData/src/java/src/main/java/remap/PetMeta.java @@ -0,0 +1,9 @@ +package remap; + +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface PetMeta { + String type(); +}