1 7 package ch.ethz.prose.query; 8 9 import java.util.List ; 11 import ch.ethz.prose.crosscut.Crosscut; 12 13 14 20 public 21 class CrosscutSurrogate implements java.io.Serializable { 22 23 AspectSurrogate ownerSurrogate; 24 int index; 25 String crosscutClassName; 26 String initialToString; 27 28 32 public CrosscutSurrogate(AspectSurrogate as, Crosscut crsc) 33 { 34 if (as == null || crsc == null) 35 throw new IllegalArgumentException ("CrosscutSurrogate.init: NULL argument"); 36 37 ownerSurrogate = as; 38 crosscutClassName = crsc.getClass().getName(); 39 try 40 { 41 List crosscuts = crsc.getOwner().getCrosscuts(); 42 index = crosscuts.indexOf(crsc); 43 } 44 catch (NullPointerException e) 45 { 46 index = -1; 47 } 48 initialToString = crsc.toString(); 49 } 50 51 public AspectSurrogate getOwnerSurrogate() 52 { 53 return ownerSurrogate; 54 } 55 56 public String getCrosscutClassName() 57 { 58 return crosscutClassName; 59 } 60 61 public int getIndex() 62 { 63 return index; 64 } 65 66 76 public 77 boolean equals(Object obj) 78 { 79 return 80 obj instanceof CrosscutSurrogate && 81 ownerSurrogate.equals(((CrosscutSurrogate) obj).ownerSurrogate) && 82 index == ((CrosscutSurrogate) obj).index; 83 } 84 85 89 public 90 int hashCode() 91 { 92 return ownerSurrogate.hashCode() + index; 93 } 94 95 public String toString() 96 { 97 return initialToString; 98 } 99 100 101 102 103 104 } 105 106 107 | Popular Tags |