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

com.launchdarkly.sdk.android.Flag Maven / Gradle / Ivy

package com.launchdarkly.sdk.android;

import androidx.annotation.NonNull;

import com.launchdarkly.sdk.EvaluationReason;
import com.launchdarkly.sdk.LDValue;

class Flag implements FlagUpdate {

    @NonNull
    private final String key;
    private final LDValue value;
    private final Integer version;
    private final Integer flagVersion;
    private final Integer variation;
    private final Boolean trackEvents;
    private final Boolean trackReason;
    private final Long debugEventsUntilDate;
    private final EvaluationReason reason;

    Flag(@NonNull String key, LDValue value, Integer version, Integer flagVersion, Integer variation, Boolean trackEvents, Boolean trackReason, Long debugEventsUntilDate, EvaluationReason reason) {
        this.key = key;
        this.value = value;
        this.version = version;
        this.flagVersion = flagVersion;
        this.variation = variation;
        this.trackEvents = trackEvents;
        this.trackReason = trackReason;
        this.debugEventsUntilDate = debugEventsUntilDate;
        this.reason = reason;
    }

    @NonNull
    String getKey() {
        return key;
    }

    @NonNull
    LDValue getValue() {
        // normalize() ensures that nulls become LDValue.ofNull() - Gson may give us nulls
        return LDValue.normalize(value);
    }

    Integer getVersion() {
        return version;
    }

    Integer getFlagVersion() {
        return flagVersion;
    }

    Integer getVariation() {
        return variation;
    }

    boolean getTrackEvents() {
        return trackEvents == null ? false : trackEvents;
    }

    boolean isTrackReason() { return trackReason == null ? false : trackReason; }

    Long getDebugEventsUntilDate() {
        return debugEventsUntilDate;
    }

    EvaluationReason getReason() {
        return reason;
    }

    boolean isVersionMissing() {
        return version == null;
    }

    Integer getVersionForEvents() {
        if (flagVersion == null) {
            return version;
        }
        return flagVersion;
    }

    @Override
    public Flag updateFlag(Flag before) {
        if (before == null || this.isVersionMissing() || before.isVersionMissing() || this.getVersion() > before.getVersion()) {
            return this;
        }
        return before;
    }

    @Override
    public String flagToUpdate() {
        return key;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy