protected function setSourceList(array $sourceParameters, array $globalParameters = array())
    {
        // Creating as many Source instances as configured in the configuration file
        foreach ($sourceParameters as $key => $parameters) {
            if (!isset($parameters['type'])) {
                throw new Exception\BadProxyConfigurationException(
                    sprintf("Missing parameters 'type' for remote source configuration '%s'", $key)
                );
            } else {
                // Getting the type from the configuration
                $type = $parameters['type'];

                // Catching exception thrown in the SourceFactory
                try {
                    // Getting Source instance from factory
                    $source = $this->sourceFactory->getSourceInstance($type, $key, $parameters, $globalParameters);

                    if ($source instanceof SourceInterface) {
                        // Adding this Source instance to the list of Source instances to be processed by the Proxy
                        $this->addSource($source);
                        $this->sources[$key] = $source;
                    } else {
                        throw new Exception\BadProxyConfigurationException(
                            sprintf(
                                "Expected instance of 'Msl\ResourceProxy\Source\SourceInterface' but got '%s'",
                                get_class($source)
                            )
                        );
                    }
                } catch (Exception\BadSourceConfigConfigurationException $bscce) {
                    throw new Exception\BadProxyConfigurationException(
                        sprintf(
                            "The following exception has been caught while generating a source object for the source '%s': %s",
                            $key,
                            $bscce->getMessage()
                        )
                    );
                }
            }
        }
    }