/** * execute this containers view instance * * @return mixed the view's result * * @author David Zülke <*****@*****.**> * @author Felix Gilcher <*****@*****.**> * @since 1.0.0 */ protected function executeView(AgaviExecutionContainer $container) { $outputType = $container->getOutputType()->getName(); $request = $this->context->getRequest(); $viewInstance = $container->getViewInstance(); // $lm->log('View is not cached, executing...'); // view initialization completed successfully $executeMethod = 'execute' . $outputType; if (!is_callable(array($viewInstance, $executeMethod))) { $executeMethod = 'execute'; } $key = $request->toggleLock(); try { $viewResult = $viewInstance->{$executeMethod}($container->getRequestData()); } catch (Exception $e) { // we caught an exception... unlock the request and rethrow! $request->toggleLock($key); throw $e; } $request->toggleLock($key); return $viewResult; }