LimitHandler.java

package com.designpatterns.behavioral.chainofresponsibility.applied;

public class LimitHandler extends ComplianceHandler {

    private final long maxAmountCents;

    public LimitHandler(long maxAmountCents) {
        this.maxAmountCents = maxAmountCents;
    }

    @Override
    protected ComplianceResult evaluate(ComplianceTransaction transaction) {
        if (transaction.amountCents() > maxAmountCents) {
            return ComplianceResult.rejected("LIMIT: amount exceeds the " + maxAmountCents + " cent threshold");
        }
        return ComplianceResult.pass();
    }
}