public function testLoadFunctionsShouldLoadResultOfGetFunctions() { $this->server->setClass('Zend_Json_ServerTest_Foo'); $functions = $this->server->getFunctions(); $server = new Zend_Json_Server(); $server->loadFunctions($functions); $this->assertEquals($functions->toArray(), $server->getFunctions()->toArray()); }
/** * get JSON from cache or new instance * * @param array $classes for Zend_Cache_Frontend_File * @return Zend_Json_Server */ protected static function _getServer($classes = null) { // setup cache if available if (is_array($classes) && Tinebase_Core::getCache()) { $masterFiles = array(); $dirname = dirname(__FILE__) . '/../../'; foreach ($classes as $class => $namespace) { $masterFiles[] = $dirname . str_replace('_', '/', $class) . '.php'; } try { $cache = new Zend_Cache_Frontend_File(array('master_files' => $masterFiles, 'lifetime' => null, 'automatic_serialization' => true, 'automatic_cleaning_factor' => 0, 'write_control' => false, 'logging' => Tinebase_Core::isLogLevel(Zend_Log::DEBUG), 'logger' => Tinebase_Core::getLogger())); $cache->setBackend(Tinebase_Core::getCache()->getBackend()); $cacheId = Tinebase_Helper::convertCacheId('_handle_' . sha1(Zend_Json_Encoder::encode($classes)) . '_' . (self::userIsRegistered() ? Tinebase_Core::getUser()->getId() : 'anon')); $server = $cache->load($cacheId); if ($server instanceof Zend_Json_Server) { return $server; } } catch (Zend_Cache_Exception $zce) { if (Tinebase_Core::isLogLevel(Zend_Log::NOTICE)) { Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ . " Failed to create cache. Exception: \n" . $zce); } } } $server = new Zend_Json_Server(); $server->setAutoEmitResponse(false); $server->setAutoHandleExceptions(false); if (is_array($classes)) { foreach ($classes as $class => $namespace) { try { $server->setClass($class, $namespace); } catch (Exception $e) { if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " Failed to add JSON API for '{$class}' => '{$namespace}' Exception: \n" . $e); } } } } if (self::userIsRegistered()) { $definitions = self::_getModelConfigMethods(); $server->loadFunctions($definitions); } if (isset($cache)) { $cache->save($server, $cacheId, array(), null); } return $server; }