/**
* Get an instance of the action class to be used
* @throws DrestException
* @return AbstractAction $action
*/
protected function getActionInstance()
{
if (!isset($this->service_action)) {
$actionClass = $this->matched_route->getActionClass();
if (is_null($actionClass)) {
// Run default action class
$this->service_action = $this->getDefaultAction();
} else {
if (!class_exists($actionClass)) {
throw DrestException::unknownActionClass($actionClass);
}
$this->service_action = new $actionClass($this);
}
if (!$this->service_action instanceof AbstractAction) {
throw DrestException::actionClassNotAnInstanceOfActionAbstract($actionClass);
}
}
return $this->service_action;
}