1 19 20 package edu.umd.cs.findbugs.ba.interproc; 21 22 import java.io.IOException ; 23 import java.io.Writer ; 24 25 import org.apache.bcel.Constants; 26 27 import edu.umd.cs.findbugs.ba.InstanceField; 28 import edu.umd.cs.findbugs.ba.StaticField; 29 import edu.umd.cs.findbugs.ba.XField; 30 31 36 public abstract class FieldPropertyDatabase<Property> 37 extends PropertyDatabase<XField, Property> { 38 39 42 @Override 44 protected XField parseKey(String s) throws PropertyDatabaseFormatException { 45 String [] tuple = s.split(","); 46 if (tuple.length != 4) { 47 throw new PropertyDatabaseFormatException("Invalid field tuple: " + s); 48 } 49 50 String className = tuple[0]; 51 String fieldName = tuple[1]; 52 String signature = tuple[2]; 53 int accessFlags; 54 try { 55 accessFlags = Integer.parseInt(tuple[3]); 56 } catch (NumberFormatException e) { 57 throw new PropertyDatabaseFormatException("Invalid field access flags: " + tuple[3]); 58 } 59 60 return (accessFlags & Constants.ACC_STATIC) != 0 61 ? new StaticField(className, fieldName, signature, accessFlags) 62 : new InstanceField(className, fieldName, signature, accessFlags); 63 } 64 65 68 @Override 70 protected void writeKey(Writer writer, XField key) throws IOException { 71 writer.write(key.getClassName()); 72 writer.write(","); 73 writer.write(key.getName()); 74 writer.write(","); 75 writer.write(key.getSignature()); 76 writer.write(","); 77 writer.write(String.valueOf(key.getAccessFlags())); 78 } 79 80 } 81 | Popular Tags |