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();
 }