Skip to content

Instantly share code, notes, and snippets.

@dungvn3000
Last active August 20, 2025 09:50
Show Gist options
  • Save dungvn3000/b42a093e5f6e06f6b7ab6d8cce690ba5 to your computer and use it in GitHub Desktop.
Save dungvn3000/b42a093e5f6e06f6b7ab6d8cce690ba5 to your computer and use it in GitHub Desktop.
ChainFilter Jooby web framework
import io.jooby.Route.Filter;
import io.jooby.Route.Handler;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class ChainFilter implements Filter {
private final Filter chainfilter;
public ChainFilter(List<Filter> _filters) {
var filters = new ArrayList<>(_filters);
chainfilter = chain(filters.removeFirst(), filters);
}
@Override
public @NotNull Handler apply(@NotNull Handler next) {
return chainfilter.then(next);
}
private Filter chain(Filter head, List<Filter> tails) {
if (!tails.isEmpty()) {
Filter filter = tails.removeFirst();
return chain(head.then(filter), tails);
} else {
return head;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment