public function execute($actionName, $providerSpecialty = null) { // get action object $actionMethod = $actionName; if ($providerSpecialty != '') { $actionMethod .= $providerSpecialty; } if (method_exists($this, $actionMethod)) { call_user_func_array(array($this, $actionMethod), $this->_request->getProviderParameters()); } elseif (method_exists($this, $actionMethod . 'Action')) { $actionMethod .= 'Action'; call_user_func_array(array($this, $actionMethod), $this->_request->getProviderParameters()); } else { throw new Zend_Tool_Exception('Not a supported method.'); } }
/** * This method should be called in order to "handle" a Tooling Client * request that has come to the endpoint that has been implemented. */ public final function handle() { $this->_preHandle(); if ($this->_request->getActionName() == null) { throw new Zend_Tool_Endpoint_Exception('Endpoint failed to setup the action name.'); } if ($this->_request->getProviderName() == null) { throw new Zend_Tool_Endpoint_Exception('Endpoint failed to setup the provider name.'); } ob_start(); try { $dispatcher = new Zend_Tool_Rpc_Endpoint_Dispatcher(); $dispatcher->setRequest($this->_request)->setResponse($this->_response)->dispatch(); } catch (Exception $e) { //@todo implement some sanity here die($e->getMessage()); //$this->_response->setContent($e->getMessage()); return; } if (($content = ob_get_clean()) != '') { $this->_response->setContent($content); } $this->_postHandle(); }