/**
  * @param string $listenerId
  * @return object
  */
 public function findById($listenerId)
 {
     if ($listenerId) {
         $object = parent::findById($listenerId);
         if (!$object) {
             list($table, $uid, $rawListenerId) = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode('-', $listenerId, false, 3);
             // try to generate the listener cache
             if ($table == 'tt_content' && $uid) {
                 $object = $this->serviceContent->generateListenerCacheForContentElement($table, $uid);
             } elseif ($table == 'h' || $table == 'hInt') {
                 $settingsHash = $uid;
                 $encodedSettings = $rawListenerId;
                 if (\TYPO3\CMS\Core\Utility\GeneralUtility::hmac($encodedSettings) == $settingsHash) {
                     $loadContentFromTypoScript = str_replace('---', '.', $encodedSettings);
                     $eventsToListen = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('e');
                     $object = $this->serviceContent->generateListenerCacheForHijaxPi1($loadContentFromTypoScript, $eventsToListen[$listenerId], $table == 'h');
                 }
             }
             if ($table == 'f') {
                 $settingsHash = $uid;
                 $encodedSettings = $rawListenerId;
                 if (\TYPO3\CMS\Core\Utility\GeneralUtility::hmac($encodedSettings) == $settingsHash) {
                     $fallbackTypoScriptConfiguration = str_replace('---', '.', $encodedSettings);
                     $object = $this->serviceContent->generateListenerCacheForTypoScriptFallback($fallbackTypoScriptConfiguration);
                 }
             }
         }
         return $object;
     } else {
         return null;
     }
 }
 /**
  * Unserialize an object
  *
  * @param string $str
  * @return object
  */
 public function unserialize($str)
 {
     $object = parent::unserialize($str);
     $object->setRequestUri(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_REQUEST_URL'));
     return $object;
 }