1 package com.atlassian.sal.core.features;
2
3 import com.atlassian.fugue.Option;
4 import com.atlassian.sal.api.features.DarkFeatureManager;
5 import com.atlassian.sal.api.user.UserManager;
6 import com.google.common.collect.ImmutableSet;
7
8 import java.util.Collections;
9 import java.util.Set;
10
11
12
13
14
15 public class DefaultDarkFeatureManager implements DarkFeatureManager
16 {
17 private final Set<String> enabledFeatureKeys;
18 private final UserManager userManager;
19
20 public DefaultDarkFeatureManager(UserManager userManager)
21 {
22 this.userManager = userManager;
23
24 final SystemDarkFeatureInitializer.SystemDarkFeatures systemDarkFeatures = SystemDarkFeatureInitializer.getSystemStartupDarkFeatures();
25
26 enabledFeatureKeys = systemDarkFeatures.isDisableAll() ? Collections.<String>emptySet() : ImmutableSet.copyOf(systemDarkFeatures.getEnabled());
27 }
28
29 @Override
30 public boolean isSystemFeatureEnabled(String key)
31 {
32 return enabledFeatureKeys.contains(key);
33 }
34
35 @Override
36 public boolean isUserFeatureEnabled(String key)
37 {
38 return isSystemFeatureEnabled(key);
39 }
40
41 @Override
42 public Option<Boolean> isUserFeatureEnabledForUser(String username, String key)
43 {
44 return userManager.resolve(username) == null ? Option.<Boolean>none() : Option.some(isSystemFeatureEnabled(key));
45 }
46
47 @Override
48 public Set<String> getAllEnabledFeaturesForCurrentUser()
49 {
50 return enabledFeatureKeys;
51 }
52
53 @Override
54 public Option<Set<String>> getAllEnanbedFeaturesForUser(String username)
55 {
56 return userManager.resolve(username) == null ? Option.<Set<String>>none() : Option.some(getAllEnabledFeaturesForCurrentUser());
57 }
58 }