|
3 | 3 | import java.security.Principal; |
4 | 4 | import java.security.cert.Certificate; |
5 | 5 | import java.security.cert.X509Certificate; |
6 | | -import java.util.Collections; |
7 | | -import java.util.HashMap; |
8 | | -import java.util.Map; |
| 6 | +import java.util.concurrent.ConcurrentHashMap; |
9 | 7 | import java.util.concurrent.atomic.AtomicLong; |
10 | 8 | import java.util.concurrent.atomic.AtomicReference; |
11 | 9 |
|
|
27 | 25 | abstract class ProvSSLSessionBase |
28 | 26 | extends BCExtendedSSLSession |
29 | 27 | { |
30 | | - protected final Map<String, Object> valueMap = Collections.synchronizedMap(new HashMap<String, Object>()); |
| 28 | + protected final ConcurrentHashMap<String, Object> valueMap = new ConcurrentHashMap<String, Object>(); |
31 | 29 |
|
32 | 30 | protected final AtomicReference<ProvSSLSessionContext> sslSessionContext; |
33 | 31 | protected final boolean fipsMode; |
@@ -237,15 +235,17 @@ public SSLSessionContext getSessionContext() |
237 | 235 |
|
238 | 236 | public Object getValue(String name) |
239 | 237 | { |
| 238 | + if (name == null) |
| 239 | + { |
| 240 | + throw new IllegalArgumentException("'name' cannot be null"); |
| 241 | + } |
| 242 | + |
240 | 243 | return valueMap.get(name); |
241 | 244 | } |
242 | 245 |
|
243 | 246 | public String[] getValueNames() |
244 | 247 | { |
245 | | - synchronized (valueMap) |
246 | | - { |
247 | | - return valueMap.keySet().toArray(new String[valueMap.size()]); |
248 | | - } |
| 248 | + return valueMap.keySet().toArray(new String[0]); |
249 | 249 | } |
250 | 250 |
|
251 | 251 | @Override |
@@ -287,12 +287,26 @@ public boolean isValid() |
287 | 287 |
|
288 | 288 | public void putValue(String name, Object value) |
289 | 289 | { |
| 290 | + if (name == null) |
| 291 | + { |
| 292 | + throw new IllegalArgumentException("'name' cannot be null"); |
| 293 | + } |
| 294 | + if (value == null) |
| 295 | + { |
| 296 | + throw new IllegalArgumentException("'value' cannot be null"); |
| 297 | + } |
| 298 | + |
290 | 299 | notifyUnbound(name, valueMap.put(name, value)); |
291 | 300 | notifyBound(name, value); |
292 | 301 | } |
293 | 302 |
|
294 | 303 | public void removeValue(String name) |
295 | 304 | { |
| 305 | + if (name == null) |
| 306 | + { |
| 307 | + throw new IllegalArgumentException("'name' cannot be null"); |
| 308 | + } |
| 309 | + |
296 | 310 | notifyUnbound(name, valueMap.remove(name)); |
297 | 311 | } |
298 | 312 |
|
|
0 commit comments