25
25
*/
26
26
public class ECFSSLContextFactory implements SSLContextFactory {
27
27
28
- private final ServiceTracker <Provider , Provider > providerTracker ;
28
+ private ServiceTracker <Provider , Provider > providerTracker ;
29
29
private final String defaultProtocol ;
30
30
private final String defaultProviderName ;
31
31
32
- public ECFSSLContextFactory (BundleContext context , String defaultProtocol ) {
32
+ public ECFSSLContextFactory (BundleContext context ) throws NoSuchAlgorithmException {
33
+ this (context , null );
34
+ }
35
+
36
+ public ECFSSLContextFactory (BundleContext context , String defaultProtocol ) throws NoSuchAlgorithmException {
33
37
this (context , defaultProtocol , null );
34
38
}
35
39
36
- public ECFSSLContextFactory (BundleContext context , String defaultProtocol , String defaultProviderName ) {
40
+ public ECFSSLContextFactory (BundleContext context , String defaultProtocol , String defaultProviderName ) throws NoSuchAlgorithmException {
41
+ if (context == null )
42
+ throw new NullPointerException ("context must not be null" ); //$NON-NLS-1$
43
+ if (defaultProviderName == null ) {
44
+ defaultProviderName = SSLContext .getDefault ().getProvider ().getName ();
45
+ }
46
+ if (defaultProtocol == null ) {
47
+ defaultProtocol = SSLContext .getDefault ().getProtocol ();
48
+ }
37
49
this .defaultProtocol = defaultProtocol ;
38
50
this .defaultProviderName = defaultProviderName ;
39
51
this .providerTracker = new ServiceTracker <Provider , Provider >(context , Provider .class , null );
@@ -60,8 +72,11 @@ public SSLContext getInstance(String protocol) throws NoSuchAlgorithmException,
60
72
return getInstance0 (protocol , this .defaultProviderName );
61
73
}
62
74
63
- public void close () {
64
- this .providerTracker .close ();
75
+ public synchronized void close () {
76
+ if (this .providerTracker != null ) {
77
+ this .providerTracker .close ();
78
+ this .providerTracker = null ;
79
+ }
65
80
}
66
81
67
82
protected Provider findProvider (String providerName ) {
0 commit comments