code: @Trivial
      protected void setSslSupport(ServiceReference<ChannelFactoryProvider> ref) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
              Tr.entry(this, tc, "setSslSupport", new Object[] { ref.getProperty("type"), ref });
          }
  
          // If sslsupport is bound then set it to true 
          _isSSLEnabled = true;
  
          // bind can get called before unbind for new config/ modify.Hence the precaution
          if (_sslFactoryProvider.getReference() != null) { // existing chain is still there so destroy 
              if (_isChainStarted)
                  performAction(destroyChainAction);
          }
  
          _sslFactoryProvider.setReference(ref);
          // we will only invoke createchain if 
          // 1) activate() is complete
          // this is because bind method get called first before activate and without activate we don't have any properties
          // 2) if useSSL is set in config 
          if (_isActivated && _isSSLChain) {
              //TODO: when executor service is used for performaction() make sure about sequence of destroy and create chain
              //Now currently its not threaded
              if (_isChainStarted)
                  performAction(destroyChainAction);
              performAction(createChainAction);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "setSslSupport", _isSSLEnabled);
          }
      }
docs: Set/store the bound ConfigurationAdmin service.
  Also ensure that a default endpoint configuration exists.
  
  SEE bnd file: "type=SSLChannel" means this will only
  match SSL channel factory providers
  
  @param ref