1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.xml.security.keyinfo;
18
19 import java.util.Collections;
20 import java.util.Map;
21 import java.util.Set;
22
23 import org.opensaml.xml.security.credential.Credential;
24 import org.opensaml.xml.util.LazyMap;
25
26
27
28
29
30 public class NamedKeyInfoGeneratorManager {
31
32
33 private Map<String, KeyInfoGeneratorManager> managers;
34
35
36 private KeyInfoGeneratorManager defaultManager;
37
38
39
40 private boolean useDefaultManager;
41
42
43 public NamedKeyInfoGeneratorManager() {
44 managers = new LazyMap<String, KeyInfoGeneratorManager>();
45 defaultManager = new KeyInfoGeneratorManager();
46 useDefaultManager = true;
47 }
48
49
50
51
52
53
54
55 public void setUseDefaultManager(boolean newValue) {
56 useDefaultManager = newValue;
57 }
58
59
60
61
62
63
64 public Set<String> getManagerNames() {
65 return Collections.unmodifiableSet(managers.keySet());
66 }
67
68
69
70
71
72
73
74 public KeyInfoGeneratorManager getManager(String name) {
75 KeyInfoGeneratorManager manager = managers.get(name);
76 if (manager == null) {
77 manager = new KeyInfoGeneratorManager();
78 managers.put(name, manager);
79 }
80 return manager;
81 }
82
83
84
85
86
87
88 public void removeManager(String name) {
89 managers.remove(name);
90 }
91
92
93
94
95
96
97
98
99 public void registerFactory(String name, KeyInfoGeneratorFactory factory) {
100 KeyInfoGeneratorManager manager = getManager(name);
101 manager.registerFactory(factory);
102 }
103
104
105
106
107
108
109
110 public void deregisterFactory(String name, KeyInfoGeneratorFactory factory) {
111 KeyInfoGeneratorManager manager = managers.get(name);
112 if (manager == null) {
113 throw new IllegalArgumentException("Manager with name '" + name + "' does not exist");
114 }
115
116 manager.deregisterFactory(factory);
117 }
118
119
120
121
122
123
124 public void registerDefaultFactory(KeyInfoGeneratorFactory factory) {
125 defaultManager.registerFactory(factory);
126 }
127
128
129
130
131
132
133 public void deregisterDefaultFactory(KeyInfoGeneratorFactory factory) {
134 defaultManager.deregisterFactory(factory);
135 }
136
137
138
139
140
141
142 public KeyInfoGeneratorManager getDefaultManager() {
143 return defaultManager;
144 }
145
146
147
148
149
150
151
152
153 public KeyInfoGeneratorFactory getFactory(String name, Credential credential) {
154 KeyInfoGeneratorManager manager = managers.get(name);
155 if (manager == null) {
156 throw new IllegalArgumentException("Manager with name '" + name + "' does not exist");
157 }
158
159 KeyInfoGeneratorFactory factory = manager.getFactory(credential);
160 if (factory == null) {
161 if (useDefaultManager) {
162 factory = defaultManager.getFactory(credential);
163 }
164 }
165 return factory;
166 }
167
168 }