// Generated by delombok at Sun Feb 26 12:31:38 KST 2017 package scouter.bytebuddy.matcher; import java.util.Collection; import java.util.Iterator; import java.util.List; /** * An element matcher that matches a given iterable collection to a list of matchers on a per-element basis. For a * successful match, any element of the matched iterable collection must be successfully matched by a next * matcher of the supplied list of element matchers. For this to be possible, the matched iterable collection * and the supplied list of element matchers contain the same number of elements. * * @param <T> The type of the matched entity. */ public class CollectionOneToOneMatcher<T> extends ElementMatcher.Junction.AbstractBase<Iterable<? extends T>> { /** * The list of element matchers to match any elements of the matched iterable collection against. */ private final List<? extends ElementMatcher<? super T>> matchers; /** * Creates a new matcher that compares a matched iterable collection against a list of element matchers. * * @param matchers The list of element matchers to match any elements of the matched iterable collection * against. */ public CollectionOneToOneMatcher(List<? extends ElementMatcher<? super T>> matchers) { this.matchers = matchers; } @Override public boolean matches(Iterable<? extends T> target) { if ((target instanceof Collection) && ((Collection<?>) target).size() != matchers.size()) { return false; } Iterator<? extends ElementMatcher<? super T>> iterator = matchers.iterator(); for (T value : target) { if (!iterator.hasNext() || !iterator.next().matches(value)) { return false; } } return true; } @Override public String toString() { StringBuilder stringBuilder = new StringBuilder("containing("); boolean first = true; for (Object value : matchers) { if (first) { first = false; } else { stringBuilder.append(", "); } stringBuilder.append(value); } return stringBuilder.append(")").toString(); } @java.lang.Override @java.lang.SuppressWarnings("all") @javax.annotation.Generated("lombok") public boolean equals(final java.lang.Object o) { if (o == this) return true; if (!(o instanceof CollectionOneToOneMatcher)) return false; final CollectionOneToOneMatcher<?> other = (CollectionOneToOneMatcher<?>) o; if (!other.canEqual((java.lang.Object) this)) return false; final java.lang.Object this$matchers = this.matchers; final java.lang.Object other$matchers = other.matchers; if (this$matchers == null ? other$matchers != null : !this$matchers.equals(other$matchers)) return false; return true; } @java.lang.SuppressWarnings("all") @javax.annotation.Generated("lombok") protected boolean canEqual(final java.lang.Object other) { return other instanceof CollectionOneToOneMatcher; } @java.lang.Override @java.lang.SuppressWarnings("all") @javax.annotation.Generated("lombok") public int hashCode() { final int PRIME = 59; int result = 1; final java.lang.Object $matchers = this.matchers; result = result * PRIME + ($matchers == null ? 43 : $matchers.hashCode()); return result; } }