package com.openxc.messages;
import com.google.common.base.Objects;
/**
* A helper base class for a KeyMatcher that matches exactly one key, e.g.
* receiving the response for a command.
*/
public abstract class ExactKeyMatcher extends KeyMatcher {
public abstract MessageKey getKey();
public static ExactKeyMatcher buildExactMatcher(final MessageKey key) {
return new ExactKeyMatcher() {
private MessageKey mKey = key;
@Override
public boolean matches(MessageKey other) {
return mKey.equals(other);
}
@Override
public MessageKey getKey() {
return mKey;
}
};
}
public static ExactKeyMatcher buildExactMatcher(final KeyedMessage keyed) {
return buildExactMatcher(keyed.getKey());
}
@Override
public boolean equals(Object obj) {
return obj != null && getKey().equals(((ExactKeyMatcher) obj).getKey());
}
@Override
public int hashCode() {
return Objects.hashCode(getKey());
}
}