1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.grouper.app.deprovisioning;
18
19 import java.util.LinkedHashSet;
20 import java.util.Set;
21
22 import org.apache.commons.lang3.StringUtils;
23
24 import edu.internet2.middleware.grouper.GrouperSourceAdapter;
25 import edu.internet2.middleware.grouper.cfg.GrouperConfig;
26 import edu.internet2.middleware.grouper.subj.InternalSourceAdapter;
27 import edu.internet2.middleware.grouper.util.GrouperUtil;
28 import edu.internet2.middleware.grouperClient.util.ExpirableCache;
29 import edu.internet2.middleware.subject.Source;
30 import edu.internet2.middleware.subject.provider.SourceManager;
31
32
33
34
35 public class GrouperDeprovisioningSettings {
36
37
38
39
40
41 public static boolean deprovisioningEnabled() {
42
43 boolean deprovisioningEnabled = GrouperConfig.retrieveConfig().propertyValueBoolean("deprovisioning.enable", true)
44 && GrouperUtil.length(GrouperDeprovisioningAffiliation.retrieveDeprovisioningAffiliations()) > 0;
45
46 return deprovisioningEnabled;
47
48 }
49
50
51
52
53
54 public static String deprovisioningStemName() {
55 return GrouperUtil.stripSuffix(GrouperConfig.retrieveConfig().propertyValueString("deprovisioning.systemFolder",
56 GrouperConfig.retrieveConfig().propertyValueString("grouper.rootStemForBuiltinObjects") + ":deprovisioning"), ":");
57 }
58
59
60
61
62
63 public static String retrieveDeprovisioningAdminGroupName() {
64
65
66
67
68 return GrouperConfig.retrieveConfig().propertyValueString("deprovisioning.admin.group");
69
70 }
71
72
73
74
75
76 public static Set<Source> retrieveSourcesAllowedToDeprovision() {
77
78 Set<Source> result = retrieveSourcesAllowedToDeprovisionCache.get(Boolean.TRUE);
79
80 if (result == null) {
81
82 synchronized(retrieveSourcesAllowedToDeprovisionCache) {
83
84 result = retrieveSourcesAllowedToDeprovisionCache.get(Boolean.TRUE);
85
86 if (result == null) {
87 result = new LinkedHashSet<Source>();
88
89 for (Source source : SourceManager.getInstance().getSources()) {
90 if (StringUtils.equals(source.getId(), GrouperSourceAdapter.groupSourceId())) {
91 continue;
92 }
93 if (StringUtils.equals(source.getId(), InternalSourceAdapter.ID)) {
94 continue;
95 }
96 result.add(source);
97 }
98
99 retrieveSourcesAllowedToDeprovisionCache.put(Boolean.TRUE, result);
100 }
101
102 }
103 }
104
105 return result;
106 }
107
108
109
110
111 private static ExpirableCache<Boolean, Set<Source>> retrieveSourcesAllowedToDeprovisionCache = new ExpirableCache<Boolean, Set<Source>>();
112
113 }