Checkpoint 2 — Code review
AI reads the actual files and writes complete implementations. You approve the diff.
+ src/main/java/com/acme/filter/RateLimitingFilter.java
+ @Component @Order(1)
+ public class RateLimitingFilter implements Filter {
+ private static final int LIMIT = 100;
+ private final Map<String, RateLimiter> limiters =
+ new ConcurrentHashMap<>();
+
+ @Override
+ public void doFilter(ServletRequest req, ...) {
+ String clientId = getClientId(req);
+ RateLimiter limiter = limiters.computeIfAbsent(
+ clientId, k -> RateLimiter.create(LIMIT / 60.0));
+ if (!limiter.tryAcquire()) {
+ HttpServletResponse r = (HttpServletResponse) res;
+ r.setStatus(429);
+ r.setHeader("Retry-After", "60");
+ auditService.logRateLimit(clientId);
+ return;
+ }
+ chain.doFilter(req, res);
+ }
+ }
Approve this diff? [yes/no]: yes