1 19 20 package edu.umd.cs.findbugs.ba.obl; 21 22 import java.util.LinkedList ; 23 24 import edu.umd.cs.findbugs.ba.Hierarchy; 25 26 37 public class PolicyDatabase { 38 39 public static final int ADD = 0; 40 41 public static final int DEL = 1; 42 43 private static class Entry { 44 private final String className; 45 private final String methodName; 46 private final String signature; 47 private final boolean isStatic; 48 private final int action; 49 private final Obligation obligation; 50 51 public Entry(String className, String methodName, String signature, 52 boolean isStatic, 53 int action, Obligation obligation) { 54 this.className = className; 55 this.methodName = methodName; 56 this.signature = signature; 57 this.isStatic = isStatic; 58 this.action = action; 59 this.obligation = obligation; 60 } 61 62 public String getClassName() { 63 return className; 64 } 65 66 public String getMethodName() { 67 return methodName; 68 } 69 70 public String getSignature() { 71 return signature; 72 } 73 74 public boolean isStatic() { 75 return isStatic; 76 } 77 78 public int getAction() { 79 return action; 80 } 81 82 public Obligation getObligation() { 83 return obligation; 84 } 85 } 86 87 private LinkedList <Entry> entryList; 89 90 public PolicyDatabase() { 91 this.entryList = new LinkedList <Entry>(); 92 } 93 94 public void addEntry( 95 String className, String methodName, String signature, boolean isStatic, 96 int action, Obligation obligation) { 97 entryList.add(new Entry(className, methodName, signature, isStatic, action, obligation)); 98 } 99 100 public Obligation lookup( 101 String className, String methodName, String signature, boolean isStatic, 102 int action) throws ClassNotFoundException { 103 for (Entry entry : entryList) { 104 if (isStatic == entry.isStatic() 105 && action == entry.getAction() 106 && methodName.equals(entry.getMethodName()) 107 && signature.equals(entry.getSignature()) 108 && Hierarchy.isSubtype(className, entry.getClassName())) { 109 return entry.getObligation(); 110 } 111 } 112 113 return null; 114 } 115 } 116 117 | Popular Tags |