1 19 package edu.umd.cs.findbugs.ba.interproc; 20 21 import java.io.IOException ; 22 import java.io.Writer ; 23 24 import org.apache.bcel.Constants; 25 26 import edu.umd.cs.findbugs.ba.InstanceMethod; 27 import edu.umd.cs.findbugs.ba.StaticMethod; 28 import edu.umd.cs.findbugs.ba.XMethod; 29 30 36 public abstract class MethodPropertyDatabase<Property> 37 extends PropertyDatabase<XMethod, Property> { 38 39 @Override 40 protected XMethod parseKey(String methodStr) throws PropertyDatabaseFormatException { 41 String [] tuple = methodStr.split(","); 42 if (tuple.length != 4) 43 throw new PropertyDatabaseFormatException("Invalid method tuple: " + methodStr); 44 45 try { 46 int accessFlags = Integer.parseInt(tuple[3]); 47 boolean isStatic = (accessFlags & Constants.ACC_STATIC) != 0; 48 49 return isStatic 50 ? new StaticMethod(tuple[0], tuple[1], tuple[2], accessFlags) 51 : new InstanceMethod(tuple[0], tuple[1], tuple[2], accessFlags); 52 } catch (NumberFormatException e) { 53 return null; 54 } 55 } 56 57 @Override 58 protected void writeKey(Writer writer, XMethod method) throws IOException { 59 writer.write(method.getClassName()); 60 writer.write(","); 61 writer.write(method.getName()); 62 writer.write(","); 63 writer.write(method.getSignature()); 64 writer.write(","); 65 writer.write(String.valueOf(method.getAccessFlags())); 66 } 67 } 68 | Popular Tags |