- public List<ControlledComponent> components() {
- ImmutableList.Builder<ControlledComponent> components = ImmutableList.builder();
- List<ControlledComponent> currentComponents = Lists.newArrayList();
- components.add(source);
- currentComponents.add(source);
- while (!currentComponents.isEmpty()) {
- Collection<Sink> sinks = this.sinks((Source) currentComponents.remove(0));
- for (Sink sink : sinks) {
- components.add(sink);
- if (sink instanceof Source) {
- currentComponents.add(sink);
- }
+ public List<Filter> filters() {
+ ImmutableList.Builder<Filter> filters = ImmutableList.builder();
+ List<Filter> remainingFilters = Lists.newArrayList();
+ filters.add(source);
+ remainingFilters.add(source);
+ while (!remainingFilters.isEmpty()) {
+ Collection<Filter> sinks = this.filters(remainingFilters.remove(0));
+ for (Filter sink : sinks) {
+ filters.add(sink);
+ remainingFilters.add(sink);