public function getDataSource($typeClass)
    {
        $driver = $this->getDriver($typeClass);
        
        // If there is no driver for the given type class throw an exception
        if ($driver === false) {
            throw new Exception('Cannot find a driver for the given type class "' . $typeClass . '".');
        }
        
        $dataSourceClass = $this->searchDataSourceClass($typeClass, $driver);

        // If there is no data source class for the given type class throw an exception
        if ($dataSourceClass === false) {
            throw new Exception('Cannot find a data source for the given type class "' . $typeClass . '" (selected driver: "' . $driver . '").');
        }
        
        return $this->framework->getInstance($dataSourceClass);
    }