package de.otto.wickettester; import org.apache.wicket.Component; public class HavingDirectParentComponentMatcher<T extends Component, CT extends Component> implements ComponentMatcher<T, T> { private final ComponentMatcher<CT, CT> matcher; public HavingDirectParentComponentMatcher(final ComponentMatcher<CT, CT> matcher) { this.matcher = matcher; } @SuppressWarnings("unchecked") @Override public T match(final T component) { // this is just plain wrong, but works, since the type matcher is in the chain return matcher.match((CT) component.getParent()) != null ? component : null; } @Override public String criterionAsString() { return String.format("having a direct parent (%s)", matcher.criterionAsString()); } }