package org.jnario.spec.jvmmodel; import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Lists.newArrayList; import java.util.List; import org.jnario.Executable; import org.jnario.jvmmodel.ExecutableProvider; public class SpecExecutableProvider implements ExecutableProvider { public List<Executable> getExecutables(Executable executable) { List<Executable> result = newArrayList(); addExecutables(result, executable); return result; } private void addExecutables(List<Executable> result, Executable executable) { Iterable<Executable> children = getChildren(executable); for (Executable child : children) { result.add(child); addExecutables(result, child); } } private Iterable<Executable> getChildren(Executable specification) { return filter(specification.eContents(), Executable.class); } }