public function load(array $identifier, $rawData, $shardingKey)
    {
        $sourcesToFeed = array();
        $datas = null;
        foreach ($this->sources as $sourceKey => $source) {
            try {
                $datas = $source->load($identifier, true, $shardingKey);
                break;
            } catch (NoDataException $exception) {
                $sourcesToFeed[] = $sourceKey;
            }
        }

        if (isset($datas)) {
            foreach ($sourcesToFeed as $sourceKey) {
                $this->sources[$sourceKey]->saveAfterLoading($datas, $identifier, $shardingKey);
            }

            return $this->dataParser->decode($datas, $this->configuration['fields']);
        }

        throw new NoDataException("Chain can't load datas for source {$this->sourceName} with ids : ".var_export($identifier, true));
    }
public function load(array $identifier, $rawData, $shardingKey)
    {
        $sourcesToFeed = array();
        $datas = null;
        foreach ($this->sources as $sourceKey => $source) {
            try {
                $datas = $source->load($identifier, true, $shardingKey);
                break;
            } catch (NoDataException $exception) {
                $sourcesToFeed[] = $sourceKey;
            }
        }

        if (isset($datas)) {
            foreach ($sourcesToFeed as $sourceKey) {
                $this->sources[$sourceKey]->saveAfterLoading($datas, $identifier, $shardingKey);
            }

            return $this->dataParser->decode($datas, $this->configuration['fields']);
        }

        throw new NoDataException("Chain can't load datas for source {$this->sourceName} with ids : ".var_export($identifier, true));
    }
@param array $identifier
@param bool  $rawData
@param mixed $shardingKey

@return array
@throws NoDataException
@throws \Exception