Raised Extbase and Fluid versions to 1.3.0beta4
authorSebastian Kurfürst <sebastian.kurfuerst@typo3.org>
Wed, 12 Jan 2011 15:55:51 +0000 (15:55 +0000)
committerSebastian Kurfürst <sebastian.kurfuerst@typo3.org>
Wed, 12 Jan 2011 15:55:51 +0000 (15:55 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@10040 709f56b5-9817-0410-a4d7-c38de5d9e867

117 files changed:
ChangeLog
typo3/sysext/extbase/ChangeLog.txt [changed mode: 0755->0644]
typo3/sysext/extbase/Classes/MVC/Controller/ActionController.php
typo3/sysext/extbase/Classes/MVC/Controller/Argument.php
typo3/sysext/extbase/Classes/MVC/Web/Routing/UriBuilder.php
typo3/sysext/extbase/Classes/Object/Manager.php
typo3/sysext/extbase/Classes/Persistence/QueryResult.php
typo3/sysext/extbase/Classes/Persistence/QueryResultInterface.php
typo3/sysext/extbase/Classes/Persistence/Repository.php
typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php
typo3/sysext/extbase/Classes/Utility/Extension.php
typo3/sysext/extbase/Tests/Unit/Configuration/BackendConfigurationManagerTest.php
typo3/sysext/extbase/Tests/Unit/Configuration/FrontendConfigurationManagerTest.php
typo3/sysext/extbase/Tests/Unit/DomainObject/AbstractEntityTest.php
typo3/sysext/extbase/Tests/Unit/MVC/Controller/AbstractControllerTest.php
typo3/sysext/extbase/Tests/Unit/MVC/Controller/ActionControllerTest.php
typo3/sysext/extbase/Tests/Unit/MVC/Controller/ArgumentTest.php
typo3/sysext/extbase/Tests/Unit/MVC/Controller/ArgumentsTest.php
typo3/sysext/extbase/Tests/Unit/MVC/DispatcherTest.php
typo3/sysext/extbase/Tests/Unit/MVC/Web/RequestBuilderTest.php
typo3/sysext/extbase/Tests/Unit/MVC/Web/RequestTest.php
typo3/sysext/extbase/Tests/Unit/MVC/Web/Routing/UriBuilderTest.php
typo3/sysext/extbase/Tests/Unit/Object/Container/ClassInfoFactoryTest.php
typo3/sysext/extbase/Tests/Unit/Object/Container/ContainerTest.php
typo3/sysext/extbase/Tests/Unit/Persistence/Mapper/DataMapFactoryTest.php
typo3/sysext/extbase/Tests/Unit/Persistence/ObjectStorageTest.php
typo3/sysext/extbase/Tests/Unit/Persistence/QueryResultTest.php
typo3/sysext/extbase/Tests/Unit/Persistence/QueryTest.php
typo3/sysext/extbase/Tests/Unit/Persistence/RepositoryTest.php
typo3/sysext/extbase/Tests/Unit/Persistence/SessionTest.php
typo3/sysext/extbase/Tests/Unit/Persistence/Storage/Typo3DbBackendTest.php
typo3/sysext/extbase/Tests/Unit/Reflection/ServiceTest.php
typo3/sysext/extbase/Tests/Unit/Security/Channel/RequestHashServiceTest.php
typo3/sysext/extbase/Tests/Unit/Security/Cryptography/HashServiceTest.php
typo3/sysext/extbase/Tests/Unit/Utility/ExtensionTest.php
typo3/sysext/extbase/Tests/Unit/Utility/TypoScriptTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/AlphanumericValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/ConjunctionValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/DateTimeValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/EmailAddressValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/FloatValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/IntegerValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/NotEmptyValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/NumberRangeValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/NumberValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/RawValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/RegularExpressionValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/StringLengthValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/Validator/TextValidatorTest.php
typo3/sysext/extbase/Tests/Unit/Validation/ValidatorResolverTest.php
typo3/sysext/extbase/ext_emconf.php [changed mode: 0755->0644]
typo3/sysext/extbase/last_synched_target
typo3/sysext/fluid/ChangeLog.txt
typo3/sysext/fluid/Classes/View/TemplateView.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/AbstractBackendViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/Buttons/CshViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/Buttons/IconViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/Buttons/ShortcutViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/Menus/ActionMenuItemViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/Menus/ActionMenuViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/PageInfoViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/PagePathViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/TableListViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/DebugViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/EscapeViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/FlashMessagesViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/CheckboxViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/ErrorsViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/HiddenViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/PasswordViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/RadioViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/SubmitViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/TextareaViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/TextboxViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/TextfieldViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Form/UploadViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/CropViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/CurrencyViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/DateViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/HtmlViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/Nl2brViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/NumberViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/PaddingViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Format/PrintfViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/GroupedForViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/IfViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/ImageViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/LayoutViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Link/ActionViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Link/EmailViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Link/ExternalViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Link/PageViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/RenderViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/SectionViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/TranslateViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Uri/ActionViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Uri/EmailViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Uri/ExternalViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Uri/ImageViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Uri/PageViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Uri/ResourceViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Widget/UriViewHelper.php
typo3/sysext/fluid/Tests/Unit/Core/Parser/Interceptor/EscapeTest.php
typo3/sysext/fluid/Tests/Unit/View/StandaloneViewTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Format/CropViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/EmailViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Link/ExternalViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Persistence/IdentityViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Security/IfAuthenticatedViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Security/IfHasRoleViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Uri/EmailViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/Uri/ExternalViewHelperTest.php
typo3/sysext/fluid/Tests/Unit/ViewHelpers/ViewHelperBaseTestcase.php
typo3/sysext/fluid/ext_emconf.php

index 6ce20e2..46402b7 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-12  Sebastian Kurfuerst  <sebastian@typo3.org>
+
+       * Raised Extbase and Fluid versions to 1.3.0beta4
+
 2011-01-12  Jigal van Hemert  <jigal@xs4all.nl>
 
        * Fixed bug #16982: be_layout and be_layout_next_level got misleading labels and no CSH (Thanks to Jo Hasenau)
old mode 100755 (executable)
new mode 100644 (file)
index 1de7e26..b1d2614
@@ -1,8 +1,39 @@
 ChangeLog for Extbase
 =====================
 
+Changes for 1.3.0 Beta 4:
+=========================
+included in TYPO3 4.5.0 Beta 4.
+
+This release contains numerous bugfixes, and a few small features:
+
+* Tx_Extbase_Utility_Extension::registerPlugin() now has a fourth parameter $pluginIconPathAndFilename
+  that you can set to the path of an icon, that will be displayed in the plugin dropdown in the backend.
+  You can use it like:
+  Tx_Extbase_Utility_Extension::registerPlugin(
+               $_EXTKEY,
+               'MyPlugin',
+               'My Plugin description',
+               t3lib_extMgm::extRelPath($_EXTKEY) . 'Resources/Public/Icons/someIcon.gif'
+  );
+* Hidden Records in Workspaces now work
+  Before, if t3lib_pageSelect::getRecordOverlay returned FALSE (if
+  no translation is found), a fatal error occured:
+  PHP Catchable Fatal Error: Argument 2 passed to Tx_Extbase_Persistence_Mapper_DataMapper::getTargetType()
+  must be an array, boolean given, called in Persistence/Mapper/DataMapper.php
+
+Full Changes for 1.3.0 Beta 4:
+==============================
+
+[+TASK] Extbase (Tests): Fixed a repository unit test so that it works in CLI mode
+[+TASK] Extbase (Tests): Fixed Extbase unit tests
+[+BUGFIX] Extbase (Persistence): Hidden Records in Workspaces now work
+[~TASK] Extbase: Fixed line endings (Windows to Unix).
+[~TASK] Fluid (Tests): Fixed some more testcase class names and some unit tests
+[+FEATURE] Extbase (Utility): Add support for custom specify custom plugin icon. Resolves #11179
+
 Changes for 1.3.0 Beta 3:
-==========================
+=========================
 included in TYPO3 4.5.0 Beta 3.
 
 This release features numerous stability improvements, the biggest one
index a396f3c..560d338 100644 (file)
@@ -123,7 +123,9 @@ class Tx_Extbase_MVC_Controller_ActionController extends Tx_Extbase_MVC_Controll
         * @return void
         */
        public function processRequest(Tx_Extbase_MVC_RequestInterface $request, Tx_Extbase_MVC_ResponseInterface $response) {
-               if (!$this->canProcessRequest($request)) throw new Tx_Extbase_MVC_Exception_UnsupportedRequestType(get_class($this) . ' does not support requests of type "' . get_class($request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes) , 1187701131);
+               if (!$this->canProcessRequest($request)) {
+                       throw new Tx_Extbase_MVC_Exception_UnsupportedRequestType(get_class($this) . ' does not support requests of type "' . get_class($request) . '". Supported types are: ' . implode(' ', $this->supportedRequestTypes) , 1187701131);
+               }
 
                $this->request = $request;
                $this->request->setDispatched(TRUE);
@@ -147,7 +149,9 @@ class Tx_Extbase_MVC_Controller_ActionController extends Tx_Extbase_MVC_Controll
                $this->checkRequestHash();
                $this->controllerContext = $this->buildControllerContext();
                $this->view = $this->resolveView();
-               if ($this->view !== NULL) $this->initializeView($this->view);
+               if ($this->view !== NULL) {
+                       $this->initializeView($this->view);
+               }
                $this->callActionMethod();
        }
 
index ff9264f..542114c 100644 (file)
@@ -309,7 +309,9 @@ class Tx_Extbase_MVC_Controller_Argument {
                        $this->validator = $this->objectManager->create('Tx_Extbase_Validation_Validator_ConjunctionValidator');
                }
                foreach ($objectNames as $objectName) {
-                       if (!class_exists($objectName)) $objectName = 'Tx_Extbase_Validation_Validator_' . $objectName;
+                       if (!class_exists($objectName)) {
+                               $objectName = 'Tx_Extbase_Validation_Validator_' . $objectName;
+                       }
                        $this->validator->addValidator($this->objectManager->get($objectName));
                }
                return $this;
index 7bdea0f..e36a43a 100644 (file)
@@ -111,6 +111,14 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder {
         */
        public function injectConfigurationManager(Tx_Extbase_Configuration_ConfigurationManagerInterface $configurationManager) {
                $this->configurationManager = $configurationManager;
+       }
+
+       /**
+        * Life-cycle method that is called by the DI container as soon as this object is completely built
+        *
+        * @return void
+        */
+       public function initializeObject() {
                $this->contentObject = $this->configurationManager->getContentObject();
        }
 
@@ -416,7 +424,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder {
 
        /**
         * Creates an URI used for linking to an Extbase action.
-        * Works in Frondend and Backend mode of TYPO3.
+        * Works in Frontend and Backend mode of TYPO3.
         *
         * @param string $actionName Name of the action to be called
         * @param array $controllerArguments Additional query parameters. Will be "namespaced" and merged with $this->arguments.
@@ -451,10 +459,10 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder {
                if ($this->format !== '') {
                        $controllerArguments['format'] = $this->format;
                }
-               $pluginNamespace = Tx_Extbase_Utility_Extension::getPluginNamespace($extensionName, $pluginName);
                if ($this->argumentPrefix !== NULL) {
                        $prefixedControllerArguments = array($this->argumentPrefix => $controllerArguments);
                } else {
+                       $pluginNamespace = Tx_Extbase_Utility_Extension::getPluginNamespace($extensionName, $pluginName);
                        $prefixedControllerArguments = array($pluginNamespace => $controllerArguments);
                }
                $this->arguments = t3lib_div::array_merge_recursive_overrule($this->arguments, $prefixedControllerArguments);
@@ -589,7 +597,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder {
                        // if we have a LazyLoadingProxy here, make sure to get the real instance for further processing
                        if ($argumentValue instanceof Tx_Extbase_Persistence_LazyLoadingProxy) {
                                $argumentValue = $argumentValue->_loadRealInstance();
-                               // also update the value in the arguments array, because the lazyLoaded object could be 
+                               // also update the value in the arguments array, because the lazyLoaded object could be
                                // hidden and thus the $argumentValue would be NULL.
                                $arguments[$argumentKey] = $argumentValue;
                        }
index 1216dc0..90dc531 100644 (file)
@@ -1,64 +1,64 @@
-<?php\r
-/***************************************************************\r
-*  Copyright notice\r
-*\r
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>\r
-*  All rights reserved\r
-*\r
-*  This class is a backport of the corresponding class of FLOW3.\r
-*  All credits go to the v5 team.\r
-*\r
-*  This script is part of the TYPO3 project. The TYPO3 project is\r
-*  free software; you can redistribute it and/or modify\r
-*  it under the terms of the GNU General Public License as published by\r
-*  the Free Software Foundation; either version 2 of the License, or\r
-*  (at your option) any later version.\r
-*\r
-*  The GNU General Public License can be found at\r
-*  http://www.gnu.org/copyleft/gpl.html.\r
-*\r
-*  This script is distributed in the hope that it will be useful,\r
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-*  GNU General Public License for more details.\r
-*\r
-*  This copyright notice MUST APPEAR in all copies of the script!\r
-***************************************************************/\r
-\r
-/**\r
- * Implementation of the default Extbase Object Manager\r
- *\r
- * @package Extbase\r
- * @subpackage Object\r
- * @deprecated since Extbase 1.3.0; will be removed in Extbase 1.5.0\r
- * @see Tx_Extbase_Object_ObjectManagerInterface, Tx_Extbase_Object_ObjectManager\r
- */\r
-class Tx_Extbase_Object_Manager extends Tx_Extbase_Object_ObjectManager {\r
-\r
-       /**\r
-        * Returns a fresh or existing instance of the object specified by $objectName.\r
-        *\r
-        * Important:\r
-        *\r
-        * If possible, instances of Prototype objects should always be created with the\r
-        * Object Factory's create() method and Singleton objects should rather be\r
-        * injected by some type of Dependency Injection.\r
-        *\r
-        * @param string $objectName The name of the object to return an instance of\r
-        * @return object The object instance\r
-        * @deprecated since Extbase 1.3.0; will be removed in Extbase 1.5.0. Please use Tx_Extbase_Object_ObjectManager instead\r
-        */\r
-       public function getObject($objectName) {\r
-               t3lib_div::logDeprecatedFunction();\r
-               $arguments = array_slice(func_get_args(), 1);\r
-               if (in_array('t3lib_Singleton', class_implements($objectName))) {\r
-                       $object = $this->get($objectName, $arguments);\r
-               } else {\r
-                       $object = $this->create($objectName, $arguments);\r
-               }\r
-               return $object;\r
-       }\r
-\r
-}\r
-\r
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  All rights reserved
+*
+*  This class is a backport of the corresponding class of FLOW3.
+*  All credits go to the v5 team.
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+/**
+ * Implementation of the default Extbase Object Manager
+ *
+ * @package Extbase
+ * @subpackage Object
+ * @deprecated since Extbase 1.3.0; will be removed in Extbase 1.5.0
+ * @see Tx_Extbase_Object_ObjectManagerInterface, Tx_Extbase_Object_ObjectManager
+ */
+class Tx_Extbase_Object_Manager extends Tx_Extbase_Object_ObjectManager {
+
+       /**
+        * Returns a fresh or existing instance of the object specified by $objectName.
+        *
+        * Important:
+        *
+        * If possible, instances of Prototype objects should always be created with the
+        * Object Factory's create() method and Singleton objects should rather be
+        * injected by some type of Dependency Injection.
+        *
+        * @param string $objectName The name of the object to return an instance of
+        * @return object The object instance
+        * @deprecated since Extbase 1.3.0; will be removed in Extbase 1.5.0. Please use Tx_Extbase_Object_ObjectManager instead
+        */
+       public function getObject($objectName) {
+               t3lib_div::logDeprecatedFunction();
+               $arguments = array_slice(func_get_args(), 1);
+               if (in_array('t3lib_Singleton', class_implements($objectName))) {
+                       $object = $this->get($objectName, $arguments);
+               } else {
+                       $object = $this->create($objectName, $arguments);
+               }
+               return $object;
+       }
+
+}
+
 ?>
\ No newline at end of file
index df15f19..20f7c7e 100644 (file)
-<?php\r
-/***************************************************************\r
-*  Copyright notice\r
-*\r
-*  (c) 2010 Bastian Waidelich <bastian@typo3.org>\r
-*  All rights reserved\r
-*\r
-*  This class is a backport of the corresponding class of FLOW3.\r
-*  All credits go to the v5 team.\r
-*\r
-*  This script is part of the TYPO3 project. The TYPO3 project is\r
-*  free software; you can redistribute it and/or modify\r
-*  it under the terms of the GNU General Public License as published by\r
-*  the Free Software Foundation; either version 2 of the License, or\r
-*  (at your option) any later version.\r
-*\r
-*  The GNU General Public License can be found at\r
-*  http://www.gnu.org/copyleft/gpl.html.\r
-*\r
-*  This script is distributed in the hope that it will be useful,\r
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-*  GNU General Public License for more details.\r
-*\r
-*  This copyright notice MUST APPEAR in all copies of the script!\r
-***************************************************************/\r
-\r
-/**\r
- * A lazy result list that is returned by Query::execute()\r
- *\r
- * @package Extbase\r
- * @subpackage Persistence\r
- * @scope prototype\r
- * @api\r
- */\r
-class Tx_Extbase_Persistence_QueryResult implements Tx_Extbase_Persistence_QueryResultInterface {\r
-\r
-       /**\r
-        * This field is only needed to make debugging easier:\r
-        * If you call current() on a class that implements Iterator, PHP will return the first field of the object\r
-        * instead of calling the current() method of the interface.\r
-        * We use this unusual behavior of PHP to return the warning below in this case.\r
-        *\r
-        * @var string\r
-        * @deprecated since Extbase 1.3.0; will be removed in Extbase 1.5.0\r
-        */\r
-       private $warning = 'You should never see this warning. If you do, you probably used PHP array functions like current() on the Tx_Extbase_Persistence_QueryResult. To retrieve the first result, you can use the getFirst() method.';\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_Mapper_DataMapper\r
-        */\r
-       protected $dataMapper;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_ManagerInterface\r
-        */\r
-       protected $persistenceManager;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_QueryInterface\r
-        */\r
-       protected $query;\r
-\r
-       /**\r
-        * @var array\r
-        * @transient\r
-        */\r
-       protected $queryResult;\r
-\r
-       /**\r
-        * Constructor\r
-        *\r
-        * @param Tx_Extbase_Persistence_QueryInterface $query\r
-        */\r
-       public function __construct(Tx_Extbase_Persistence_QueryInterface $query) {\r
-               $this->query = $query;\r
-       }\r
-\r
-       /**\r
-        * Injects the DataMapper to map records to objects\r
-        *\r
-        * @param Tx_Extbase_Persistence_Mapper_DataMapper $dataMapper\r
-        * @return void\r
-        */\r
-       public function injectDataMapper(Tx_Extbase_Persistence_Mapper_DataMapper $dataMapper) {\r
-               $this->dataMapper = $dataMapper;\r
-       }\r
-\r
-       /**\r
-        * Injects the persistence manager\r
-        *\r
-        * @param Tx_Extbase_Persistence_ManagerInterface $persistenceManager\r
-        * @return void\r
-        */\r
-       public function injectPersistenceManager(Tx_Extbase_Persistence_ManagerInterface $persistenceManager) {\r
-               $this->persistenceManager = $persistenceManager;\r
-       }\r
-\r
-       /**\r
-        * Loads the objects this QueryResult is supposed to hold\r
-        *\r
-        * @return void\r
-        */\r
-       protected function initialize() {\r
-               if (!is_array($this->queryResult)) {\r
-                       $this->queryResult = $this->dataMapper->map($this->query->getType(), $this->persistenceManager->getObjectDataByQuery($this->query));\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Returns a clone of the query object\r
-        *\r
-        * @return Tx_Extbase_Persistence_QueryInterface\r
-        * @api\r
-        */\r
-       public function getQuery() {\r
-               return clone $this->query;\r
-       }\r
-\r
-       /**\r
-        * Returns the first object in the result set\r
-        *\r
-        * @return object\r
-        * @api\r
-        */\r
-       public function getFirst() {\r
-               if (is_array($this->queryResult)) {\r
-                       $queryResult = $this->queryResult;\r
-                       reset($queryResult);\r
-               } else {\r
-                       $query = clone $this->query;\r
-                       $query->setLimit(1);\r
-                       $queryResult = $this->dataMapper->map($this->query->getType(), $this->persistenceManager->getObjectDataByQuery($this->query));\r
-               }\r
-               $firstResult = current($queryResult);\r
-               if ($firstResult === FALSE) {\r
-                       $firstResult = NULL;\r
-               }\r
-               return $firstResult;\r
-       }\r
-\r
-       /**\r
-        * Returns the number of objects in the result\r
-        *\r
-        * @return integer The number of matching objects\r
-        * @api\r
-        */\r
-       public function count() {\r
-               if (is_array($this->queryResult)) {\r
-                       return count($this->queryResult);\r
-               } else {\r
-                       return $this->persistenceManager->getObjectCountByQuery($this->query);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Returns an array with the objects in the result set\r
-        *\r
-        * @return array\r
-        * @api\r
-        */\r
-       public function toArray() {\r
-               $this->initialize();\r
-               return iterator_to_array($this);\r
-       }\r
-\r
-       /**\r
-        * This method is needed to implement the ArrayAccess interface,\r
-        * but it isn't very useful as the offset has to be an integer\r
-        *\r
-        * @param mixed $offset\r
-        * @return boolean\r
-        * @see ArrayAccess::offsetExists()\r
-        */\r
-       public function offsetExists($offset) {\r
-               $this->initialize();\r
-               return isset($this->queryResult[$offset]);\r
-       }\r
-\r
-       /**\r
-        * @param mixed $offset\r
-        * @return mixed\r
-        * @see ArrayAccess::offsetGet()\r
-        */\r
-       public function offsetGet($offset) {\r
-               $this->initialize();\r
-               return isset($this->queryResult[$offset]) ? $this->queryResult[$offset] : NULL;\r
-       }\r
-\r
-       /**\r
-        * This method has no effect on the persisted objects but only on the result set\r
-        *\r
-        * @param mixed $offset\r
-        * @param mixed $value\r
-        * @return void\r
-        * @see ArrayAccess::offsetSet()\r
-        */\r
-       public function offsetSet($offset, $value) {\r
-               $this->initialize();\r
-               $this->queryResult[$offset] = $value;\r
-       }\r
-\r
-       /**\r
-        * This method has no effect on the persisted objects but only on the result set\r
-        *\r
-        * @param mixed $offset\r
-        * @return void\r
-        * @see ArrayAccess::offsetUnset()\r
-        */\r
-       public function offsetUnset($offset) {\r
-               $this->initialize();\r
-               unset($this->queryResult[$offset]);\r
-       }\r
-\r
-       /**\r
-        * @return mixed\r
-        * @see Iterator::current()\r
-        */\r
-       public function current() {\r
-               $this->initialize();\r
-               return current($this->queryResult);\r
-       }\r
-\r
-       /**\r
-        * @return mixed\r
-        * @see Iterator::key()\r
-        */\r
-       public function key() {\r
-               $this->initialize();\r
-               return key($this->queryResult);\r
-       }\r
-\r
-       /**\r
-        * @return void\r
-        * @see Iterator::next()\r
-        */\r
-       public function next() {\r
-               $this->initialize();\r
-               next($this->queryResult);\r
-       }\r
-\r
-       /**\r
-        * @return void\r
-        * @see Iterator::rewind()\r
-        */\r
-       public function rewind() {\r
-               $this->initialize();\r
-               reset($this->queryResult);\r
-       }\r
-\r
-       /**\r
-        * @return void\r
-        * @see Iterator::valid()\r
-        */\r
-       public function valid() {\r
-               $this->initialize();\r
-               return current($this->queryResult) !== FALSE;\r
-       }\r
-\r
-       /**\r
-        * @return void\r
-        */\r
-       public function __wakeup() {\r
-               $objectManager = t3lib_div::makeInstance('Tx_Extbase_Object_ObjectManager');\r
-               $this->persistenceManager = $objectManager->get('Tx_Extbase_Persistence_ManagerInterface');\r
-               $this->dataMapper = $objectManager->get('Tx_Extbase_Persistence_Mapper_DataMapper');\r
-       }\r
-\r
-       /**\r
-        * @return array\r
-        */\r
-       public function __sleep() {\r
-               return array('query');\r
-       }\r
-}\r
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2010 Bastian Waidelich <bastian@typo3.org>
+*  All rights reserved
+*
+*  This class is a backport of the corresponding class of FLOW3.
+*  All credits go to the v5 team.
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+/**
+ * A lazy result list that is returned by Query::execute()
+ *
+ * @package Extbase
+ * @subpackage Persistence
+ * @scope prototype
+ * @api
+ */
+class Tx_Extbase_Persistence_QueryResult implements Tx_Extbase_Persistence_QueryResultInterface {
+
+       /**
+        * This field is only needed to make debugging easier:
+        * If you call current() on a class that implements Iterator, PHP will return the first field of the object
+        * instead of calling the current() method of the interface.
+        * We use this unusual behavior of PHP to return the warning below in this case.
+        *
+        * @var string
+        * @deprecated since Extbase 1.3.0; will be removed in Extbase 1.5.0
+        */
+       private $warning = 'You should never see this warning. If you do, you probably used PHP array functions like current() on the Tx_Extbase_Persistence_QueryResult. To retrieve the first result, you can use the getFirst() method.';
+
+       /**
+        * @var Tx_Extbase_Persistence_Mapper_DataMapper
+        */
+       protected $dataMapper;
+
+       /**
+        * @var Tx_Extbase_Persistence_ManagerInterface
+        */
+       protected $persistenceManager;
+
+       /**
+        * @var Tx_Extbase_Persistence_QueryInterface
+        */
+       protected $query;
+
+       /**
+        * @var array
+        * @transient
+        */
+       protected $queryResult;
+
+       /**
+        * Constructor
+        *
+        * @param Tx_Extbase_Persistence_QueryInterface $query
+        */
+       public function __construct(Tx_Extbase_Persistence_QueryInterface $query) {
+               $this->query = $query;
+       }
+
+       /**
+        * Injects the DataMapper to map records to objects
+        *
+        * @param Tx_Extbase_Persistence_Mapper_DataMapper $dataMapper
+        * @return void
+        */
+       public function injectDataMapper(Tx_Extbase_Persistence_Mapper_DataMapper $dataMapper) {
+               $this->dataMapper = $dataMapper;
+       }
+
+       /**
+        * Injects the persistence manager
+        *
+        * @param Tx_Extbase_Persistence_ManagerInterface $persistenceManager
+        * @return void
+        */
+       public function injectPersistenceManager(Tx_Extbase_Persistence_ManagerInterface $persistenceManager) {
+               $this->persistenceManager = $persistenceManager;
+       }
+
+       /**
+        * Loads the objects this QueryResult is supposed to hold
+        *
+        * @return void
+        */
+       protected function initialize() {
+               if (!is_array($this->queryResult)) {
+                       $this->queryResult = $this->dataMapper->map($this->query->getType(), $this->persistenceManager->getObjectDataByQuery($this->query));
+               }
+       }
+
+       /**
+        * Returns a clone of the query object
+        *
+        * @return Tx_Extbase_Persistence_QueryInterface
+        * @api
+        */
+       public function getQuery() {
+               return clone $this->query;
+       }
+
+       /**
+        * Returns the first object in the result set
+        *
+        * @return object
+        * @api
+        */
+       public function getFirst() {
+               if (is_array($this->queryResult)) {
+                       $queryResult = $this->queryResult;
+                       reset($queryResult);
+               } else {
+                       $query = clone $this->query;
+                       $query->setLimit(1);
+                       $queryResult = $this->dataMapper->map($this->query->getType(), $this->persistenceManager->getObjectDataByQuery($this->query));
+               }
+               $firstResult = current($queryResult);
+               if ($firstResult === FALSE) {
+                       $firstResult = NULL;
+               }
+               return $firstResult;
+       }
+
+       /**
+        * Returns the number of objects in the result
+        *
+        * @return integer The number of matching objects
+        * @api
+        */
+       public function count() {
+               if (is_array($this->queryResult)) {
+                       return count($this->queryResult);
+               } else {
+                       return $this->persistenceManager->getObjectCountByQuery($this->query);
+               }
+       }
+
+       /**
+        * Returns an array with the objects in the result set
+        *
+        * @return array
+        * @api
+        */
+       public function toArray() {
+               $this->initialize();
+               return iterator_to_array($this);
+       }
+
+       /**
+        * This method is needed to implement the ArrayAccess interface,
+        * but it isn't very useful as the offset has to be an integer
+        *
+        * @param mixed $offset
+        * @return boolean
+        * @see ArrayAccess::offsetExists()
+        */
+       public function offsetExists($offset) {
+               $this->initialize();
+               return isset($this->queryResult[$offset]);
+       }
+
+       /**
+        * @param mixed $offset
+        * @return mixed
+        * @see ArrayAccess::offsetGet()
+        */
+       public function offsetGet($offset) {
+               $this->initialize();
+               return isset($this->queryResult[$offset]) ? $this->queryResult[$offset] : NULL;
+       }
+
+       /**
+        * This method has no effect on the persisted objects but only on the result set
+        *
+        * @param mixed $offset
+        * @param mixed $value
+        * @return void
+        * @see ArrayAccess::offsetSet()
+        */
+       public function offsetSet($offset, $value) {
+               $this->initialize();
+               $this->queryResult[$offset] = $value;
+       }
+
+       /**
+        * This method has no effect on the persisted objects but only on the result set
+        *
+        * @param mixed $offset
+        * @return void
+        * @see ArrayAccess::offsetUnset()
+        */
+       public function offsetUnset($offset) {
+               $this->initialize();
+               unset($this->queryResult[$offset]);
+       }
+
+       /**
+        * @return mixed
+        * @see Iterator::current()
+        */
+       public function current() {
+               $this->initialize();
+               return current($this->queryResult);
+       }
+
+       /**
+        * @return mixed
+        * @see Iterator::key()
+        */
+       public function key() {
+               $this->initialize();
+               return key($this->queryResult);
+       }
+
+       /**
+        * @return void
+        * @see Iterator::next()
+        */
+       public function next() {
+               $this->initialize();
+               next($this->queryResult);
+       }
+
+       /**
+        * @return void
+        * @see Iterator::rewind()
+        */
+       public function rewind() {
+               $this->initialize();
+               reset($this->queryResult);
+       }
+
+       /**
+        * @return void
+        * @see Iterator::valid()
+        */
+       public function valid() {
+               $this->initialize();
+               return current($this->queryResult) !== FALSE;
+       }
+
+       /**
+        * @return void
+        */
+       public function __wakeup() {
+               $objectManager = t3lib_div::makeInstance('Tx_Extbase_Object_ObjectManager');
+               $this->persistenceManager = $objectManager->get('Tx_Extbase_Persistence_ManagerInterface');
+               $this->dataMapper = $objectManager->get('Tx_Extbase_Persistence_Mapper_DataMapper');
+       }
+
+       /**
+        * @return array
+        */
+       public function __sleep() {
+               return array('query');
+       }
+}
 ?>
\ No newline at end of file
index 36bd45d..c4d12f1 100644 (file)
@@ -1,60 +1,60 @@
-<?php\r
-/***************************************************************\r
-*  Copyright notice\r
-*\r
-*  (c) 2010 Bastian Waidelich <bastian@typo3.org>\r
-*  All rights reserved\r
-*\r
-*  This class is a backport of the corresponding class of FLOW3.\r
-*  All credits go to the v5 team.\r
-*\r
-*  This script is part of the TYPO3 project. The TYPO3 project is\r
-*  free software; you can redistribute it and/or modify\r
-*  it under the terms of the GNU General Public License as published by\r
-*  the Free Software Foundation; either version 2 of the License, or\r
-*  (at your option) any later version.\r
-*\r
-*  The GNU General Public License can be found at\r
-*  http://www.gnu.org/copyleft/gpl.html.\r
-*\r
-*  This script is distributed in the hope that it will be useful,\r
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-*  GNU General Public License for more details.\r
-*\r
-*  This copyright notice MUST APPEAR in all copies of the script!\r
-***************************************************************/\r
-\r
-/**\r
- * A lazy result list that is returned by Query::execute()\r
- *\r
- * @package Extbase\r
- * @subpackage Persistence\r
- */\r
-interface Tx_Extbase_Persistence_QueryResultInterface extends Countable, Iterator, ArrayAccess {\r
-\r
-       /**\r
-        * Returns a clone of the query object\r
-        *\r
-        * @return Tx_Extbase_Persistence_QueryInterface\r
-        * @api\r
-        */\r
-       public function getQuery();\r
-\r
-       /**\r
-        * Returns the first object in the result set\r
-        *\r
-        * @return object\r
-        * @api\r
-        */\r
-       public function getFirst();\r
-\r
-       /**\r
-        * Returns an array with the objects in the result set\r
-        *\r
-        * @return array\r
-        * @api\r
-        */\r
-       public function toArray();\r
-}\r
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2010 Bastian Waidelich <bastian@typo3.org>
+*  All rights reserved
+*
+*  This class is a backport of the corresponding class of FLOW3.
+*  All credits go to the v5 team.
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+/**
+ * A lazy result list that is returned by Query::execute()
+ *
+ * @package Extbase
+ * @subpackage Persistence
+ */
+interface Tx_Extbase_Persistence_QueryResultInterface extends Countable, Iterator, ArrayAccess {
+
+       /**
+        * Returns a clone of the query object
+        *
+        * @return Tx_Extbase_Persistence_QueryInterface
+        * @api
+        */
+       public function getQuery();
+
+       /**
+        * Returns the first object in the result set
+        *
+        * @return object
+        * @api
+        */
+       public function getFirst();
+
+       /**
+        * Returns an array with the objects in the result set
+        *
+        * @return array
+        * @api
+        */
+       public function toArray();
+}
 ?>
\ No newline at end of file
index f942e31..a4a9203 100644 (file)
@@ -123,10 +123,10 @@ class Tx_Extbase_Persistence_Repository implements Tx_Extbase_Persistence_Reposi
        }
 
        /**
-        * @param Tx_Extbase_Persistence_Manager $persistenceManager
+        * @param Tx_Extbase_Persistence_ManagerInterface $persistenceManager
         * @return void
         */
-       public function injectPersistenceManager(Tx_Extbase_Persistence_Manager $persistenceManager) {
+       public function injectPersistenceManager(Tx_Extbase_Persistence_ManagerInterface $persistenceManager) {
                $this->persistenceManager = $persistenceManager;
                $this->persistenceManager->registerRepositoryClassName($this->getRepositoryClassName());
        }
@@ -295,7 +295,10 @@ class Tx_Extbase_Persistence_Repository implements Tx_Extbase_Persistence_Reposi
                        $query = $this->createQuery();
                        $query->getQuerySettings()->setRespectSysLanguage(FALSE);
                        $query->getQuerySettings()->setRespectStoragePage(FALSE);
-                       $object = $query->matching($query->equals('uid', $uid))
+                       $object = $query
+                                       ->matching(
+                                               $query->equals('uid', $uid)
+                                       )
                                        ->execute()
                                        ->getFirst();
                        if ($object !== NULL) {
index b2d3b50..6339caa 100644 (file)
@@ -966,7 +966,7 @@ class Tx_Extbase_Persistence_Storage_Typo3DbBackend implements Tx_Extbase_Persis
                                        $row = $this->pageSelectObject->getRecordOverlay($tableName, $row, $languageUid, $overlayMode);
                                }
                        }
-                       if ($row !== NULL) {
+                       if ($row !== NULL && is_array($row)) {
                                $overlayedRows[] = $row;
                        }
                }
index 197644c..8ebcaf9 100644 (file)
@@ -135,9 +135,10 @@ tt_content.' . $pluginSignature . ' {
         * @param string $extensionName The extension name (in UpperCamelCase) or the extension key (in lower_underscore)
         * @param string $pluginName must be a unique id for your plugin in UpperCamelCase (the string length of the extension key added to the length of the plugin name should be less than 32!)
         * @param string $pluginTitle is a speaking title of the plugin that will be displayed in the drop down menu in the backend
+        * @param string $pluginIconPathAndFilename is a path to an icon file (relative to TYPO3_mainDir), that will be displayed in the drop down menu in the backend (optional)
         * @return void
         */
-       static public function registerPlugin($extensionName, $pluginName, $pluginTitle) {
+       static public function registerPlugin($extensionName, $pluginName, $pluginTitle, $pluginIconPathAndFilename = NULL) {
                if (empty($pluginName)) {
                        throw new InvalidArgumentException('The plugin name must not be empty', 1239891987);
                }
@@ -147,7 +148,7 @@ tt_content.' . $pluginSignature . ' {
                $extensionName = str_replace(' ', '', ucwords(str_replace('_', ' ', $extensionName)));
                $pluginSignature = strtolower($extensionName) . '_' . strtolower($pluginName);
 
-               t3lib_extMgm::addPlugin(array($pluginTitle, $pluginSignature), $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['pluginType']);
+               t3lib_extMgm::addPlugin(array($pluginTitle, $pluginSignature, $pluginIconPathAndFilename), $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'][$pluginName]['pluginType']);
        }
 
        /**
index 611de91..7923ce2 100644 (file)
@@ -111,8 +111,13 @@ class Tx_Extbase_Tests_Unit_Configuration_BackendConfigurationManagerTest extend
        /**
         * @test
         */
-       public function getCurrentPageIdReturnsPidFromFirstRootTemplateIfIdIsNotSet() {
-               $GLOBALS['TYPO3_DB']->expects($this->once())
+       public function getCurrentPageIdReturnsPidFromFirstRootTemplateIfIdIsNotSetAndNoRootPageWasFound() {
+               $GLOBALS['TYPO3_DB']->expects($this->at(0))
+                       ->method('exec_SELECTgetRows')
+                       ->with('uid', 'pages', 'deleted=0 AND hidden=0 AND is_siteroot=1', '', '', '1')
+                       ->will($this->returnValue(array()));
+
+               $GLOBALS['TYPO3_DB']->expects($this->at(1))
                        ->method('exec_SELECTgetRows')
                        ->with('pid', 'sys_template', 'deleted=0 AND hidden=0 AND root=1', '', '', '1')
                        ->will(
@@ -132,13 +137,8 @@ class Tx_Extbase_Tests_Unit_Configuration_BackendConfigurationManagerTest extend
        /**
         * @test
         */
-       public function getCurrentPageIdReturnsUidFromFirstRootPageIfIdIsNotSetAndNoRootTemplateWasFound() {
-               $GLOBALS['TYPO3_DB']->expects($this->at(0))
-                       ->method('exec_SELECTgetRows')
-                       ->with('pid', 'sys_template', 'deleted=0 AND hidden=0 AND root=1', '', '', '1')
-                       ->will($this->returnValue(array()));
-
-               $GLOBALS['TYPO3_DB']->expects($this->at(1))
+       public function getCurrentPageIdReturnsUidFromFirstRootPageIfIdIsNotSet() {
+               $GLOBALS['TYPO3_DB']->expects($this->once())
                        ->method('exec_SELECTgetRows')
                        ->with('uid', 'pages', 'deleted=0 AND hidden=0 AND is_siteroot=1', '', '', '1')
                        ->will(
@@ -161,12 +161,12 @@ class Tx_Extbase_Tests_Unit_Configuration_BackendConfigurationManagerTest extend
        public function getCurrentPageIdReturnsDefaultStoragePidIfIdIsNotSetNoRootTemplateAndRootPageWasFound() {
                $GLOBALS['TYPO3_DB']->expects($this->at(0))
                        ->method('exec_SELECTgetRows')
-                       ->with('pid', 'sys_template', 'deleted=0 AND hidden=0 AND root=1', '', '', '1')
+                       ->with('uid', 'pages', 'deleted=0 AND hidden=0 AND is_siteroot=1', '', '', '1')
                        ->will($this->returnValue(array()));
 
                $GLOBALS['TYPO3_DB']->expects($this->at(1))
                        ->method('exec_SELECTgetRows')
-                       ->with('uid', 'pages', 'deleted=0 AND hidden=0 AND is_siteroot=1', '', '', '1')
+                       ->with('pid', 'sys_template', 'deleted=0 AND hidden=0 AND root=1', '', '', '1')
                        ->will($this->returnValue(array()));
 
                $expectedResult = Tx_Extbase_Configuration_AbstractConfigurationManager::DEFAULT_BACKEND_STORAGE_PID;
@@ -307,7 +307,7 @@ class Tx_Extbase_Tests_Unit_Configuration_BackendConfigurationManagerTest extend
        /**
         * @test
         */
-       public function getContextSpecificFrameworkConfigurationReturnsUnmodifiedFrameworkConfiguration() {
+       public function getContextSpecificFrameworkConfigurationReturnsUnmodifiedFrameworkConfigurationIfRequestHandlersAreConfigured() {
                $frameworkConfiguration = array(
                        'pluginName' => 'Pi1',
                        'extensionName' => 'SomeExtension',
@@ -315,11 +315,48 @@ class Tx_Extbase_Tests_Unit_Configuration_BackendConfigurationManagerTest extend
                                'bar' => array(
                                        'baz' => 'Foo',
                                ),
+                       ),
+                       'mvc' => array(
+                               'requestHandlers' => array(
+                                       'Tx_Extbase_MVC_Web_FrontendRequestHandler' => 'SomeRequestHandler'
+                               )
                        )
                );
                $expectedResult = $frameworkConfiguration;
                $actualResult = $this->backendConfigurationManager->_call('getContextSpecificFrameworkConfiguration', $frameworkConfiguration);
                $this->assertEquals($expectedResult, $actualResult);
        }
+
+       /**
+        * @test
+        */
+       public function getContextSpecificFrameworkConfigurationSetsDefaultRequestHandlersIfRequestHandlersAreNotConfigured() {
+               $frameworkConfiguration = array(
+                       'pluginName' => 'Pi1',
+                       'extensionName' => 'SomeExtension',
+                       'foo' => array(
+                               'bar' => array(
+                                       'baz' => 'Foo',
+                               ),
+                       ),
+               );
+               $expectedResult = array(
+                       'pluginName' => 'Pi1',
+                       'extensionName' => 'SomeExtension',
+                       'foo' => array(
+                               'bar' => array(
+                                       'baz' => 'Foo',
+                               ),
+                       ),
+                       'mvc' => array(
+                               'requestHandlers' => array(
+                                       'Tx_Extbase_MVC_Web_FrontendRequestHandler' => 'Tx_Extbase_MVC_Web_FrontendRequestHandler',
+                                       'Tx_Extbase_MVC_Web_BackendRequestHandler' => 'Tx_Extbase_MVC_Web_BackendRequestHandler'
+                               )
+                       )
+               );
+               $actualResult = $this->backendConfigurationManager->_call('getContextSpecificFrameworkConfiguration', $frameworkConfiguration);
+               $this->assertEquals($expectedResult, $actualResult);
+       }
 }
 ?>
\ No newline at end of file
index 529a583..b7393d4 100644 (file)
@@ -25,7 +25,7 @@
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_Configuration_FrontendConfigurationManagerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Configuration_FrontendConfigurationManagerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var tslib_fe
index b5a5573..d12350f 100644 (file)
@@ -22,7 +22,7 @@
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_DomainObject_AbstractEntity_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_DomainObject_AbstractEntityTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 058f6ab..e0099df 100644 (file)
@@ -25,7 +25,7 @@
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_MVC_Controller_AbstractController_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_Controller_AbstractControllerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 1758957..e28be51 100644 (file)
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_MVC_Controller_ActionController_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_Controller_ActionControllerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+
+       /**
+        * @var Tx_Extbase_MVC_Controller_ActionController
+        */
+       protected $actionController;
+
+       /**
+        * @var Tx_Extbase_Object_ObjectManagerInterface
+        */
+       protected $mockObjectManager;
+
+       /**
+        * @var Tx_Extbase_MVC_Web_Routing_UriBuilder
+        */
+       protected $mockUriBuilder;
+
+       public function setUp() {
+               $this->actionController = $this->getAccessibleMock('Tx_Extbase_MVC_Controller_ActionController');
+               //$this->mockUriBuilder = $this->getMock('Tx_Extbase_MVC_Web_Routing_UriBuilder');
+               //$this->mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               //$this->mockObjectManager->expects($this->any())->method('create')->with('Tx_Extbase_MVC_Web_Routing_UriBuilder')->will($this->returnValue($this->mockUriBuilder));
+               //$this->actionController->_set('objectManager', $this->mockObjectManager);
+       }
 
        /**
         * @test
-        * @author Robert Lemke <robert@typo3.org>
         */
        public function processRequestSticksToSpecifiedSequence() {
                $mockRequest = $this->getMock('Tx_Extbase_MVC_Web_Request', array(), array(), '', FALSE);
                $mockRequest->expects($this->once())->method('setDispatched')->with(TRUE);
 
+               $mockUriBuilder = $this->getMock('Tx_Extbase_MVC_Web_Routing_UriBuilder');
+               $mockUriBuilder->expects($this->once())->method('setRequest')->with($mockRequest);
+
+               $mockControllerContext = $this->getMock('Tx_Extbase_MVC_Controller_ControllerContext', array(), array(), '', FALSE);
+
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->once())->method('create')->with('Tx_Extbase_MVC_Web_Routing_UriBuilder')->will($this->returnValue($mockUriBuilder));
+
                $mockResponse = $this->getMock('Tx_Extbase_MVC_Web_Response', array(), array(), '', FALSE);
 
                $mockView = $this->getMock('Tx_Extbase_MVC_View_ViewInterface');
 
-               $mockController = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Controller_ActionController'), array(
-                       'initializeFooAction', 'initializeAction', 'resolveActionMethodName', 'initializeActionMethodArguments', 'initializeActionMethodValidators', 'mapRequestArgumentsToControllerArguments', 'resolveView', 'initializeView', 'callActionMethod', 'checkRequestHash'),
+               $mockController = $this->getAccessibleMock('Tx_Extbase_MVC_Controller_ActionController', array(
+                       'initializeFooAction', 'initializeAction', 'resolveActionMethodName', 'initializeActionMethodArguments',
+                       'initializeActionMethodValidators', 'mapRequestArgumentsToControllerArguments', 'buildControllerContext',
+                       'resolveView', 'initializeView', 'callActionMethod'),
                        array(), '', FALSE);
-               $mockController->_set('objectFactory', $mockObjectFactory);
+
+               $mockController->_set('objectManager', $mockObjectManager);
                $mockController->expects($this->at(0))->method('resolveActionMethodName')->will($this->returnValue('fooAction'));
                $mockController->expects($this->at(1))->method('initializeActionMethodArguments');
                $mockController->expects($this->at(2))->method('initializeActionMethodValidators');
@@ -50,9 +83,8 @@ class Tx_Extbase_MVC_Controller_ActionController_testcase extends Tx_Extbase_Tes
                $mockController->expects($this->at(4))->method('initializeFooAction');
                $mockController->expects($this->at(5))->method('mapRequestArgumentsToControllerArguments');
                $mockController->expects($this->at(6))->method('checkRequestHash');
-               $mockController->expects($this->at(7))->method('resolveView')->will($this->returnValue($mockView));
-               $mockController->expects($this->at(8))->method('initializeView');
-               $mockController->expects($this->at(9))->method('callActionMethod');
+               $mockController->expects($this->at(7))->method('buildControllerContext');
+               $mockController->expects($this->at(8))->method('resolveView');
 
                $mockController->processRequest($mockRequest, $mockResponse);
                $this->assertSame($mockRequest, $mockController->_get('request'));
@@ -174,17 +206,18 @@ class Tx_Extbase_MVC_Controller_ActionController_testcase extends Tx_Extbase_Tes
                $mockSession = $this->getMock('Tx_Extbase_Session_SessionInterface');
                $mockControllerContext = $this->getMock('Tx_Extbase_MVC_Controller_ControllerContext', array(), array(), '', FALSE);
 
-               $mockFluidTemplateView = $this->getMock('Tx_Extbase_MVC_View_ViewInterface', array('setControllerContext', 'getViewHelper', 'assign', 'assignMultiple', 'render', 'hasTemplate', 'initializeView'));
+               $mockFluidTemplateView = $this->getMock('Tx_Extbase_MVC_View_ViewInterface');
                $mockFluidTemplateView->expects($this->once())->method('setControllerContext')->with($mockControllerContext);
-               $mockFluidTemplateView->expects($this->once())->method('hasTemplate')->will($this->returnValue(TRUE));
+               $mockFluidTemplateView->expects($this->once())->method('canRender')->with($mockControllerContext)->will($this->returnValue(TRUE));
 
                $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface', array(), array(), '', FALSE);
-               $mockObjectManager->expects($this->at(0))->method('get')->with('Tx_Fluid_View_TemplateView')->will($this->returnValue($mockFluidTemplateView));
+               $mockObjectManager->expects($this->at(0))->method('create')->with('Tx_Fluid_View_TemplateView')->will($this->returnValue($mockFluidTemplateView));
 
-               $mockController = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Controller_ActionController'), array('buildControllerContext'), array(), '', FALSE);
-               $mockController->expects($this->once())->method('buildControllerContext')->will($this->returnValue($mockControllerContext));
+               $mockController = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Controller_ActionController'), array('buildControllerContext', 'resolveViewObjectName', 'setViewConfiguration'), array(), '', FALSE);
+               $mockController->expects($this->once())->method('resolveViewObjectName')->will($this->returnValue(FALSE));
                $mockController->_set('session', $mockSession);
                $mockController->_set('objectManager', $mockObjectManager);
+               $mockController->_set('controllerContext', $mockControllerContext);
 
                $this->assertSame($mockFluidTemplateView, $mockController->_call('resolveView'));
        }
@@ -198,7 +231,7 @@ class Tx_Extbase_MVC_Controller_ActionController_testcase extends Tx_Extbase_Tes
                $mockRequest->expects($this->once())->method('getControllerExtensionName')->will($this->returnValue('MyPackage'));
                $mockRequest->expects($this->once())->method('getControllerName')->will($this->returnValue('MyController'));
                $mockRequest->expects($this->once())->method('getControllerActionName')->will($this->returnValue('MyAction'));
-               $mockRequest->expects($this->once())->method('getFormat')->will($this->returnValue('MyFormat'));
+               $mockRequest->expects($this->atLeastOnce())->method('getFormat')->will($this->returnValue('MyFormat'));
 
                $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface', array(), array(), '', FALSE);
 
@@ -501,7 +534,7 @@ class Tx_Extbase_MVC_Controller_ActionController_testcase extends Tx_Extbase_Tes
                $mockArgumentsMappingResults->expects($this->atLeastOnce())->method('getErrors')->will($this->returnValue(array($mockError)));
                $mockArgumentsMappingResults->expects($this->any())->method('getWarnings')->will($this->returnValue(array()));
 
-               $mockController = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Controller_ActionController'), array('pushFlashMessage'), array(), '', FALSE);
+               $mockController = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Controller_ActionController'), array('pushFlashMessage', 'clearCacheOnError'), array(), '', FALSE);
                $mockController->_set('request', $mockRequest);
                $mockController->_set('flashMessages', $mockFlashMessages);
                $mockController->_set('argumentsMappingResults', $mockArgumentsMappingResults);
@@ -519,7 +552,7 @@ class Tx_Extbase_MVC_Controller_ActionController_testcase extends Tx_Extbase_Tes
                $this->markTestIncomplete('To be implemented');
        }
 
-        /**
+       /**
         * Data Provider for checkRequestHashDoesNotThrowExceptionInNormalOperations
         */
        public function checkRequestHashInNormalOperation() {
index 800d4f4..37aa0c3 100644 (file)
@@ -25,7 +25,7 @@
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_MVC_Controller_Argument_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_Controller_ArgumentTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
@@ -133,9 +133,12 @@ class Tx_Extbase_MVC_Controller_Argument_testcase extends Tx_Extbase_Tests_Unit_
         */
        public function setNewValidatorConjunctionCreatesANewValidatorConjunctionObject() {
                $argument = new Tx_Extbase_MVC_Controller_Argument('dummy', 'Text');
+               $mockConjunctionValidator = $this->getMock('Tx_Extbase_Validation_Validator_ConjunctionValidator');
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->once())->method('create')->with('Tx_Extbase_Validation_Validator_ConjunctionValidator')->will($this->returnValue($mockConjunctionValidator));
+               $argument->injectObjectManager($mockObjectManager);
                $argument->setNewValidatorConjunction(array());
-
-               $this->assertType('Tx_Extbase_Validation_Validator_ConjunctionValidator', $argument->getValidator(), 'The returned validator is not a conjunction as expected.');
+               $this->assertSame($mockConjunctionValidator, $argument->getValidator());
        }
 
        /**
@@ -161,6 +164,11 @@ class Tx_Extbase_MVC_Controller_Argument_testcase extends Tx_Extbase_Tests_Unit_
                $mockValidatorConjunction->expects($this->at(1))->method('addValidator')->with($validator2);
 
                $argument = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Controller_Argument'), array('dummy'), array(), '', FALSE);
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->never())->method('create');
+               $mockObjectManager->expects($this->at(0))->method('get')->with('Validator1')->will($this->returnValue($validator1));
+               $mockObjectManager->expects($this->at(1))->method('get')->with('Validator2')->will($this->returnValue($validator2));
+               $argument->injectObjectManager($mockObjectManager);
                $argument->_set('validator', $mockValidatorConjunction);
                $argument->setNewValidatorConjunction(array('Validator1', 'Validator2'));
        }
index 183da77..79f9227 100644 (file)
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_Controller_ArgumentsTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
         */
        public function argumentsObjectIsOfScopePrototype() {
-               $arguments1 = $this->objectManager->get('Tx_Extbase_MVC_Controller_Arguments');
-               $arguments2 = $this->objectManager->get('Tx_Extbase_MVC_Controller_Arguments');
+               $arguments1 = new Tx_Extbase_MVC_Controller_Arguments();
+               $arguments2 = new Tx_Extbase_MVC_Controller_Arguments();
                $this->assertNotSame($arguments1, $arguments2, 'The arguments object is not of scope prototype!');
        }
 
@@ -40,8 +40,8 @@ class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit
         * @test
         */
        public function addingAnArgumentManuallyWorks() {
-               $arguments = $this->objectManager->get('Tx_Extbase_MVC_Controller_Arguments');
-               $newArgument = $this->objectManager->get('Tx_Extbase_MVC_Controller_Argument', 'argumentName1234', 'dummyValue');
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments();
+               $newArgument = new Tx_Extbase_MVC_Controller_Argument('argumentName1234', 'dummyValue');
 
                $arguments->addArgument($newArgument);
                $this->assertSame($newArgument, $arguments->getArgument('argumentName1234'), 'The added and retrieved argument is not the same.');
@@ -69,11 +69,14 @@ class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit
         */
        public function addNewArgumentProvidesFluentInterface() {
                $mockArgument = $this->getMock('Tx_Extbase_MVC_Controller_Argument', array(), array(), '', FALSE);
-               $mockArguments = $this->getMock('Tx_Extbase_MVC_Controller_Arguments', array('createArgument'));
-               $mockArguments->expects($this->any())->method('createArgument')->will($this->returnValue($mockArgument));
 
-               $newArgument = $mockArguments->addNewArgument('someArgument');
-               $this->assertType('Tx_Extbase_MVC_Controller_Argument', $newArgument, 'addNewArgument() did not return an argument object.');
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->once())->method('create')->with('Tx_Extbase_MVC_Controller_Argument')->will($this->returnValue($mockArgument));
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments;
+               $arguments->injectObjectManager($mockObjectManager);
+
+               $newArgument = $arguments->addNewArgument('someArgument');
+               $this->assertSame($newArgument, $mockArgument);
        }
 
        /**
@@ -105,7 +108,7 @@ class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit
         * @test
         */
        public function getArgumentWithNonExistingArgumentNameThrowsException() {
-               $arguments = $this->objectManager->get('Tx_Extbase_MVC_Controller_Arguments');
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments();
                try {
                        $arguments->getArgument('someArgument');
                        $this->fail('getArgument() did not throw an exception although the specified argument does not exist.');
@@ -173,13 +176,16 @@ class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit
        public function addNewArgumentCreatesAndAddsNewArgument() {
                $mockArgument = $this->getMock('Tx_Extbase_MVC_Controller_Argument', array('getName'), array(), '', FALSE);
                $mockArgument->expects($this->any())->method('getName')->will($this->returnValue('dummyName'));
-               $mockArguments = $this->getMock('Tx_Extbase_MVC_Controller_Arguments', array('createArgument'));
-               $mockArguments->expects($this->any())->method('createArgument')->with($this->equalTo('dummyName'))->will($this->returnValue($mockArgument));
 
-               $addedArgument = $mockArguments->addNewArgument('dummyName');
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->once())->method('create')->with('Tx_Extbase_MVC_Controller_Argument')->will($this->returnValue($mockArgument));
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments;
+               $arguments->injectObjectManager($mockObjectManager);
+
+               $addedArgument = $arguments->addNewArgument('dummyName');
                $this->assertType('Tx_Extbase_MVC_Controller_Argument', $addedArgument, 'addNewArgument() either did not add a new argument or did not return it.');
 
-               $retrievedArgument = $mockArguments['dummyName'];
+               $retrievedArgument = $arguments['dummyName'];
                $this->assertSame($addedArgument, $retrievedArgument, 'The added and the retrieved argument are not the same.');
        }
 
@@ -189,10 +195,12 @@ class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit
        public function addNewArgumentAssumesTextDataTypeByDefault() {
                $mockArgument = $this->getMock('Tx_Extbase_MVC_Controller_Argument', array('getName'), array(), '', FALSE);
                $mockArgument->expects($this->any())->method('getName')->will($this->returnValue('dummyName'));
-               $mockArguments = $this->getMock('Tx_Extbase_MVC_Controller_Arguments', array('createArgument'));
-               $mockArguments->expects($this->any())->method('createArgument')->with($this->equalTo('dummyName'), $this->equalTo('Text'))->will($this->returnValue($mockArgument));
 
-               $addedArgument = $mockArguments->addNewArgument('dummyName');
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->once())->method('create')->with('Tx_Extbase_MVC_Controller_Argument', 'dummyName', 'Text')->will($this->returnValue($mockArgument));
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments;
+               $arguments->injectObjectManager($mockObjectManager);
+               $arguments->addNewArgument('dummyName');
        }
 
        /**
@@ -200,25 +208,28 @@ class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit
         */
        public function addNewArgumentCanAddArgumentsMarkedAsRequired() {
                $mockArgument = $this->getMock('Tx_Extbase_MVC_Controller_Argument', array('getName', 'setRequired'), array(), '', FALSE);
-               $mockArgument->expects($this->any())->method('getName')->will($this->returnValue('dummyName'));
-               $mockArgument->expects($this->any())->method('setRequired')->with(TRUE);
-               $mockArguments = $this->getMock('Tx_Extbase_MVC_Controller_Arguments', array('createArgument'));
-               $mockArguments->expects($this->any())->method('createArgument')->with($this->equalTo('dummyName'), $this->equalTo('Text'))->will($this->returnValue($mockArgument));
-
-               $addedArgument = $mockArguments->addNewArgument('dummyName', 'Text', TRUE);
+               $mockArgument->expects($this->once())->method('getName')->will($this->returnValue('dummyName'));
+               $mockArgument->expects($this->once())->method('setRequired')->with(TRUE);
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->once())->method('create')->with('Tx_Extbase_MVC_Controller_Argument', 'dummyName', 'Text')->will($this->returnValue($mockArgument));
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments;
+               $arguments->injectObjectManager($mockObjectManager);
+               $arguments->addNewArgument('dummyName', 'Text', TRUE);
        }
 
        /**
         * @test
         */
        public function addNewArgumentCanAddArgumentsMarkedAsOptionalWithDefaultValues() {
-               $mockArgument = $this->getMock('Tx_Extbase_MVC_Controller_Argument', array('getName', 'setRequired'), array(), '', FALSE);
-               $mockArgument->expects($this->any())->method('getName')->will($this->returnValue('dummyName'));
-               $mockArgument->expects($this->any())->method('setRequired')->with(TRUE);
-               $mockArguments = $this->getMock('Tx_Extbase_MVC_Controller_Arguments', array('createArgument'));
-               $mockArguments->expects($this->any())->method('createArgument')->with($this->equalTo('dummyName'), $this->equalTo('Text'))->will($this->returnValue($mockArgument));
-
-               $addedArgument = $mockArguments->addNewArgument('dummyName', 'Text', TRUE);
+               $mockArgument = $this->getMock('Tx_Extbase_MVC_Controller_Argument', array('getName', 'setRequired', 'setDefaultValue'), array(), '', FALSE);
+               $mockArgument->expects($this->once())->method('getName')->will($this->returnValue('dummyName'));
+               $mockArgument->expects($this->once())->method('setRequired')->with(FALSE);
+               $mockArgument->expects($this->once())->method('setDefaultValue')->with('someDefaultValue');
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $mockObjectManager->expects($this->once())->method('create')->with('Tx_Extbase_MVC_Controller_Argument', 'dummyName', 'Text')->will($this->returnValue($mockArgument));
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments;
+               $arguments->injectObjectManager($mockObjectManager);
+               $arguments->addNewArgument('dummyName', 'Text', FALSE, 'someDefaultValue');
        }
 
        /**
@@ -227,7 +238,7 @@ class Tx_Extbase_MVC_Controller_Arguments_testcase extends Tx_Extbase_Tests_Unit
         * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function callingInvalidMethodThrowsException() {
-               $arguments = $this->objectManager->get('Tx_Extbase_MVC_Controller_Arguments');
+               $arguments = new Tx_Extbase_MVC_Controller_Arguments();
                $arguments->nonExistingMethod();
        }
 
index 17cbe88..fa790d2 100644 (file)
@@ -27,7 +27,7 @@
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  */
-class Tx_Extbase_MVC_DispatcherTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_DispatcherTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index e2bd28c..d7c4e25 100644 (file)
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_MVC_Web_RequestBuilder_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_Web_RequestBuilderTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+
+       /**
+        * @var Tx_Extbase_MVC_Web_RequestBuilder
+        */
+       protected $requestBuilder;
+
+       /**
+        * @var Tx_Extbase_Configuration_ConfigurationManagerInterface
+        */
+       protected $mockConfigurationManager;
+
+       /**
+        * @var array
+        */
+       protected $configuration;
+
+       /**
+        * @var Tx_Extbase_Object_ObjectManagerInterface
+        */
+       protected $mockObjectManager;
+
+       /**
+        * @var Tx_Extbase_MVC_Web_Request
+        */
+       protected $mockRequest;
 
        /**
         * @var array
@@ -37,112 +62,165 @@ class Tx_Extbase_MVC_Web_RequestBuilder_testcase extends Tx_Extbase_Tests_Unit_B
         */
        protected $postBackup = array();
 
-       public function __construct() {
-               require_once(t3lib_extMgm::extPath('extbase', 'Classes/MVC/Web/RequestBuilder.php'));
-       }
+       /**
+        * @var array
+        */
+       protected $serverBackup = array();
 
        public function setUp() {
+               $this->requestBuilder = $this->getAccessibleMock('Tx_Extbase_MVC_Web_RequestBuilder', array('dummy'));
                $this->configuration = array(
                        'userFunc' => 'Tx_Extbase_Dispatcher->dispatch',
                        'pluginName' => 'Pi1',
                        'extensionName' => 'MyExtension',
                        'controller' => 'TheFirstController',
                        'action' => 'show',
-                       'switchableControllerActions' => array(
+                       'controllerConfiguration' => array(
                                'TheFirstController' => array(
-                                       'controller' => 'TheFirstController',
-                                       'actions' => 'show,index, ,new,create,delete,edit,update,setup,test'
+                                       'actions' => array('show', 'index', 'new', 'create', 'delete', 'edit', 'update', 'setup', 'test')
                                ),
                                'TheSecondController' => array(
-                                       'controller' => 'TheSecondController',
-                                       'actions' => 'show, index'
+                                       'actions' => array('show', 'index')
                                ),
                                'TheThirdController' => array(
-                                       'controller' => 'TheThirdController',
-                                       'actions' => 'delete,create'
+                                       'actions' => array('delete', 'create')
                                )
                        )
                );
-               $this->builder = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Web_RequestBuilder'), array('dummy'));
+               $this->mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $this->mockRequest = $this->getMock('Tx_Extbase_MVC_Web_Request');
+               $this->mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+
                $this->getBackup = $_GET;
                $this->postBackup = $_POST;
+               $this->serverBackup = $_SERVER;
+       }
+
+       /**
+        * @return void
+        */
+       protected function injectDependencies() {
+               $this->mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($this->configuration));
+               $this->requestBuilder->injectConfigurationManager($this->mockConfigurationManager);
+
+               $this->mockObjectManager->expects($this->any())->method('create')->with('Tx_Extbase_MVC_Web_Request')->will($this->returnValue($this->mockRequest));
+               $this->requestBuilder->injectObjectManager($this->mockObjectManager);
        }
 
        public function tearDown() {
                $_GET = $this->getBackup;
                $_POST = $this->postBackup;
+               $_SERVER = $this->serverBackup;
        }
 
        /**
         * @test
         */
        public function buildReturnsAWebRequestObject() {
-               $this->builder->initialize($this->configuration);
-               $request = $this->builder->build();
-               $this->assertEquals('Tx_Extbase_MVC_Web_Request', get_class($request));
-               $this->assertEquals('Pi1', $request->getPluginName());
-               $this->assertEquals('MyExtension', $request->getControllerExtensionName());
-               $this->assertEquals('TheFirstController', $request->getControllerName());
-               $this->assertEquals('show', $request->getControllerActionName());
+               $this->injectDependencies();
+               $request = $this->requestBuilder->build();
+               $this->assertSame($this->mockRequest, $request);
        }
 
        /**
         * @test
         */
-       public function buildWithoutConfigurationReturnsAWebRequestObjectWithDefaultSettings() {
-               $request = $this->builder->build();
-               $this->assertEquals('plugin', $request->getPluginName());
-               $this->assertEquals('Extbase', $request->getControllerExtensionName());
-               $this->assertEquals('Standard', $request->getControllerName());
-               $this->assertEquals('index', $request->getControllerActionName());
+       public function buildSetsRequestPluginName() {
+               $this->injectDependencies();
+               $this->mockRequest->expects($this->once())->method('setPluginName')->with('Pi1');
+               $this->requestBuilder->build();
        }
 
        /**
         * @test
         */
-       public function buildWithMissingControllerConfigurationsReturnsAWebRequestObjectWithDefaultControllerSettings() {
-               $configuration = $this->configuration;
-               unset($configuration['controller']);
-               unset($configuration['action']);
-               unset($configuration['switchableControllerActions']);
-               $this->builder->initialize($configuration);
-               $request = $this->builder->build();
-               $this->assertEquals('Pi1', $request->getPluginName());
-               $this->assertEquals('MyExtension', $request->getControllerExtensionName());
-               $this->assertEquals('Standard', $request->getControllerName());
-               $this->assertEquals('index', $request->getControllerActionName());
+       public function buildSetsRequestControllerExtensionName() {
+               $this->injectDependencies();
+               $this->mockRequest->expects($this->once())->method('setControllerExtensionName')->with('MyExtension');
+               $this->requestBuilder->build();
        }
 
        /**
         * @test
         */
-       public function buildWithMissingActionsReturnsAWebRequestObjectWithDefaultControllerSettings() {
-               $configuration = $this->configuration;
-               unset($configuration['action']);
-               unset($configuration['switchableControllerActions']);
-               $this->builder->initialize($configuration);
-               $request = $this->builder->build();
-               $this->assertEquals('Pi1', $request->getPluginName());
-               $this->assertEquals('MyExtension', $request->getControllerExtensionName());
-               $this->assertEquals('TheFirstController', $request->getControllerName());
-               $this->assertEquals('index', $request->getControllerActionName());
+       public function buildSetsRequestControllerName() {
+               $this->injectDependencies();
+               $this->mockRequest->expects($this->once())->method('setControllerName')->with('TheFirstController');
+               $this->requestBuilder->build();
        }
 
        /**
         * @test
         */
-       public function buildSetsTheRequestURIInTheRequestObject() {
-               $this->builder->initialize($this->configuration);
-               $request = $this->builder->build();
-               $this->assertEquals(t3lib_div::getIndpEnv('TYPO3_REQUEST_URL'), $request->getRequestURI());
+       public function buildSetsRequestControllerActionName() {
+               $this->injectDependencies();
+               $this->mockRequest->expects($this->once())->method('setControllerActionName')->with('show');
+               $this->requestBuilder->build();
+       }
+
+       /**
+        * @test
+        */
+       public function buildSetsRequestRequestURI() {
+               $this->injectDependencies();
+               $expectedRequestUri = t3lib_div::getIndpEnv('TYPO3_REQUEST_URL');
+               $this->mockRequest->expects($this->once())->method('setRequestURI')->with($expectedRequestUri);
+               $this->requestBuilder->build();
+       }
+
+       /**
+        * @test
+        */
+       public function buildSetsRequestBaseURI() {
+               $this->injectDependencies();
+               $expectedBaseUri = t3lib_div::getIndpEnv('TYPO3_SITE_URL');
+               $this->mockRequest->expects($this->once())->method('setBaseURI')->with($expectedBaseUri);
+               $this->requestBuilder->build();
+       }
+
+       /**
+        * @test
+        */
+       public function buildSetsRequestMethod() {
+               $this->injectDependencies();
+               $_SERVER['REQUEST_METHOD'] = 'SomeRequestMethod';
+               $expectedMethod = 'SomeRequestMethod';
+               $this->mockRequest->expects($this->once())->method('setMethod')->with($expectedMethod);
+               $this->requestBuilder->build();
+       }
+
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_MVC_Exception
+        */
+       public function buildThrowsExceptionIfExtensionNameIsNotConfigured() {
+               unset($this->configuration['extensionName']);
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($this->configuration));
+               $this->requestBuilder->injectConfigurationManager($mockConfigurationManager);
+               $this->requestBuilder->build();
+       }
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_MVC_Exception
+        */
+       public function buildThrowsExceptionIfPluginNameIsNotConfigured() {
+               unset($this->configuration['pluginName']);
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($this->configuration));
+               $this->requestBuilder->injectConfigurationManager($mockConfigurationManager);
+               $this->requestBuilder->build();
        }
 
        /**
         * @test
         */
        public function buildSetsParametersFromGetAndPostVariables() {
-               $this->builder->_set('extensionName', 'someExtensionName');
-               $this->builder->_set('pluginName', 'somePluginName');
+               $this->configuration['extensionName'] = 'SomeExtensionName';
+               $this->configuration['pluginName'] = 'SomePluginName';
+               $this->injectDependencies();
 
                $_GET = array(
                        'tx_someotherextensionname_somepluginname' => array(
@@ -166,24 +244,40 @@ class Tx_Extbase_MVC_Web_RequestBuilder_testcase extends Tx_Extbase_Tests_Unit_B
                                )
                        )
                );
+               $this->mockRequest->expects($this->at(7))->method('setArgument')->with('parameter1', 'value1');
+               $this->mockRequest->expects($this->at(8))->method('setArgument')->with('parameter2', array('parameter3' => 'value3', 'parameter4' => 'value4'));
 
-               $request = $this->builder->build();
-               $expectedResult = array(
-                       'parameter1' => 'value1',
-                       'parameter2' => array(
-                               'parameter3' => 'value3',
-                               'parameter4' => 'value4',
-                       ),
+               $this->requestBuilder->build();
+       }
+
+       /**
+        * @test
+        */
+       public function buildSetsFormatFromGetAndPostVariables() {
+               $this->configuration['extensionName'] = 'SomeExtensionName';
+               $this->configuration['pluginName'] = 'SomePluginName';
+               $this->injectDependencies();
+
+               $_GET = array(
+                       'tx_someextensionname_somepluginname' => array(
+                               'format' => 'GET',
+                       )
                );
-               $actualResult = $request->getArguments();
-               $this->assertEquals($expectedResult, $actualResult);
+               $_POST = array(
+                       'tx_someextensionname_somepluginname' => array(
+                               'format' => 'POST',
+                       )
+               );
+               $this->mockRequest->expects($this->at(7))->method('setFormat')->with('POST');
+
+               $this->requestBuilder->build();
        }
 
        /**
         * @test
         */
-       public function initializeCorrectlySetsAllowedControllerActions() {
-               $this->builder->initialize($this->configuration);
+       public function buildCorrectlySetsAllowedControllerActions() {
+               $this->injectDependencies();
                $expectedResult = array(
                        'TheFirstController' => array(
                                'show', 'index', 'new', 'create', 'delete', 'edit', 'update', 'setup', 'test'
@@ -195,7 +289,8 @@ class Tx_Extbase_MVC_Web_RequestBuilder_testcase extends Tx_Extbase_Tests_Unit_B
                                'delete', 'create'
                        )
                );
-               $actualResult = $this->builder->_get('allowedControllerActions');
+               $this->requestBuilder->build();
+               $actualResult = $this->requestBuilder->_get('allowedControllerActions');
                $this->assertEquals($expectedResult, $actualResult);
        }
 }
index 83da048..7854283 100644 (file)
@@ -25,7 +25,7 @@
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_MVC_Web_RequestTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_Web_RequestTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
        /**
         * @test
         */
index 3ef3524..50de815 100644 (file)
@@ -27,7 +27,7 @@
 
 require_once (t3lib_extMgm::extPath('extbase') . 'Tests/Unit/Fixtures/Entity.php');
 
-class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_MVC_Web_Routing_UriBuilderTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var tslib_fe
@@ -42,12 +42,12 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
        /**
         * @var tslib_cObj
         */
-       protected $contentObject;
+       protected $mockContentObject;
 
        /**
         * @var Tx_Extbase_MVC_Web_Request
         */
-       protected $request;
+       protected $mockRequest;
 
        /**
         * @var Tx_Extbase_MVC_Web_Routing_UriBuilder
@@ -60,11 +60,12 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
 
                $this->getBackup = t3lib_div::_GET();
 
-               $this->contentObject = $this->getMock('tslib_cObj');
-               $this->request = $this->getMock('Tx_Extbase_MVC_Web_Request');
+               $this->mockContentObject = $this->getMock('tslib_cObj');
+               $this->mockRequest = $this->getMock('Tx_Extbase_MVC_Web_Request');
 
-               $this->uriBuilder = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Web_Routing_UriBuilder'), array('dummy'), array($this->contentObject));
-               $this->uriBuilder->setRequest($this->request);
+               $this->uriBuilder = $this->getAccessibleMock('Tx_Extbase_MVC_Web_Routing_UriBuilder', array('build'));
+               $this->uriBuilder->setRequest($this->mockRequest);
+               $this->uriBuilder->_set('contentObject', $this->mockContentObject);
        }
 
        public function tearDown() {
@@ -84,6 +85,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
                        ->setCreateAbsoluteUri(TRUE)
                        ->setAddQueryString(TRUE)
                        ->setArgumentsToBeExcludedFromQueryString(array('test' => 'addQueryStringExcludeArguments'))
+                       ->setArgumentPrefix('testArgumentPrefix')
                        ->setLinkAccessRestrictedPages(TRUE)
                        ->setTargetPageUid(123)
                        ->setTargetPageType(321)
@@ -96,6 +98,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
                $this->assertEquals(TRUE, $this->uriBuilder->getCreateAbsoluteUri());
                $this->assertEquals(TRUE, $this->uriBuilder->getAddQueryString());
                $this->assertEquals(array('test' => 'addQueryStringExcludeArguments'), $this->uriBuilder->getArgumentsToBeExcludedFromQueryString());
+               $this->assertEquals('testArgumentPrefix', $this->uriBuilder->getArgumentPrefix());
                $this->assertEquals(TRUE, $this->uriBuilder->getLinkAccessRestrictedPages());
                $this->assertEquals(123, $this->uriBuilder->getTargetPageUid());
                $this->assertEquals(321, $this->uriBuilder->getTargetPageType());
@@ -108,7 +111,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         */
        public function uriForPrefixesArgumentsWithExtensionAndPluginNameAndSetsControllerArgument() {
                $expectedArguments = array('tx_someextension_someplugin' => array('foo' => 'bar', 'baz' => array('extbase' => 'fluid'), 'controller' => 'SomeController'));
-
+               $GLOBALS['TSFE'] = NULL;
                $this->uriBuilder->uriFor(NULL, array('foo' => 'bar', 'baz' => array('extbase' => 'fluid')), 'SomeController', 'SomeExtension', 'SomePlugin');
                $this->assertEquals($expectedArguments, $this->uriBuilder->getArguments());
        }
@@ -140,7 +143,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         * @test
         */
        public function uriForSetsControllerFromRequestIfControllerIsNotSet() {
-               $this->request->expects($this->once())->method('getControllerName')->will($this->returnValue('SomeControllerFromRequest'));
+               $this->mockRequest->expects($this->once())->method('getControllerName')->will($this->returnValue('SomeControllerFromRequest'));
 
                $expectedArguments = array('tx_someextension_someplugin' => array('controller' => 'SomeControllerFromRequest'));
 
@@ -152,7 +155,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         * @test
         */
        public function uriForSetsExtensionNameFromRequestIfExtensionNameIsNotSet() {
-               $this->request->expects($this->once())->method('getControllerExtensionName')->will($this->returnValue('SomeExtensionNameFromRequest'));
+               $this->mockRequest->expects($this->once())->method('getControllerExtensionName')->will($this->returnValue('SomeExtensionNameFromRequest'));
 
                $expectedArguments = array('tx_someextensionnamefromrequest_someplugin' => array('controller' => 'SomeController'));
 
@@ -164,7 +167,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         * @test
         */
        public function uriForSetsPluginNameFromRequestIfPluginNameIsNotSet() {
-               $this->request->expects($this->once())->method('getPluginName')->will($this->returnValue('SomePluginNameFromRequest'));
+               $this->mockRequest->expects($this->once())->method('getPluginName')->will($this->returnValue('SomePluginNameFromRequest'));
 
                $expectedArguments = array('tx_someextension_somepluginnamefromrequest' => array('controller' => 'SomeController'));
 
@@ -264,7 +267,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
        public function buildBackendUriCreatesAbsoluteUrisIfSpecified() {
                t3lib_div::_GETset(array('M' => 'moduleKey'));
 
-               $this->request->expects($this->any())->method('getBaseURI')->will($this->returnValue('http://baseuri/' . TYPO3_mainDir));
+               $this->mockRequest->expects($this->any())->method('getBaseURI')->will($this->returnValue('http://baseuri/' . TYPO3_mainDir));
                $this->uriBuilder->setCreateAbsoluteUri(TRUE);
 
                $expectedResult = 'http://baseuri/' . TYPO3_mainDir . 'mod.php?M=moduleKey';
@@ -276,10 +279,11 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         * @test
         */
        public function buildFrontendUriCreatesTypoLink() {
-               $uriBuilder = $this->getMock('Tx_Extbase_MVC_Web_Routing_UriBuilder', array('buildTypolinkConfiguration'), array($this->contentObject));
+               $uriBuilder = $this->getAccessibleMock('Tx_Extbase_MVC_Web_Routing_UriBuilder', array('buildTypolinkConfiguration'));
+               $uriBuilder->_set('contentObject', $this->mockContentObject);
                $uriBuilder->expects($this->once())->method('buildTypolinkConfiguration')->will($this->returnValue(array('someTypoLinkConfiguration')));
 
-               $this->contentObject->expects($this->once())->method('typoLink_URL')->with(array('someTypoLinkConfiguration'));
+               $this->mockContentObject->expects($this->once())->method('typoLink_URL')->with(array('someTypoLinkConfiguration'));
 
                $uriBuilder->buildFrontendUri();
        }
@@ -288,7 +292,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         * @test
         */
        public function buildFrontendUriCreatesRelativeUrisByDefault() {
-               $this->contentObject->expects($this->once())->method('typoLink_URL')->will($this->returnValue('relative/uri'));
+               $this->mockContentObject->expects($this->once())->method('typoLink_URL')->will($this->returnValue('relative/uri'));
 
                $expectedResult = 'relative/uri';
                $actualResult = $this->uriBuilder->buildFrontendUri();
@@ -300,7 +304,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         * @test
         */
        public function buildFrontendUriDoesNotStripLeadingSlashesFromRelativeUris() {
-               $this->contentObject->expects($this->once())->method('typoLink_URL')->will($this->returnValue('/relative/uri'));
+               $this->mockContentObject->expects($this->once())->method('typoLink_URL')->will($this->returnValue('/relative/uri'));
 
                $expectedResult = '/relative/uri';
                $actualResult = $this->uriBuilder->buildFrontendUri();
@@ -312,10 +316,11 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
         * @test
         */
        public function buildFrontendUriCreatesAbsoluteUrisIfSpecified() {
-               $uriBuilder = $this->getMock('Tx_Extbase_MVC_Web_Routing_UriBuilder', array('buildTypolinkConfiguration'), array($this->contentObject));
+               $uriBuilder = $this->getAccessibleMock('Tx_Extbase_MVC_Web_Routing_UriBuilder', array('buildTypolinkConfiguration'));
+               $uriBuilder->_set('contentObject', $this->mockContentObject);
                $uriBuilder->expects($this->once())->method('buildTypolinkConfiguration')->will($this->returnValue(array('foo' => 'bar')));
 
-               $this->contentObject->expects($this->once())->method('typoLink_URL')->with(array('foo' => 'bar', 'forceAbsoluteUrl' => TRUE))->will($this->returnValue('http://baseuri/relative/uri'));
+               $this->mockContentObject->expects($this->once())->method('typoLink_URL')->with(array('foo' => 'bar', 'forceAbsoluteUrl' => TRUE))->will($this->returnValue('http://baseuri/relative/uri'));
                $uriBuilder->setCreateAbsoluteUri(TRUE);
 
                $expectedResult = 'http://baseuri/relative/uri';
@@ -334,6 +339,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
                        ->setCreateAbsoluteUri(TRUE)
                        ->setAddQueryString(TRUE)
                        ->setArgumentsToBeExcludedFromQueryString(array('test' => 'addQueryStringExcludeArguments'))
+                       ->setArgumentPrefix('testArgumentPrefix')
                        ->setLinkAccessRestrictedPages(TRUE)
                        ->setTargetPageUid(123)
                        ->setTargetPageType(321)
@@ -348,6 +354,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
                $this->assertEquals(FALSE, $this->uriBuilder->getCreateAbsoluteUri());
                $this->assertEquals(FALSE, $this->uriBuilder->getAddQueryString());
                $this->assertEquals(array(), $this->uriBuilder->getArgumentsToBeExcludedFromQueryString());
+               $this->assertEquals(NULL, $this->uriBuilder->getArgumentPrefix());
                $this->assertEquals(FALSE, $this->uriBuilder->getLinkAccessRestrictedPages());
                $this->assertEquals(NULL, $this->uriBuilder->getTargetPageUid());
                $this->assertEquals(0, $this->uriBuilder->getTargetPageType());
@@ -521,7 +528,7 @@ class Tx_Extbase_MVC_Web_Routing_UriBuilder_testcase extends Tx_Extbase_Tests_Un
                $mockEntity->name = 'foo';
 
                $mockUriBuilder = $this->getMock($this->buildAccessibleProxy('Tx_Extbase_MVC_Web_Routing_UriBuilder'), array('dummy'));
-               $actualResult = $mockUriBuilder->_call('convertDomainObjectsToIdentityArrays', array('object' => $mockEntity));
+               $mockUriBuilder->_call('convertDomainObjectsToIdentityArrays', array('object' => $mockEntity));
        }
 
        /**
index ba5fbd6..c377798 100644 (file)
@@ -32,7 +32,7 @@ require_once(t3lib_extMgm::extPath('extbase') . 'Tests/Unit/Object/Container/Fix
  * @package TYPO3
  * @subpackage t3lib
  */
-class Tx_Extbase_Object_Container_ClassInfoFactoryTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Object_Container_ClassInfoFactoryTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var t3lib_object_ClassInfoFactory
@@ -45,5 +45,20 @@ class Tx_Extbase_Object_Container_ClassInfoFactoryTest extends Tx_Extbase_Tests_
        public function setUp() {
                $this->classInfoFactory = new Tx_Extbase_Object_Container_ClassInfoFactory();
        }
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_Object_Container_Exception_UnknownObjectException
+        */
+       public function buildClassInfoFromClassNameThrowsExceptionIfGivenClassNameCantBeReflected() {
+               $this->classInfoFactory->buildClassInfoFromClassName('SomeNonExistingClass');
+       }
+
+       /**
+        * @test
+        */
+       public function moreTestsNeedToBeWritten() {
+               $this->markTestIncomplete('More tests need to be written!');
+       }
 }
 ?>
\ No newline at end of file
index ba638cd..90663db 100644 (file)
@@ -32,7 +32,7 @@ require_once(t3lib_extMgm::extPath('extbase') . 'Tests/Unit/Object/Container/Fix
  * @package TYPO3
  * @subpackage t3lib
  */
-class Tx_Extbase_Object_Container_ContainerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Object_Container_ContainerTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        private $container;
 
index 665abf6..1fd2979 100644 (file)
@@ -27,7 +27,7 @@
 
 require_once(PATH_tslib . 'class.tslib_content.php');
 
-class Tx_Extbase_Persistence_Mapper_DataMapFactory_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Persistence_Mapper_DataMapFactoryTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 53a134a..72f1788 100644 (file)
@@ -25,7 +25,7 @@
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_Persistence_ObjectStorage_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Persistence_ObjectStorageTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 26b0be7..3017dcf 100644 (file)
-<?php\r
-/***************************************************************\r
-*  Copyright notice\r
-*\r
-*  (c) 2010 Bastian Waidelich <bastian@typo3.org>\r
-*  All rights reserved\r
-*\r
-*  This script is part of the TYPO3 project. The TYPO3 project is\r
-*  free software; you can redistribute it and/or modify\r
-*  it under the terms of the GNU General Public License as published by\r
-*  the Free Software Foundation; either version 2 of the License, or\r
-*  (at your option) any later version.\r
-*\r
-*  The GNU General Public License can be found at\r
-*  http://www.gnu.org/copyleft/gpl.html.\r
-*\r
-*  This script is distributed in the hope that it will be useful,\r
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-*  GNU General Public License for more details.\r
-*\r
-*  This copyright notice MUST APPEAR in all copies of the script!\r
-***************************************************************/\r
-\r
-class Tx_Extbase_Persistence_QueryResult_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_QueryResult\r
-        */\r
-       protected $queryResult;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_QueryInterface\r
-        */\r
-       protected $query;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_ManagerInterface\r
-        */\r
-       protected $persistenceManager;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_DataMapper\r
-        */\r
-       protected $dataMapper;\r
-\r
-       /**\r
-        * Sets up this test case\r
-        *\r
-        * @return void\r
-        */\r
-       public function setUp() {\r
-               $this->persistenceManager = $this->getMock('Tx_Extbase_Persistence_ManagerInterface');\r
-               $this->persistenceManager->expects($this->any())->method('getObjectDataByQuery')->will($this->returnValue(array('one', 'two')));\r
-               $this->persistenceManager->expects($this->any())->method('getObjectCountByQuery')->will($this->returnValue(2));\r
-               $this->dataMapper = $this->getMock('Tx_Extbase_Persistence_Mapper_DataMapper');\r
-               $this->query = $this->getMock('Tx_Extbase_Persistence_QueryInterface');\r
-               $this->queryResult = new Tx_Extbase_Persistence_QueryResult($this->query);\r
-               $this->queryResult->injectPersistenceManager($this->persistenceManager);\r
-               $this->queryResult->injectDataMapper($this->dataMapper);\r
-               $this->sampleResult = array(array('foo' => 'Foo1', 'bar' => 'Bar1'), array('foo' => 'Foo2', 'bar' => 'Bar2'));\r
-               $this->dataMapper->expects($this->any())->method('map')->will($this->returnValue($this->sampleResult));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function getQueryReturnsQueryObject() {\r
-               $this->assertType('Tx_Extbase_Persistence_QueryInterface', $this->queryResult->getQuery());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function getQueryReturnsAClone() {\r
-               $this->assertNotSame($this->query, $this->queryResult->getQuery());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function offsetExistsWorksAsExpected() {\r
-               $this->assertTrue($this->queryResult->offsetExists(0));\r
-               $this->assertFalse($this->queryResult->offsetExists(2));\r
-               $this->assertFalse($this->queryResult->offsetExists('foo'));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function offsetGetWorksAsExpected() {\r
-               $this->assertEquals(array('foo' => 'Foo1', 'bar' => 'Bar1'), $this->queryResult->offsetGet(0));\r
-               $this->assertNull($this->queryResult->offsetGet(2));\r
-               $this->assertNull($this->queryResult->offsetGet('foo'));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function offsetSetWorksAsExpected() {\r
-               $this->queryResult->offsetSet(0, array('foo' => 'FooOverridden', 'bar' => 'BarOverridden'));\r
-               $this->assertEquals(array('foo' => 'FooOverridden', 'bar' => 'BarOverridden'), $this->queryResult->offsetGet(0));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function offsetUnsetWorksAsExpected() {\r
-               $this->queryResult->offsetUnset(0);\r
-               $this->assertFalse($this->queryResult->offsetExists(0));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function countDoesNotInitializeProxy() {\r
-               $queryResult = $this->getMock('Tx_Extbase_Persistence_QueryResult', array('initialize'), array($this->query));\r
-               $queryResult->injectPersistenceManager($this->persistenceManager);\r
-               $queryResult->expects($this->never())->method('initialize');\r
-               $queryResult->count();\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function countCallsGetObjectCountByQueryOnPersistenceManager() {\r
-               $queryResult = $this->getMock('Tx_Extbase_Persistence_QueryResult', array('initialize'), array($this->query));\r
-               $queryResult->injectPersistenceManager($this->persistenceManager);\r
-               $this->assertEquals(2, $queryResult->count());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function iteratorMethodsAreCorrectlyImplemented() {\r
-               $array1 = array('foo' => 'Foo1', 'bar' => 'Bar1');\r
-               $array2 = array('foo' => 'Foo2', 'bar' => 'Bar2');\r
-               $this->assertEquals($array1, $this->queryResult->current());\r
-               $this->assertTrue($this->queryResult->valid());\r
-               $this->queryResult->next();\r
-               $this->assertEquals($array2, $this->queryResult->current());\r
-               $this->assertTrue($this->queryResult->valid());\r
-               $this->assertEquals(1, $this->queryResult->key());\r
-               $this->queryResult->next();\r
-               $this->assertFalse($this->queryResult->current());\r
-               $this->assertFalse($this->queryResult->valid());\r
-               $this->assertNull($this->queryResult->key());\r
-               $this->queryResult->rewind();\r
-               $this->assertEquals(0, $this->queryResult->key());\r
-               $this->assertEquals($array1, $this->queryResult->current());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function initializeExecutesQueryWithArrayFetchMode() {\r
-               $queryResult = $this->getAccessibleMock('Tx_Extbase_Persistence_QueryResult', array('dummy'), array($this->query));\r
-               $queryResult->injectPersistenceManager($this->persistenceManager);\r
-               $queryResult->injectDataMapper($this->dataMapper);\r
-               $this->persistenceManager->expects($this->once())->method('getObjectDataByQuery')->with($this->query)->will($this->returnValue(array('FAKERESULT')));\r
-               $queryResult->_call('initialize');\r
-       }\r
-\r
-}\r
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2010 Bastian Waidelich <bastian@typo3.org>
+*  All rights reserved
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+class Tx_Extbase_Tests_Unit_Persistence_QueryResultTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+
+       /**
+        * @var Tx_Extbase_Persistence_QueryResult
+        */
+       protected $queryResult;
+
+       /**
+        * @var Tx_Extbase_Persistence_QueryInterface
+        */
+       protected $mockQuery;
+
+       /**
+        * @var Tx_Extbase_Persistence_ManagerInterface
+        */
+       protected $mockPersistenceManager;
+
+       /**
+        * @var Tx_Extbase_Persistence_DataMapper
+        */
+       protected $mockDataMapper;
+
+       /**
+        * Sets up this test case
+        *
+        * @return void
+        */
+       public function setUp() {
+               $this->mockPersistenceManager = $this->getMock('Tx_Extbase_Persistence_ManagerInterface');
+               $this->mockPersistenceManager->expects($this->any())->method('getObjectDataByQuery')->will($this->returnValue(array('one', 'two')));
+               $this->mockPersistenceManager->expects($this->any())->method('getObjectCountByQuery')->will($this->returnValue(2));
+               $this->mockDataMapper = $this->getMock('Tx_Extbase_Persistence_Mapper_DataMapper');
+               $this->mockQuery = $this->getMock('Tx_Extbase_Persistence_QueryInterface');
+               $this->queryResult = new Tx_Extbase_Persistence_QueryResult($this->mockQuery);
+               $this->queryResult->injectPersistenceManager($this->mockPersistenceManager);
+               $this->queryResult->injectDataMapper($this->mockDataMapper);
+               $this->sampleResult = array(array('foo' => 'Foo1', 'bar' => 'Bar1'), array('foo' => 'Foo2', 'bar' => 'Bar2'));
+               $this->mockDataMapper->expects($this->any())->method('map')->will($this->returnValue($this->sampleResult));
+       }
+
+       /**
+        * @test
+        */
+       public function getQueryReturnsQueryObject() {
+               $this->assertType('Tx_Extbase_Persistence_QueryInterface', $this->queryResult->getQuery());
+       }
+
+       /**
+        * @test
+        */
+       public function getQueryReturnsAClone() {
+               $this->assertNotSame($this->mockQuery, $this->queryResult->getQuery());
+       }
+
+       /**
+        * @test
+        */
+       public function offsetExistsWorksAsExpected() {
+               $this->assertTrue($this->queryResult->offsetExists(0));
+               $this->assertFalse($this->queryResult->offsetExists(2));
+               $this->assertFalse($this->queryResult->offsetExists('foo'));
+       }
+
+       /**
+        * @test
+        */
+       public function offsetGetWorksAsExpected() {
+               $this->assertEquals(array('foo' => 'Foo1', 'bar' => 'Bar1'), $this->queryResult->offsetGet(0));
+               $this->assertNull($this->queryResult->offsetGet(2));
+               $this->assertNull($this->queryResult->offsetGet('foo'));
+       }
+
+       /**
+        * @test
+        */
+       public function offsetSetWorksAsExpected() {
+               $this->queryResult->offsetSet(0, array('foo' => 'FooOverridden', 'bar' => 'BarOverridden'));
+               $this->assertEquals(array('foo' => 'FooOverridden', 'bar' => 'BarOverridden'), $this->queryResult->offsetGet(0));
+       }
+
+       /**
+        * @test
+        */
+       public function offsetUnsetWorksAsExpected() {
+               $this->queryResult->offsetUnset(0);
+               $this->assertFalse($this->queryResult->offsetExists(0));
+       }
+
+       /**
+        * @test
+        */
+       public function countDoesNotInitializeProxy() {
+               $queryResult = $this->getMock('Tx_Extbase_Persistence_QueryResult', array('initialize'), array($this->mockQuery));
+               $queryResult->injectPersistenceManager($this->mockPersistenceManager);
+               $queryResult->expects($this->never())->method('initialize');
+               $queryResult->count();
+       }
+
+       /**
+        * @test
+        */
+       public function countCallsGetObjectCountByQueryOnPersistenceManager() {
+               $queryResult = $this->getMock('Tx_Extbase_Persistence_QueryResult', array('initialize'), array($this->mockQuery));
+               $queryResult->injectPersistenceManager($this->mockPersistenceManager);
+               $this->assertEquals(2, $queryResult->count());
+       }
+
+       /**
+        * @test
+        */
+       public function iteratorMethodsAreCorrectlyImplemented() {
+               $array1 = array('foo' => 'Foo1', 'bar' => 'Bar1');
+               $array2 = array('foo' => 'Foo2', 'bar' => 'Bar2');
+               $this->assertEquals($array1, $this->queryResult->current());
+               $this->assertTrue($this->queryResult->valid());
+               $this->queryResult->next();
+               $this->assertEquals($array2, $this->queryResult->current());
+               $this->assertTrue($this->queryResult->valid());
+               $this->assertEquals(1, $this->queryResult->key());
+               $this->queryResult->next();
+               $this->assertFalse($this->queryResult->current());
+               $this->assertFalse($this->queryResult->valid());
+               $this->assertNull($this->queryResult->key());
+               $this->queryResult->rewind();
+               $this->assertEquals(0, $this->queryResult->key());
+               $this->assertEquals($array1, $this->queryResult->current());
+       }
+
+       /**
+        * @test
+        */
+       public function initializeExecutesQueryWithArrayFetchMode() {
+               $queryResult = $this->getAccessibleMock('Tx_Extbase_Persistence_QueryResult', array('dummy'), array($this->mockQuery));
+               $queryResult->injectPersistenceManager($this->mockPersistenceManager);
+               $queryResult->injectDataMapper($this->mockDataMapper);
+               $this->mockPersistenceManager->expects($this->once())->method('getObjectDataByQuery')->with($this->mockQuery)->will($this->returnValue(array('FAKERESULT')));
+               $queryResult->_call('initialize');
+       }
+
+       /**
+        * @test
+        */
+       public function usingCurrentOnTheQueryResultReturnsAWarning() {
+               $queryResult = new Tx_Extbase_Persistence_QueryResult($this->mockQuery);
+               $expectedResult = 'You should never see this warning. If you do, you probably used PHP array functions like current() on the Tx_Extbase_Persistence_QueryResult. To retrieve the first result, you can use the getFirst() method.';
+               $actualResult = current($queryResult);
+               $this->assertEquals($expectedResult, $actualResult);
+       }
+
+}
 ?>
\ No newline at end of file
index 62382bf..b7b2d37 100644 (file)
@@ -23,7 +23,7 @@
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
 
-class Tx_Extbase_Persistence_Query_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Persistence_QueryTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @var Tx_Extbase_Persistence_Query
index a360004..8221baf 100644 (file)
-<?php\r
-/***************************************************************\r
-*  Copyright notice\r
-*\r
-*  (c) 2010 Bastian Waidelich <bastian@typo3.org>\r
-*  All rights reserved\r
-*\r
-*  This script is part of the TYPO3 project. The TYPO3 project is\r
-*  free software; you can redistribute it and/or modify\r
-*  it under the terms of the GNU General Public License as published by\r
-*  the Free Software Foundation; either version 2 of the License, or\r
-*  (at your option) any later version.\r
-*\r
-*  The GNU General Public License can be found at\r
-*  http://www.gnu.org/copyleft/gpl.html.\r
-*\r
-*  This script is distributed in the hope that it will be useful,\r
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-*  GNU General Public License for more details.\r
-*\r
-*  This copyright notice MUST APPEAR in all copies of the script!\r
-***************************************************************/\r
-\r
-class Tx_Extbase_Persistence_Repository_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_Repository\r
-        */\r
-       protected $repository;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_IdentityMap\r
-        */\r
-       protected $identityMap;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_QueryFactory\r
-        */\r
-       protected $queryFactory;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_ManagerInterface\r
-        */\r
-       protected $persistenceManager;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_QueryInterface\r
-        */\r
-       protected $query;\r
-\r
-       /**\r
-        * @var Tx_Extbase_Persistence_QuerySettingsInterface\r
-        */\r
-       protected $querySettings;\r
-\r
-       public function setUp() {\r
-               $this->identityMap = $this->getMock('Tx_Extbase_Persistence_IdentityMap');\r
-               $this->queryFactory = $this->getMock('Tx_Extbase_Persistence_QueryFactory');\r
-               $this->query = $this->getMock('Tx_Extbase_Persistence_QueryInterface');\r
-               $this->querySettings = $this->getMock('Tx_Extbase_Persistence_QuerySettingsInterface');\r
-               $this->query->expects($this->any())->method('getQuerySettings')->will($this->returnValue($this->querySettings));\r
-               $this->queryFactory->expects($this->any())->method('create')->will($this->returnValue($this->query));\r
-               $this->persistenceManager = $this->getMock('Tx_Extbase_Persistence_ManagerInterface');\r
-               $this->repository = $this->getAccessibleMock('Tx_Extbase_Persistence_Repository', array('dummy'), array($this->identityMap, $this->queryFactory, $this->persistenceManager));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function abstractRepositoryImplementsRepositoryInterface() {\r
-               $this->assertTrue($this->repository instanceof Tx_Extbase_Persistence_RepositoryInterface);\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function addActuallyAddsAnObjectToTheInternalObjectsArray() {\r
-               $someObject = new stdClass();\r
-               $this->repository->_set('objectType', get_class($someObject));\r
-               $this->repository->add($someObject);\r
-\r
-               $this->assertTrue($this->repository->getAddedObjects()->contains($someObject));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function removeActuallyRemovesAnObjectFromTheInternalObjectsArray() {\r
-               $object1 = new stdClass();\r
-               $object2 = new stdClass();\r
-               $object3 = new stdClass();\r
-\r
-               $this->repository->_set('objectType', get_class($object1));\r
-               $this->repository->add($object1);\r
-               $this->repository->add($object2);\r
-               $this->repository->add($object3);\r
-\r
-               $this->repository->remove($object2);\r
-\r
-               $this->assertTrue($this->repository->getAddedObjects()->contains($object1));\r
-               $this->assertFalse($this->repository->getAddedObjects()->contains($object2));\r
-               $this->assertTrue($this->repository->getAddedObjects()->contains($object3));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function removeRemovesTheRightObjectEvenIfItHasBeenModifiedSinceItsAddition() {\r
-               $object1 = new ArrayObject(array('val' => '1'));\r
-               $object2 = new ArrayObject(array('val' => '2'));\r
-               $object3 = new ArrayObject(array('val' => '3'));\r
-\r
-               $this->repository->_set('objectType', get_class($object1));\r
-               $this->repository->add($object1);\r
-               $this->repository->add($object2);\r
-               $this->repository->add($object3);\r
-\r
-               $object2['foo'] = 'bar';\r
-               $object3['val'] = '2';\r
-\r
-               $this->repository->remove($object2);\r
-\r
-               $this->assertTrue($this->repository->getAddedObjects()->contains($object1));\r
-               $this->assertFalse($this->repository->getAddedObjects()->contains($object2));\r
-               $this->assertTrue($this->repository->getAddedObjects()->contains($object3));\r
-       }\r
-\r
-       /**\r
-        * Make sure we remember the objects that are not currently add()ed\r
-        * but might be in persistent storage.\r
-        *\r
-        * @test\r
-        */\r
-       public function removeRetainsObjectForObjectsNotInCurrentSession() {\r
-               $object = new ArrayObject(array('val' => '1'));\r
-               $this->repository->_set('objectType', get_class($object));\r
-               $this->repository->remove($object);\r
-\r
-               $this->assertTrue($this->repository->getRemovedObjects()->contains($object));\r
-       }\r
-\r
-       /**\r
-        * dataProvider for createQueryCallsQueryFactoryWithExpectedType\r
-        */\r
-       public function modelAndRepositoryClassNames() {\r
-               return array(\r
-                       array('Tx_BlogExample_Domain_Repository_BlogRepository', 'Tx_BlogExample_Domain_Model_Blog'),\r
-                       array('_Domain_Repository_Content_PageRepository', '_Domain_Model_Content_Page')\r
-               );\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        * @dataProvider modelAndRepositoryClassNames\r
-        */\r
-       public function constructSetsObjectTypeFromClassName($repositoryClassName, $modelClassName) {\r
-               $mockClassName = 'MockRepository' . uniqid();\r
-               eval('class ' . $mockClassName . ' extends Tx_Extbase_Persistence_Repository {\r
-                       protected function getRepositoryClassName() {\r
-                               return \'' . $repositoryClassName . '\';\r
-                       }\r
-                       public function _getObjectType() {\r
-                               return $this->objectType;\r
-                       }\r
-               }');\r
-\r
-               $this->repository = new $mockClassName($this->identityMap, $this->queryFactory, $this->persistenceManager);\r
-               $this->assertEquals($modelClassName, $this->repository->_getObjectType());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function createQueryCallsQueryFactoryWithExpectedClassName() {\r
-               $this->queryFactory->expects($this->once())->method('create')->with('ExpectedType');\r
-               $this->repository->_set('objectType', 'ExpectedType');\r
-               $this->repository->createQuery();\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function findAllCreatesQueryAndReturnsResultOfExecuteCall() {\r
-               $expectedResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');\r
-               $this->query->expects($this->once())->method('execute')->with()->will($this->returnValue($expectedResult));\r
-               $this->assertSame($expectedResult, $this->repository->findAll());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function findByUidReturnsResultOfGetObjectByIdentifierCall() {\r
-               $fakeUid = '123';\r
-               $object = new stdClass();\r
-\r
-               $this->persistenceManager->expects($this->once())->method('getObjectByIdentifier')->with($fakeUid)->will($this->returnValue($object));\r
-               $this->repository->_set('objectType', 'stdClass');\r
-\r
-               $this->assertSame($object, $this->repository->findByUid($fakeUid));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function findByUidReturnsNullIfObjectOfMismatchingTypeWasFoundByGetObjectByIdentifierCall() {\r
-               $fakeUUID = '123';\r
-               $object = new stdClass();\r
-\r
-               $this->persistenceManager->expects($this->once())->method('getObjectByIdentifier')->with($fakeUUID)->will($this->returnValue($object));\r
-               $this->repository->_set('objectType', 'otherExpectedClass');\r
-\r
-               $this->assertNULL($this->repository->findByUuid($fakeUUID));\r
-       }\r
-\r
-       /**\r
-        * Replacing a reconstituted object (which has a uuid) by a new object\r
-        * will ask the persistence backend to replace them accordingly in the\r
-        * identity map.\r
-        *\r
-        * @test\r
-        * @return void\r
-        */\r
-       public function replaceReconstitutedEntityByNewObject() {\r
-               $existingObject = new stdClass;\r
-               $newObject = new stdClass;\r
-\r
-               $this->persistenceManager->expects($this->once())->method('getIdentifierByObject')->with($existingObject)->will($this->returnValue('86ea8820-19f6-11de-8c30-0800200c9a66'));\r
-               $this->persistenceManager->expects($this->once())->method('replaceObject')->with($existingObject, $newObject);\r
-\r
-               $this->repository->_set('objectType', get_class($newObject));\r
-               $this->repository->replace($existingObject, $newObject);\r
-       }\r
-\r
-       /**\r
-        * Replacing a reconstituted object which during this session has been\r
-        * marked for removal (by calling the repository's remove method)\r
-        * additionally registers the "newObject" for removal and removes the\r
-        * "existingObject" from the list of removed objects.\r
-        *\r
-        * @test\r
-        * @return void\r
-        */\r
-       public function replaceReconstitutedObjectWhichIsMarkedToBeRemoved() {\r
-               $existingObject = new stdClass;\r
-               $newObject = new stdClass;\r
-\r
-               $removedObjects = new SplObjectStorage;\r
-               $removedObjects->attach($existingObject);\r
-\r
-               $this->persistenceManager->expects($this->once())->method('getIdentifierByObject')->with($existingObject)->will($this->returnValue('86ea8820-19f6-11de-8c30-0800200c9a66'));\r
-               $this->persistenceManager->expects($this->once())->method('replaceObject')->with($existingObject, $newObject);\r
-\r
-               $this->repository->_set('objectType', get_class($newObject));\r
-               $this->repository->_set('removedObjects', $removedObjects);\r
-               $this->repository->replace($existingObject, $newObject);\r
-\r
-               $this->assertFalse($removedObjects->contains($existingObject));\r
-               $this->assertTrue($removedObjects->contains($newObject));\r
-       }\r
-\r
-       /**\r
-        * Replacing a new object which has not yet been persisted by another\r
-        * new object will just replace them in the repository's list of added\r
-        * objects.\r
-        *\r
-        * @test\r
-        * @return void\r
-        */\r
-       public function replaceNewObjectByNewObject() {\r
-               $existingObject = new stdClass;\r
-               $newObject = new stdClass;\r
-\r
-               $addedObjects = new SplObjectStorage;\r
-               $addedObjects->attach($existingObject);\r
-\r
-               $this->persistenceManager->expects($this->once())->method('getIdentifierByObject')->with($existingObject)->will($this->returnValue(NULL));\r
-               $this->persistenceManager->expects($this->never())->method('replaceObject');\r
-\r
-               $this->repository->_set('objectType', get_class($newObject));\r
-               $this->repository->_set('addedObjects', $addedObjects);\r
-               $this->repository->replace($existingObject, $newObject);\r
-\r
-               $this->assertFalse($addedObjects->contains($existingObject));\r
-               $this->assertTrue($addedObjects->contains($newObject));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType\r
-        */\r
-       public function replaceChecksObjectType() {\r
-               $this->repository->_set('objectType', 'ExpectedObjectType');\r
-\r
-               $this->repository->replace(new stdClass(), new stdClass());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function updateReplacesAnObjectWithTheSameUuidByTheGivenObject() {\r
-               $existingObject = new stdClass;\r
-               $modifiedObject = $this->getMock('FooBar' . uniqid(), array('FLOW3_Persistence_isClone'));\r
-               $modifiedObject->expects($this->once())->method('FLOW3_Persistence_isClone')->will($this->returnValue(TRUE));\r
-\r
-               $this->persistenceManager->expects($this->once())->method('getIdentifierByObject')->with($modifiedObject)->will($this->returnValue('86ea8820-19f6-11de-8c30-0800200c9a66'));\r
-               $this->persistenceManager->expects($this->once())->method('getObjectByIdentifier')->with('86ea8820-19f6-11de-8c30-0800200c9a66')->will($this->returnValue($existingObject));\r
-\r
-               $this->repository->expects($this->once())->method('replaceObject')->with($existingObject, $modifiedObject);\r
-\r
-               $this->repository->_set('objectType', get_class($modifiedObject));\r
-               $this->repository->update($modifiedObject);\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType\r
-        */\r
-       public function updateRejectsNonClonedObjects() {\r
-               $someObject = $this->getMock('FooBar' . uniqid(), array('FLOW3_Persistence_isClone'));\r
-               $someObject->expects($this->once())->method('FLOW3_Persistence_isClone')->will($this->returnValue(FALSE));\r
-\r
-               $this->repository->_set('objectType', get_class($someObject));\r
-\r
-               $this->repository->update($someObject);\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType\r
-        */\r
-       public function updateRejectsObjectsOfWrongType() {\r
-               $this->repository->_set('objectType', 'Foo');\r
-               $this->repository->update(new stdClass());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function magicCallMethodAcceptsFindBySomethingCallsAndExecutesAQueryWithThatCriteria() {\r
-               $mockQueryResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');\r
-               $mockQuery = $this->getMock('Tx_Extbase_Persistence_QueryInterface');\r
-               $mockQuery->expects($this->once())->method('equals')->with('foo', 'bar')->will($this->returnValue('matchCriteria'));\r
-               $mockQuery->expects($this->once())->method('matching')->with('matchCriteria')->will($this->returnValue($mockQuery));\r
-               $mockQuery->expects($this->once())->method('execute')->with()->will($this->returnValue($mockQueryResult));\r
-\r
-               $this->repository->expects($this->once())->method('createQuery')->will($this->returnValue($mockQuery));\r
-\r
-               $this->assertSame($mockQueryResult, $this->repository->findByFoo('bar'));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function magicCallMethodAcceptsFindOneBySomethingCallsAndExecutesAQueryWithThatCriteria() {\r
-               $object = new stdClass();\r
-               $mockQueryResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');\r
-               $mockQueryResult->expects($this->once())->method('getFirst')->will($this->returnValue($object));\r
-               $mockQuery = $this->getMock('Tx_Extbase_Persistence_QueryInterface');\r
-               $mockQuery->expects($this->once())->method('equals')->with('foo', 'bar')->will($this->returnValue('matchCriteria'));\r
-               $mockQuery->expects($this->once())->method('matching')->with('matchCriteria')->will($this->returnValue($mockQuery));\r
-               $mockQuery->expects($this->once())->method('execute')->will($this->returnValue($mockQueryResult));\r
-\r
-               $this->repository->expects($this->once())->method('createQuery')->will($this->returnValue($mockQuery));\r
-\r
-               $this->assertSame($object, $this->repository->findOneByFoo('bar'));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        */\r
-       public function magicCallMethodAcceptsCountBySomethingCallsAndExecutesAQueryWithThatCriteria() {\r
-               $mockQueryResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');\r
-               $mockQueryResult->expects($this->once())->method('count')->will($this->returnValue(2));\r
-               $mockQuery = $this->getMock('Tx_Extbase_Persistence_QueryInterface');\r
-               $mockQuery->expects($this->once())->method('equals')->with('foo', 'bar')->will($this->returnValue('matchCriteria'));\r
-               $mockQuery->expects($this->once())->method('matching')->with('matchCriteria')->will($this->returnValue($mockQuery));\r
-               $mockQuery->expects($this->once())->method('execute')->will($this->returnValue($mockQueryResult));\r
-\r
-               $this->repository->expects($this->once())->method('createQuery')->will($this->returnValue($mockQuery));\r
-\r
-               $this->assertSame(2, $this->repository->countByFoo('bar'));\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        * @expectedException Exception\r
-        */\r
-       public function magicCallMethodTriggersAnErrorIfUnknownMethodsAreCalled() {\r
-               $this->repository->__call('foo', array());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType\r
-        */\r
-       public function addChecksObjectType() {\r
-               $this->repository->_set('objectType', 'ExpectedObjectType');\r
-\r
-               $this->repository->add(new stdClass());\r
-       }\r
-\r
-       /**\r
-        * @test\r
-        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType\r
-        */\r
-       public function removeChecksObjectType() {\r
-               $this->repository->_set('objectType', 'ExpectedObjectType');\r
-\r
-               $this->repository->remove(new stdClass());\r
-       }\r
-\r
-}\r
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2010 Bastian Waidelich <bastian@typo3.org>
+*  All rights reserved
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+class Tx_Extbase_Tests_Unit_Persistence_RepositoryTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
+
+       /**
+        * @var Tx_Extbase_Persistence_Repository
+        */
+       protected $repository;
+
+       /**
+        * @var Tx_Extbase_Object_ObjectManagerInterface
+        */
+       protected $mockObjectManager;
+
+       /**
+        * @var Tx_Extbase_Persistence_IdentityMap
+        */
+       protected $mockIdentityMap;
+
+       /**
+        * @var Tx_Extbase_Persistence_QueryFactory
+        */
+       protected $mockQueryFactory;
+
+       /**
+        * @var Tx_Extbase_Persistence_ManagerInterface
+        */
+       protected $mockPersistenceManager;
+
+       /**
+        * @var Tx_Extbase_Persistence_QueryInterface
+        */
+       protected $mockQuery;
+
+       /**
+        * @var Tx_Extbase_Persistence_QuerySettingsInterface
+        */
+       protected $querySettings;
+
+       public function setUp() {
+               $this->mockIdentityMap = $this->getMock('Tx_Extbase_Persistence_IdentityMap');
+               $this->mockQueryFactory = $this->getMock('Tx_Extbase_Persistence_QueryFactory');
+               $this->mockQuery = $this->getMock('Tx_Extbase_Persistence_QueryInterface');
+               $this->mockQuerySettings = $this->getMock('Tx_Extbase_Persistence_QuerySettingsInterface');
+               $this->mockQuery->expects($this->any())->method('getQuerySettings')->will($this->returnValue($this->mockQuerySettings));
+               $this->mockQueryFactory->expects($this->any())->method('create')->will($this->returnValue($this->mockQuery));
+               $this->mockPersistenceManager = $this->getMock('Tx_Extbase_Persistence_ManagerInterface');
+               $this->mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManagerInterface');
+               $this->repository = $this->getAccessibleMock('Tx_Extbase_Persistence_Repository', array('dummy'), array($this->mockObjectManager));
+               $this->repository->injectIdentityMap($this->mockIdentityMap);
+               $this->repository->injectQueryFactory($this->mockQueryFactory);
+               $this->repository->injectPersistenceManager($this->mockPersistenceManager);
+       }
+
+       /**
+        * @test
+        */
+       public function abstractRepositoryImplementsRepositoryInterface() {
+               $this->assertTrue($this->repository instanceof Tx_Extbase_Persistence_RepositoryInterface);
+       }
+
+       /**
+        * @test
+        */
+       public function addActuallyAddsAnObjectToTheInternalObjectsArray() {
+               $someObject = new stdClass();
+               $this->repository->_set('objectType', get_class($someObject));
+               $this->repository->add($someObject);
+
+               $this->assertTrue($this->repository->getAddedObjects()->contains($someObject));
+       }
+
+       /**
+        * @test
+        */
+       public function removeActuallyRemovesAnObjectFromTheInternalObjectsArray() {
+               $object1 = new stdClass();
+               $object2 = new stdClass();
+               $object3 = new stdClass();
+
+               $this->repository->_set('objectType', get_class($object1));
+               $this->repository->add($object1);
+               $this->repository->add($object2);
+               $this->repository->add($object3);
+
+               $this->repository->remove($object2);
+
+               $this->assertTrue($this->repository->getAddedObjects()->contains($object1));
+               $this->assertFalse($this->repository->getAddedObjects()->contains($object2));
+               $this->assertTrue($this->repository->getAddedObjects()->contains($object3));
+       }
+
+       /**
+        * @test
+        */
+       public function removeRemovesTheRightObjectEvenIfItHasBeenModifiedSinceItsAddition() {
+               $object1 = new ArrayObject(array('val' => '1'));
+               $object2 = new ArrayObject(array('val' => '2'));
+               $object3 = new ArrayObject(array('val' => '3'));
+
+               $this->repository->_set('objectType', get_class($object1));
+               $this->repository->add($object1);
+               $this->repository->add($object2);
+               $this->repository->add($object3);
+
+               $object2['foo'] = 'bar';
+               $object3['val'] = '2';
+
+               $this->repository->remove($object2);
+
+               $this->assertTrue($this->repository->getAddedObjects()->contains($object1));
+               $this->assertFalse($this->repository->getAddedObjects()->contains($object2));
+               $this->assertTrue($this->repository->getAddedObjects()->contains($object3));
+       }
+
+       /**
+        * Make sure we remember the objects that are not currently add()ed
+        * but might be in persistent storage.
+        *
+        * @test
+        */
+       public function removeRetainsObjectForObjectsNotInCurrentSession() {
+               $object = new ArrayObject(array('val' => '1'));
+               $this->repository->_set('objectType', get_class($object));
+               $this->repository->remove($object);
+
+               $this->assertTrue($this->repository->getRemovedObjects()->contains($object));
+       }
+
+       /**
+        * dataProvider for createQueryCallsQueryFactoryWithExpectedType
+        */
+       public function modelAndRepositoryClassNames() {
+               return array(
+                       array('Tx_BlogExample_Domain_Repository_BlogRepository', 'Tx_BlogExample_Domain_Model_Blog'),
+                       array('_Domain_Repository_Content_PageRepository', '_Domain_Model_Content_Page')
+               );
+       }
+
+       /**
+        * @test
+        * @dataProvider modelAndRepositoryClassNames
+        */
+       public function constructSetsObjectTypeFromClassName($repositoryClassName, $modelClassName) {
+               $mockClassName = 'MockRepository' . uniqid();
+               eval('class ' . $mockClassName . ' extends Tx_Extbase_Persistence_Repository {
+                       protected function getRepositoryClassName() {
+                               return \'' . $repositoryClassName . '\';
+                       }
+                       public function _getObjectType() {
+                               return $this->objectType;
+                       }
+               }');
+
+               $this->repository = new $mockClassName($this->mockObjectManager);
+               $this->assertEquals($modelClassName, $this->repository->_getObjectType());
+       }
+
+       /**
+        * @test
+        */
+       public function createQueryCallsQueryFactoryWithExpectedClassName() {
+               $this->mockQueryFactory->expects($this->once())->method('create')->with('ExpectedType');
+               $this->repository->_set('objectType', 'ExpectedType');
+               $this->repository->createQuery();
+       }
+
+       /**
+        * @test
+        */
+       public function findAllCreatesQueryAndReturnsResultOfExecuteCall() {
+               $expectedResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');
+               $this->mockQuery->expects($this->once())->method('execute')->with()->will($this->returnValue($expectedResult));
+               $this->assertSame($expectedResult, $this->repository->findAll());
+       }
+
+       /**
+        * @test
+        */
+       public function findByUidReturnsResultOfGetObjectByIdentifierCall() {
+               $fakeUid = '123';
+               $object = new stdClass();
+               $this->repository->_set('objectType', 'someObjectType');
+
+               $this->mockIdentityMap->expects($this->once())->method('hasIdentifier')->with($fakeUid, 'someObjectType')->will($this->returnValue(TRUE));
+               $this->mockIdentityMap->expects($this->once())->method('getObjectByIdentifier')->with($fakeUid)->will($this->returnValue($object));
+
+               $expectedResult = $object;
+               $actualResult = $this->repository->findByUid($fakeUid);
+               $this->assertSame($expectedResult, $actualResult);
+       }
+
+       /**
+        * @test
+        */
+       public function findByUidQueriesObjectAndRegistersItIfItWasNotFoundInIdentityMap() {
+               $fakeUid = '123';
+               $object = new stdClass();
+               $this->repository->_set('objectType', 'someObjectType');
+
+               $mockQuerySettings = $this->getMock('Tx_Extbase_Persistence_QuerySettingsInterface');
+               $this->mockQuery->expects($this->atLeastOnce())->method('getQuerySettings')->will($this->returnValue($mockQuerySettings));
+
+               $mockQueryResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');
+
+               $this->mockQuery->expects($this->once())->method('equals')->with('uid', $fakeUid)->will($this->returnValue('matchingConstraint'));
+               $this->mockQuery->expects($this->once())->method('matching')->with('matchingConstraint')->will($this->returnValue($this->mockQuery));
+               $this->mockQuery->expects($this->once())->method('execute')->will($this->returnValue($mockQueryResult));
+               $mockQueryResult->expects($this->once())->method('getFirst')->will($this->returnValue($object));
+
+               $this->mockIdentityMap->expects($this->once())->method('hasIdentifier')->with($fakeUid, 'someObjectType')->will($this->returnValue(FALSE));
+               $this->mockIdentityMap->expects($this->once())->method('registerObject')->with($object, $fakeUid);
+               $this->mockQueryFactory->expects($this->once())->method('create')->with('someObjectType')->will($this->returnValue($this->mockQuery));
+
+               $expectedResult = $object;
+               $actualResult = $this->repository->findByUid($fakeUid);
+               $this->assertSame($expectedResult, $actualResult);
+       }
+
+       /**
+        * Replacing a reconstituted object (which has a uuid) by a new object
+        * will ask the persistence backend to replace them accordingly in the
+        * identity map.
+        *
+        * @test
+        * @return void
+        */
+       public function replaceReplacesReconstitutedEntityByNewObject() {
+               $existingObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+               $newObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+
+               $mockBackend = $this->getMock('Tx_Extbase_Persistence_BackendInterface');
+               $this->mockPersistenceManager->expects($this->once())->method('getBackend')->will($this->returnValue($mockBackend));
+               $mockBackend->expects($this->once())->method('getIdentifierByObject')->with($existingObject)->will($this->returnValue('123'));
+               $mockBackend->expects($this->once())->method('replaceObject')->with($existingObject, $newObject);
+
+               $mockSession = $this->getMock('Tx_Extbase_Persistence_Session');
+               $this->mockPersistenceManager->expects($this->once())->method('getSession')->will($this->returnValue($mockSession));
+
+               $this->repository->_set('objectType', get_class($newObject));
+               $this->repository->replace($existingObject, $newObject);
+       }
+
+       /**
+        * Replacing a reconstituted object which during this session has been
+        * marked for removal (by calling the repository's remove method)
+        * additionally registers the "newObject" for removal and removes the
+        * "existingObject" from the list of removed objects.
+        *
+        * @test
+        * @return void
+        */
+       public function replaceRemovesReconstitutedObjectWhichIsMarkedToBeRemoved() {
+               $existingObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+               $newObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+
+               $removedObjects = new SplObjectStorage;
+               $removedObjects->attach($existingObject);
+
+               $mockBackend = $this->getMock('Tx_Extbase_Persistence_BackendInterface');
+               $this->mockPersistenceManager->expects($this->once())->method('getBackend')->will($this->returnValue($mockBackend));
+               $mockBackend->expects($this->once())->method('getIdentifierByObject')->with($existingObject)->will($this->returnValue('123'));
+               $mockBackend->expects($this->once())->method('replaceObject')->with($existingObject, $newObject);
+
+               $mockSession = $this->getMock('Tx_Extbase_Persistence_Session');
+               $this->mockPersistenceManager->expects($this->once())->method('getSession')->will($this->returnValue($mockSession));
+
+               $this->repository->_set('objectType', get_class($newObject));
+               $this->repository->_set('removedObjects', $removedObjects);
+               $this->repository->replace($existingObject, $newObject);
+
+               $this->assertFalse($removedObjects->contains($existingObject));
+               $this->assertTrue($removedObjects->contains($newObject));
+       }
+
+       /**
+        * Replacing a new object which has not yet been persisted by another
+        * new object will just replace them in the repository's list of added
+        * objects.
+        *
+        * @test
+        * @return void
+        */
+       public function replaceAddsNewObjectToAddedObjects() {
+               $existingObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+               $newObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+
+               $addedObjects = new SplObjectStorage;
+               $addedObjects->attach($existingObject);
+
+               $mockBackend = $this->getMock('Tx_Extbase_Persistence_BackendInterface');
+               $this->mockPersistenceManager->expects($this->once())->method('getBackend')->will($this->returnValue($mockBackend));
+               $mockBackend->expects($this->once())->method('getIdentifierByObject')->with($existingObject)->will($this->returnValue(NULL));
+               $mockBackend->expects($this->never())->method('replaceObject');
+
+               $mockSession = $this->getMock('Tx_Extbase_Persistence_Session');
+               $this->mockPersistenceManager->expects($this->once())->method('getSession')->will($this->returnValue($mockSession));
+
+               $this->repository->_set('objectType', get_class($newObject));
+               $this->repository->_set('addedObjects', $addedObjects);
+               $this->repository->replace($existingObject, $newObject);
+
+               $this->assertFalse($addedObjects->contains($existingObject));
+               $this->assertTrue($addedObjects->contains($newObject));
+       }
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType
+        */
+       public function replaceChecksObjectType() {
+               $this->repository->_set('objectType', 'ExpectedObjectType');
+
+               $this->repository->replace(new stdClass(), new stdClass());
+       }
+
+       /**
+        * @test
+        */
+       public function updateReplacesAnObjectWithTheSameUuidByTheGivenObject() {
+               $existingObject = new stdClass;
+               $modifiedObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+               $modifiedObject->expects($this->once())->method('getUid')->will($this->returnValue('123'));
+
+               $repository = $this->getAccessibleMock('Tx_Extbase_Persistence_Repository', array('findByUid', 'replace'), array($this->mockObjectManager));
+               $repository->expects($this->once())->method('findByUid')->with('123')->will($this->returnValue($existingObject));
+               $repository->expects($this->once())->method('replace')->with($existingObject, $modifiedObject);
+               $repository->_set('objectType', get_class($modifiedObject));
+               $repository->update($modifiedObject);
+       }
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_Persistence_Exception_UnknownObject
+        */
+       public function updateRejectsUnknownObjects() {
+               $someObject = $this->getMock('Tx_Extbase_DomainObject_DomainObjectInterface');
+               $someObject->expects($this->once())->method('getUid')->will($this->returnValue(NULL));
+
+               $this->repository->_set('objectType', get_class($someObject));
+
+               $this->repository->update($someObject);
+       }
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType
+        */
+       public function updateRejectsObjectsOfWrongType() {
+               $this->repository->_set('objectType', 'Foo');
+               $this->repository->update(new stdClass());
+       }
+
+       /**
+        * @test
+        */
+       public function magicCallMethodAcceptsFindBySomethingCallsAndExecutesAQueryWithThatCriteria() {
+               $mockQueryResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');
+               $this->mockQuery->expects($this->once())->method('equals')->with('foo', 'bar')->will($this->returnValue('matchCriteria'));
+               $this->mockQuery->expects($this->once())->method('matching')->with('matchCriteria')->will($this->returnValue($this->mockQuery));
+               $this->mockQuery->expects($this->once())->method('execute')->will($this->returnValue($mockQueryResult));
+
+               $this->assertSame($mockQueryResult, $this->repository->findByFoo('bar'));
+       }
+
+       /**
+        * @test
+        */
+       public function magicCallMethodAcceptsFindOneBySomethingCallsAndExecutesAQueryWithThatCriteria() {
+               $object = new stdClass();
+               $mockQueryResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');
+               $mockQueryResult->expects($this->once())->method('getFirst')->will($this->returnValue($object));
+               $this->mockQuery->expects($this->once())->method('equals')->with('foo', 'bar')->will($this->returnValue('matchCriteria'));
+               $this->mockQuery->expects($this->once())->method('matching')->with('matchCriteria')->will($this->returnValue($this->mockQuery));
+               $this->mockQuery->expects($this->once())->method('setLimit')->with(1)->will($this->returnValue($this->mockQuery));
+               $this->mockQuery->expects($this->once())->method('execute')->will($this->returnValue($mockQueryResult));
+
+               $this->assertSame($object, $this->repository->findOneByFoo('bar'));
+       }
+
+       /**
+        * @test
+        */
+       public function magicCallMethodAcceptsCountBySomethingCallsAndExecutesAQueryWithThatCriteria() {
+               $mockQueryResult = $this->getMock('Tx_Extbase_Persistence_QueryResultInterface');
+               $mockQueryResult->expects($this->once())->method('count')->will($this->returnValue(2));
+               $this->mockQuery->expects($this->once())->method('equals')->with('foo', 'bar')->will($this->returnValue('matchCriteria'));
+               $this->mockQuery->expects($this->once())->method('matching')->with('matchCriteria')->will($this->returnValue($this->mockQuery));
+               $this->mockQuery->expects($this->once())->method('execute')->will($this->returnValue($mockQueryResult));
+
+               $this->assertSame(2, $this->repository->countByFoo('bar'));
+       }
+
+       /**
+        * @test
+        * @expectedException Exception
+        */
+       public function magicCallMethodTriggersAnErrorIfUnknownMethodsAreCalled() {
+               $this->repository->__call('foo', array());
+       }
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType
+        */
+       public function addChecksObjectType() {
+               $this->repository->_set('objectType', 'ExpectedObjectType');
+
+               $this->repository->add(new stdClass());
+       }
+
+       /**
+        * @test
+        * @expectedException Tx_Extbase_Persistence_Exception_IllegalObjectType
+        */
+       public function removeChecksObjectType() {
+               $this->repository->_set('objectType', 'ExpectedObjectType');
+
+               $this->repository->remove(new stdClass());
+       }
+
+}
 ?>
\ No newline at end of file
index 3d71fa6..7f1f423 100644 (file)
@@ -27,7 +27,7 @@
 
 require_once(PATH_tslib . 'class.tslib_content.php');
 
-class Tx_Extbase_Persistence_Session_testcase extends tx_phpunit_testcase {
+class Tx_Extbase_Tests_Unit_Persistence_SessionTest extends tx_phpunit_testcase {
 
        /**
         * @test
index 08744e1..f69442a 100644 (file)
@@ -25,7 +25,7 @@
  *  This copyright notice MUST APPEAR in all copies of the script!
  ***************************************************************/
 
-class Tx_Extbase_Persistence_Storage_Typo3DbBackend_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Persistence_Storage_Typo3DbBackendTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * This is the data provider for the statement generation with a basic comparison
index 66a07aa..e10af45 100644 (file)
@@ -25,7 +25,7 @@
 /**
  * Some functional tests for the backport of the reflection service
  */
-class Tx_Extbase_Reflection_Service_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Reflection_ServiceTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @param array $foo The foo parameter
@@ -35,9 +35,12 @@ class Tx_Extbase_Reflection_Service_testcase extends Tx_Extbase_Tests_Unit_BaseT
 
        }
 
-       public function test_GetMethodTagsValues() {
+       /**
+        * @test
+        */
+       public function getMethodTagsValues() {
                $service = new Tx_Extbase_Reflection_Service();
-               $tagsValues = $service->getMethodTagsValues('Tx_Extbase_Reflection_Service_testcase', 'fixtureMethodForMethodTagsValues');
+               $tagsValues = $service->getMethodTagsValues('Tx_Extbase_Tests_Unit_Reflection_ServiceTest', 'fixtureMethodForMethodTagsValues');
 
                $this->assertEquals(array(
                        'param' => array('array $foo The foo parameter'),
@@ -45,9 +48,12 @@ class Tx_Extbase_Reflection_Service_testcase extends Tx_Extbase_Tests_Unit_BaseT
                ), $tagsValues);
        }
 
-       public function test_GetMethodParameters() {
+       /**
+        * @test
+        */
+       public function getMethodParameters() {
                $service = new Tx_Extbase_Reflection_Service();
-               $parameters = $service->getMethodParameters('Tx_Extbase_Reflection_Service_testcase', 'fixtureMethodForMethodTagsValues');
+               $parameters = $service->getMethodParameters('Tx_Extbase_Tests_Unit_Reflection_ServiceTest', 'fixtureMethodForMethodTagsValues');
 
                $this->assertEquals(array(
                        'foo' => array(
index 6857541..c4866db 100644 (file)
@@ -31,7 +31,7 @@
  * @version $Id: RequestHashService_testcase.php 2334 2010-06-14 16:28:25Z sebastian $
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser Public License, version 3 or later
  */
-class Tx_Extbase_Security_Channel_RequestHashService_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Security_Channel_RequestHashServiceTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        public function dataProviderForGenerateRequestHash() {
                return array(
index 81841a8..06d8f7c 100644 (file)
@@ -28,7 +28,7 @@
  * @version $Id: HashService_testcase.php 1729 2009-11-25 21:37:20Z stucki $
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser Public License, version 3 or later
  */
-class Tx_Extbase_Security_Cryptography_HashService_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Security_Cryptography_HashServiceTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        protected $hashService;
 
index 5ed56e5..0e99ba8 100644 (file)
@@ -28,7 +28,7 @@
  * @package Extbase
  * @subpackage extbase
  */
-class Tx_Extbase_Utility_Extension_testcase extends tx_phpunit_testcase {
+class Tx_Extbase_Tests_Unit_Utility_ExtensionTest extends tx_phpunit_testcase {
 
        /**
         * Contains backup of $TYPO3_CONF_VARS
@@ -47,8 +47,7 @@ class Tx_Extbase_Utility_Extension_testcase extends tx_phpunit_testcase {
        protected $tsfeBackup;
 
        public function setUp() {
-               global $TYPO3_CONF_VARS;
-               $this->typo3ConfVars = $TYPO3_CONF_VARS;
+               $this->typo3ConfVars = $GLOBALS['TYPO3_CONF_VARS'];
                $this->typo3DbBackup = $GLOBALS['TYPO3_DB'];
                $GLOBALS['TYPO3_DB'] = $this->getMock('t3lib_DB', array('fullQuoteStr', 'exec_SELECTgetRows'));
                $this->tsfeBackup = $GLOBALS['TSFE'];
@@ -67,44 +66,54 @@ class Tx_Extbase_Utility_Extension_testcase extends tx_phpunit_testcase {
                                ),
                        'extensionname_someplugin' => 'USER',
                        'extensionname_someplugin.' => array(
-                               'userFunc' => 'tx_extbase_dispatcher->dispatch',
-                               'pluginName' => 'SomePlugin',
+                               'userFunc' => 'tx_extbase_core_bootstrap->run',
                                'extensionName' => 'ExtensionName',
-                               'controller' => 'ControllerName',
-                               'action' => 'index',
-                               'switchableControllerActions.' => array(
-                                       'ControllerName.' => array(
-                                               'actions' => 'index,otherAction',
-                                       ),
-                               ),
+                               'pluginName' => 'SomePlugin',
                        ),
                        'someotherextensionname_secondplugin' => 'USER',
                        'someotherextensionname_secondplugin.' => array(
-                               'userFunc' => 'tx_extbase_dispatcher->dispatch',
-                               'pluginName' => 'SecondPlugin',
+                               'userFunc' => 'tx_extbase_core_bootstrap->run',
                                'extensionName' => 'SomeOtherExtensionName',
-                               'controller' => 'ControllerName',
-                               'action' => 'index',
-                               'switchableControllerActions.' => array(
-                                       'ControllerName.' => array(
-                                               'actions' => 'index,otherAction',
-                                       ),
-                                       'SecondControllerName.' => array(
-                                               'actions' => 'someAction,someOtherAction',
-                                               'nonCacheableActions' => 'someOtherAction',
-                                       ),
-                               ),
+                               'pluginName' => 'SecondPlugin',
                        ),
                        'extensionname_thirdplugin' => 'USER',
                        'extensionname_thirdplugin.' => array(
-                               'userFunc' => 'tx_extbase_dispatcher->dispatch',
-                               'pluginName' => 'ThirdPlugin',
+                               'userFunc' => 'tx_extbase_core_bootstrap->run',
                                'extensionName' => 'ExtensionName',
-                               'controller' => 'ControllerName',
-                               'action' => 'index',
-                               'switchableControllerActions.' => array(
-                                       'ControllerName.' => array(
-                                               'actions' => 'otherAction,thirdAction',
+                               'pluginName' => 'ThirdPlugin',
+                       ),
+               );
+               $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'] = array(
+                       'ExtensionName' => array(
+                               'plugins' => array(
+                                       'SomePlugin' => array(
+                                               'controllers' => array(
+                                                       'ControllerName' => array(
+                                                               'actions' => array('index', 'otherAction')
+                                                       ),
+                                               ),
+                                       ),
+                                       'ThirdPlugin' => array(
+                                               'controllers' => array(
+                                                       'ControllerName' => array(
+                                                               'actions' => array('otherAction', 'thirdAction')
+                                                       ),
+                                               ),
+                                       ),
+                               ),
+                       ),
+                       'SomeOtherExtensionName' => array(
+                               'plugins' => array(
+                                       'SecondPlugin' => array(
+                                               'controllers' => array(
+                                                       'ControllerName' => array(
+                                                               'actions' => array('index', 'otherAction')
+                                                       ),
+                                                       'SecondControllerName' => array(
+                                                               'actions' => array('someAction', 'someOtherAction'),
+                                                               'nonCacheableActions' => array('someOtherAction')
+                                                       )
+                                               ),
                                        ),
                                ),
                        ),
@@ -112,8 +121,7 @@ class Tx_Extbase_Utility_Extension_testcase extends tx_phpunit_testcase {
        }
 
        public function tearDown() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS = $this->typo3ConfVars;
+               $GLOBALS['TYPO3_CONF_VARS'] = $this->typo3ConfVars;
                $GLOBALS['TSFE'] = $this->tsfeBackup;
        }
 
@@ -122,19 +130,19 @@ class Tx_Extbase_Utility_Extension_testcase extends tx_phpunit_testcase {
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
        public function configurePluginWorksForMinimalisticSetup() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.'] = array();
+               $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = array();
                Tx_Extbase_Utility_Extension::configurePlugin(
                        'MyExtension',
                        'Pi1',
                        array('Blog' => 'index')
                );
-               $staticTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.']['43'];
+               $staticTypoScript = $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['43'];
 
                $this->assertContains('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
                $this->assertContains('
-       pluginName = Pi1
-       extensionName = MyExtension', $staticTypoScript);
+       userFunc = tx_extbase_core_bootstrap->run
+       extensionName = MyExtension
+       pluginName = Pi1', $staticTypoScript);
 
        $this->assertNotContains('USER_INT', $staticTypoScript);
        }
@@ -145,15 +153,14 @@ class Tx_Extbase_Utility_Extension_testcase extends tx_phpunit_testcase {
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
        public function configurePluginCreatesCorrectDefaultTypoScriptSetup() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.'] = array();
+               $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = array();
                Tx_Extbase_Utility_Extension::configurePlugin(
                        'MyExtension',
                        'Pi1',
                        array('Blog' => 'index')
                );
-               $staticTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.']['43'];
-               $defaultTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup'];
+               $staticTypoScript = $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['43'];
+               $defaultTypoScript = $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup'];
                $this->assertContains('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
                $this->assertContains('
 plugin.tx_myextension {
@@ -179,8 +186,7 @@ plugin.tx_myextension {
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
        public function configurePluginWorksForASingleControllerAction() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.'] = array();
+               $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = array();
                Tx_Extbase_Utility_Extension::configurePlugin(
                        'MyExtension',
                        'Pi1',
@@ -188,27 +194,33 @@ plugin.tx_myextension {
                                'FirstController' => 'index'
                                )
                );
-               $staticTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.']['43'];
+               $staticTypoScript = $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['43'];
 
                $this->assertContains('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
                $this->assertContains('
-       pluginName = Pi1
-       extensionName = MyExtension', $staticTypoScript);
-               $this->assertContains('
-       controller = FirstController
-       action = index', $staticTypoScript);
-               $this->assertNotContains('USER_INT', $staticTypoScript);
+       extensionName = MyExtension
+       pluginName = Pi1', $staticTypoScript);
+
+               $expectedResult = array(
+                       'controllers' => array(
+                               'FirstController' => array(
+                                       'actions' => array('index')
+                               )
+                       ),
+                       'pluginType' => 'list_type'
+               );
+               $this->assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
        }
 
        /**
         * @test
+        * @expectedException InvalidArgumentException
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
-       public function configurePluginWithEmptyPluginNameResultsInAnError() {
-               $this->setExpectedException('InvalidArgumentException');
+       public function configurePluginThrowsExceptionIfExtensionNameIsEmpty() {
                Tx_Extbase_Utility_Extension::configurePlugin(
-                       'MyExtension',
                        '',
+                       'SomePlugin',
                        array(
                                'FirstController' => 'index'
                                )
@@ -217,42 +229,52 @@ plugin.tx_myextension {
 
        /**
         * @test
+        * @expectedException InvalidArgumentException
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
-       public function configurePluginWithEmptyExtensionNameResultsInAnError() {
-               $this->setExpectedException('InvalidArgumentException');
+       public function configurePluginThrowsExceptionIfPluginNameIsEmpty() {
                Tx_Extbase_Utility_Extension::configurePlugin(
+                       'MyExtension',
                        '',
-                       'Pi1',
                        array(
                                'FirstController' => 'index'
                                )
                );
        }
 
+
        /**
         * @test
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
        public function configurePluginRespectsDefaultActionAsANonCacheableAction() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.'] = array();
+               $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = array();
                Tx_Extbase_Utility_Extension::configurePlugin(
                        'MyExtension',
                        'Pi1',
                        array(
-                               'FirstController' => 'index,show,new,create,delete,edit,update'
+                               'FirstController' => 'index,show,new, create,delete,edit,update'
                                ),
                        array(
                                'FirstController' => 'index,show'
                                )
                        );
-               $staticTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.']['43'];
+               $staticTypoScript = $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['43'];
+               $this->assertContains('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
                $this->assertContains('
-tt_content.list.20.myextension_pi1 = USER
-tt_content.list.20.myextension_pi1 {', $staticTypoScript);
-               $this->assertContains('FirstController.nonCacheableActions = index,show
-', $staticTypoScript);
+       extensionName = MyExtension
+       pluginName = Pi1', $staticTypoScript);
+
+               $expectedResult = array(
+                       'controllers' => array(
+                               'FirstController' => array(
+                                       'actions' => array('index', 'show', 'new', 'create', 'delete', 'edit', 'update'),
+                                       'nonCacheableActions' => array('index', 'show')
+                               )
+                       ),
+                       'pluginType' => 'list_type'
+               );
+               $this->assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
        }
 
        /**
@@ -260,25 +282,33 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
        public function configurePluginRespectsNonDefaultActionAsANonCacheableAction() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.'] = array();
+               $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = array();
                Tx_Extbase_Utility_Extension::configurePlugin(
                        'MyExtension',
                        'Pi1',
                        array(
-                               'FirstController' => 'index,show,new,create,delete,edit,update'
+                               'FirstController' => 'index,show,new, create,delete,edit,update'
                                ),
                        array(
-                               'FirstController' => 'show,new'
+                               'FirstController' => 'new,show'
                                )
                        );
-               $staticTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.']['43'];
-
+               $staticTypoScript = $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.']['43'];
+               $this->assertContains('tt_content.list.20.myextension_pi1 = USER', $staticTypoScript);
                $this->assertContains('
-tt_content.list.20.myextension_pi1 = USER
-tt_content.list.20.myextension_pi1 {', $staticTypoScript);
-               $this->assertContains('FirstController.nonCacheableActions = show,new
-', $staticTypoScript);
+       extensionName = MyExtension
+       pluginName = Pi1', $staticTypoScript);
+
+               $expectedResult = array(
+                       'controllers' => array(
+                               'FirstController' => array(
+                                       'actions' => array('index', 'show', 'new', 'create', 'delete', 'edit', 'update'),
+                                       'nonCacheableActions' => array('new', 'show')
+                               )
+                       ),
+                       'pluginType' => 'list_type'
+               );
+               $this->assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
        }
 
        /**
@@ -286,8 +316,7 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
        public function configurePluginWorksForMultipleControllerActionsWithCacheableActionAsDefault() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.'] = array();
+               $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = array();
                Tx_Extbase_Utility_Extension::configurePlugin(
                        'MyExtension',
                        'Pi1',
@@ -298,24 +327,27 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
                                ),
                        array(
                                'FirstController' => 'new,create,edit,update',
-                               'SecondController' => 'delete',
                                'ThirdController' => 'create'
                                )
                        );
-               $staticTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.']['43'];
-
-               $this->assertContains('
-tt_content.list.20.myextension_pi1 = USER
-tt_content.list.20.myextension_pi1 {', $staticTypoScript);
-
-               $this->assertContains('FirstController.nonCacheableActions = new,create,edit,update
-', $staticTypoScript);
 
-               $this->assertContains('SecondController.nonCacheableActions = delete
-', $staticTypoScript);
-
-               $this->assertContains('ThirdController.nonCacheableActions = create
-', $staticTypoScript);
+               $expectedResult = array(
+                       'controllers' => array(
+                               'FirstController' => array(
+                                       'actions' => array('index', 'show', 'new', 'create', 'delete', 'edit', 'update'),
+                                       'nonCacheableActions' => array('new', 'create', 'edit', 'update')
+                               ),
+                               'SecondController' => array(
+                                       'actions' => array('index', 'show', 'delete')
+                               ),
+                               'ThirdController' => array(
+                                       'actions' => array('create'),
+                                       'nonCacheableActions' => array('create')
+                               )
+                       ),
+                       'pluginType' => 'list_type'
+               );
+               $this->assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
        }
 
 
@@ -324,8 +356,7 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @see Tx_Extbase_Utility_Extension::registerPlugin
         */
        public function configurePluginWorksForMultipleControllerActionsWithNonCacheableActionAsDefault() {
-               global $TYPO3_CONF_VARS;
-               $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.'] = array();
+               $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultTypoScript_setup.'] = array();
                Tx_Extbase_Utility_Extension::configurePlugin(
                        'MyExtension',
                        'Pi1',
@@ -340,20 +371,25 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
                                'ThirdController' => 'create'
                                )
                        );
-               $staticTypoScript = $TYPO3_CONF_VARS['FE']['defaultTypoScript_setup.']['43'];
-
-               $this->assertContains('
-tt_content.list.20.myextension_pi1 = USER
-tt_content.list.20.myextension_pi1 {', $staticTypoScript);
 
-               $this->assertContains('FirstController.nonCacheableActions = index,new,create,edit,update
-', $staticTypoScript);
-
-               $this->assertContains('SecondController.nonCacheableActions = delete
-', $staticTypoScript);
-
-               $this->assertContains('ThirdController.nonCacheableActions = create
-', $staticTypoScript);
+               $expectedResult = array(
+                       'controllers' => array(
+                               'FirstController' => array(
+                                       'actions' => array('index', 'show', 'new', 'create', 'delete', 'edit', 'update'),
+                                       'nonCacheableActions' => array('index', 'new', 'create', 'edit', 'update')
+                               ),
+                               'SecondController' => array(
+                                       'actions' => array('index', 'show', 'delete'),
+                                       'nonCacheableActions' => array('delete')
+                               ),
+                               'ThirdController' => array(
+                                       'actions' => array('create'),
+                                       'nonCacheableActions' => array('create')
+                               )
+                       ),
+                       'pluginType' => 'list_type'
+               );
+               $this->assertEquals($expectedResult, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions']['MyExtension']['plugins']['Pi1']);
        }
 
        /**
@@ -361,36 +397,41 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         *
         * @return array
         */
-       public function getPluginNamespaceByPluginSignatureDataProvider() {
+       public function getPluginNamespaceDataProvider() {
                return array(
-                       array('someextension_someplugin', 'tx_someextension_someplugin'),
-                       array('nonexistingextension_someplugin', 'tx_nonexistingextension_someplugin'),
-                       array('InvalidPluginNamespace', 'tx_InvalidPluginNamespace'),
+                       array('SomeExtension', 'SomePlugin', 'tx_someextension_someplugin'),
+                       array('NonExistingExtension', 'SomePlugin', 'tx_nonexistingextension_someplugin'),
+                       array('Invalid', '', 'tx_invalid_'),
                );
        }
 
        /**
         * @test
-        * @dataProvider getPluginNamespaceByPluginSignatureDataProvider
+        * @dataProvider getPluginNamespaceDataProvider
         */
-       public function getPluginNamespaceByPluginSignatureTests($pluginSignature, $expectedResult) {
-               $dispatcher = new Tx_Extbase_Dispatcher();
-               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManager', array('getContextSpecificFrameworkConfiguration', 'getTypoScriptSetup'));
-               $dispatcher->injectConfigurationManager($mockConfigurationManager);
-               $actualResult = Tx_Extbase_Utility_Extension::getPluginNamespaceByPluginSignature($pluginSignature);
-               $this->assertEquals($expectedResult, $actualResult, 'Failing for $pluginSignature: "' . $pluginSignature . '"');
+       public function getPluginNamespaceTests($extensionName, $pluginName, $expectedResult) {
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(array()));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
+               $actualResult = Tx_Extbase_Utility_Extension::getPluginNamespace($extensionName, $pluginName);
+               $this->assertEquals($expectedResult, $actualResult, 'Failing for extension: "' . $extensionName . '", plugin: "' . $pluginName . '"');
        }
 
        /**
         * @test
         */
        public function pluginNamespaceCanBeOverridden() {
-               $dispatcher = new Tx_Extbase_Dispatcher();
-               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManager', array('getContextSpecificFrameworkConfiguration', 'getTypoScriptSetup', 'getConfiguration'));
-               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(array('view' => array('pluginNamespace' => 'overridden_plugin_namespace'))));
-               $dispatcher->injectConfigurationManager($mockConfigurationManager);
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK, 'SomeExtension', 'SomePlugin')->will($this->returnValue(array('view' => array('pluginNamespace' => 'overridden_plugin_namespace'))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
                $expectedResult = 'overridden_plugin_namespace';
-               $actualResult = Tx_Extbase_Utility_Extension::getPluginNamespaceByPluginSignature('somePluginSignature');
+               $actualResult = Tx_Extbase_Utility_Extension::getPluginNamespace('SomeExtension', 'SomePlugin');
                $this->assertEquals($expectedResult, $actualResult);
        }
 
@@ -404,7 +445,7 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
                        array('ExtensionName', 'ControllerName', 'someNonExistingAction', NULL),
                        array('ExtensionName', 'ControllerName', 'index', 'SomePlugin'),
                        array('ExtensionName', 'ControllerName', 'thirdAction', 'ThirdPlugin'),
-                       array('eXtEnSiOnNaMe', 'cOnTrOlLeRnAmE', 'thirdAction', 'ThirdPlugin'),
+                       array('eXtEnSiOnNaMe', 'cOnTrOlLeRnAmE', 'thirdAction', NULL),
                        array('eXtEnSiOnNaMe', 'cOnTrOlLeRnAmE', 'ThIrDaCtIoN', NULL),
                        array('SomeOtherExtensionName', 'ControllerName', 'otherAction', 'SecondPlugin'),
                );
@@ -415,6 +456,12 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @dataProvider getPluginNameByActionDataProvider
         */
        public function getPluginNameByActionTests($extensionName, $controllerName, $actionName, $expectedResult) {
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK)->will($this->returnValue(array('view' => array('pluginNamespace' => 'overridden_plugin_namespace'))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
                $actualResult = Tx_Extbase_Utility_Extension::getPluginNameByAction($extensionName, $controllerName, $actionName);
                $this->assertEquals($expectedResult, $actualResult, 'Failing for $extensionName: "' . $extensionName . '", $controllerName: "' . $controllerName . '", $actionName: "' . $actionName . '" - ');
        }
@@ -424,37 +471,68 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @expectedException Tx_Extbase_Exception
         */
        public function getPluginNameByActionThrowsExceptionIfMoreThanOnePluginMatches() {
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK)->will($this->returnValue(array('view' => array('pluginNamespace' => 'overridden_plugin_namespace'))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
                Tx_Extbase_Utility_Extension::getPluginNameByAction('ExtensionName', 'ControllerName', 'otherAction');
        }
 
        /**
         * @test
         */
+       public function getPluginNameByActionReturnsCurrentIfItCanHandleTheActionEvenIfMoreThanOnePluginMatches() {
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK)->will($this->returnValue(array('extensionName' => 'CurrentExtension', 'pluginName' => 'CurrentPlugin', 'controllerConfiguration' => array('ControllerName' => array('actions' => array('otherAction'))))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
+               $actualResult = Tx_Extbase_Utility_Extension::getPluginNameByAction('CurrentExtension', 'ControllerName', 'otherAction');
+               $expectedResult = 'CurrentPlugin';
+               $this->assertEquals($expectedResult, $actualResult);
+       }
+
+       /**
+        * @test
+        */
        public function getTargetPidByPluginSignatureReturnsNullIfConfigurationManagerIsNotInitialized() {
-               $this->assertNull(Tx_Extbase_Utility_Extension::getTargetPidByPluginSignature('plugin_signature'));
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(NULL));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
+               $this->assertNull(Tx_Extbase_Utility_Extension::getTargetPidByPlugin('ExtensionName', 'PluginName'));
        }
 
        /**
         * @test
         */
-       public function getTargetPidByPluginSignatureReturnsNullIfDefaultPidIsNotConfigured() {
-               $dispatcher = new Tx_Extbase_Dispatcher();
-               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManager', array('getContextSpecificFrameworkConfiguration', 'getTypoScriptSetup', 'getConfiguration'));
-               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with($GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.']['extensionname_someplugin.'])->will($this->returnValue(array()));
-               $dispatcher->injectConfigurationManager($mockConfigurationManager);
-               $this->assertNull(Tx_Extbase_Utility_Extension::getTargetPidByPluginSignature('extensionname_someplugin'));
+       public function getTargetPidByPluginSignatureReturnsNullIfDefaultPidIsZero() {
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(array('view' => array('defaultPid' => 0))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
+               $this->assertNull(Tx_Extbase_Utility_Extension::getTargetPidByPlugin('ExtensionName', 'PluginName'));
        }
 
        /**
         * @test
         */
        public function getTargetPidByPluginSignatureReturnsTheConfiguredDefaultPid() {
-               $dispatcher = new Tx_Extbase_Dispatcher();
-               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManager', array('getContextSpecificFrameworkConfiguration', 'getTypoScriptSetup', 'getConfiguration'));
-               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with($GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.']['extensionname_someplugin.'])->will($this->returnValue(array('view' => array('defaultPid' => '123'))));
-               $dispatcher->injectConfigurationManager($mockConfigurationManager);
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(array('view' => array('defaultPid' => 123))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
                $expectedResult = 123;
-               $actualResult = Tx_Extbase_Utility_Extension::getTargetPidByPluginSignature('extensionname_someplugin');
+               $actualResult = Tx_Extbase_Utility_Extension::getTargetPidByPlugin('ExtensionName', 'SomePlugin');
                $this->assertEquals($expectedResult, $actualResult);
        }
 
@@ -462,10 +540,12 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @test
         */
        public function getTargetPidByPluginSignatureDeterminesTheTargetPidIfDefaultPidIsAuto() {
-               $dispatcher = new Tx_Extbase_Dispatcher();
-               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManager', array('getContextSpecificFrameworkConfiguration', 'getTypoScriptSetup', 'getConfiguration'));
-               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with($GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.']['extensionname_someplugin.'])->will($this->returnValue(array('view' => array('defaultPid' => 'auto'))));
-               $dispatcher->injectConfigurationManager($mockConfigurationManager);
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(array('view' => array('defaultPid' => 'auto'))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
                $pluginSignature = 'extensionname_someplugin';
                $GLOBALS['TSFE']->sys_page = $this->getMock('t3lib_pageSelect', array('enableFields'));
                $GLOBALS['TSFE']->sys_page->expects($this->once())->method('enableFields')->with('tt_content')->will($this->returnValue(' AND enable_fields'));
@@ -473,12 +553,12 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
                $GLOBALS['TYPO3_DB']->expects($this->once())->method('exec_SELECTgetRows')->with(
                        'pid',
                        'tt_content',
-                       'list_type="pluginSignature" AND enable_fields',
+                       'list_type="pluginSignature" AND CType="list" AND enable_fields',
                        '',
                        ''
                )->will($this->returnValue(array(array('pid' => '321'))));
                $expectedResult = 321;
-               $actualResult = Tx_Extbase_Utility_Extension::getTargetPidByPluginSignature($pluginSignature);
+               $actualResult = Tx_Extbase_Utility_Extension::getTargetPidByPlugin('ExtensionName', 'SomePlugin');
                $this->assertEquals($expectedResult, $actualResult);
        }
 
@@ -486,15 +566,17 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @test
         */
        public function getTargetPidByPluginSignatureReturnsNullIfTargetPidCouldNotBeDetermined() {
-               $dispatcher = new Tx_Extbase_Dispatcher();
-               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManager', array('getContextSpecificFrameworkConfiguration', 'getTypoScriptSetup', 'getConfiguration'));
-               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with($GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.']['extensionname_someplugin.'])->will($this->returnValue(array('view' => array('defaultPid' => 'auto'))));
-               $dispatcher->injectConfigurationManager($mockConfigurationManager);
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(array('view' => array('defaultPid' => 'auto'))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
                $GLOBALS['TSFE']->sys_page = $this->getMock('t3lib_pageSelect', array('enableFields'));
                $GLOBALS['TSFE']->sys_page->expects($this->once())->method('enableFields')->will($this->returnValue(' AND enable_fields'));
                $GLOBALS['TYPO3_DB']->expects($this->once())->method('fullQuoteStr')->will($this->returnValue('"pluginSignature"'));
                $GLOBALS['TYPO3_DB']->expects($this->once())->method('exec_SELECTgetRows')->will($this->returnValue(array()));
-               $this->assertNull(Tx_Extbase_Utility_Extension::getTargetPidByPluginSignature('extensionname_someplugin'));
+               $this->assertNull(Tx_Extbase_Utility_Extension::getTargetPidByPlugin('ExtensionName', 'SomePlugin'));
        }
 
        /**
@@ -502,15 +584,17 @@ tt_content.list.20.myextension_pi1 {', $staticTypoScript);
         * @expectedException Tx_Extbase_Exception
         */
        public function getTargetPidByPluginSignatureThrowsExceptionIfMoreThanOneTargetPidsWereFound() {
-               $dispatcher = new Tx_Extbase_Dispatcher();
-               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManager', array('getContextSpecificFrameworkConfiguration', 'getTypoScriptSetup', 'getConfiguration'));
-               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->with($GLOBALS['TSFE']->tmpl->setup['tt_content.']['list.']['20.']['extensionname_someplugin.'])->will($this->returnValue(array('view' => array('defaultPid' => 'auto'))));
-               $dispatcher->injectConfigurationManager($mockConfigurationManager);
+               $mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface');
+               $mockConfigurationManager->expects($this->once())->method('getConfiguration')->will($this->returnValue(array('view' => array('defaultPid' => 'auto'))));
+               $mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager');
+               $mockObjectManager->expects($this->once())->method('get')->with('Tx_Extbase_Configuration_ConfigurationManagerInterface')->will($this->returnValue($mockConfigurationManager));
+               t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $mockObjectManager);
+
                $GLOBALS['TSFE']->sys_page = $this->getMock('t3lib_pageSelect', array('enableFields'));
                $GLOBALS['TSFE']->sys_page->expects($this->once())->method('enableFields')->will($this->returnValue(' AND enable_fields'));
                $GLOBALS['TYPO3_DB']->expects($this->once())->method('fullQuoteStr')->will($this->returnValue('"pluginSignature"'));
                $GLOBALS['TYPO3_DB']->expects($this->once())->method('exec_SELECTgetRows')->will($this->returnValue(array(array('pid' => 123), array('pid' => 124))));
-               Tx_Extbase_Utility_Extension::getTargetPidByPluginSignature('extensionname_someplugin');
+               Tx_Extbase_Utility_Extension::getTargetPidByPlugin('ExtensionName', 'SomePlugin');
        }
 
 }
index 428e95b..9590b0f 100644 (file)
@@ -30,7 +30,7 @@
  * @subpackage extbase
  */
 
-class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
+class Tx_Extbase_Tests_Unit_Utility_TypoScriptTest extends tx_phpunit_testcase {
 
        /**
         * @return array
@@ -56,9 +56,9 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                                ),
                                        '_typoScriptNodeValue' => 'TEXT',
                                ),
-                       )               
+                       )
                );
-               
+
                //convert TypoScript Array To Plain Array Removes Trailing Dots With Changed Order In The TypoScript Array
                $testdata[1] = array(
                        'typoScriptSettings' => array(
@@ -78,9 +78,9 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                                ),
                                        '_typoScriptNodeValue' => 'TEXT',
                                ),
-                       )       
+                       )
                );
-               
+
                $testdata[2] = array(
                        'typoScriptSettings' => array(
                                '10' => 'COA',
@@ -115,17 +115,17 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                                'foo' => array(
                                                        'bar' => 5,
                                                        ),
-                                               '_typoScriptNodeValue' => 'TEXT'        
+                                               '_typoScriptNodeValue' => 'TEXT'
                                        ),
                                        '20' => array(
                                                        '10' => array(
                                                                'value' => 'Test',
                                                                'wrap' => '[|]',
-                                                               '_typoScriptNodeValue' => 'TEXT',                                       
+                                                               '_typoScriptNodeValue' => 'TEXT',
                                                        ),
                                                        '20' => array(
                                                                'value' => 'Test',
-                                                               'wrap' => '[|]',                                                        
+                                                               'wrap' => '[|]',
                                                                '_typoScriptNodeValue' => 'TEXT',
                                                        ),
                                                        '_typoScriptNodeValue' => 'COA',
@@ -133,13 +133,13 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                        '30' => 'custom',
                                        '_typoScriptNodeValue' => 'COA',
                                ),
-                       )       
-               );                      
-               
+                       )
+               );
+
                return $testdata;
-               
+
        }
-       
+
        /**
         * @test
         * @dataProvider convertTypoScriptArrayToPlainArrayTestdata
@@ -152,12 +152,12 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
 
        /**
         * Dataprovider for testcase "convertPlainArrayToTypoScriptArray"
-        * 
+        *
         * @return array
         */
        public function convertPlainArrayToTypoScriptArrayTestdata() {
                $testdata = array();
-               
+
                $testdata[0] = array(
                        'extbaseTS' => array(
                                '10' => array(
@@ -165,7 +165,7 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                        '_typoScriptNodeValue' => 'TEXT'
                                )
                        ),
-       
+
                        'classic' => array(
                                '10' => 'TEXT',
                                '10.' => array(
@@ -182,17 +182,17 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                                'foo' => array(
                                                        'bar' => 5,
                                                        ),
-                                               '_typoScriptNodeValue' => 'TEXT'        
+                                               '_typoScriptNodeValue' => 'TEXT'
                                        ),
                                        '20' => array(
                                                        '10' => array(
                                                                'value' => 'Test',
                                                                'wrap' => '[|]',
-                                                               '_typoScriptNodeValue' => 'TEXT',                                       
+                                                               '_typoScriptNodeValue' => 'TEXT',
                                                        ),
                                                        '20' => array(
                                                                'value' => 'Test',
-                                                               'wrap' => '[|]',                                                        
+                                                               'wrap' => '[|]',
                                                                '_typoScriptNodeValue' => 'TEXT',
                                                        ),
                                                        '_typoScriptNodeValue' => 'COA',
@@ -200,7 +200,7 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                        '_typoScriptNodeValue' => 'COA',
                                ),
                        ),
-       
+
                        'classic' => array(
                                '10' => 'COA',
                                '10.' => array(
@@ -227,10 +227,10 @@ class Tx_Extbase_Utility_TypoScript_testcase extends tx_phpunit_testcase {
                                )
                        )
                );
-               
+
                return $testdata;
        }
-       
+
        /**
         * @test
         * @dataProvider convertPlainArrayToTypoScriptArrayTestdata
index f9dec9d..b6f39c4 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: AlphanumericValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_AlphanumericValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_AlphanumericValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index fd86cfa..04fdd8b 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: ConjunctionValidator_testcase.php 1729 2009-11-25 21:37:20Z stucki $
  */
-class Tx_Extbase_Validation_Validator_ConjunctionValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_ConjunctionValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index bba253f..fa879fd 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: DateTimeValidator_testcase.php 1408 2009-10-08 13:15:09Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_DateTimeValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_DateTimeValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 4e10fcb..8f6c6d9 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: EmailAddressValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_EmailAddressValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_EmailAddressValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * Data provider with valid email addresses
index 4ed0a8b..9affddb 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: FloatValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_FloatValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_FloatValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * An array of valid floating point numbers addresses
index 679329d..55faee2 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: GenericObjectValidator_testcase.php 1408 2009-10-08 13:15:09Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_GenericObjectValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_GenericObjectValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index fea006c..edf6eab 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: IntegerValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_IntegerValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_IntegerValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * An array of valid floating point numbers addresses
index 86dcefc..fff3f23 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: NotEmptyValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_NotEmptyValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_NotEmptyValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index baae7ed..3992a74 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: NumberRangeValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_NumberRangeValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_NumberRangeValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 6c9150a..e9abf96 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: NumberValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_NumberValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_NumberValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 752ac66..1870025 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: RawValidator_testcase.php 1408 2009-10-08 13:15:09Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_RawValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_RawValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index f995126..0f08826 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: RegularExpressionValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_RegularExpressionValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_RegularExpressionValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 37ad93a..ef593de 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: StringLengthValidator_testcase.php 1408 2009-10-08 13:15:09Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_StringLengthValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_StringLengthValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 3014b53..6f64847 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: TextValidator_testcase.php 2428 2010-07-20 10:18:51Z jocrau $
  */
-class Tx_Extbase_Validation_Validator_TextValidator_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_Validator_TextValidatorTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
index 3115929..d8e88e6 100644 (file)
@@ -32,7 +32,7 @@
  * @subpackage extbase
  * @version $Id: ValidatorResolver_testcase.php 2708 2010-11-10 18:56:01Z bwaidelich $
  */
-class Tx_Extbase_Validation_ValidatorResolver_testcase extends Tx_Extbase_Tests_Unit_BaseTestCase {
+class Tx_Extbase_Tests_Unit_Validation_ValidatorResolverTest extends Tx_Extbase_Tests_Unit_BaseTestCase {
 
        /**
         * @test
old mode 100755 (executable)
new mode 100644 (file)
index 4235aae..1e3a91e
@@ -3,7 +3,7 @@
 ########################################################################
 # Extension Manager/Repository config file for ext "extbase".
 #
-# Auto generated 27-12-2010 08:37
+# Auto generated 12-01-2011 16:45
 #
 # Manual updates:
 # Only the data in the array - everything else is removed by next
@@ -29,7 +29,7 @@ $EM_CONF[$_EXTKEY] = array(
        'clearCacheOnLoad' => 1,
        'lockType' => '',
        'author_company' => '',
-       'version' => '1.3.0beta3',
+       'version' => '1.3.0beta4',
        'constraints' => array(
                'depends' => array(
                        'php' => '5.2.0-0.0.0',
@@ -42,7 +42,7 @@ $EM_CONF[$_EXTKEY] = array(
        ),
        'suggests' => array(
        ),
-       '_md5_values_when_last_written' => 'a:297:{s:13:"ChangeLog.txt";s:4:"ef24";s:16:"ext_autoload.php";s:4:"6ba7";s:12:"ext_icon.gif";s:4:"e922";s:17:"ext_localconf.php";s:4:"50dd";s:14:"ext_tables.php";s:4:"491e";s:14:"ext_tables.sql";s:4:"0c2f";s:24:"ext_typoscript_setup.txt";s:4:"2bf7";s:22:"Classes/Dispatcher.php";s:4:"c031";s:21:"Classes/Exception.php";s:4:"c346";s:54:"Classes/Configuration/AbstractConfigurationManager.php";s:4:"733b";s:53:"Classes/Configuration/BackendConfigurationManager.php";s:4:"ba7c";s:46:"Classes/Configuration/ConfigurationManager.php";s:4:"31cb";s:55:"Classes/Configuration/ConfigurationManagerInterface.php";s:4:"7a2b";s:35:"Classes/Configuration/Exception.php";s:4:"31e6";s:54:"Classes/Configuration/FrontendConfigurationManager.php";s:4:"7a7b";s:53:"Classes/Configuration/Exception/ContainerIsLocked.php";s:4:"113a";s:60:"Classes/Configuration/Exception/InvalidConfigurationType.php";s:4:"9379";s:46:"Classes/Configuration/Exception/NoSuchFile.php";s:4:"75ce";s:48:"Classes/Configuration/Exception/NoSuchOption.php";s:4:"f616";s:46:"Classes/Configuration/Exception/ParseError.php";s:4:"b75a";s:26:"Classes/Core/Bootstrap.php";s:4:"4cce";s:37:"Classes/Domain/Model/FrontendUser.php";s:4:"7bb3";s:42:"Classes/Domain/Model/FrontendUserGroup.php";s:4:"794d";s:57:"Classes/Domain/Repository/FrontendUserGroupRepository.php";s:4:"0197";s:52:"Classes/Domain/Repository/FrontendUserRepository.php";s:4:"ce1e";s:45:"Classes/DomainObject/AbstractDomainObject.php";s:4:"4fae";s:39:"Classes/DomainObject/AbstractEntity.php";s:4:"81ea";s:44:"Classes/DomainObject/AbstractValueObject.php";s:4:"42f0";s:46:"Classes/DomainObject/DomainObjectInterface.php";s:4:"2d94";s:23:"Classes/Error/Error.php";s:4:"4fa2";s:26:"Classes/MVC/Dispatcher.php";s:4:"fd5f";s:25:"Classes/MVC/Exception.php";s:4:"606f";s:23:"Classes/MVC/Request.php";s:4:"d652";s:39:"Classes/MVC/RequestHandlerInterface.php";s:4:"620c";s:38:"Classes/MVC/RequestHandlerResolver.php";s:4:"860e";s:32:"Classes/MVC/RequestInterface.php";s:4:"e830";s:24:"Classes/MVC/Response.php";s:4:"0069";s:33:"Classes/MVC/ResponseInterface.php";s:4:"0ab1";s:45:"Classes/MVC/Controller/AbstractController.php";s:4:"2130";s:43:"Classes/MVC/Controller/ActionController.php";s:4:"ed62";s:35:"Classes/MVC/Controller/Argument.php";s:4:"c646";s:40:"Classes/MVC/Controller/ArgumentError.php";s:4:"6c22";s:36:"Classes/MVC/Controller/Arguments.php";s:4:"cff5";s:45:"Classes/MVC/Controller/ArgumentsValidator.php";s:4:"ca84";s:44:"Classes/MVC/Controller/ControllerContext.php";s:4:"b24c";s:46:"Classes/MVC/Controller/ControllerInterface.php";s:4:"c450";s:40:"Classes/MVC/Controller/FlashMessages.php";s:4:"f28e";s:38:"Classes/MVC/Exception/InfiniteLoop.php";s:4:"5984";s:43:"Classes/MVC/Exception/InvalidActionName.php";s:4:"baec";s:45:"Classes/MVC/Exception/InvalidArgumentName.php";s:4:"55a6";s:45:"Classes/MVC/Exception/InvalidArgumentType.php";s:4:"0b9c";s:46:"Classes/MVC/Exception/InvalidArgumentValue.php";s:4:"a836";s:43:"Classes/MVC/Exception/InvalidController.php";s:4:"f0b0";s:47:"Classes/MVC/Exception/InvalidControllerName.php";s:4:"7b4c";s:46:"Classes/MVC/Exception/InvalidExtensionName.php";s:4:"865a";s:39:"Classes/MVC/Exception/InvalidMarker.php";s:4:"4a5e";s:48:"Classes/MVC/Exception/InvalidOrNoRequestHash.php";s:4:"beff";s:46:"Classes/MVC/Exception/InvalidRequestMethod.php";s:4:"508f";s:44:"Classes/MVC/Exception/InvalidRequestType.php";s:4:"def7";s:49:"Classes/MVC/Exception/InvalidTemplateResource.php";s:4:"bbb7";s:43:"Classes/MVC/Exception/InvalidUriPattern.php";s:4:"cee0";s:43:"Classes/MVC/Exception/InvalidViewHelper.php";s:4:"686d";s:38:"Classes/MVC/Exception/NoSuchAction.php";s:4:"1889";s:40:"Classes/MVC/Exception/NoSuchArgument.php";s:4:"1bec";s:42:"Classes/MVC/Exception/NoSuchController.php";s:4:"baa6";s:36:"Classes/MVC/Exception/StopAction.php";s:4:"7290";s:48:"Classes/MVC/Exception/UnsupportedRequestType.php";s:4:"27ce";s:33:"Classes/MVC/View/AbstractView.php";s:4:"3960";s:30:"Classes/MVC/View/EmptyView.php";s:4:"52f5";s:33:"Classes/MVC/View/NotFoundView.php";s:4:"5fe7";s:34:"Classes/MVC/View/ViewInterface.php";s:4:"dc07";s:42:"Classes/MVC/Web/AbstractRequestHandler.php";s:4:"a510";s:41:"Classes/MVC/Web/BackendRequestHandler.php";s:4:"31f7";s:42:"Classes/MVC/Web/FrontendRequestHandler.php";s:4:"33bd";s:27:"Classes/MVC/Web/Request.php";s:4:"93cc";s:34:"Classes/MVC/Web/RequestBuilder.php";s:4:"26d7";s:28:"Classes/MVC/Web/Response.php";s:4:"7156";s:38:"Classes/MVC/Web/Routing/UriBuilder.php";s:4:"d77a";s:28:"Classes/Object/Exception.php";s:4:"2f66";s:26:"Classes/Object/Manager.php";s:4:"35a4";s:32:"Classes/Object/ObjectManager.php";s:4:"c78d";s:41:"Classes/Object/ObjectManagerInterface.php";s:4:"9dd9";s:38:"Classes/Object/Container/ClassInfo.php";s:4:"3ddc";s:43:"Classes/Object/Container/ClassInfoCache.php";s:4:"f745";s:45:"Classes/Object/Container/ClassInfoFactory.php";s:4:"a95c";s:38:"Classes/Object/Container/Container.php";s:4:"e65a";s:69:"Classes/Object/Container/Exception/CannotInitializeCacheException.php";s:4:"4258";s:70:"Classes/Object/Container/Exception/TooManyRecursionLevelsException.php";s:4:"cd39";s:61:"Classes/Object/Container/Exception/UnknownObjectException.php";s:4:"d18e";s:46:"Classes/Object/Exception/CannotBuildObject.php";s:4:"315b";s:53:"Classes/Object/Exception/CannotReconstituteObject.php";s:4:"e8cc";s:41:"Classes/Object/Exception/InvalidClass.php";s:4:"d226";s:42:"Classes/Object/Exception/InvalidObject.php";s:4:"cc16";s:55:"Classes/Object/Exception/InvalidObjectConfiguration.php";s:4:"e82a";s:52:"Classes/Object/Exception/ObjectAlreadyRegistered.php";s:4:"eecb";s:41:"Classes/Object/Exception/UnknownClass.php";s:4:"d10a";s:45:"Classes/Object/Exception/UnknownInterface.php";s:4:"22a4";s:51:"Classes/Object/Exception/UnresolvedDependencies.php";s:4:"7d47";s:39:"Classes/Object/Exception/WrongScope.php";s:4:"cc92";s:31:"Classes/Persistence/Backend.php";s:4:"d2cf";s:40:"Classes/Persistence/BackendInterface.php";s:4:"88db";s:33:"Classes/Persistence/Exception.php";s:4:"1713";s:35:"Classes/Persistence/IdentityMap.php";s:4:"b49d";s:40:"Classes/Persistence/LazyLoadingProxy.php";s:4:"1928";s:41:"Classes/Persistence/LazyObjectStorage.php";s:4:"faa1";s:48:"Classes/Persistence/LoadingStrategyInterface.php";s:4:"fa0d";s:31:"Classes/Persistence/Manager.php";s:4:"6e42";s:40:"Classes/Persistence/ManagerInterface.php";s:4:"17d8";s:49:"Classes/Persistence/ObjectMonitoringInterface.php";s:4:"6054";s:37:"Classes/Persistence/ObjectStorage.php";s:4:"a883";s:36:"Classes/Persistence/PropertyType.php";s:4:"f62a";s:29:"Classes/Persistence/Query.php";s:4:"203d";s:36:"Classes/Persistence/QueryFactory.php";s:4:"4ab8";s:45:"Classes/Persistence/QueryFactoryInterface.php";s:4:"900e";s:38:"Classes/Persistence/QueryInterface.php";s:4:"ebdb";s:35:"Classes/Persistence/QueryResult.php";s:4:"1699";s:44:"Classes/Persistence/QueryResultInterface.php";s:4:"0073";s:46:"Classes/Persistence/QuerySettingsInterface.php";s:4:"1e52";s:34:"Classes/Persistence/Repository.php";s:4:"c078";s:43:"Classes/Persistence/RepositoryInterface.php";s:4:"55e7";s:31:"Classes/Persistence/Session.php";s:4:"43b4";s:42:"Classes/Persistence/Typo3QuerySettings.php";s:4:"cd0d";s:56:"Classes/Persistence/Exception/CleanStateNotMemorized.php";s:4:"7689";s:51:"Classes/Persistence/Exception/IllegalObjectType.php";s:4:"73e7";s:46:"Classes/Persistence/Exception/InvalidClass.php";s:4:"761b";s:60:"Classes/Persistence/Exception/InvalidNumberOfConstraints.php";s:4:"3a38";s:53:"Classes/Persistence/Exception/InvalidPropertyType.php";s:4:"cd9a";s:48:"Classes/Persistence/Exception/MissingBackend.php";s:4:"1d0d";s:53:"Classes/Persistence/Exception/RepositoryException.php";s:4:"1aba";s:42:"Classes/Persistence/Exception/TooDirty.php";s:4:"3347";s:57:"Classes/Persistence/Exception/UnexpectedTypeException.php";s:4:"5b57";s:47:"Classes/Persistence/Exception/UnknownObject.php";s:4:"21a6";s:51:"Classes/Persistence/Exception/UnsupportedMethod.php";s:4:"9915";s:50:"Classes/Persistence/Exception/UnsupportedOrder.php";s:4:"f4b9";s:53:"Classes/Persistence/Exception/UnsupportedRelation.php";s:4:"6bc0";s:40:"Classes/Persistence/Mapper/ColumnMap.php";s:4:"fee9";s:38:"Classes/Persistence/Mapper/DataMap.php";s:4:"2b19";s:45:"Classes/Persistence/Mapper/DataMapFactory.php";s:4:"ab68";s:41:"Classes/Persistence/Mapper/DataMapper.php";s:4:"419d";s:40:"Classes/Persistence/QOM/AndInterface.php";s:4:"f72d";s:45:"Classes/Persistence/QOM/BindVariableValue.php";s:4:"454e";s:54:"Classes/Persistence/QOM/BindVariableValueInterface.php";s:4:"822e";s:38:"Classes/Persistence/QOM/Comparison.php";s:4:"74e7";s:47:"Classes/Persistence/QOM/ComparisonInterface.php";s:4:"f50a";s:38:"Classes/Persistence/QOM/Constraint.php";s:4:"6e7b";s:47:"Classes/Persistence/QOM/ConstraintInterface.php";s:4:"c106";s:42:"Classes/Persistence/QOM/DynamicOperand.php";s:4:"29d3";s:51:"Classes/Persistence/QOM/DynamicOperandInterface.php";s:4:"981b";s:45:"Classes/Persistence/QOM/EquiJoinCondition.php";s:4:"29b1";s:54:"Classes/Persistence/QOM/EquiJoinConditionInterface.php";s:4:"b9f5";s:32:"Classes/Persistence/QOM/Join.php";s:4:"d270";s:50:"Classes/Persistence/QOM/JoinConditionInterface.php";s:4:"63c8";s:41:"Classes/Persistence/QOM/JoinInterface.php";s:4:"c3a5";s:38:"Classes/Persistence/QOM/LogicalAnd.php";s:4:"4b22";s:38:"Classes/Persistence/QOM/LogicalNot.php";s:4:"aba3";s:37:"Classes/Persistence/QOM/LogicalOr.php";s:4:"3476";s:37:"Classes/Persistence/QOM/LowerCase.php";s:4:"15a8";s:46:"Classes/Persistence/QOM/LowerCaseInterface.php";s:4:"215c";s:40:"Classes/Persistence/QOM/NotInterface.php";s:4:"8d10";s:35:"Classes/Persistence/QOM/Operand.php";s:4:"a635";s:44:"Classes/Persistence/QOM/OperandInterface.php";s:4:"39ff";s:39:"Classes/Persistence/QOM/OrInterface.php";s:4:"b109";s:36:"Classes/Persistence/QOM/Ordering.php";s:4:"e7f4";s:45:"Classes/Persistence/QOM/OrderingInterface.php";s:4:"b9f9";s:41:"Classes/Persistence/QOM/PropertyValue.php";s:4:"96fb";s:50:"Classes/Persistence/QOM/PropertyValueInterface.php";s:4:"6526";s:62:"Classes/Persistence/QOM/QueryObjectModelConstantsInterface.php";s:4:"33bb";s:51:"Classes/Persistence/QOM/QueryObjectModelFactory.php";s:4:"e6fc";s:60:"Classes/Persistence/QOM/QueryObjectModelFactoryInterface.php";s:4:"3b53";s:36:"Classes/Persistence/QOM/Selector.php";s:4:"59cb";s:45:"Classes/Persistence/QOM/SelectorInterface.php";s:4:"e75c";s:43:"Classes/Persistence/QOM/SourceInterface.php";s:4:"a397";s:37:"Classes/Persistence/QOM/Statement.php";s:4:"c978";s:41:"Classes/Persistence/QOM/StaticOperand.php";s:4:"69f4";s:50:"Classes/Persistence/QOM/StaticOperandInterface.php";s:4:"4e9b";s:37:"Classes/Persistence/QOM/UpperCase.php";s:4:"6646";s:46:"Classes/Persistence/QOM/UpperCaseInterface.php";s:4:"ea6b";s:48:"Classes/Persistence/Storage/BackendInterface.php";s:4:"ad7b";s:46:"Classes/Persistence/Storage/Typo3DbBackend.php";s:4:"8048";s:55:"Classes/Persistence/Storage/Exception/BadConstraint.php";s:4:"3a87";s:50:"Classes/Persistence/Storage/Exception/SqlError.php";s:4:"850b";s:30:"Classes/Property/Exception.php";s:4:"8465";s:27:"Classes/Property/Mapper.php";s:4:"d709";s:35:"Classes/Property/MappingResults.php";s:4:"64c8";s:49:"Classes/Property/Exception/FormatNotSupported.php";s:4:"338e";s:46:"Classes/Property/Exception/InvalidDataType.php";s:4:"f280";s:44:"Classes/Property/Exception/InvalidFormat.php";s:4:"0bfa";s:46:"Classes/Property/Exception/InvalidProperty.php";s:4:"e6fb";s:44:"Classes/Property/Exception/InvalidSource.php";s:4:"ba13";s:44:"Classes/Property/Exception/InvalidTarget.php";s:4:"6cd9";s:38:"Classes/Reflection/ClassReflection.php";s:4:"913c";s:34:"Classes/Reflection/ClassSchema.php";s:4:"7ebc";s:39:"Classes/Reflection/DocCommentParser.php";s:4:"6357";s:32:"Classes/Reflection/Exception.php";s:4:"8625";s:39:"Classes/Reflection/MethodReflection.php";s:4:"26fc";s:35:"Classes/Reflection/ObjectAccess.php";s:4:"a6dc";s:42:"Classes/Reflection/ParameterReflection.php";s:4:"284d";s:41:"Classes/Reflection/PropertyReflection.php";s:4:"95b8";s:30:"Classes/Reflection/Service.php";s:4:"54c8";s:52:"Classes/Reflection/Exception/InvalidPropertyType.php";s:4:"02d6";s:63:"Classes/Reflection/Exception/PropertyNotAccessibleException.php";s:4:"0ddf";s:30:"Classes/Security/Exception.php";s:4:"2d15";s:47:"Classes/Security/Channel/RequestHashService.php";s:4:"afac";s:45:"Classes/Security/Cryptography/HashService.php";s:4:"e0aa";s:63:"Classes/Security/Exception/InvalidArgumentForHashGeneration.php";s:4:"856e";s:70:"Classes/Security/Exception/InvalidArgumentForRequestHashGeneration.php";s:4:"9f05";s:60:"Classes/Security/Exception/SyntacticallyWrongRequestHash.php";s:4:"89bd";s:26:"Classes/Utility/Arrays.php";s:4:"5dfd";s:25:"Classes/Utility/Cache.php";s:4:"28a8";s:31:"Classes/Utility/ClassLoader.php";s:4:"16a4";s:44:"Classes/Utility/ExtbaseRequirementsCheck.php";s:4:"a352";s:29:"Classes/Utility/Extension.php";s:4:"0d1f";s:32:"Classes/Utility/Localization.php";s:4:"ccaa";s:32:"Classes/Utility/TypeHandling.php";s:4:"d63e";s:30:"Classes/Utility/TypoScript.php";s:4:"c335";s:28:"Classes/Validation/Error.php";s:4:"247a";s:32:"Classes/Validation/Exception.php";s:4:"44f8";s:36:"Classes/Validation/PropertyError.php";s:4:"f0a7";s:40:"Classes/Validation/ValidatorResolver.php";s:4:"07a6";s:47:"Classes/Validation/Exception/InvalidSubject.php";s:4:"5040";s:63:"Classes/Validation/Exception/InvalidValidationConfiguration.php";s:4:"9cfa";s:57:"Classes/Validation/Exception/InvalidValidationOptions.php";s:4:"a3a8";s:48:"Classes/Validation/Exception/NoSuchValidator.php";s:4:"64f4";s:49:"Classes/Validation/Exception/NoValidatorFound.php";s:4:"be96";s:59:"Classes/Validation/Validator/AbstractCompositeValidator.php";s:4:"93b2";s:56:"Classes/Validation/Validator/AbstractObjectValidator.php";s:4:"fb77";s:50:"Classes/Validation/Validator/AbstractValidator.php";s:4:"c4ad";s:54:"Classes/Validation/Validator/AlphanumericValidator.php";s:4:"ae25";s:53:"Classes/Validation/Validator/ConjunctionValidator.php";s:4:"e2bc";s:50:"Classes/Validation/Validator/DateTimeValidator.php";s:4:"3716";s:53:"Classes/Validation/Validator/DisjunctionValidator.php";s:4:"95f8";s:54:"Classes/Validation/Validator/EmailAddressValidator.php";s:4:"e9de";s:47:"Classes/Validation/Validator/FloatValidator.php";s:4:"6e44";s:55:"Classes/Validation/Validator/GenericObjectValidator.php";s:4:"210d";s:49:"Classes/Validation/Validator/IntegerValidator.php";s:4:"f70f";s:50:"Classes/Validation/Validator/NotEmptyValidator.php";s:4:"92fa";s:53:"Classes/Validation/Validator/NumberRangeValidator.php";s:4:"33cb";s:48:"Classes/Validation/Validator/NumberValidator.php";s:4:"ab3d";s:57:"Classes/Validation/Validator/ObjectValidatorInterface.php";s:4:"aeea";s:45:"Classes/Validation/Validator/RawValidator.php";s:4:"2b76";s:59:"Classes/Validation/Validator/RegularExpressionValidator.php";s:4:"95aa";s:54:"Classes/Validation/Validator/StringLengthValidator.php";s:4:"6885";s:48:"Classes/Validation/Validator/StringValidator.php";s:4:"2231";s:46:"Classes/Validation/Validator/TextValidator.php";s:4:"d641";s:51:"Classes/Validation/Validator/ValidatorInterface.php";s:4:"1c82";s:24:"Documentation/README.txt";s:4:"35d4";s:43:"Resources/Private/Language/locallang_db.xml";s:4:"d03e";s:48:"Resources/Private/MVC/NotFoundView_Template.html";s:4:"d5a3";s:22:"Tests/BaseTestCase.php";s:4:"c7e5";s:30:"Tests/SeleniumBaseTestCase.php";s:4:"e3b0";s:27:"Tests/Unit/BaseTestCase.php";s:4:"bcb9";s:61:"Tests/Unit/Configuration/AbstractConfigurationManagerTest.php";s:4:"92e8";s:60:"Tests/Unit/Configuration/BackendConfigurationManagerTest.php";s:4:"25a4";s:61:"Tests/Unit/Configuration/FrontendConfigurationManagerTest.php";s:4:"5d51";s:46:"Tests/Unit/DomainObject/AbstractEntityTest.php";s:4:"ec3f";s:30:"Tests/Unit/Fixtures/Entity.php";s:4:"09e9";s:33:"Tests/Unit/MVC/DispatcherTest.php";s:4:"a976";s:52:"Tests/Unit/MVC/Controller/AbstractControllerTest.php";s:4:"d9eb";s:50:"Tests/Unit/MVC/Controller/ActionControllerTest.php";s:4:"92fa";s:42:"Tests/Unit/MVC/Controller/ArgumentTest.php";s:4:"c046";s:43:"Tests/Unit/MVC/Controller/ArgumentsTest.php";s:4:"ce79";s:41:"Tests/Unit/MVC/Web/RequestBuilderTest.php";s:4:"c46d";s:34:"Tests/Unit/MVC/Web/RequestTest.php";s:4:"e941";s:45:"Tests/Unit/MVC/Web/Routing/UriBuilderTest.php";s:4:"c23d";s:52:"Tests/Unit/Object/Container/ClassInfoFactoryTest.php";s:4:"7104";s:45:"Tests/Unit/Object/Container/ContainerTest.php";s:4:"77a5";s:52:"Tests/Unit/Object/Container/Fixtures/Testclasses.php";s:4:"feae";s:44:"Tests/Unit/Persistence/ObjectStorageTest.php";s:4:"db76";s:42:"Tests/Unit/Persistence/QueryResultTest.php";s:4:"f681";s:36:"Tests/Unit/Persistence/QueryTest.php";s:4:"55de";s:41:"Tests/Unit/Persistence/RepositoryTest.php";s:4:"8d33";s:38:"Tests/Unit/Persistence/SessionTest.php";s:4:"1752";s:52:"Tests/Unit/Persistence/Mapper/DataMapFactoryTest.php";s:4:"ebf9";s:53:"Tests/Unit/Persistence/Storage/Typo3DbBackendTest.php";s:4:"9621";s:42:"Tests/Unit/Reflection/ObjectAccessTest.php";s:4:"829b";s:37:"Tests/Unit/Reflection/ServiceTest.php";s:4:"5df4";s:50:"Tests/Unit/Reflection/Fixture/ArrayAccessClass.php";s:4:"9afd";s:65:"Tests/Unit/Reflection/Fixture/DummyClassWithGettersAndSetters.php";s:4:"258b";s:54:"Tests/Unit/Security/Channel/RequestHashServiceTest.php";s:4:"768e";s:52:"Tests/Unit/Security/Cryptography/HashServiceTest.php";s:4:"d27e";s:36:"Tests/Unit/Utility/ExtensionTest.php";s:4:"5481";s:37:"Tests/Unit/Utility/TypoScriptTest.php";s:4:"a27c";s:47:"Tests/Unit/Validation/ValidatorResolverTest.php";s:4:"5fe9";s:61:"Tests/Unit/Validation/Validator/AlphanumericValidatorTest.php";s:4:"ba9a";s:60:"Tests/Unit/Validation/Validator/ConjunctionValidatorTest.php";s:4:"a09c";s:57:"Tests/Unit/Validation/Validator/DateTimeValidatorTest.php";s:4:"183e";s:61:"Tests/Unit/Validation/Validator/EmailAddressValidatorTest.php";s:4:"3337";s:54:"Tests/Unit/Validation/Validator/FloatValidatorTest.php";s:4:"8616";s:62:"Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php";s:4:"6b3a";s:56:"Tests/Unit/Validation/Validator/IntegerValidatorTest.php";s:4:"9b70";s:57:"Tests/Unit/Validation/Validator/NotEmptyValidatorTest.php";s:4:"0b44";s:60:"Tests/Unit/Validation/Validator/NumberRangeValidatorTest.php";s:4:"7b66";s:55:"Tests/Unit/Validation/Validator/NumberValidatorTest.php";s:4:"fd01";s:52:"Tests/Unit/Validation/Validator/RawValidatorTest.php";s:4:"b4a6";s:66:"Tests/Unit/Validation/Validator/RegularExpressionValidatorTest.php";s:4:"1125";s:61:"Tests/Unit/Validation/Validator/StringLengthValidatorTest.php";s:4:"9a44";s:53:"Tests/Unit/Validation/Validator/TextValidatorTest.php";s:4:"a4af";}',
+       '_md5_values_when_last_written' => 'a:301:{s:13:"ChangeLog.txt";s:4:"0e70";s:16:"ext_autoload.php";s:4:"6ba7";s:12:"ext_icon.gif";s:4:"e922";s:17:"ext_localconf.php";s:4:"50dd";s:14:"ext_tables.php";s:4:"491e";s:14:"ext_tables.sql";s:4:"0c2f";s:24:"ext_typoscript_setup.txt";s:4:"2bf7";s:22:"Classes/Dispatcher.php";s:4:"c031";s:21:"Classes/Exception.php";s:4:"c346";s:54:"Classes/Configuration/AbstractConfigurationManager.php";s:4:"733b";s:53:"Classes/Configuration/BackendConfigurationManager.php";s:4:"ba7c";s:46:"Classes/Configuration/ConfigurationManager.php";s:4:"31cb";s:55:"Classes/Configuration/ConfigurationManagerInterface.php";s:4:"7a2b";s:35:"Classes/Configuration/Exception.php";s:4:"31e6";s:54:"Classes/Configuration/FrontendConfigurationManager.php";s:4:"7a7b";s:53:"Classes/Configuration/Exception/ContainerIsLocked.php";s:4:"113a";s:60:"Classes/Configuration/Exception/InvalidConfigurationType.php";s:4:"9379";s:46:"Classes/Configuration/Exception/NoSuchFile.php";s:4:"75ce";s:48:"Classes/Configuration/Exception/NoSuchOption.php";s:4:"f616";s:46:"Classes/Configuration/Exception/ParseError.php";s:4:"b75a";s:26:"Classes/Core/Bootstrap.php";s:4:"4cce";s:37:"Classes/Domain/Model/FrontendUser.php";s:4:"7bb3";s:42:"Classes/Domain/Model/FrontendUserGroup.php";s:4:"794d";s:57:"Classes/Domain/Repository/FrontendUserGroupRepository.php";s:4:"0197";s:52:"Classes/Domain/Repository/FrontendUserRepository.php";s:4:"ce1e";s:45:"Classes/DomainObject/AbstractDomainObject.php";s:4:"4fae";s:39:"Classes/DomainObject/AbstractEntity.php";s:4:"81ea";s:44:"Classes/DomainObject/AbstractValueObject.php";s:4:"42f0";s:46:"Classes/DomainObject/DomainObjectInterface.php";s:4:"2d94";s:23:"Classes/Error/Error.php";s:4:"4fa2";s:26:"Classes/MVC/Dispatcher.php";s:4:"fd5f";s:25:"Classes/MVC/Exception.php";s:4:"606f";s:23:"Classes/MVC/Request.php";s:4:"d652";s:39:"Classes/MVC/RequestHandlerInterface.php";s:4:"620c";s:38:"Classes/MVC/RequestHandlerResolver.php";s:4:"860e";s:32:"Classes/MVC/RequestInterface.php";s:4:"e830";s:24:"Classes/MVC/Response.php";s:4:"0069";s:33:"Classes/MVC/ResponseInterface.php";s:4:"0ab1";s:45:"Classes/MVC/Controller/AbstractController.php";s:4:"2130";s:43:"Classes/MVC/Controller/ActionController.php";s:4:"dcf2";s:35:"Classes/MVC/Controller/Argument.php";s:4:"56f6";s:40:"Classes/MVC/Controller/ArgumentError.php";s:4:"6c22";s:36:"Classes/MVC/Controller/Arguments.php";s:4:"cff5";s:45:"Classes/MVC/Controller/ArgumentsValidator.php";s:4:"ca84";s:44:"Classes/MVC/Controller/ControllerContext.php";s:4:"b24c";s:46:"Classes/MVC/Controller/ControllerInterface.php";s:4:"c450";s:40:"Classes/MVC/Controller/FlashMessages.php";s:4:"f28e";s:38:"Classes/MVC/Exception/InfiniteLoop.php";s:4:"5984";s:43:"Classes/MVC/Exception/InvalidActionName.php";s:4:"baec";s:45:"Classes/MVC/Exception/InvalidArgumentName.php";s:4:"55a6";s:45:"Classes/MVC/Exception/InvalidArgumentType.php";s:4:"0b9c";s:46:"Classes/MVC/Exception/InvalidArgumentValue.php";s:4:"a836";s:43:"Classes/MVC/Exception/InvalidController.php";s:4:"f0b0";s:47:"Classes/MVC/Exception/InvalidControllerName.php";s:4:"7b4c";s:46:"Classes/MVC/Exception/InvalidExtensionName.php";s:4:"865a";s:39:"Classes/MVC/Exception/InvalidMarker.php";s:4:"4a5e";s:48:"Classes/MVC/Exception/InvalidOrNoRequestHash.php";s:4:"beff";s:46:"Classes/MVC/Exception/InvalidRequestMethod.php";s:4:"508f";s:44:"Classes/MVC/Exception/InvalidRequestType.php";s:4:"def7";s:49:"Classes/MVC/Exception/InvalidTemplateResource.php";s:4:"bbb7";s:43:"Classes/MVC/Exception/InvalidUriPattern.php";s:4:"cee0";s:43:"Classes/MVC/Exception/InvalidViewHelper.php";s:4:"686d";s:38:"Classes/MVC/Exception/NoSuchAction.php";s:4:"1889";s:40:"Classes/MVC/Exception/NoSuchArgument.php";s:4:"1bec";s:42:"Classes/MVC/Exception/NoSuchController.php";s:4:"baa6";s:36:"Classes/MVC/Exception/StopAction.php";s:4:"7290";s:48:"Classes/MVC/Exception/UnsupportedRequestType.php";s:4:"27ce";s:33:"Classes/MVC/View/AbstractView.php";s:4:"3960";s:30:"Classes/MVC/View/EmptyView.php";s:4:"52f5";s:33:"Classes/MVC/View/NotFoundView.php";s:4:"5fe7";s:34:"Classes/MVC/View/ViewInterface.php";s:4:"dc07";s:42:"Classes/MVC/Web/AbstractRequestHandler.php";s:4:"a510";s:41:"Classes/MVC/Web/BackendRequestHandler.php";s:4:"31f7";s:42:"Classes/MVC/Web/FrontendRequestHandler.php";s:4:"33bd";s:27:"Classes/MVC/Web/Request.php";s:4:"93cc";s:34:"Classes/MVC/Web/RequestBuilder.php";s:4:"26d7";s:28:"Classes/MVC/Web/Response.php";s:4:"7156";s:38:"Classes/MVC/Web/Routing/UriBuilder.php";s:4:"a952";s:28:"Classes/Object/Exception.php";s:4:"2f66";s:26:"Classes/Object/Manager.php";s:4:"4026";s:32:"Classes/Object/ObjectManager.php";s:4:"c78d";s:41:"Classes/Object/ObjectManagerInterface.php";s:4:"9dd9";s:38:"Classes/Object/Container/ClassInfo.php";s:4:"3ddc";s:43:"Classes/Object/Container/ClassInfoCache.php";s:4:"f745";s:45:"Classes/Object/Container/ClassInfoFactory.php";s:4:"a95c";s:38:"Classes/Object/Container/Container.php";s:4:"e65a";s:69:"Classes/Object/Container/Exception/CannotInitializeCacheException.php";s:4:"4258";s:70:"Classes/Object/Container/Exception/TooManyRecursionLevelsException.php";s:4:"cd39";s:61:"Classes/Object/Container/Exception/UnknownObjectException.php";s:4:"d18e";s:46:"Classes/Object/Exception/CannotBuildObject.php";s:4:"315b";s:53:"Classes/Object/Exception/CannotReconstituteObject.php";s:4:"e8cc";s:41:"Classes/Object/Exception/InvalidClass.php";s:4:"d226";s:42:"Classes/Object/Exception/InvalidObject.php";s:4:"cc16";s:55:"Classes/Object/Exception/InvalidObjectConfiguration.php";s:4:"e82a";s:52:"Classes/Object/Exception/ObjectAlreadyRegistered.php";s:4:"eecb";s:41:"Classes/Object/Exception/UnknownClass.php";s:4:"d10a";s:45:"Classes/Object/Exception/UnknownInterface.php";s:4:"22a4";s:51:"Classes/Object/Exception/UnresolvedDependencies.php";s:4:"7d47";s:39:"Classes/Object/Exception/WrongScope.php";s:4:"cc92";s:31:"Classes/Persistence/Backend.php";s:4:"d2cf";s:40:"Classes/Persistence/BackendInterface.php";s:4:"88db";s:33:"Classes/Persistence/Exception.php";s:4:"1713";s:35:"Classes/Persistence/IdentityMap.php";s:4:"b49d";s:40:"Classes/Persistence/LazyLoadingProxy.php";s:4:"1928";s:41:"Classes/Persistence/LazyObjectStorage.php";s:4:"faa1";s:48:"Classes/Persistence/LoadingStrategyInterface.php";s:4:"fa0d";s:31:"Classes/Persistence/Manager.php";s:4:"6e42";s:40:"Classes/Persistence/ManagerInterface.php";s:4:"17d8";s:49:"Classes/Persistence/ObjectMonitoringInterface.php";s:4:"6054";s:37:"Classes/Persistence/ObjectStorage.php";s:4:"a883";s:36:"Classes/Persistence/PropertyType.php";s:4:"f62a";s:29:"Classes/Persistence/Query.php";s:4:"203d";s:36:"Classes/Persistence/QueryFactory.php";s:4:"4ab8";s:45:"Classes/Persistence/QueryFactoryInterface.php";s:4:"900e";s:38:"Classes/Persistence/QueryInterface.php";s:4:"ebdb";s:35:"Classes/Persistence/QueryResult.php";s:4:"ace3";s:44:"Classes/Persistence/QueryResultInterface.php";s:4:"843d";s:46:"Classes/Persistence/QuerySettingsInterface.php";s:4:"1e52";s:34:"Classes/Persistence/Repository.php";s:4:"4074";s:43:"Classes/Persistence/RepositoryInterface.php";s:4:"55e7";s:31:"Classes/Persistence/Session.php";s:4:"43b4";s:42:"Classes/Persistence/Typo3QuerySettings.php";s:4:"cd0d";s:56:"Classes/Persistence/Exception/CleanStateNotMemorized.php";s:4:"7689";s:51:"Classes/Persistence/Exception/IllegalObjectType.php";s:4:"73e7";s:46:"Classes/Persistence/Exception/InvalidClass.php";s:4:"761b";s:60:"Classes/Persistence/Exception/InvalidNumberOfConstraints.php";s:4:"3a38";s:53:"Classes/Persistence/Exception/InvalidPropertyType.php";s:4:"cd9a";s:48:"Classes/Persistence/Exception/MissingBackend.php";s:4:"1d0d";s:53:"Classes/Persistence/Exception/RepositoryException.php";s:4:"1aba";s:42:"Classes/Persistence/Exception/TooDirty.php";s:4:"3347";s:57:"Classes/Persistence/Exception/UnexpectedTypeException.php";s:4:"5b57";s:47:"Classes/Persistence/Exception/UnknownObject.php";s:4:"21a6";s:51:"Classes/Persistence/Exception/UnsupportedMethod.php";s:4:"9915";s:50:"Classes/Persistence/Exception/UnsupportedOrder.php";s:4:"f4b9";s:53:"Classes/Persistence/Exception/UnsupportedRelation.php";s:4:"6bc0";s:40:"Classes/Persistence/Mapper/ColumnMap.php";s:4:"fee9";s:38:"Classes/Persistence/Mapper/DataMap.php";s:4:"2b19";s:45:"Classes/Persistence/Mapper/DataMapFactory.php";s:4:"ab68";s:41:"Classes/Persistence/Mapper/DataMapper.php";s:4:"419d";s:40:"Classes/Persistence/QOM/AndInterface.php";s:4:"f72d";s:45:"Classes/Persistence/QOM/BindVariableValue.php";s:4:"454e";s:54:"Classes/Persistence/QOM/BindVariableValueInterface.php";s:4:"822e";s:38:"Classes/Persistence/QOM/Comparison.php";s:4:"74e7";s:47:"Classes/Persistence/QOM/ComparisonInterface.php";s:4:"f50a";s:38:"Classes/Persistence/QOM/Constraint.php";s:4:"6e7b";s:47:"Classes/Persistence/QOM/ConstraintInterface.php";s:4:"c106";s:42:"Classes/Persistence/QOM/DynamicOperand.php";s:4:"29d3";s:51:"Classes/Persistence/QOM/DynamicOperandInterface.php";s:4:"981b";s:45:"Classes/Persistence/QOM/EquiJoinCondition.php";s:4:"29b1";s:54:"Classes/Persistence/QOM/EquiJoinConditionInterface.php";s:4:"b9f5";s:32:"Classes/Persistence/QOM/Join.php";s:4:"d270";s:50:"Classes/Persistence/QOM/JoinConditionInterface.php";s:4:"63c8";s:41:"Classes/Persistence/QOM/JoinInterface.php";s:4:"c3a5";s:38:"Classes/Persistence/QOM/LogicalAnd.php";s:4:"4b22";s:38:"Classes/Persistence/QOM/LogicalNot.php";s:4:"aba3";s:37:"Classes/Persistence/QOM/LogicalOr.php";s:4:"3476";s:37:"Classes/Persistence/QOM/LowerCase.php";s:4:"15a8";s:46:"Classes/Persistence/QOM/LowerCaseInterface.php";s:4:"215c";s:40:"Classes/Persistence/QOM/NotInterface.php";s:4:"8d10";s:35:"Classes/Persistence/QOM/Operand.php";s:4:"a635";s:44:"Classes/Persistence/QOM/OperandInterface.php";s:4:"39ff";s:39:"Classes/Persistence/QOM/OrInterface.php";s:4:"b109";s:36:"Classes/Persistence/QOM/Ordering.php";s:4:"e7f4";s:45:"Classes/Persistence/QOM/OrderingInterface.php";s:4:"b9f9";s:41:"Classes/Persistence/QOM/PropertyValue.php";s:4:"96fb";s:50:"Classes/Persistence/QOM/PropertyValueInterface.php";s:4:"6526";s:62:"Classes/Persistence/QOM/QueryObjectModelConstantsInterface.php";s:4:"33bb";s:51:"Classes/Persistence/QOM/QueryObjectModelFactory.php";s:4:"e6fc";s:60:"Classes/Persistence/QOM/QueryObjectModelFactoryInterface.php";s:4:"3b53";s:36:"Classes/Persistence/QOM/Selector.php";s:4:"59cb";s:45:"Classes/Persistence/QOM/SelectorInterface.php";s:4:"e75c";s:43:"Classes/Persistence/QOM/SourceInterface.php";s:4:"a397";s:37:"Classes/Persistence/QOM/Statement.php";s:4:"c978";s:41:"Classes/Persistence/QOM/StaticOperand.php";s:4:"69f4";s:50:"Classes/Persistence/QOM/StaticOperandInterface.php";s:4:"4e9b";s:37:"Classes/Persistence/QOM/UpperCase.php";s:4:"6646";s:46:"Classes/Persistence/QOM/UpperCaseInterface.php";s:4:"ea6b";s:48:"Classes/Persistence/Storage/BackendInterface.php";s:4:"ad7b";s:46:"Classes/Persistence/Storage/Typo3DbBackend.php";s:4:"9b96";s:51:"Classes/Persistence/Storage/Typo3DbBackend.php.orig";s:4:"8048";s:55:"Classes/Persistence/Storage/Exception/BadConstraint.php";s:4:"3a87";s:50:"Classes/Persistence/Storage/Exception/SqlError.php";s:4:"850b";s:44:"Classes/Property/DateTimeObjectConverter.php";s:4:"8bec";s:30:"Classes/Property/Exception.php";s:4:"8465";s:27:"Classes/Property/Mapper.php";s:4:"d709";s:35:"Classes/Property/MappingResults.php";s:4:"64c8";s:45:"Classes/Property/ObjectConverterInterface.php";s:4:"adb0";s:38:"Classes/Property/DataType/DateTime.php";s:4:"8418";s:49:"Classes/Property/Exception/FormatNotSupported.php";s:4:"338e";s:46:"Classes/Property/Exception/InvalidDataType.php";s:4:"f280";s:44:"Classes/Property/Exception/InvalidFormat.php";s:4:"0bfa";s:46:"Classes/Property/Exception/InvalidProperty.php";s:4:"e6fb";s:44:"Classes/Property/Exception/InvalidSource.php";s:4:"ba13";s:44:"Classes/Property/Exception/InvalidTarget.php";s:4:"6cd9";s:38:"Classes/Reflection/ClassReflection.php";s:4:"913c";s:34:"Classes/Reflection/ClassSchema.php";s:4:"7ebc";s:39:"Classes/Reflection/DocCommentParser.php";s:4:"6357";s:32:"Classes/Reflection/Exception.php";s:4:"8625";s:39:"Classes/Reflection/MethodReflection.php";s:4:"26fc";s:35:"Classes/Reflection/ObjectAccess.php";s:4:"a6dc";s:42:"Classes/Reflection/ParameterReflection.php";s:4:"284d";s:41:"Classes/Reflection/PropertyReflection.php";s:4:"95b8";s:30:"Classes/Reflection/Service.php";s:4:"54c8";s:52:"Classes/Reflection/Exception/InvalidPropertyType.php";s:4:"02d6";s:63:"Classes/Reflection/Exception/PropertyNotAccessibleException.php";s:4:"0ddf";s:30:"Classes/Security/Exception.php";s:4:"2d15";s:47:"Classes/Security/Channel/RequestHashService.php";s:4:"afac";s:45:"Classes/Security/Cryptography/HashService.php";s:4:"e0aa";s:63:"Classes/Security/Exception/InvalidArgumentForHashGeneration.php";s:4:"856e";s:70:"Classes/Security/Exception/InvalidArgumentForRequestHashGeneration.php";s:4:"9f05";s:60:"Classes/Security/Exception/SyntacticallyWrongRequestHash.php";s:4:"89bd";s:26:"Classes/Utility/Arrays.php";s:4:"5dfd";s:25:"Classes/Utility/Cache.php";s:4:"28a8";s:31:"Classes/Utility/ClassLoader.php";s:4:"16a4";s:44:"Classes/Utility/ExtbaseRequirementsCheck.php";s:4:"a352";s:29:"Classes/Utility/Extension.php";s:4:"3c8d";s:32:"Classes/Utility/Localization.php";s:4:"ccaa";s:32:"Classes/Utility/TypeHandling.php";s:4:"d63e";s:30:"Classes/Utility/TypoScript.php";s:4:"c335";s:28:"Classes/Validation/Error.php";s:4:"247a";s:32:"Classes/Validation/Exception.php";s:4:"44f8";s:36:"Classes/Validation/PropertyError.php";s:4:"f0a7";s:40:"Classes/Validation/ValidatorResolver.php";s:4:"07a6";s:47:"Classes/Validation/Exception/InvalidSubject.php";s:4:"5040";s:63:"Classes/Validation/Exception/InvalidValidationConfiguration.php";s:4:"9cfa";s:57:"Classes/Validation/Exception/InvalidValidationOptions.php";s:4:"a3a8";s:48:"Classes/Validation/Exception/NoSuchValidator.php";s:4:"64f4";s:49:"Classes/Validation/Exception/NoValidatorFound.php";s:4:"be96";s:59:"Classes/Validation/Validator/AbstractCompositeValidator.php";s:4:"93b2";s:56:"Classes/Validation/Validator/AbstractObjectValidator.php";s:4:"fb77";s:50:"Classes/Validation/Validator/AbstractValidator.php";s:4:"c4ad";s:54:"Classes/Validation/Validator/AlphanumericValidator.php";s:4:"ae25";s:53:"Classes/Validation/Validator/ConjunctionValidator.php";s:4:"e2bc";s:50:"Classes/Validation/Validator/DateTimeValidator.php";s:4:"3716";s:53:"Classes/Validation/Validator/DisjunctionValidator.php";s:4:"95f8";s:54:"Classes/Validation/Validator/EmailAddressValidator.php";s:4:"e9de";s:47:"Classes/Validation/Validator/FloatValidator.php";s:4:"6e44";s:55:"Classes/Validation/Validator/GenericObjectValidator.php";s:4:"210d";s:49:"Classes/Validation/Validator/IntegerValidator.php";s:4:"f70f";s:50:"Classes/Validation/Validator/NotEmptyValidator.php";s:4:"92fa";s:53:"Classes/Validation/Validator/NumberRangeValidator.php";s:4:"33cb";s:48:"Classes/Validation/Validator/NumberValidator.php";s:4:"ab3d";s:57:"Classes/Validation/Validator/ObjectValidatorInterface.php";s:4:"aeea";s:45:"Classes/Validation/Validator/RawValidator.php";s:4:"2b76";s:59:"Classes/Validation/Validator/RegularExpressionValidator.php";s:4:"95aa";s:54:"Classes/Validation/Validator/StringLengthValidator.php";s:4:"6885";s:48:"Classes/Validation/Validator/StringValidator.php";s:4:"2231";s:46:"Classes/Validation/Validator/TextValidator.php";s:4:"d641";s:51:"Classes/Validation/Validator/ValidatorInterface.php";s:4:"1c82";s:24:"Documentation/README.txt";s:4:"35d4";s:43:"Resources/Private/Language/locallang_db.xml";s:4:"d03e";s:48:"Resources/Private/MVC/NotFoundView_Template.html";s:4:"d5a3";s:22:"Tests/BaseTestCase.php";s:4:"c7e5";s:30:"Tests/SeleniumBaseTestCase.php";s:4:"e3b0";s:27:"Tests/Unit/BaseTestCase.php";s:4:"bcb9";s:61:"Tests/Unit/Configuration/AbstractConfigurationManagerTest.php";s:4:"92e8";s:60:"Tests/Unit/Configuration/BackendConfigurationManagerTest.php";s:4:"5d6c";s:61:"Tests/Unit/Configuration/FrontendConfigurationManagerTest.php";s:4:"6cdb";s:46:"Tests/Unit/DomainObject/AbstractEntityTest.php";s:4:"4539";s:30:"Tests/Unit/Fixtures/Entity.php";s:4:"09e9";s:33:"Tests/Unit/MVC/DispatcherTest.php";s:4:"17b7";s:52:"Tests/Unit/MVC/Controller/AbstractControllerTest.php";s:4:"5a51";s:50:"Tests/Unit/MVC/Controller/ActionControllerTest.php";s:4:"110f";s:42:"Tests/Unit/MVC/Controller/ArgumentTest.php";s:4:"4805";s:43:"Tests/Unit/MVC/Controller/ArgumentsTest.php";s:4:"f493";s:41:"Tests/Unit/MVC/Web/RequestBuilderTest.php";s:4:"5bc5";s:34:"Tests/Unit/MVC/Web/RequestTest.php";s:4:"70cf";s:45:"Tests/Unit/MVC/Web/Routing/UriBuilderTest.php";s:4:"d684";s:52:"Tests/Unit/Object/Container/ClassInfoFactoryTest.php";s:4:"42eb";s:45:"Tests/Unit/Object/Container/ContainerTest.php";s:4:"5981";s:52:"Tests/Unit/Object/Container/Fixtures/Testclasses.php";s:4:"feae";s:44:"Tests/Unit/Persistence/ObjectStorageTest.php";s:4:"f76b";s:42:"Tests/Unit/Persistence/QueryResultTest.php";s:4:"4681";s:36:"Tests/Unit/Persistence/QueryTest.php";s:4:"9df8";s:41:"Tests/Unit/Persistence/RepositoryTest.php";s:4:"f2c7";s:38:"Tests/Unit/Persistence/SessionTest.php";s:4:"b50c";s:52:"Tests/Unit/Persistence/Mapper/DataMapFactoryTest.php";s:4:"a165";s:53:"Tests/Unit/Persistence/Storage/Typo3DbBackendTest.php";s:4:"610a";s:42:"Tests/Unit/Reflection/ObjectAccessTest.php";s:4:"829b";s:37:"Tests/Unit/Reflection/ServiceTest.php";s:4:"135c";s:50:"Tests/Unit/Reflection/Fixture/ArrayAccessClass.php";s:4:"9afd";s:65:"Tests/Unit/Reflection/Fixture/DummyClassWithGettersAndSetters.php";s:4:"258b";s:54:"Tests/Unit/Security/Channel/RequestHashServiceTest.php";s:4:"a9be";s:52:"Tests/Unit/Security/Cryptography/HashServiceTest.php";s:4:"f27a";s:36:"Tests/Unit/Utility/ExtensionTest.php";s:4:"b3b1";s:37:"Tests/Unit/Utility/TypoScriptTest.php";s:4:"4237";s:47:"Tests/Unit/Validation/ValidatorResolverTest.php";s:4:"4548";s:61:"Tests/Unit/Validation/Validator/AlphanumericValidatorTest.php";s:4:"0223";s:60:"Tests/Unit/Validation/Validator/ConjunctionValidatorTest.php";s:4:"4e82";s:57:"Tests/Unit/Validation/Validator/DateTimeValidatorTest.php";s:4:"1fd6";s:61:"Tests/Unit/Validation/Validator/EmailAddressValidatorTest.php";s:4:"7961";s:54:"Tests/Unit/Validation/Validator/FloatValidatorTest.php";s:4:"4b61";s:62:"Tests/Unit/Validation/Validator/GenericObjectValidatorTest.php";s:4:"5743";s:56:"Tests/Unit/Validation/Validator/IntegerValidatorTest.php";s:4:"f9e9";s:57:"Tests/Unit/Validation/Validator/NotEmptyValidatorTest.php";s:4:"29d8";s:60:"Tests/Unit/Validation/Validator/NumberRangeValidatorTest.php";s:4:"0351";s:55:"Tests/Unit/Validation/Validator/NumberValidatorTest.php";s:4:"82bf";s:52:"Tests/Unit/Validation/Validator/RawValidatorTest.php";s:4:"03b1";s:66:"Tests/Unit/Validation/Validator/RegularExpressionValidatorTest.php";s:4:"18d0";s:61:"Tests/Unit/Validation/Validator/StringLengthValidatorTest.php";s:4:"4cf3";s:53:"Tests/Unit/Validation/Validator/TextValidatorTest.php";s:4:"eb32";}',
 );
 
 ?>
\ No newline at end of file
index 164fd84..0f685e1 100644 (file)
@@ -1 +1 @@
-https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/extbase/tags/1.3.0beta3/
+https://svn.typo3.org/TYPO3v4/CoreProjects/MVC/extbase/tags/1.3.0beta4/
index 2af8ca3..7032818 100644 (file)
@@ -1,6 +1,20 @@
 ChangeLog for Fluid
 ===================
 
+Changes for 1.3.0 Beta 4:
+=========================
+included in TYPO3 4.5.0 Beta 4.
+
+This change contains numerous bugfixes.
+
+Full Changes for 1.3.0 Beta 4:
+==============================
+
+[~TASK] Fluid (Tests): Fixed some testcase class names
+[+FEATURE] Fluid (ViewHelpers): prepend URIs with scheme if it's not specified in link.external / uri.external ViewHelpers. Resolves #10401
+[+TASK] Fluid (ViewHelpers): Fix, cleanup and extend inline documentation of ViewHelpers
+[+BUGFIX] Fluid (View): Fixed deprecation message about lowercase template files names
+
 Changes for 1.3.0 Beta 2:
 =========================
 included in TYPO3 4.5.0 Beta 2.
index b239546..c70463f 100644 (file)
@@ -191,9 +191,9 @@ class Tx_Fluid_View_TemplateView extends Tx_Fluid_View_AbstractTemplateView {
                                        }
                                        break;
                                } elseif (file_exists($fallbackPath)) {
+                                       t3lib_div::deprecationLog('the template filename "' . $fallbackPath . '" is lowercase. This is deprecated since TYPO3 4.4. Please rename the template to "' . basename($templatePathAndFilename) . '"');
                                        $found = TRUE;
                                        $templatePathAndFilename = $fallbackPath;
-                                       t3lib_div::deprecationLog('the template filename "' . $fallbackPath . '" is lowercase. This is deprecated since TYPO3 4.4. Please rename the template to "' . basename($templatePathAndFilename) . '"');
                                        break;
                                }
                        }
index 11c1b27..6fbf73a 100644 (file)
  * @version $Id:
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  *
- * @author      Steffen Kamper <info@sk-typo3.de>
- * @author      Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 abstract class Tx_Fluid_ViewHelpers_Be_AbstractBackendViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
 
index 15ba9fa..c0422f1 100644 (file)
  * <code title="Default">
  * <f:be.buttons.csh />
  * </code>
- *
- * Output:
+ * <output>
  * CSH button as known from the TYPO3 backend.
+ * </output>
  *
+ * <code title="Full configuration">
+ * <f:be.buttons.csh table="xMOD_csh_corebe" field="someCshKey" iconOnly="1" styleAttributes="border: 1px solid red" />
+ * </code>
+ * <output>
+ * CSH button as known from the TYPO3 backend with some custom settings.
+ * </output>
  *
- * @author             Steffen Kamper <info@sk-typo3.de>
- * @author             Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_Buttons_CshViewHelper extends Tx_Fluid_ViewHelpers_Be_AbstractBackendViewHelper {
 
index a843321..566b103 100644 (file)
  * <code title="Default">
  * <f:be.buttons.icon uri="{f:uri.action()}" />
  * </code>
- *
- * Output:
+ * <output>
  * An icon button as known from the TYPO3 backend, skinned and linked with the default action of the current controller.
  * Note: By default the "close" icon is used as image
+ * </output>
  *
  * <code title="Default">
  * <f:be.buttons.icon uri="{f:uri.action(action='new')}" icon="new_el" title="Create new Foo" />
  * </code>
- *
- * Output:
+ * <output>
  * This time the "new_el" icon is returned, the button has the title attribute set and links to the "new" action of the current controller.
+ * </output>
  *
- * @author             Steffen Kamper <info@sk-typo3.de>
- * @author             Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_Buttons_IconViewHelper extends Tx_Fluid_ViewHelpers_Be_AbstractBackendViewHelper {
 
index c7906ea..1c86c81 100644 (file)
  * <code title="Default">
  * <f:be.buttons.shortcut />
  * </code>
- *
- * Output:
+ * <output>
  * Shortcut button as known from the TYPO3 backend.
  * By default the current page id, module name and all module arguments will be stored
+ * </output>
  *
  * <code title="Explicitly set parameters to be stored in the shortcut">
  * <f:be.buttons.shortcut getVars="{0: 'M', 1: 'myOwnPrefix'}" setVars="{0: 'function'}" />
  * </code>
- *
- * Output:
+ * <output>
  * Shortcut button as known from the TYPO3 backend.
  * This time only the specified GET parameters and SET[]-settings will be stored.
  * Note:
  * Normally you won't need to set getVars & setVars parameters in Extbase modules
+ * </output>
  *
- * @author             Steffen Kamper <info@sk-typo3.de>
- * @author             Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_Buttons_ShortcutViewHelper extends Tx_Fluid_ViewHelpers_Be_AbstractBackendViewHelper {
 
index 6b1cbfe..03c62b7 100644 (file)
  * <code title="Simple">
  * <f:be.container>your module content</f:be.container>
  * </code>
- *
- * Output:
+ * <output>
  * "your module content" wrapped with propper head & body tags.
  * Default backend CSS styles and JavaScript will be included
+ * </output>
  *
  * <code title="All options">
  * <f:be.container pageTitle="foo" enableJumpToUrl="false" enableClickMenu="false" loadPrototype="false" loadScriptaculous="false" scriptaculousModule="someModule,someOtherModule" loadExtJs="true" loadExtJsTheme="false" extJsAdapter="jQuery" enableExtJsDebug="true" addCssFile="{f:uri.resource(path:'styles/backend.css')}" addJsFile="{f:uri.resource('scripts/main.js')}">your module content</f:be.container>
  * </code>
- *
- * Output:
+ * <output>
  * "your module content" wrapped with propper head & body tags.
  * Custom CSS file EXT:your_extension/Resources/Public/styles/backend.css and JavaScript file EXT:your_extension/Resources/Public/scripts/main.js will be loaded
+ * </output>
  *
- * @author      Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_ContainerViewHelper extends Tx_Fluid_ViewHelpers_Be_AbstractBackendViewHelper {
 
index bf35746..0844b9a 100644 (file)
  * This view helper only works in conjunction with Tx_Fluid_ViewHelpers_Be_Menus_ActionMenuViewHelper
  * Note: This view helper is experimental!
  *
+ * = Examples =
  *
- * @author      Steffen Kamper <info@sk-typo3.de>
- * @author      Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
+ * <code title="Simple">
+ * <f:be.menus.actionMenu>
+ *   <f:be.menus.actionMenuItem label="Overview" controller="Blog" action="index" />
+ *   <f:be.menus.actionMenuItem label="Create new Blog" controller="Blog" action="new" />
+ *   <f:be.menus.actionMenuItem label="List Posts" controller="Post" action="index" arguments="{blog: blog}" />
+ * </f:be.menus.actionMenu>
+ * </code>
+ * <output>
+ * Selectbox with the options "Overview", "Create new Blog" and "List Posts"
+ * </output>
+ *
+ * <code title="Localized">
+ * <f:be.menus.actionMenu>
+ *   <f:be.menus.actionMenuItem label="{f:translate(key='overview')}" controller="Blog" action="index" />
+ *   <f:be.menus.actionMenuItem label="{f:translate(key='create_blog')}" controller="Blog" action="new" />
+ * </f:be.menus.actionMenu>
+ * </code>
+ * <output>
+ * localized selectbox
+ * <output>
+ *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_Menus_ActionMenuItemViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractTagBasedViewHelper {
 
index 60056f2..0536693 100644 (file)
@@ -33,9 +33,9 @@
  *   <f:be.menus.actionMenuItem label="List Posts" controller="Post" action="index" arguments="{blog: blog}" />
  * </f:be.menus.actionMenu>
  * </code>
- *
- * Output:
+ * <output>
  * Selectbox with the options "Overview", "Create new Blog" and "List Posts"
+ * </output>
  *
  * <code title="Localized">
  * <f:be.menus.actionMenu>
  *   <f:be.menus.actionMenuItem label="{f:translate(key='create_blog')}" controller="Blog" action="new" />
  * </f:be.menus.actionMenu>
  * </code>
+ * <output>
+ * localized selectbox
+ * <output>
  *
- * @author      Steffen Kamper <info@sk-typo3.de>
- * @author      Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_Menus_ActionMenuViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractTagBasedViewHelper implements Tx_Fluid_Core_ViewHelper_Facets_ChildNodeAccessInterface {
 
index 5fc3ed3..8805905 100644 (file)
  * <code>
  * <f:be.pageInfo />
  * </code>
- *
- * Output:
+ * <output>
  * Page info icon with context menu
+ * </output>
  *
- * @author      Steffen Kamper <info@sk-typo3.de>
- * @author      Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_PageInfoViewHelper extends Tx_Fluid_ViewHelpers_Be_AbstractBackendViewHelper {
 
index a4bbec1..d10ccd8 100644 (file)
  * <code>
  * <f:be.pagePath />
  * </code>
- *
- * Output:
+ * <output>
  * Current page path, prefixed with "Path:" and wrapped in a span with the class "typo3-docheader-pagePath"
+ * </output>
  *
- *
- * @author      Steffen Kamper <info@sk-typo3.de>
- * @author      Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Steffen Kamper <info@sk-typo3.de>
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 class Tx_Fluid_ViewHelpers_Be_PagePathViewHelper extends Tx_Fluid_ViewHelpers_Be_AbstractBackendViewHelper {
 
index 93162eb..0884320 100644 (file)
  * <code title="Minimal">
  * <f:be.tableList tableName="fe_users" />
  * </code>
- *
- * Output:
+ * <output>
  * List of all "Website user" records stored in the configured storage PID.
  * Records will be editable, if the current BE user has got edit rights for the table "fe_users".
  * Only the title column (username) will be shown.
  * Context menu is active.
+ * </output>
  *
  * <code title="Full">
  * <f:be.tableList tableName="fe_users" fieldList="{0: 'name', 1: 'email'}" storagePid="1" levels="2" filter='foo' recordsPerPage="10" sortField="name" sortDescending="true" readOnly="true" enableClickMenu="false" clickTitleMode="info" alternateBackgroundColors="true" />
  * </code>
- *
- * Output:
+ * <output>
  * List of "Website user" records with a text property of "foo" stored on PID 1 and two levels down.
  * Clicking on a username will open the TYPO3 info popup for the respective record
+ * </output>
  *
- * @author      Bastian Waidelich <bastian@typo3.org>
- * @license     http://www.gnu.org/copyleft/gpl.html
- * @version     SVN: $Id:
- *
+ * @author Bastian Waidelich <bastian@typo3.org>
+ * @license http://www.gnu.org/copyleft/gpl.html
  */
 require_once (PATH_typo3 . 'class.db_list.inc');
 require_once (PATH_typo3 . 'class.db_list_extra.inc');
index f2daa98..9af51bb 100644 (file)
  *                                                                        */
 
 /**
+ * Wrapper for TYPO3s famous debug() function
  *
+ * = Examples =
+ *
+ * <code title="Simple">
+ * <f:debug>{testVariables.array}</f:debug>
+ * </code>
+ * <output>
+ * foobarbazfoo
+ * </output>
  */
 class Tx_Fluid_ViewHelpers_DebugViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
 
        /**
-        * Wrapper for TYPO3s famous debug()
+        * Wrapper for TYPO3s famous debug() function
         *
         * @param string $title
-        * @return string the altered string. 
+        * @return string the altered string.
         * @author Bastian Waidelich <bastian@typo3.org>
         */
        public function render($title = NULL) {
index 60cea75..9975003 100644 (file)
  * <code title="HTML">
  * <f:escape>{text}</f:escape>
  * </code>
- *
- * Output:
+ * <output>
  * Text with & " ' < > * replaced by HTML entities (htmlspecialchars applied).
+ * </output>
  *
  * <code title="Entities">
  * <f:escape type="entities">{text}</f:escape>
  * </code>
- *
- * Output:
+ * <output>
  * Text with all possible chars replaced by HTML entities (htmlentities applied).
+ * </output>
  *
  * <code title="URL">
  * <f:escape type="url">{text}</f:escape>
  * </code>
- *
- * Output:
+ * <output>
  * Text encoded for URL use (rawurlencode applied).
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index cd9415b..ccc87a3 100644 (file)
  * <code title="Simple">
  * <f:flashMessages />
  * </code>
- * Renders an ul-list of flash messages.
+ * <output>
+ * An ul-list of flash messages.
+ * </output>
  *
  * <code title="Output with css class">
  * <f:flashMessages class="specialClass" />
  * </code>
- *
- * Output:
+ * <output>
  * <ul class="specialClass">
  *  ...
  * </ul>
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 11784b8..3867668 100644 (file)
  * <code title="Example">
  * <f:form.checkbox name="myCheckBox" value="someValue" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="checkbox" name="myCheckBox" value="someValue" />
+ * </output>
  *
  * <code title="Preselect">
  * <f:form.checkbox name="myCheckBox" value="someValue" checked="{object.value} == 5" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="checkbox" name="myCheckBox" value="someValue" checked="checked" />
  * (depending on $object)
+ * </output>
  *
  * <code title="Bind to object property">
  * <f:form.checkbox property="interests" value="TYPO3" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="checkbox" name="user[interests][]" value="TYPO3" checked="checked" />
  * (depending on property "interests")
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 7aa3595..4e857ae 100644 (file)
  *
  * <code title="Output error messages as a list">
  * <ul class="errors">
- *   <f:errors>
+ *   <f:form.errors>
  *     <li>{error.code}: {error.message}</li>
- *   </f:errors>
+ *   </f:form.errors>
  * </ul>
  * </code>
- *
- * Output:
+ * <output>
  * <ul>
  *   <li>1234567890: Validation errors for argument "newBlog"</li>
  * </ul>
+ * </output>
+ *
+ * <code title="Output error messages for a single property">
+ * <f:form.errors for="someProperty">
+ *   <div class="error">
+ *     <strong>{error.propertyName}</strong>: <f:for each="{error.errors}" as="errorDetail">{errorDetail.message}</f:for>
+ *   </div>
+ * </f:form.errors>
+ * </code>
+ * <output>
+ * <div class="error>
+ *   <strong>someProperty:</strong> errorMessage1 errorMessage2
+ * </div>
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index eca044b..e251d7e 100644 (file)
@@ -28,9 +28,9 @@
  * <code title="Example">
  * <f:form.hidden name="myHiddenValue" value="42" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="hidden" name="myHiddenValue" value="42" />
+ * </output>
  *
  * You can also use the "property" attribute if you have bound an object to the form.
  * See <f:form> for more documentation.
index b82dbde..8ab565b 100644 (file)
@@ -28,9 +28,9 @@
  * <code title="Example">
  * <f:form.password name="myPassword" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="password" name="myPassword" value="default value" />
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 6914d8f..d8e15a7 100644 (file)
  * <code title="Example">
  * <f:form.radio name="myRadioButton" value="someValue" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="radio" name="myRadioButton" value="someValue" />
+ * </output>
  *
  * <code title="Preselect">
  * <f:form.radio name="myRadioButton" value="someValue" checked="{object.value} == 5" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="radio" name="myRadioButton" value="someValue" checked="checked" />
  * (depending on $object)
+ * </output>
  *
  * <code title="Bind to object property">
  * <f:form.radio property="newsletter" value="1" /> yes
  * <f:form.radio property="newsletter" value="0" /> no
  * </code>
- *
- * Output:
+ * <output>
  * <input type="radio" name="user[newsletter]" value="1" checked="checked" /> yes
  * <input type="radio" name="user[newsletter]" value="0" /> no
  * (depending on property "newsletter")
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 7e6ffdf..2237c63 100644 (file)
  * <code title="Defaults">
  * <f:form.submit value="Send Mail" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="submit" />
+ * </output>
  *
  * <code title="Dummy content for template preview">
  * <f:submit name="mySubmit" value="Send Mail"><button>dummy button</button></f:submit>
  * </code>
- *
-  * Output:
+ * <output>
  * <input type="submit" name="mySubmit" value="Send Mail" />
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 6f8523c..2b2da33 100644 (file)
  * = Examples =
  *
  * <code title="Example">
- * <f:textarea name="myTextArea" value="This is shown inside the textarea" />
+ * <f:form.textarea name="myTextArea" value="This is shown inside the textarea" />
  * </code>
- *
- * Output:
+ * <output>
  * <textarea name="myTextArea">This is shown inside the textarea</textarea>
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 5b0361a..b84d2e6 100644 (file)
@@ -30,9 +30,9 @@
  * <code title="Example">
  * <f:form.textbox name="myTextBox" value="default value" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="text" name="myTextBox" value="default value" />
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 8266c8b..dce3f4d 100644 (file)
@@ -28,9 +28,9 @@
  * <code title="Example">
  * <f:form.textfield name="myTextBox" value="default value" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="text" name="myTextBox" value="default value" />
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 7e1c230..d196475 100644 (file)
@@ -29,9 +29,9 @@
  * <code title="Example">
  * <f:form.upload name="file" />
  * </code>
- *
- * Output:
+ * <output>
  * <input type="file" name="file" />
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 85b62f9..ac9d8c6 100644 (file)
  * <code title="Defaults">
  * <f:format.crop maxCharacters="10">This is some very long text</f:format.crop>
  * </code>
- *
- * Output:
+ * <output>
  * This is...
+ * </output>
  *
  * <code title="Custom suffix">
  * <f:format.crop maxCharacters="17" append="&nbsp;[more]">This is some very long text</f:format.crop>
  * </code>
- *
- * Output:
+ * <output>
  * This is some&nbsp;[more]
+ * </output>
  *
  * <code title="Don't respect word boundaries">
  * <f:format.crop maxCharacters="10" respectWordBoundaries="false">This is some very long text</f:format.crop>
  * </code>
- *
- * Output:
+ * <output>
  * This is so...
+ * </output>
  *
  * <code title="Don't respect HTML tags">
  * <f:format.crop maxCharacters="28" respectWordBoundaries="false" respectHtml="false">This is some text with <strong>HTML</strong> tags</f:format.crop>
  * </code>
- *
- * Output:
+ * <output>
  * This is some text with <stro
+ * </output>
+ *
+ * <code title="Inline notation">
+ * {someLongText -> f:format.crop(maxCharacters: 10)}
+ * </code>
+ * <output>
+ * someLongText cropped after 10 characters...
+ * (depending on the value of {someLongText})
+ * </output>
  *
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License, version 2
  */
index 3cb1e8e..4f47383 100644 (file)
  * <code title="Defaults">
  * <f:format.currency>123.456</f:format.currency>
  * </code>
- *
- * Output:
+ * <output>
  * 123,46
+ * </output>
  *
  * <code title="All parameters">
  * <f:format.currency currencySign="$" decimalSeparator="." thousandsSeparator=",">54321</f:format.currency>
  * </code>
- *
- * Output:
+ * <output>
  * 54,321.00 $
+ * </output>
+ *
+ * <code title="Inline notation">
+ * {someNumber -> f:format.currency(thousandsSeparator: ',', currencySign: '€')}
+ * </code>
+ * <output>
+ * 54,321,00 €
+ * (depending on the value of {someNumber})
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 9307553..6eaa2b2 100644 (file)
  * <code title="Defaults">
  * <f:format.date>{dateObject}</f:format.date>
  * </code>
- *
- * Output:
+ * <output>
  * 1980-12-13
  * (depending on the current date)
+ * </output>
  *
  * <code title="Custom date format">
  * <f:format.date format="H:i">{dateObject}</f:format.date>
  * </code>
- *
- * Output:
+ * <output>
  * 01:23
  * (depending on the current time)
+ * </output>
  *
  * <code title="strtotime string">
  * <f:format.date format="d.m.Y - H:i:s">+1 week 2 days 4 hours 2 seconds</f:format.date>
  * </code>
- *
- * Output:
+ * <output>
  * 13.12.1980 - 21:03:42
  * (depending on the current time, see http://www.php.net/manual/en/function.strtotime.php)
+ * </output>
  *
- * <code title="inline notation">
+ * <code title="output date from unix timestamp">
+ * <f:format.date format="d.m.Y - H:i:s">@{someTimestamp}</f:format.date>
+ * </code>
+ * <output>
+ * 13.12.1980 - 21:03:42
+ * (depending on the current time. Don't forget the "@" in front of the timestamp see http://www.php.net/manual/en/function.strtotime.php)
+ * </output>
+ *
+ * <code title="Inline notation">
  * {f:format.date(date: dateObject)}
  * </code>
+ * <output>
+ * 1980-12-13
+ * (depending on the value of {dateObject})
+ * </output>
  *
- * Output:
+ * <code title="Inline notation (2nd variant)">
+ * {dateObject -> f:format.date()}
+ * </code>
+ * <output>
  * 1980-12-13
- * (depending on the current date)
+ * (depending on the value of {dateObject})
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api
index 10d6a8d..5778489 100644 (file)
  * You can either specify a path to the TypoScript setting or set the parseFunc options directly.
  * By default lib.parseFunc_RTE is used to parse the string.
  *
- * Example:
+ * == Examples ==
  *
- * (1) default parameters:
+ * <code title="Default parameters">
  * <f:format.html>foo <b>bar</b>. Some <LINK 1>link</LINK>.</f:format.html>
- *
- * Result:
+ * </code>
+ * <output>
  * <p class="bodytext">foo <b>bar</b>. Some <a href="index.php?id=1" >link</a>.</p>
  * (depending on your TYPO3 setup)
+ * </output>
  *
- * (2) custom parseFunc
+ * <code title="Custom parseFunc">
  * <f:format.html parseFuncTSPath="lib.parseFunc">foo <b>bar</b>. Some <LINK 1>link</LINK>.</f:format.html>
+ * </code>
+ * <output>
+ * foo <b>bar</b>. Some <a href="index.php?id=1" >link</a>.
+ * </output>
  *
- * Output:
+ * <code title="Inline notation">
+ * {someText -> f:format.html(parseFuncTSPath: 'lib.parseFunc')}
+ * </code>
+ * <output>
  * foo <b>bar</b>. Some <a href="index.php?id=1" >link</a>.
+ * </output>
  *
  * @see http://typo3.org/documentation/document-library/references/doc_core_tsref/4.2.0/view/1/5/#id4198758
  *
index 27a168e..924e6af 100644 (file)
  * <code title="Example">
  * <f:format.nl2br>{text_with_linebreaks}</f:format.nl2br>
  * </code>
+ * <output>
+ * text with line breaks replaced by <br />
+ * </output>
  *
- * Output:
+ * <code title="Inline notation">
+ * {text_with_linebreaks -> f:format.nl2br()}
+ * </code>
+ * <output>
  * text with line breaks replaced by <br />
+ * </output>
  *
  * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
  * @api