Package 

Object ExperimentBucketer


  • 
    public class ExperimentBucketer
    
                        

    Pure MurmurHash3 32-bit bucketing for deterministic experiment variant assignment. Public Kotlin counterpart to iOS Sources/AppDNASDK/Config/ExperimentBucketer.swift (public enum ExperimentBucketer). Output MUST be byte-identical to the Swift version so the same user lands in the same variant on either platform.

    Hosts that want to bucket their own custom experiments (outside the SDK-managed experiments config doc) can call hash32 / assignVariant directly without depending on internal SDK state.

    SPEC-070-A finalization parity audit B1#4 — extract public API surface to mirror iOS. Internal SDK code paths still go through MurmurHash3 in ExperimentManager for back-compat; new callers should prefer ExperimentBucketer.hash32.

    • Method Summary

      Modifier and Type Method Description
      final UInt hash32(String key, UInt seed) Standard MurmurHash3 32-bit hash.
      final static String assignVariant(String experimentId, String userId, String salt, List<ExperimentVariant> variants) Assign a variant based on deterministic bucketing.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • hash32

         final UInt hash32(String key, UInt seed)

        Standard MurmurHash3 32-bit hash. Identical algorithm to iOS ExperimentBucketer.hash32(_:seed:).

      • assignVariant

         final static String assignVariant(String experimentId, String userId, String salt, List<ExperimentVariant> variants)

        Assign a variant based on deterministic bucketing. Mirrors iOS ExperimentBucketer.assignVariant(experimentId:userId:salt:variants:).

        Returns the variant id, or null if the variants list is empty. Weights should be 0.0..1.0 and sum to 1.0; the last variant catches any rounding remainder.