package com.lassekoskela.maven.buildevents;
import java.lang.reflect.Field;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
public class FieldMatcher<T> extends BaseMatcher<T> {
private final String field;
private final Object value;
public FieldMatcher(String field, Object value) {
this.field = field;
this.value = value;
}
@Override
public boolean matches(Object candidate) {
try {
Field fieldObj = candidate.getClass().getField(field);
Object actualValue = fieldObj.get(candidate);
return areEqual(value, actualValue);
} catch (NoSuchFieldException e) {
return false;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private boolean areEqual(Object a, Object b) {
if (a == null) {
return b == null;
}
return a.equals(b);
}
@Override
public void describeTo(Description d) {
d.appendText(field + "=").appendValue(value);
}
}