private boolean hasMatch(Filter<T> filter, T element) { try { return filter.matches(element); } catch (ClassCastException e) { return false; } }
@Override public Boolean apply(R input) { return filter.matches(input); } };
@Override @SuppressWarnings("unchecked") public <E extends CtElement> E getParent(Filter<E> filter) throws ParentNotInitializedException { E current = (E) getParent(); while (true) { try { while (current != null && !filter.matches(current)) { current = (E) current.getParent(); } break; } catch (ClassCastException e) { // expected, some elements are not of type current = (E) current.getParent(); } } if (current != null && filter.matches(current)) { return current; } return null; }
/** * @param filter whose matches will be kept in the template. All others will be removed */ public PatternBuilderHelper keepTypeMembers(Filter<? super CtElement> filter) { for (CtTypeMember ctTypeMember : new ArrayList<>(getClonedPatternType().getTypeMembers())) { if (filter.matches(ctTypeMember) == false) { ctTypeMember.delete(); } } return this; }
private boolean hasMatch(Filter<T> filter, T element) { try { return filter.matches(element); } catch (ClassCastException e) { return false; } }
@SuppressWarnings("unchecked") @Override public void scan(CtElement element) { if (element == null) { return; } try { if (filter.matches((T) element)) { result.add((T) element); } } catch (ClassCastException e) { // expected, some elements are not of type T } super.scan(element); } }