/**
  * Returns ResourceMetadata for the specified class.
  *
  * @param  string                                     $className
  * @throws \BedRest\Resource\Mapping\Exception
  * @return \BedRest\Resource\Mapping\ResourceMetadata
  */
 public function getMetadataFor($className)
 {
     if (!$this->isResource($className)) {
         throw Exception::classIsNotMappedResource($className);
     }
     if (isset($this->loadedMetadata[$className])) {
         return $this->loadedMetadata[$className];
     }
     if ($this->cache) {
         $cacheId = $this->cachePrefix . $className . $this->cacheSuffix;
         if (($cached = $this->cache->fetch($cacheId)) !== false) {
             $this->loadedMetadata[$className] = $cached;
         } else {
             $this->loadMetadata($className);
             $this->cache->save($cacheId, $this->loadedMetadata[$className], null);
         }
     } else {
         $this->loadMetadata($className);
     }
     return $this->loadedMetadata[$className];
 }