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

de.otto.edison.status.indicator.MutableStatusDetailIndicator Maven / Gradle / Ivy

There is a newer version: 0.82.2
Show newest version
package de.otto.edison.status.indicator;

import de.otto.edison.status.domain.StatusDetail;
import net.jcip.annotations.ThreadSafe;

import static java.util.Objects.requireNonNull;

@ThreadSafe
public class MutableStatusDetailIndicator implements StatusDetailIndicator {

    private volatile StatusDetail statusDetail;

    public MutableStatusDetailIndicator(final StatusDetail initialStatusDetail) {
        this.statusDetail = requireNonNull(initialStatusDetail, "Initial StatusDetail must not be null");
    }

    @Override
    public StatusDetail statusDetail() {
        return statusDetail;
    }

    public void update(final StatusDetail statusDetail) {
        if (!this.statusDetail.getName().equals(statusDetail.getName())) {
            throw new IllegalArgumentException("Must not update StatusDetail with different names. That would be confusing.");
        }
        this.statusDetail = requireNonNull(statusDetail, "Parameter StatusDetail must not be null");
    }

    public void toOk(String message) {
        update(statusDetail.toOk(message));
    }

    public void toWarning(String message) {
        update(statusDetail.toWarning(message));
    }

    public void toError(String message) {
        update(statusDetail.toError(message));
    }

    public void withDetail(String key, String value) {
        update(statusDetail.withDetail(key, value));
    }

    public void withoutDetail(String key) {
        update(statusDetail.withoutDetail(key));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy