← back to mixpanel__mixpanel-java

Function bodies 269 total

All specs Real LLM only Function bodies
hasVariantSplits method · java · L127-L129 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Rollout.java
    public boolean hasVariantSplits() {
        return variantSplits != null && !variantSplits.isEmpty();
    }
toString method · java · L132-L140 (9 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Rollout.java
    public String toString() {
        return "Rollout{" +
                "rolloutPercentage=" + rolloutPercentage +
                ", legacyRuntimeEvaluationDefinition=" + legacyRuntimeEvaluationDefinition +
                ", runtimeEvaluationRule=" + runtimeEvaluationRule +
                ", variantOverride='" + variantOverride + '\'' +
                ", variantSplits=" + variantSplits +
                '}';
    }
getRuntimeEvaluationRule method · java · L145-L147 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Rollout.java
    public JSONObject getRuntimeEvaluationRule() {
        return runtimeEvaluationRule;
    }
RuleSet class · java · L17-L83 (67 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
public final class RuleSet {
    private final List<Variant> variants;
    private final List<Rollout> rollouts;
    private final Map<String, String> testUserOverrides;

    /**
     * Creates a new RuleSet with all components.
     *
     * @param variants the list of available variants for this flag
     * @param rollouts the list of rollout rules (evaluated in order)
     * @param testUserOverrides optional map of distinct_id to variant key for test users
     */
    public RuleSet(List<Variant> variants, List<Rollout> rollouts, Map<String, String> testUserOverrides) {
        this.variants = variants != null ? Collections.unmodifiableList(variants) : Collections.emptyList();
        this.rollouts = rollouts != null ? Collections.unmodifiableList(rollouts) : Collections.emptyList();
        this.testUserOverrides = testUserOverrides != null
            ? Collections.unmodifiableMap(testUserOverrides)
            : null;
    }

    /**
     * Creates a new RuleSet without test user 
RuleSet method · java · L29-L35 (7 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
    public RuleSet(List<Variant> variants, List<Rollout> rollouts, Map<String, String> testUserOverrides) {
        this.variants = variants != null ? Collections.unmodifiableList(variants) : Collections.emptyList();
        this.rollouts = rollouts != null ? Collections.unmodifiableList(rollouts) : Collections.emptyList();
        this.testUserOverrides = testUserOverrides != null
            ? Collections.unmodifiableMap(testUserOverrides)
            : null;
    }
RuleSet method · java · L43-L45 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
    public RuleSet(List<Variant> variants, List<Rollout> rollouts) {
        this(variants, rollouts, null);
    }
getVariants method · java · L50-L52 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
    public List<Variant> getVariants() {
        return variants;
    }
Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
getRollouts method · java · L57-L59 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
    public List<Rollout> getRollouts() {
        return rollouts;
    }
getTestUserOverrides method · java · L64-L66 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
    public Map<String, String> getTestUserOverrides() {
        return testUserOverrides;
    }
hasTestUserOverrides method · java · L71-L73 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
    public boolean hasTestUserOverrides() {
        return testUserOverrides != null && !testUserOverrides.isEmpty();
    }
toString method · java · L76-L82 (7 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/RuleSet.java
    public String toString() {
        return "RuleSet{" +
                "variants=" + variants +
                ", rollouts=" + rollouts +
                ", testUserOverrides=" + testUserOverrides +
                '}';
    }
SelectedVariant class · java · L17-L124 (108 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
public final class SelectedVariant<T> {
    private final String variantKey;
    private final T variantValue;
    private final UUID experimentId;
    private final Boolean isExperimentActive;
    private final Boolean isQaTester;

    /**
     * Creates a SelectedVariant with only a value (key is null).
     * This is typically used for fallback responses.
     *
     * @param variantValue the fallback value
     */
    public SelectedVariant(T variantValue) {
        this(null, variantValue, null, null, null);
    }

    /**
     * Creates a new SelectedVariant with experimentation metadata.
     *
     * @param variantKey the key of the selected variant (may be null for fallback)
     * @param variantValue the value of the selected variant (may be null for fallback)
     * @param experimentId the experiment ID (may be null)
     * @param isExperimentActive whether the experiment is active (may be null)
     * @param isQaTester whether the user is a QA tester (may be null)
     */
 
SelectedVariant method · java · L30-L32 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public SelectedVariant(T variantValue) {
        this(null, variantValue, null, null, null);
    }
SelectedVariant method · java · L43-L49 (7 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public SelectedVariant(String variantKey, T variantValue, UUID experimentId, Boolean isExperimentActive, Boolean isQaTester) {
        this.variantKey = variantKey;
        this.variantValue = variantValue;
        this.experimentId = experimentId;
        this.isExperimentActive = isExperimentActive;
        this.isQaTester = isQaTester;
    }
getVariantKey method · java · L54-L56 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public String getVariantKey() {
        return variantKey;
    }
Repobility's GitHub App fixes findings like these · https://github.com/apps/repobility-bot
getVariantValue method · java · L61-L63 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public T getVariantValue() {
        return variantValue;
    }
getExperimentId method · java · L68-L70 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public UUID getExperimentId() {
        return experimentId;
    }
getIsExperimentActive method · java · L75-L77 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public Boolean getIsExperimentActive() {
        return isExperimentActive;
    }
getIsQaTester method · java · L82-L84 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public Boolean getIsQaTester() {
        return isQaTester;
    }
isSuccess method · java · L89-L91 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public boolean isSuccess() {
        return variantKey != null;
    }
isFallback method · java · L96-L98 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public boolean isFallback() {
        return variantKey == null;
    }
toString method · java · L101-L109 (9 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public String toString() {
        return "SelectedVariant{" +
                "variantKey='" + variantKey + '\'' +
                ", variantValue=" + variantValue +
                ", experimentId=" + experimentId +
                ", isExperimentActive=" + isExperimentActive +
                ", isQaTester=" + isQaTester +
                '}';
    }
equals method · java · L112-L123 (12 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/SelectedVariant.java
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        SelectedVariant<?> that = (SelectedVariant<?>) o;

        if (variantKey != null ? !variantKey.equals(that.variantKey) : that.variantKey != null) return false;
        if (variantValue != null ? !variantValue.equals(that.variantValue) : that.variantValue != null) return false;
        if (experimentId != null ? !experimentId.equals(that.experimentId) : that.experimentId != null) return false;
        if (isExperimentActive != null ? !isExperimentActive.equals(that.isExperimentActive) : that.isExperimentActive != null) return false;
        return isQaTester != null ? isQaTester.equals(that.isQaTester) : that.isQaTester == null;
    }
Repobility (the analyzer behind this table) · https://repobility.com
Variant class · java · L13-L71 (59 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Variant.java
public final class Variant {
    private final String key;
    private final Object value;
    private final boolean isControl;
    private final float split;

    /**
     * Creates a new Variant.
     *
     * @param key the unique identifier for this variant
     * @param value the value associated with this variant (can be boolean, string, number, or JSON object)
     * @param isControl whether this variant is the control variant
     * @param split the percentage split allocation for this variant (0.0-1.0)
     */
    public Variant(String key, Object value, boolean isControl, float split) {
        this.key = key;
        this.value = value;
        this.isControl = isControl;
        this.split = split;
    }

    /**
     * @return the unique identifier for this variant
     */
    public String getKey() {
        return key;
    }

    /**
     * @return the value associated with this variant
     */
    public Object getValue() {
        return value;
    }

    /**
     * @r
Variant method · java · L27-L32 (6 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Variant.java
    public Variant(String key, Object value, boolean isControl, float split) {
        this.key = key;
        this.value = value;
        this.isControl = isControl;
        this.split = split;
    }
getKey method · java · L37-L39 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Variant.java
    public String getKey() {
        return key;
    }
getValue method · java · L44-L46 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Variant.java
    public Object getValue() {
        return value;
    }
isControl method · java · L51-L53 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Variant.java
    public boolean isControl() {
        return isControl;
    }
getSplit method · java · L58-L60 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Variant.java
    public float getSplit() {
        return split;
    }
toString method · java · L63-L70 (8 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/Variant.java
    public String toString() {
        return "Variant{" +
                "key='" + key + '\'' +
                ", value=" + value +
                ", isControl=" + isControl +
                ", split=" + split +
                '}';
    }
VariantOverride class · java · L12-L37 (26 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/VariantOverride.java
public final class VariantOverride {
    private final String key;

    /**
     * Creates a new VariantOverride.
     *
     * @param key the variant key to force selection of
     */
    public VariantOverride(String key) {
        this.key = key;
    }

    /**
     * @return the variant key
     */
    public String getKey() {
        return key;
    }

    @Override
    public String toString() {
        return "VariantOverride{" +
                "key='" + key + '\'' +
                '}';
    }
}
Repobility · open methodology · https://repobility.com/research/
VariantOverride method · java · L20-L22 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/VariantOverride.java
    public VariantOverride(String key) {
        this.key = key;
    }
getKey method · java · L27-L29 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/VariantOverride.java
    public String getKey() {
        return key;
    }
toString method · java · L32-L36 (5 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/model/VariantOverride.java
    public String toString() {
        return "VariantOverride{" +
                "key='" + key + '\'' +
                '}';
    }
BaseFlagsProvider class · java · L31-L239 (209 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
public abstract class BaseFlagsProvider<C extends BaseFlagsConfig> {
    protected static final int BUFFER_SIZE = 4096;

    protected final String projectToken;
    protected final C config;
    protected final String sdkVersion;
    protected final EventSender eventSender;

    /**
     * Creates a new BaseFlagsProvider.
     *
     * @param projectToken the Mixpanel project token
     * @param config the flags configuration
     * @param sdkVersion the SDK version string
     * @param eventSender the EventSender implementation for tracking exposure events
     */
    protected BaseFlagsProvider(String projectToken, C config, String sdkVersion, EventSender eventSender) {
        this.projectToken = projectToken;
        this.config = config;
        this.sdkVersion = sdkVersion;
        this.eventSender = eventSender;
    }

    // #region HTTP Methods

    /**
     * Performs an HTTP GET request with Basic Auth.
     * <p>
     * This method is protected to allow test subclasses to 
BaseFlagsProvider method · java · L47-L52 (6 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    protected BaseFlagsProvider(String projectToken, C config, String sdkVersion, EventSender eventSender) {
        this.projectToken = projectToken;
        this.config = config;
        this.sdkVersion = sdkVersion;
        this.eventSender = eventSender;
    }
httpGet method · java · L62-L92 (31 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    protected String httpGet(String urlString) throws IOException {
        URL url = new URL(urlString);
        URLConnection conn = url.openConnection();
        conn.setConnectTimeout(config.getRequestTimeoutSeconds() * 1000);
        conn.setReadTimeout(config.getRequestTimeoutSeconds() * 1000);

        // Set Basic Auth header (token as username, empty password)
        String auth = projectToken + ":";
        String encodedAuth = java.util.Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8));
        conn.setRequestProperty("Authorization", "Basic " + encodedAuth);

        // Set custom headers
        conn.setRequestProperty("X-Scheme", "https");
        conn.setRequestProperty("X-Forwarded-Proto", "https");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("traceparent", TraceparentUtil.generateTraceparent());

        InputStream responseStream = null;
        try {
            responseStream = conn.ge
readStream method · java · L97-L108 (12 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    protected String readStream(InputStream in) throws IOException {
        StringBuilder out = new StringBuilder();
        InputStreamReader reader = new InputStreamReader(in, StandardCharsets.UTF_8);

        char[] buffer = new char[BUFFER_SIZE];
        int count;
        while ((count = reader.read(buffer)) != -1) {
            out.append(buffer, 0, count);
        }

        return out.toString();
    }
getVariant method · java · L141-L143 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    public <T> SelectedVariant<T> getVariant(String flagKey, SelectedVariant<T> fallback, Map<String, Object> context) {
        return getVariant(flagKey, fallback, context, true);
    }
Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
getVariantValue method · java · L166-L170 (5 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    public <T> T getVariantValue(String flagKey, T fallbackValue, Map<String, Object> context) {
        SelectedVariant<T> fallback = new SelectedVariant<>(fallbackValue);
        SelectedVariant<T> result = getVariant(flagKey, fallback, context, true);
        return result.getVariantValue();
    }
isEnabled method · java · L183-L188 (6 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    public boolean isEnabled(String flagKey, Map<String, Object> context) {
        SelectedVariant<Object> result = getVariant(flagKey, new SelectedVariant<>(false), context, true);
        Object value = result.getVariantValue();

        return value instanceof Boolean && (Boolean) value;
    }
trackExposure method · java · L197-L228 (32 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    protected void trackExposure(String distinctId, String flagKey, String variantKey,
                                 String evaluationMode, Consumer<JSONObject> addTimingProperties,
                                 UUID experimentId, Boolean isExperimentActive, Boolean isQaTester) {
        try {
            JSONObject properties = new JSONObject();
            properties.put("Experiment name", flagKey);
            properties.put("Variant name", variantKey);
            properties.put("$experiment_type", "feature_flag");
            properties.put("Flag evaluation mode", evaluationMode);

            // Add experiment metadata
            if (experimentId != null) {
                properties.put("$experiment_id", experimentId.toString());
            }
            if (isExperimentActive != null) {
                properties.put("$is_experiment_active", isExperimentActive);
            }
            if (isQaTester != null) {
                properties.put("$is_qa_tester", isQaTeste
shutdown method · java · L236-L238 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/BaseFlagsProvider.java
    public void shutdown() {
        // No-op by default
    }
LocalFlagsProvider function · java · L51-L57 (7 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/LocalFlagsProvider.java
    public LocalFlagsProvider(LocalFlagsConfig config, String sdkVersion, EventSender eventSender) {
        super(config.getProjectToken(), config, sdkVersion, eventSender);

        this.flagDefinitions = new AtomicReference<>(new HashMap<>());
        this.ready = new AtomicBoolean(false);
        this.closed = new AtomicBoolean(false);
    }
startPollingForDefinitions function · java · L67-L93 (27 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/LocalFlagsProvider.java
    public void startPollingForDefinitions() {
        if (closed.get()) {
            logger.log(Level.WARNING, "Cannot start polling: provider is closed");
            return;
        }

        // Initial fetch
        fetchDefinitions();

        // Start background polling if enabled
        if (config.isEnablePolling()) {
            pollingExecutor = Executors.newSingleThreadScheduledExecutor(r -> {
                Thread t = new Thread(r, "mixpanel-flags-poller");
                t.setDaemon(true);
                return t;
            });

            pollingExecutor.scheduleAtFixedRate(
                this::fetchDefinitions,
                config.getPollingIntervalSeconds(),
                config.getPollingIntervalSeconds(),
                TimeUnit.SECONDS
            );

            logger.log(Level.INFO, "Started polling for flag definitions every " + config.getPollingIntervalSeconds() + " seconds");
        }
    }
stopPollingForDefinitions function · java · L98-L111 (14 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/LocalFlagsProvider.java
    public void stopPollingForDefinitions() {
        if (pollingExecutor != null) {
            pollingExecutor.shutdown();
            try {
                if (!pollingExecutor.awaitTermination(5, TimeUnit.SECONDS)) {
                    pollingExecutor.shutdownNow();
                }
            } catch (InterruptedException e) {
                pollingExecutor.shutdownNow();
                Thread.currentThread().interrupt();
            }
            pollingExecutor = null;
        }
    }
areFlagsReady function · java · L120-L122 (3 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/LocalFlagsProvider.java
    public boolean areFlagsReady() {
        return ready.get();
    }
Repobility's GitHub App fixes findings like these · https://github.com/apps/repobility-bot
fetchDefinitions function · java · L127-L140 (14 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/LocalFlagsProvider.java
    private void fetchDefinitions() {
        try {
            String endpoint = buildDefinitionsUrl();
            String response = httpGet(endpoint);

            Map<String, ExperimentationFlag> newDefinitions = parseDefinitions(response);
            flagDefinitions.set(newDefinitions);
            ready.set(true);

            logger.log(Level.FINE, "Successfully fetched " + newDefinitions.size() + " flag definitions");
        } catch (Exception e) {
            logger.log(Level.WARNING, "Failed to fetch flag definitions", e);
        }
    }
parseDefinitions function · java · L161-L182 (22 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/LocalFlagsProvider.java
    private Map<String, ExperimentationFlag> parseDefinitions(String jsonResponse) {
        Map<String, ExperimentationFlag> definitions = new HashMap<>();

        try {
            JSONObject root = new JSONObject(jsonResponse);
            JSONArray flags = root.optJSONArray("flags");

            if (flags == null) {
                return definitions;
            }

            for (int i = 0; i < flags.length(); i++) {
                JSONObject flagJson = flags.getJSONObject(i);
                ExperimentationFlag flag = parseFlag(flagJson);
                definitions.put(flag.getKey(), flag);
            }
        } catch (Exception e) {
            logger.log(Level.SEVERE, "Failed to parse flag definitions", e);
        }

        return definitions;
    }
parseFlag function · java · L187-L217 (31 LOC)
src/main/java/com/mixpanel/mixpanelapi/featureflags/provider/LocalFlagsProvider.java
    private ExperimentationFlag parseFlag(JSONObject json) {
        String id = json.optString("id", "");
        String name = json.optString("name", "");
        String key = json.optString("key", "");
        String status = json.optString("status", "");
        int projectId = json.optInt("project_id", 0);
        String context = json.optString("context", "distinct_id");

        // Parse experiment metadata
        UUID experimentId = null;
        String experimentIdString = json.optString("experiment_id", null);
        if (experimentIdString != null && !experimentIdString.isEmpty()) {
            try {
                experimentId = UUID.fromString(experimentIdString);
            } catch (IllegalArgumentException e) {
                logger.log(Level.WARNING, "Invalid UUID for experiment_id: " + experimentIdString);
            }
        }

        Boolean isExperimentActive = null;
        if (json.has("is_experiment_active")) {
            isExperimentActive = json.optBool
‹ prevpage 3 / 6next ›