1 package io.getunleash.repository;
2
3 import io.getunleash.FeatureToggle;
4 import io.getunleash.lang.Nullable;
5 import java.util.Collection;
6 import java.util.Collections;
7 import java.util.Map;
8 import java.util.concurrent.ConcurrentHashMap;
9
10 public final class ToggleCollection {
11 private final Collection<FeatureToggle> features;
12 private final int version = 1;
13 private final transient Map<String, FeatureToggle> cache;
14
15 public ToggleCollection(final Collection<FeatureToggle> features) {
16 this.features = ensureNotNull(features);
17 this.cache = new ConcurrentHashMap<>();
18 for (FeatureToggle featureToggle : this.features) {
19 cache.put(featureToggle.getName(), featureToggle);
20 }
21 }
22
23 private Collection<FeatureToggle> ensureNotNull(@Nullable Collection<FeatureToggle> features) {
24 if (features == null) {
25 return Collections.emptyList();
26 }
27 return features;
28 }
29
30 public Collection<FeatureToggle> getFeatures() {
31 return Collections.unmodifiableCollection(features);
32 }
33
34 public FeatureToggle getToggle(final String name) {
35 return cache.get(name);
36 }
37 }
38