1 27 package ch.ethz.prose.engine; 28 29 import java.lang.reflect.Field ; 31 32 33 import ch.ethz.jvmai.JVMAspectInterface; 34 import ch.ethz.jvmai.JoinPointKinds; 35 import ch.ethz.jvmai.ClassSpecific; 36 37 50 public class FieldAccessRequest extends JoinPointRequest implements JoinPointKinds,ClassSpecific { 51 52 private final Field field; 53 private final Class fieldClass; 54 55 62 public FieldAccessRequest(Field f,JoinPointManager o) 63 { 64 super(o); 65 field = f; 66 fieldClass = field.getDeclaringClass(); 67 } 68 69 public String getKind() 70 { 71 return KIND_FIELD_ACCESS_JP; 72 } 73 74 75 public int getMask() 76 { 77 return MASK_FIELD_ACCESS_JP; 78 } 79 80 83 public Class getTargetClass() 84 { 85 return fieldClass; 86 } 87 88 91 public Field getField() 92 { 93 return field; 94 } 95 96 protected void setWatch(Object listeners) 97 { 98 owner.getAspectInterface().setFieldAccessWatch(field,listeners); 99 } 100 101 protected void clearWatch() 102 { 103 owner.getAspectInterface().clearFieldAccessWatch(field); 104 } 105 106 public boolean equals(Object other) 107 { 108 FieldAccessRequest otherReq; 109 if (other instanceof FieldAccessRequest) 110 otherReq = (FieldAccessRequest)other; 111 else 112 return false; 113 return field.equals(otherReq.field); 114 } 115 116 public int hashCode() 117 { 118 return (field.hashCode() + 1); 119 } 120 121 public String toString() 122 { 123 return "FieldAccessRequest on " + fieldClass.getName() + "." + field.getName(); 124 } 125 126 } 127 128 129 | Popular Tags |