1 19 20 package edu.umd.cs.findbugs.model; 21 22 import java.util.Iterator ; 23 24 import edu.umd.cs.findbugs.FieldAnnotation; 25 import edu.umd.cs.findbugs.MethodAnnotation; 26 import edu.umd.cs.findbugs.ba.SignatureParser; 27 28 33 public abstract class ClassNameRewriterUtil { 34 35 42 public static String rewriteMethodSignature(ClassNameRewriter classNameRewriter, String methodSignature) { 43 if (classNameRewriter != IdentityClassNameRewriter.instance()) { 44 SignatureParser parser = new SignatureParser(methodSignature); 45 46 StringBuffer buf = new StringBuffer (); 47 48 buf.append('('); 49 for (Iterator <String > i = parser.parameterSignatureIterator(); i.hasNext();) { 50 buf.append(rewriteSignature(classNameRewriter, i.next())); 51 } 52 53 buf.append(')'); 54 buf.append(rewriteSignature(classNameRewriter, parser.getReturnTypeSignature())); 55 56 methodSignature = buf.toString(); 57 } 58 59 return methodSignature; 60 } 61 62 69 public static String rewriteSignature(ClassNameRewriter classNameRewriter, String signature) { 70 if (classNameRewriter != IdentityClassNameRewriter.instance() 71 && signature.startsWith("L")) { 72 73 String className = signature.substring(1, signature.length() - 1).replace('/', '.'); 74 className = classNameRewriter.rewriteClassName(className); 75 76 signature = "L" + className.replace('.', '/') + ";"; 77 } 78 79 return signature; 80 } 81 82 90 public static MethodAnnotation convertMethodAnnotation(ClassNameRewriter classNameRewriter, MethodAnnotation annotation) { 91 92 if (classNameRewriter != IdentityClassNameRewriter.instance()) { 93 annotation = new MethodAnnotation( 94 classNameRewriter.rewriteClassName(annotation.getClassName()), 95 annotation.getMethodName(), 96 rewriteMethodSignature(classNameRewriter, annotation.getMethodSignature()), 97 annotation.isStatic()); 98 } 99 return annotation; 100 } 101 102 110 public static FieldAnnotation convertFieldAnnotation(ClassNameRewriter classNameRewriter, FieldAnnotation annotation) { 111 112 if (classNameRewriter != IdentityClassNameRewriter.instance()) { 113 annotation = new FieldAnnotation( 114 classNameRewriter.rewriteClassName(annotation.getClassName()), 115 annotation.getFieldName(), 116 rewriteSignature(classNameRewriter, annotation.getFieldSignature()), 117 annotation.isStatic()); 118 } 119 return annotation; 120 } 121 122 } 123 | Popular Tags |