All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.soffa.foundation.model.SideEffects Maven / Gradle / Ivy

There is a newer version: 0.17.31
Show newest version
package dev.soffa.foundation.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.NoArgsConstructor;
import org.checkerframework.checker.nullness.qual.NonNull;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;


@NoArgsConstructor
public class SideEffects {

    private final List effects = new ArrayList<>();

    public String getObject() {
        return "side_effects";
    }

    @JsonIgnore
    public boolean isEmpty() {
        return effects.isEmpty();
    }

    public SideEffects addAll(@NonNull SideEffects effects) {
        for (SideEffect effect : effects.getEffects()) {
            add(effect);
        }
        return this;
    }

    public void with(@NonNull String kind, @NonNull String subject, Consumer consumer) {
        ScopedSideEffects scoped = new ScopedSideEffects(this, kind, subject);
        consumer.accept(scoped);
    }

    public ScopedSideEffects of(@NonNull String kind, @NonNull String subject) {
        return new ScopedSideEffects(this, kind, subject);
    }

    public SideEffects add(@NonNull SideEffect... effects) {
        this.effects.addAll(Arrays.asList(effects));
        return this;
    }

    public List getEffects() {
        return effects;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy