diff -r 000000000000 -r 4eba9c11703f web/Zend/Service/DeveloperGarden/SecurityTokenServer/Cache.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/Zend/Service/DeveloperGarden/SecurityTokenServer/Cache.php Mon Dec 13 18:29:26 2010 +0100 @@ -0,0 +1,207 @@ + null, + 'getTokens' => null + ); + + /** + * Internal cache for token values + * + * @var Zend_Cache_Core + * @access private + */ + private static $_cache = null; + + /** + * PHP SOAP wsdl cache constant + * + * @var integer + */ + private static $_wsdlCache = null; + +// @codeCoverageIgnoreStart + /** + * Constructor overriding - make sure that a developer cannot instantiate + */ + protected function __construct() + { + } +// @codeCoverageIgnoreEnd + + /** + * returns stored token from cache or null + * + * @param string $tokenId + * @throws Zend_Service_DeveloperGarden_Exception + * @return Zend_Service_DeveloperGarden_Response_SecurityTokenServer_Interface|null + */ + public static function getTokenFromCache($tokenId) + { + if (!array_key_exists($tokenId, self::$_storedToken)) { + require_once 'Zend/Service/DeveloperGarden/Exception.php'; + throw new Zend_Service_DeveloperGarden_Exception( + 'tokenID ' . $tokenId . ' unknown.' + ); + } + + if (self::hasCache() && self::$_storedToken[$tokenId] === null) { + $cache = self::getCache(); + $token = $cache->load(md5($tokenId)); + if ($token !== false) { + self::$_storedToken[$tokenId] = $token; + } + } + + return self::$_storedToken[$tokenId]; + } + + /** + * set new value for the given tokenId + * + * @param string $tokenId + * @throws Zend_Service_DeveloperGarden_Exception + * @param Zend_Service_DeveloperGarden_Response_SecurityTokenServer_Interface $tokenValue + * @return void + */ + public static function setTokenToCache($tokenId, + Zend_Service_DeveloperGarden_Response_SecurityTokenServer_Interface $tokenValue + ) { + if (!array_key_exists($tokenId, self::$_storedToken)) { + require_once 'Zend/Service/DeveloperGarden/Exception.php'; + throw new Zend_Service_DeveloperGarden_Exception( + 'tokenID ' . $tokenId . ' unknown.' + ); + } + + if (self::hasCache()) { + $cache = self::getCache(); + $cache->save($tokenValue, md5($tokenId)); + } + + self::$_storedToken[$tokenId] = $tokenValue; + } + + /** + * reset the internal cache structure + * + * @return void + */ + public static function resetTokenCache() + { + foreach (self::$_storedToken as $key => $value) { + $value = null; + self::$_storedToken[$key] = $value; + } + } + + /** + * Returns the cache + * + * @return Zend_Cache_Core + */ + public static function getCache() + { + return self::$_cache; + } + + /** + * Set a cache for token + * + * @param Zend_Cache_Core $cache A cache frontend + */ + public static function setCache(Zend_Cache_Core $cache) + { + self::$_cache = $cache; + } + + /** + * Returns true when a cache is set + * + * @return boolean + */ + public static function hasCache() + { + return (self::$_cache !== null); + } + + /** + * Removes any cache + * + * @return void + */ + public static function removeCache() + { + self::$_cache = null; + } + + /** + * Clears all cache data + * + * @return void + */ + public static function clearCache() + { + $cache = self::getCache(); + if (method_exists($cache, 'clean')) { + $cache->clean(); + } + self::$_wsdlCache = null; + } + + /** + * Returns the wsdl cache + * + * @return integer + */ + public static function getWsdlCache() + { + return self::$_wsdlCache; + } + + /** + * Set a cache for wsdl file + * + * @param integer $cache + * @return void + */ + public static function setWsdlCache($cache = null) + { + self::$_wsdlCache = $cache; + } +}