PushNotificationObserver.java

package com.designpatterns.behavioral.observer.applied;

import java.util.ArrayList;
import java.util.List;

public class PushNotificationObserver implements TransactionStatusObserver {

    private final List<String> pushedMessages = new ArrayList<>();

    @Override
    public void onStatusChanged(String transactionId, TransactionStatus newStatus) {
        if (newStatus == TransactionStatus.SETTLED || newStatus == TransactionStatus.FAILED) {
            pushedMessages.add("Your transaction " + transactionId + " is " + newStatus.name().toLowerCase());
        }
    }

    public List<String> pushedMessages() {
        return List.copyOf(pushedMessages);
    }
}