public function getCacheAdapter($namespace)
    {
        // caching is not enabled for a namespace
        if (!$this->isCacheable($namespace)) {
            return null;
        }

        // user wants to implements different adapter for different namespaces
        if (is_array($this->cacheOptions->getAdapter())) {
            // checks if adapter of a namespace exists
            if (!isset($this->cacheOptions->getAdapter()[$namespace])) {
                return null;
            }
            $adapter =  $this->cacheOptions->getAdapter()[$namespace];
        } else {
            // user want to implements one adapter for all namespaces
            $adapter = $this->cacheOptions->getAdapter();
        }

        if (is_object($adapter)) {
            return $adapter;
        }
        if ($this->getServiceLocator()->has($adapter)) {
            return $this->getServiceLocator()->get($adapter);
        }

        return new $adapter;
    }