CtrlK
BlogDocsLog inGet started
Tessl Logo

martinfrancois/java-streams

Help AI coding agents use Java Streams and Collectors well in new code, review, and cleanup without replacing one antipattern with another.

100

2.17x
Quality

100%

Does it follow best practices?

Impact

100%

2.17x

Average score across 4 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

task.mdevals/scenario-3/

Review payment screening stream change

Assume Java 24.

Use $java-streams to review this proposed change. Create review.md with a short review decision and a safer Java 24 stream chain.

The payment service calls a remote fraud-screening API inside passesFraudScreen(payment).

Before:

import java.util.Comparator;
import java.util.List;

final class PaymentScreening {
    List<Payment> releasablePayments(Batch batch) {
        return batch.payments().stream()
                .filter(this::passesFraudScreen)
                .sorted(Comparator.comparing(Payment::submittedAt))
                .toList();
    }

    boolean passesFraudScreen(Payment payment) {
        return FraudApi.approve(payment.reference());
    }

    record Batch(List<Payment> payments) {}
    record Payment(String reference, long submittedAt) {}
}

Proposed:

import java.util.Comparator;
import java.util.List;

final class PaymentScreening {
    List<Payment> releasablePayments(Batch batch) {
        return batch.payments().parallelStream()
                .filter(this::passesFraudScreen)
                .sorted(Comparator.comparing(Payment::submittedAt))
                .toList();
    }

    boolean passesFraudScreen(Payment payment) {
        return FraudApi.approve(payment.reference());
    }

    record Batch(List<Payment> payments) {}
    record Payment(String reference, long submittedAt) {}
}

README.md

tile.json