public function show(Pap_Db_CachedBanner $cachedBanner) {
     try {
         $request = new Pap_Tracking_Request();
         $banner = $this->getBanner($cachedBanner->getBannerId(), $cachedBanner->getUserId(), $cachedBanner->getChannel());
         $req = new Pap_Tracking_BannerViewerRequest($banner->getBannerType());
         Gpf_Plugins_Engine::extensionPoint(self::EXT_POINT_NAME, $req);
         if($req->getViewer() != null) {
             $req->getViewer()->showBanner($request , $banner);
             return;
         }
         $this->prepareCachedBanner($banner, $cachedBanner);
         try {
             $cachedBanner->save();
         } catch (Gpf_DbEngine_Row_ConstraintException $e) {
             // cached banner was saved already by other script
         }
         if ($cachedBanner->getHeaders() != '') {
             header($cachedBanner->getHeaders(), true);
         }
         echo $cachedBanner->getCode();
     } catch (Exception $e) {
         $this->logMessage($e);
         echo $e;
     }
 }