From 9292e734e54576c50fc4d88d3fed9aaa4cfc022b Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Fri, 11 Jan 2019 15:12:25 +0100 Subject: Add basic InMemoryFlagSource --- .../com/yahoo/vespa/flags/InMemoryFlagSource.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java (limited to 'flags') diff --git a/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java b/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java new file mode 100644 index 00000000000..25b871f8cd1 --- /dev/null +++ b/flags/src/main/java/com/yahoo/vespa/flags/InMemoryFlagSource.java @@ -0,0 +1,34 @@ +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.flags; + +import com.yahoo.vespa.flags.json.FlagData; +import com.yahoo.vespa.flags.json.Rule; + +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Basic in-memory flag source useful for testing + * + * @author freva + */ +public class InMemoryFlagSource implements FlagSource { + private final Map flagDataById = new ConcurrentHashMap<>(); + + public InMemoryFlagSource withFlag(FlagId flagId) { + flagDataById.put(flagId, new FlagData(flagId)); + return this; + } + + public InMemoryFlagSource withFlag(FlagId flagId, FetchVector defaultFetchVector, Rule... rules) { + flagDataById.put(flagId, new FlagData(flagId, defaultFetchVector, rules)); + return this; + } + + @Override + public Optional fetch(FlagId id, FetchVector vector) { + return Optional.ofNullable(flagDataById.get(id)) + .flatMap(flagData -> flagData.resolve(vector)); + } +} -- cgit v1.2.3