diff --git a/buildSrc/src/main/java/org/ultramine/gradle/task/SpeicialClassTransformTask.java b/buildSrc/src/main/java/org/ultramine/gradle/task/SpeicialClassTransformTask.java index 0a5a70f..4ce68df 100644 --- a/buildSrc/src/main/java/org/ultramine/gradle/task/SpeicialClassTransformTask.java +++ b/buildSrc/src/main/java/org/ultramine/gradle/task/SpeicialClassTransformTask.java @@ -14,6 +14,7 @@ import org.objectweb.asm.ClassWriter; import org.objectweb.asm.Opcodes; import org.objectweb.asm.tree.AbstractInsnNode; +import org.objectweb.asm.tree.AnnotationNode; import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.LdcInsnNode; import org.objectweb.asm.tree.MethodNode; @@ -178,6 +179,8 @@ @Override public void transform(ClassNode node) { + replaceAnnotations(node.visibleAnnotations); + replaceAnnotations(node.invisibleAnnotations); for(Object o : node.methods) { MethodNode m = (MethodNode) o; @@ -195,6 +198,38 @@ } } + private void replaceAnnotations(List anns) + { + if(anns == null) + return; + for(AnnotationNode ann : anns) + { + if(ann.values != null) + { + for(int x = 0; x < ann.values.size() - 1; x += 2) + { + Object value = ann.values.get(x+1); + if(value instanceof String) + { + String replacement = replaceMap.get(value); + if(replacement != null) + ann.values.set(x+1, replacement); + } + else if(value instanceof String[]) + { + String[] arr = (String[]) value; + for(int j = 0; j < arr.length; j++) + { + String replacement = replaceMap.get(arr[j]); + if(replacement != null) + arr[j] = replacement; + } + } + } + } + } + } + @Override public int getWriteFlags() {