public void setEncryptionProtocols( String[] protocols )
    {
        if ( protocols == null) {
            protocols = new String[0];
        }
        final String oldValue = getEncryptionProtocolsCommaSeparated();

        // Always set the property explicitly even if it appears the equal to the old value (the old value might be a fallback value).
        final StringBuilder csv = new StringBuilder();
        for( String protocol : protocols )
        {
            csv.append( protocol );
            csv.append( ',' );
        }
        final String newValue = !csv.isEmpty() ? csv.substring( 0, csv.length() - 1 ) : "";
        JiveGlobals.setProperty( type.getPrefix() + "protocols", newValue );

        if ( oldValue.equals( newValue ) )
        {
            Log.debug( "Ignoring protocol configuration change request (to '{}'): listener already in this state.", newValue );
            return;
        }

        Log.debug( "Changing protocol configuration from '{}' to '{}'.", oldValue, newValue );
        restart();
    }
Defines the collection of protocols (by name) that can be used for encryption of connections.

When non-empty, the list is intended to specify those protocols (from a larger collection of implementation-
supported protocols) that can be used to establish encryption. An empty list will cause an implementation
default to be used.

The order over which values are presented can, but is not guaranteed to, indicate preference.

@param protocols An array of protocol names, can be null.
xmppserver/src/main/java/org/jivesoftware/openfire/spi/ConnectionListener.java