def resolve(self, correlation_id):
        """
        Resolves a single component connection. If connections are configured to be retrieved
        from Discovery service it finds a [[IDiscovery]] and resolves the connection there.

        :param correlation_id: (optional) transaction id to trace execution through call chain.

        :return: resolved connection parameters or null if nothing was found.
        """
        if len(self._connections) == 0: return None
        
        # Return connection that doesn't require discovery
        for connection in self._connections:
            if not connection.use_discovery():
                return connection
        
        # Return connection that require discovery
        for connection in self._connections:
            if connection.use_discovery():
                resolved_connection = self._resolve_in_discovery(correlation_id, connection)
                if resolved_connection != None:
                    # Merge configured and new parameters
                    resolved_connection = ConnectionParams(ConfigParams.merge_configs(connection, resolved_connection))
                    return resolved_connection
        
        return None
Resolves a single component connection. If connections are configured to be retrieved
        from Discovery service it finds a [[IDiscovery]] and resolves the connection there.

        :param correlation_id: (optional) transaction id to trace execution through call chain.

        :return: resolved connection parameters or null if nothing was found.