diff options
Diffstat (limited to 'abi-check-plugin/src/main/java/com/yahoo/abicheck/collector/PublicSignatureCollector.java')
-rw-r--r-- | abi-check-plugin/src/main/java/com/yahoo/abicheck/collector/PublicSignatureCollector.java | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/abi-check-plugin/src/main/java/com/yahoo/abicheck/collector/PublicSignatureCollector.java b/abi-check-plugin/src/main/java/com/yahoo/abicheck/collector/PublicSignatureCollector.java index 4fee85c823a..b7520c58d96 100644 --- a/abi-check-plugin/src/main/java/com/yahoo/abicheck/collector/PublicSignatureCollector.java +++ b/abi-check-plugin/src/main/java/com/yahoo/abicheck/collector/PublicSignatureCollector.java @@ -1,11 +1,12 @@ package com.yahoo.abicheck.collector; import com.yahoo.abicheck.signature.JavaClassSignature; -import com.yahoo.abicheck.signature.JavaMethodSignature; import java.util.Arrays; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.MethodVisitor; @@ -18,26 +19,29 @@ public class PublicSignatureCollector extends ClassVisitor { private String currentName; private int currentAccess; - private Map<String, JavaMethodSignature> currentMethods; + private Set<String> currentMethods; public PublicSignatureCollector() { super(Opcodes.ASM6); } - private static String methodNameWithArguments(String name, List<String> argumentTypes) { - return String.format("%s(%s)", name, String.join(", ", argumentTypes)); - } - private static boolean testBit(long access, long mask) { return (access & mask) != 0; } + private static String describeMethod(String name, int access, String returnType, + List<String> argumentTypes) { + String attributes = String.join(" ", Util.convertAccess(access, Util.methodFlags)); + return String + .format("%s %s %s(%s)", attributes, returnType, name, String.join(", ", argumentTypes)); + } + @Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { currentName = Type.getObjectType(name).getClassName(); currentAccess = access; - currentMethods = new LinkedHashMap<>(); + currentMethods = new LinkedHashSet<>(); } @Override @@ -47,10 +51,8 @@ public class PublicSignatureCollector extends ClassVisitor { Type method = Type.getMethodType(descriptor); List<String> argumentTypes = Arrays.stream(method.getArgumentTypes()).map(Type::getClassName) .collect(Collectors.toList()); - name = methodNameWithArguments(name, argumentTypes); - currentMethods.put(name, - new JavaMethodSignature(Util.convertAccess(access, Util.methodFlags), - method.getReturnType().getClassName())); + currentMethods + .add(describeMethod(name, access, method.getReturnType().getClassName(), argumentTypes)); } return null; } |