/**
* Load metadata for a class name
* @param object|string $class - Pass in either the class name, or an instance of that class
* @return Mapping\ClassMetaData $metaData - return null if metadata couldn't be populated from annotations
* @throws DrestException
*/
public function loadMetadataForClass($class)
{
if (is_string($class)) {
$metadata = new Mapping\ClassMetaData(new \ReflectionClass($class));
} else {
$metadata = new Mapping\ClassMetaData($class);
}
if (!isset($this->classes[$class])) {
throw new \RuntimeException('The class is not set: ' . $class);
}
$resource = $this->classes[$class];
if ($resource['routes'] === null) {
throw DrestException::annotatedResourceRequiresAtLeastOneServiceDefinition($resource['name']);
}
if (is_array($resource['representations'])) {
$metadata->addRepresentations($resource['representations']);
}
$this->processRoutes($resource['routes'], $metadata);
$this->processMethods($resource, $metadata);
$this->checkHandleCalls($metadata->getRoutesMetaData());
return $metadata;
}