| package net.sf.taverna.t2.servicedescriptions; |
| |
| import java.util.List; |
| |
| import net.sf.taverna.t2.lang.beans.PropertyAnnotated; |
| |
| public abstract class IdentifiedObject extends PropertyAnnotated { |
| @Override |
| public boolean equals(Object obj) { |
| if (!(obj instanceof IdentifiedObject)) |
| return false; |
| List<? extends Object> myIdentifyingData = getIdentifyingData(); |
| if (myIdentifyingData == null) |
| return super.equals(obj); |
| if (!getClass().isInstance(obj) && obj.getClass().isInstance(this)) |
| return false; |
| IdentifiedObject id = (IdentifiedObject) obj; |
| return myIdentifyingData.equals(id.getIdentifyingData()); |
| } |
| |
| @Override |
| public int hashCode() { |
| List<? extends Object> identifyingData = getIdentifyingData(); |
| if (identifyingData == null) |
| return super.hashCode(); |
| return identifyingData.hashCode(); |
| } |
| |
| protected abstract List<? extends Object> getIdentifyingData(); |
| } |