/** @test */
 public function storingDataInEmptyArrayByNamespaceSetsData()
 {
     $testArray = [];
     $testArray = NamespaceUtility::saveDataInNamespaceTree('key1.key2.key3', $testArray, 'test2');
     $refArray['key1']['key2']['key3'] = 'test2';
     $this->assertEquals($testArray, $refArray);
 }
 /**
  * Get an argument array out of a string
  * 
  * @param string $argumentString
  * @return array
  */
 public function getArgumentArray($argumentString)
 {
     $argumentArray = array();
     $argumentChunks = GeneralUtility::trimExplode(',', $argumentString);
     foreach ($argumentChunks as $argument) {
         if (strstr($argument, ':')) {
             list($key, $value) = GeneralUtility::trimExplode(':', $argument);
             $argumentArray = NamespaceUtility::saveDataInNamespaceTree($key, $argumentArray, $value);
         } else {
             $key = $argument;
             $argumentArray[$key] = false;
         }
     }
     return $argumentArray;
 }
 /**
  * Persists a given object to session
  *
  * @param Tx_PtExtbase_State_Session_SessionPersistableInterface $object
  * @throws Exception if session hash has been already calculated and session data has changed
  */
 public function persistToSession(Tx_PtExtbase_State_Session_SessionPersistableInterface $object)
 {
     $sessionNamespace = $object->getObjectNamespace();
     if ($this->sessionAdapaterClass == self::STORAGE_ADAPTER_DB && $this->sessionHash != null && $this->sessionHash != md5(serialize($this->sessionData))) {
         throw new Exception('Session Hash already calculated and current sessiondata changed!! 1293004344' . $sessionNamespace . ': Calc:' . $this->sessionHash . ' NEW: ' . md5(serialize($this->sessionData)));
     }
     Tx_PtExtbase_Assertions_Assert::isNotEmptyString($sessionNamespace, ['message' => 'Object namespace must not be empty! 1278436822']);
     $objectData = $object->_persistToSession();
     if ($this->sessionData == null) {
         $this->sessionData = [];
     }
     if ($objectData) {
         $this->sessionData = NamespaceUtility::saveDataInNamespaceTree($sessionNamespace, $this->sessionData, $objectData);
     }
     // Remove session values, if object data is null or empty array
     if ($objectData === null || count($objectData) == 0) {
         $this->sessionData = NamespaceUtility::removeDataFromNamespaceTree($sessionNamespace, $this->sessionData);
     }
 }