package org.applause.lang.validation; import java.util.Iterator; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; /** * Taken from http://codemonkeyism.com/creating-a-fluent-interface-for-google-collections/ */ public class FluentIterable<T> implements Iterable<T> { private Iterable<T> iterable; public FluentIterable(Iterable<T> iterable) { this.iterable = iterable; } public static <T> FluentIterable<T> with(Iterable<T> iterable) { return new FluentIterable<T>(iterable); } public FluentIterable<T> filter(Predicate<? super T> predicate) { return new FluentIterable<T>(Iterables.filter(this.iterable, predicate)); } public Iterator<T> iterator() { return this.iterable.iterator(); } public boolean exactlyOnce() { return Iterables.size(this) == 1; } }