EXTMVC:
authorJochen Rau <j.rau@web.de>
Tue, 24 Mar 2009 15:04:44 +0000 (15:04 +0000)
committerJochen Rau <j.rau@web.de>
Tue, 24 Mar 2009 15:04:44 +0000 (15:04 +0000)
* All class files are renamed to a short version (according to FLOW3 and after a discussion on the snowboard tour; class names remain long)
* Next step: Renaming EXTMVC -> ExtBase

192 files changed:
typo3/sysext/extbase/Classes/Configuration/Container.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Exception.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Exception/ContainerIsLocked.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Exception/InvalidConfigurationType.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Exception/NoSuchFile.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Exception/NoSuchOption.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Exception/ParseError.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_ContainerIsLocked.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_InvalidConfigurationType.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_NoSuchFile.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_NoSuchOption.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_ParseError.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/Manager.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Source/FlexForm.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Source/PHP.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Source/TS.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_FlexForm.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_PHP.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_TS.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/SourceInterface.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Container.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Exception.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Manager.php [deleted file]
typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_SourceInterface.php [deleted file]
typo3/sysext/extbase/Classes/Controller/AbstractController.php [new file with mode: 0755]
typo3/sysext/extbase/Classes/Controller/ActionController.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Controller/Argument.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Controller/Arguments.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Controller/ControllerInterface.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Controller/DefaultController.php [new file with mode: 0755]
typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_AbstractController.php [deleted file]
typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_ActionController.php [deleted file]
typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_Argument.php [deleted file]
typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_Arguments.php [deleted file]
typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_ControllerInterface.php [deleted file]
typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_DefaultController.php [deleted file]
typo3/sysext/extbase/Classes/DomainObject/AbstractDomainObject.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/DomainObject/AbstractEntity.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/DomainObject/AbstractValueObject.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/DomainObject/DomainObjectInterface.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractDomainObject.php [deleted file]
typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractEntity.php [deleted file]
typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractValueObject.php [deleted file]
typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_DomainObjectInterface.php [deleted file]
typo3/sysext/extbase/Classes/Exception.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InfiniteLoop.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidActionName.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidArgumentName.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidArgumentType.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidArgumentValue.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidController.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidControllerName.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidFormat.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidMarker.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidPackageKey.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidPart.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidRequestMethod.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidRequestType.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidRoutePartHandler.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidTemplateSource.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/InvalidViewHelper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/NoSuchAction.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/NoSuchArgument.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/NoSuchController.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/StopAction.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/StopUncachedAction.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/SuccessiveDynamicRouteParts.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InfiniteLoop.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidActionName.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentName.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentType.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentValue.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidController.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidControllerName.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidFormat.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidMarker.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidPackageKey.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidPart.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRequestMethod.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRequestType.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRoutePartHandler.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidTemplateSource.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidViewHelper.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchAction.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchArgument.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchController.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_StopAction.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_StopUncachedAction.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_SuccessiveDynamicRouteParts.php [deleted file]
typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_UnsupportedRequestType.php [deleted file]
typo3/sysext/extbase/Classes/Exception/UnsupportedRequestType.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Exception.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Exception/InvalidClass.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Exception/InvalidPropertyType.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Exception/MissingBackend.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_InvalidClass.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_InvalidPropertyType.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_MissingBackend.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_TooDirty.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_UnsupportedMethod.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/Exception/TooDirty.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Exception/UnsupportedMethod.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Mapper/ColumnMap.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Mapper/DataMap.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Mapper/ObjectRelationalMapper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Mapper/TX_EXTMVC_Persistence_Mapper_ColumnMap.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/Mapper/TX_EXTMVC_Persistence_Mapper_DataMap.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/Mapper/TX_EXTMVC_Persistence_Mapper_ObjectRelationalMapper.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/ObjectStorage.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Repository.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/RepositoryInterface.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/Session.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Persistence/TX_EXTMVC_Persistence_Exception.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/TX_EXTMVC_Persistence_ObjectStorage.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/TX_EXTMVC_Persistence_Repository.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/TX_EXTMVC_Persistence_RepositoryInterface.php [deleted file]
typo3/sysext/extbase/Classes/Persistence/TX_EXTMVC_Persistence_Session.php [deleted file]
typo3/sysext/extbase/Classes/Request.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Response.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/TX_EXTMVC_Exception.php [deleted file]
typo3/sysext/extbase/Classes/TX_EXTMVC_Request.php [deleted file]
typo3/sysext/extbase/Classes/TX_EXTMVC_Response.php [deleted file]
typo3/sysext/extbase/Classes/Utility/Strings.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Utility/TX_EXTMVC_Utility_Strings.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Errors.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Exception.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Exception/InvalidSubject.php [new file with mode: 0755]
typo3/sysext/extbase/Classes/Validation/Exception/NoValidatorFound.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Exception/TX_EXTMVC_Validation_Exception_InvalidSubject.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Exception/TX_EXTMVC_Validation_Exception_NoValidatorFound.php [deleted file]
typo3/sysext/extbase/Classes/Validation/TX_EXTMVC_Validation_Errors.php [deleted file]
typo3/sysext/extbase/Classes/Validation/TX_EXTMVC_Validation_Exception.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/Alphanumeric.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/ChainValidator.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/EmailAddress.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/Float.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/Integer.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/NotEmpty.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/Number.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/NumberRange.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/Raw.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/RegularExpression.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_Alphanumeric.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_ChainValidator.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_EmailAddress.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_Float.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_Integer.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_NotEmpty.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_Number.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_NumberRange.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_Raw.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_RegularExpression.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_Text.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/TX_EXTMVC_Validation_Validator_ValidatorInterface.php [deleted file]
typo3/sysext/extbase/Classes/Validation/Validator/Text.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Validation/Validator/ValidatorInterface.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/AbstractView.php [new file with mode: 0755]
typo3/sysext/extbase/Classes/View/DefaultView.php [new file with mode: 0755]
typo3/sysext/extbase/Classes/View/EmptyView.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/Helper/AbstractHelper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/Helper/ConvertHelper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/Helper/ForHelper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/Helper/HelperInterface.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/Helper/LinkHelper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/Helper/TX_EXTMVC_View_Helper_AbstractHelper.php [deleted file]
typo3/sysext/extbase/Classes/View/Helper/TX_EXTMVC_View_Helper_ConvertHelper.php [deleted file]
typo3/sysext/extbase/Classes/View/Helper/TX_EXTMVC_View_Helper_ForHelper.php [deleted file]
typo3/sysext/extbase/Classes/View/Helper/TX_EXTMVC_View_Helper_HelperInterface.php [deleted file]
typo3/sysext/extbase/Classes/View/Helper/TX_EXTMVC_View_Helper_LinkHelper.php [deleted file]
typo3/sysext/extbase/Classes/View/Helper/TX_EXTMVC_View_Helper_TranslateHelper.php [deleted file]
typo3/sysext/extbase/Classes/View/Helper/TX_EXTMVC_View_Helper_URIHelper.php [deleted file]
typo3/sysext/extbase/Classes/View/Helper/TranslateHelper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/Helper/URIHelper.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/TX_EXTMVC_View_AbstractView.php [deleted file]
typo3/sysext/extbase/Classes/View/TX_EXTMVC_View_DefaultView.php [deleted file]
typo3/sysext/extbase/Classes/View/TX_EXTMVC_View_EmptyView.php [deleted file]
typo3/sysext/extbase/Classes/View/TX_EXTMVC_View_TemplateView.php [deleted file]
typo3/sysext/extbase/Classes/View/TX_EXTMVC_View_ViewInterface.php [deleted file]
typo3/sysext/extbase/Classes/View/TemplateView.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/View/ViewInterface.php [new file with mode: 0644]
typo3/sysext/extbase/Classes/Web/Request.php [new file with mode: 0755]
typo3/sysext/extbase/Classes/Web/Response.php [new file with mode: 0755]
typo3/sysext/extbase/Classes/Web/TX_EXTMVC_Web_Request.php [deleted file]
typo3/sysext/extbase/Classes/Web/TX_EXTMVC_Web_Response.php [deleted file]
typo3/sysext/extbase/Documentation/todo.txt
typo3/sysext/extbase/Tests/DataMap_testcase.php [new file with mode: 0644]
typo3/sysext/extbase/Tests/Fixtures/Entity.php [new file with mode: 0644]
typo3/sysext/extbase/Tests/Fixtures/TX_EXTMVC_Tests_Fixtures_Entity.php [deleted file]
typo3/sysext/extbase/Tests/Session_testcase.php [new file with mode: 0644]
typo3/sysext/extbase/Tests/TX_EXTMVC_Persistence_Mapper_DataMap_testcase.php [deleted file]
typo3/sysext/extbase/Tests/TX_EXTMVC_Persistence_Session_testcase.php [deleted file]
typo3/sysext/extbase/class.tx_extmvc_dispatcher.php

diff --git a/typo3/sysext/extbase/Classes/Configuration/Container.php b/typo3/sysext/extbase/Classes/Configuration/Container.php
new file mode 100644 (file)
index 0000000..0263c20
--- /dev/null
@@ -0,0 +1,326 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A general purpose configuration container.
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Configuration_Container implements Countable, Iterator, ArrayAccess {
+
+       /**
+        * @var array Configuration options and their values
+        */
+       protected $options = array();
+
+       /**
+        * @var boolean Whether this container is locked against write access or open
+        */
+       protected $locked = FALSE;
+
+       /**
+        * @var integer The current Iterator index
+        */
+       protected $iteratorIndex = 0;
+
+       /**
+        * @var integer The current number of options
+        */
+       protected $iteratorCount = 0;
+
+       /**
+        * Constructs the configuration container
+        *
+        * @param array $fromArray If specified, the configuration container will be intially built from the given array structure and values
+        */
+       public function __construct($fromArray = NULL) {
+               if (is_array($fromArray)) {
+                       $this->setFromArray($fromArray);
+               }
+       }
+
+       /**
+        * Sets the content of this configuration container by parsing the given array.
+        *
+        * @param array $fromArray Array structure (and values) which are supposed to be converted into container properties and sub containers
+        * @return void
+        */
+       public function setFromArray(array $fromArray) {
+               foreach ($fromArray as $key => $value) {
+                       if (is_array($value)) {
+                               $subContainer = new self($value);
+                               $this->offsetSet($key, $subContainer);
+                       } else {
+                               $this->offsetSet($key, $value);
+                       }
+               }
+       }
+
+       /**
+        * Returns this configuration container (and possible sub containers) as an array
+        *
+        * @return array This container converted to an array
+        */
+       public function getAsArray() {
+               $optionsArray = array();
+               foreach ($this->options as $key => $value) {
+                       $optionsArray[$key] = ($value instanceof TX_EXTMVC_Configuration_Container) ? $value->getAsArray() : $value;
+               }
+               return $optionsArray;
+       }
+       
+       /**
+        * Returns the this container as a TypoScript array (with the dot "." as a suffix for keys)
+        *
+        * @param mixed $options A plain value or a F3_FLOW3_Configuration_Container 
+        * @return array This container converted to a TypoScript array
+        */
+       public function getAsTsArray() {
+               $optionsArray = array();
+               foreach ($this->options as $key => $value) {
+                       if ($value instanceof F3_GimmeFive_Configuration_Container) {
+                               $key = $key . '.';
+                               $optionsArray[$key] = $this->getAsTsArray();
+                       } else {
+                               $optionsArray[$key] = $value;
+                       }
+               }
+               return $optionsArray;
+       }
+
+       /**
+        * Locks this configuration container agains write access.
+        *
+        * @return void
+        */
+       public function lock() {
+               $this->locked = TRUE;
+               foreach ($this->options as $option) {
+                       if ($option instanceof TX_EXTMVC_Configuration_Container) {
+                               $option->lock();
+                       }
+               }
+       }
+
+       /**
+        * If this container is locked against write access.
+        *
+        * @return boolean TRUE if the container is locked
+        */
+       public function isLocked() {
+               return $this->locked;
+       }
+
+       /**
+        * Merges this container with another configuration container
+        *
+        * @param TX_EXTMVC_Configuration_Container $otherConfiguration The other configuration container
+        * @return TX_EXTMVC_Configuration_Container This container
+        */
+       public function mergeWith(TX_EXTMVC_Configuration_Container $otherConfiguration) {
+               foreach ($otherConfiguration as $optionName => $newOptionValue) {
+                       if ($newOptionValue instanceof TX_EXTMVC_Configuration_Container && array_key_exists($optionName, $this->options)) {
+                               $existingOptionValue = $this->__get($optionName);
+                               if ($existingOptionValue instanceof TX_EXTMVC_Configuration_Container) {
+                                       $newOptionValue = $existingOptionValue->mergeWith($newOptionValue);
+                               }
+                       }
+                       $this->__set($optionName, $newOptionValue);
+               }
+               return $this;
+       }
+       
+       /**
+        * Returns the number of configuration options
+        *
+        * @return integer Option count
+        */
+       public function count() {
+               return $this->iteratorCount;
+       }
+
+       /**
+        * Returns the current configuration option
+        *
+        * @return mixed The current option's value
+        */
+       public function current() {
+               return current($this->options);
+       }
+
+       /**
+        * Returns the key of the current configuration option
+        *
+        * @return string The current configuration option's key
+        */
+       public function key() {
+               return key($this->options);
+       }
+
+       /**
+        * Returns the next configuration option
+        *
+        * @return mixed Value of the next configuration option
+        */
+       public function next() {
+               $this->iteratorIndex ++;
+               return next($this->options);
+       }
+
+       /**
+        * Rewinds the iterator index
+        *
+        * @return void
+        */
+       public function rewind() {
+               $this->iteratorIndex = 0;
+               reset ($this->options);
+       }
+
+       /**
+        * Checks if the current index is valid
+        *
+        * @return boolean If the current index is valid
+        */
+       public function valid() {
+               return $this->iteratorIndex < $this->iteratorCount;
+       }
+
+       /**
+        * Offset check for the ArrayAccess interface
+        *
+        * @param mixed $optionName
+        * @return boolean TRUE if the offset exists otherwise FALSE
+        */
+       public function offsetExists($optionName) {
+               return array_key_exists($optionName, $this->options);
+       }
+
+       /**
+        * Getter for the ArrayAccess interface
+        *
+        * @param mixed $optionName Name of the option to retrieve
+        * @return mixed The value
+        */
+       public function offsetGet($optionName) {
+               return $this->__get($optionName);
+       }
+
+       /**
+        * Setter for the ArrayAccess interface
+        *
+        * @param mixed $optionName Name of the option to set
+        * @param mixed $optionValue New value for the option
+        * @return void
+        */
+       public function offsetSet($optionName, $optionValue) {
+               $this->__set($optionName, $optionValue);
+       }
+
+       /**
+        * Unsetter for the ArrayAccess interface
+        *
+        * @param mixed $optionName Name of the option to unset
+        * @return void
+        */
+       public function offsetUnset($optionName) {
+               $this->__unset($optionName);
+       }
+
+       /**
+        * Magic getter method for configuration options. If an option does not exist,
+        * it will be created automatically - if this container is not locked.
+        *
+        * @param string $optionName Name of the configuration option to retrieve
+        * @return mixed The option value
+        */
+       public function __get($optionName) {
+               if (!array_key_exists($optionName, $this->options)) {
+                       if ($this->locked) throw new TX_EXTMVC_Configuration_Exception_NoSuchOption('An option "' . $optionName . '" does not exist in this configuration container.', 1216385011);
+                       $this->__set($optionName, new self());
+               }
+               return $this->options[$optionName];
+       }
+
+       /**
+        * Magic setter method for configuration options.
+        *
+        * @param string $optionName Name of the configuration option to set
+        * @param mixed $optionValue The option value
+        * @return void
+        * @throws TX_EXTMVC_Configuration_Exception_ContainerIsLocked if the container is locked
+        */
+       public function __set($optionName, $optionValue) {
+               if ($this->locked && !array_key_exists($optionName, $this->options)) throw new TX_EXTMVC_Configuration_Exception_ContainerIsLocked('You tried to create a new configuration option "' . $optionName . '" but the configuration container is already locked. Maybe a spelling mistake?', 1206023011);
+               $this->options[$optionName] = $optionValue;
+               $this->iteratorCount = count($this->options);
+       }
+
+       /**
+        * Magic isset method for configuration options.
+        *
+        * @param string $optionName Name of the configuration option to check
+        * @return boolean TRUE if the option is set, otherwise FALSE
+        */
+       public function __isset($optionName) {
+               return array_key_exists($optionName, $this->options);
+       }
+
+       /**
+        * Magic unsetter method for configuration options.
+        *
+        * @param string $optionName Name of the configuration option to unset
+        * @return void
+        * @throws TX_EXTMVC_Configuration_Exception_ContainerIsLocked if the container is locked
+        */
+       public function __unset($optionName) {
+               if ($this->locked) throw new TX_EXTMVC_Configuration_Exception_ContainerIsLocked('You tried to unset the configuration option "' . $optionName . '" but the configuration container is locked.', 1206023012);
+               unset($this->options[$optionName]);
+               $this->iteratorCount = count($this->options);
+       }
+
+       /**
+        * Magic method to allow setting of configuration options via dummy setters in the format "set[OptionName]([optionValue])".
+        *
+        * @param string $methodName Name of the called setter method.
+        * @param array $arguments Method arguments, passed to the configuration option.
+        * @return TX_EXTMVC_Configuration_Container This configuration container object
+        * @throws TX_EXTMVC_Configuration_Exception if $methodName does not start with "set" or number of arguments are empty
+        */
+       public function __call($methodName, $arguments) {
+               if (substr($methodName, 0, 3) != 'set') {
+                       throw new TX_EXTMVC_Configuration_Exception('Method "' . $methodName . '" does not exist.', 1213444319);
+               }
+               if (count($arguments) != 1) {
+                       throw new TX_EXTMVC_Configuration_Exception('You have to pass exactly one argument to a configuration option setter.', 1213444809);
+               }
+               $optionName = lcfirst(substr($methodName, 3));
+               $this->__set($optionName, $arguments[0]);
+
+               return $this;
+       }
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception.php b/typo3/sysext/extbase/Classes/Configuration/Exception.php
new file mode 100644 (file)
index 0000000..bf26e89
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * @version $Id:$
+ */
+
+/**
+ * A generic Configuration Exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Configuration_Exception extends F3_FLOW3_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/ContainerIsLocked.php b/typo3/sysext/extbase/Classes/Configuration/Exception/ContainerIsLocked.php
new file mode 100644 (file)
index 0000000..82558d8
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * @version $Id:$
+ */
+
+/**
+ * A Container Is Locked exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class ContainerIsLocked extends TX_EXTMVC_Configuration_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/InvalidConfigurationType.php b/typo3/sysext/extbase/Classes/Configuration/Exception/InvalidConfigurationType.php
new file mode 100644 (file)
index 0000000..2c714b4
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * @version $Id:$
+ */
+
+/**
+ * An Invalid Configuration Type Exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidConfigurationType extends TX_EXTMVC_Configuration_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/NoSuchFile.php b/typo3/sysext/extbase/Classes/Configuration/Exception/NoSuchFile.php
new file mode 100644 (file)
index 0000000..e9f5811
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * @version $Id:$
+ */
+
+/**
+ * A No Such File exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class NoSuchFile extends TX_EXTMVC_Configuration_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/NoSuchOption.php b/typo3/sysext/extbase/Classes/Configuration/Exception/NoSuchOption.php
new file mode 100644 (file)
index 0000000..a0a8f52
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * @version $Id:$
+ */
+
+/**
+ * A No Such Option exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class NoSuchOption extends TX_EXTMVC_Configuration_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/ParseError.php b/typo3/sysext/extbase/Classes/Configuration/Exception/ParseError.php
new file mode 100644 (file)
index 0000000..7bf6c4c
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * @version $Id:$
+ */
+
+/**
+ * A Parse Error exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class ParseError extends TX_EXTMVC_Configuration_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_ContainerIsLocked.php b/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_ContainerIsLocked.php
deleted file mode 100644 (file)
index 82558d8..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * @version $Id:$
- */
-
-/**
- * A Container Is Locked exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class ContainerIsLocked extends TX_EXTMVC_Configuration_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_InvalidConfigurationType.php b/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_InvalidConfigurationType.php
deleted file mode 100644 (file)
index 2c714b4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * @version $Id:$
- */
-
-/**
- * An Invalid Configuration Type Exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidConfigurationType extends TX_EXTMVC_Configuration_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_NoSuchFile.php b/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_NoSuchFile.php
deleted file mode 100644 (file)
index e9f5811..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * @version $Id:$
- */
-
-/**
- * A No Such File exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class NoSuchFile extends TX_EXTMVC_Configuration_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_NoSuchOption.php b/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_NoSuchOption.php
deleted file mode 100644 (file)
index a0a8f52..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * @version $Id:$
- */
-
-/**
- * A No Such Option exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class NoSuchOption extends TX_EXTMVC_Configuration_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_ParseError.php b/typo3/sysext/extbase/Classes/Configuration/Exception/TX_EXTMVC_Configuration_Exception_ParseError.php
deleted file mode 100644 (file)
index 7bf6c4c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * @version $Id:$
- */
-
-/**
- * A Parse Error exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class ParseError extends TX_EXTMVC_Configuration_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Manager.php b/typo3/sysext/extbase/Classes/Configuration/Manager.php
new file mode 100644 (file)
index 0000000..b32c32f
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+require_once(PATH_t3lib . 'interfaces/interface.t3lib_singleton.php');
+
+/**
+ * A general purpose configuration manager
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Configuration_Manager implements t3lib_Singleton {
+
+       /**
+        * Storage for the settings, loaded by loadGlobalSettings()
+        *
+        * @var array
+        */
+       protected $settings = array();
+
+       /**
+        * The configuration source instances used for loading the raw configuration
+        *
+        * @var array
+        */
+       protected $configurationSources;
+
+       /**
+        * Constructs the configuration manager
+        *
+        * @param array $configurationSourcesObjectNames An array of object names of the configuration sources
+        */
+       public function __construct(array $configurationSources) {
+               $this->configurationSources = $configurationSources;
+       }
+
+       /**
+        * Returns an array with the settings defined for the specified extension.
+        *
+        * @param string $extensionKey Key of the extension to return the settings for
+        * @return array The settings of the specified extension
+        */
+       public function getSettings($extensionKey, $controllerName = '', $actionName = '') {
+               $settings = array();
+               if (is_array($this->settings[$extensionKey])) {
+                       $settings = $this->settings[$extensionKey];
+                       if (!empty($controllerName) && is_array($settings[$controllerName])) {
+                               if (!empty($actionName) && is_array($settings[$controllerName][$actionName])) {
+                                       $settings = $settings[$controllerName][$actionName];
+                               } else {
+                                       $settings = $settings[$controllerName];
+                               }
+                       }
+                       // SK: TODO: Look at this in detail
+                       // JR: This is an overlay of TS settings; "local" values overwrite more "global" values
+                       // TODO Should we provide a hierarchical TS setting overlay?
+                       // if (!empty($controllerName) && is_array($settings[$controllerName])) {
+                       //      foreach ($settings[$controllerName] as $key => $value) {
+                       //              if (array_key_exists($key, $settings)) {
+                       //                      $settings[$key] = $value;
+                       //              }
+                       //      }
+                       // }
+                       // if (!empty($actionName) && is_array($settings[$controllerName][$actionName])) {
+                       //      foreach ($settings[$controllerName][$actionName] as $key => $value) {
+                       //              if (array_key_exists($key, $settings)) {
+                       //                      $settings[$key] = $value;
+                       //              }
+                       //              if (array_key_exists($key, $settings[$controllerName])) {
+                       //                      $settings[$controllerName][$key] = $value;
+                       //              }
+                       //      }
+                       // }
+               }
+               return $settings;
+       }
+
+       /**
+        * Loads the settings defined in the specified extensions and merges them with
+        * those potentially existing in the global configuration folders.
+        *
+        * The result is stored in the configuration manager's settings registry
+        * and can be retrieved with the getSettings() method.
+        *
+        * @param string $extensionKey
+        * @return void
+        * @see getSettings()
+        */
+       public function loadGlobalSettings($extensionKey) {
+               $settings = $this->settings[$extensionKey];
+               if (empty($settings)) $settings = array();
+               foreach ($this->configurationSources as $configurationSource) {
+                       $settings = t3lib_div::array_merge_recursive_overrule($settings, $configurationSource->load($extensionKey));
+               }
+               $this->settings[$extensionKey] = $settings;
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Source/FlexForm.php b/typo3/sysext/extbase/Classes/Configuration/Source/FlexForm.php
new file mode 100644 (file)
index 0000000..b67c74e
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * Configuration source based on FlexForm settings
+ * 
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Configuration_Source_FlexForm implements TX_EXTMVC_Configuration_SourceInterface {
+
+       /**
+        * XML FlexForm content
+        *
+        * @var string
+        **/
+       protected $flexFormContent;
+
+       /**
+        * Sets the flex form content
+        *
+        * @param string $flexFormContent Flexform content
+        * @return void
+        */
+       public function setFlexFormContent($flexFormContent) {
+               $this->flexFormContent = $flexFormContent;
+       }
+
+       /**
+        * Loads the specified FlexForm configuration  and returns its content in a
+        * configuration container. If the file does not exist or could not be loaded,
+        * the empty configuration container is returned.
+        *
+        * @param string $extensionKey The extension key
+        * @return TX_EXTMVC_Configuration_Container
+        */
+        public function load($extensionKey) {
+               $settings = array();
+               if (is_array($this->flexFormContent)) {
+                       $flexFormArray = $this->flexFormContent;
+               } elseif (!empty($this->flexFormContent)) {
+                       $flexFormArray = t3lib_div::xml2array($this->flexFormContent);
+               }
+               $sheetArray = $flexFormArray['data']['sDEF']['lDEF'];
+               if (is_array($sheetArray))      {
+                       foreach($sheetArray as $key => $value) {
+                               $settings[$key] = $value['vDEF'];
+                       }
+               }
+               return $settings;
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Source/PHP.php b/typo3/sysext/extbase/Classes/Configuration/Source/PHP.php
new file mode 100644 (file)
index 0000000..1733e55
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * Configuration source based on PHP files
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Configuration_Source_PHP implements TX_EXTMVC_Configuration_SourceInterface {
+
+       /**
+        * Loads the specified configuration file and returns its content as an
+        * array. If the file does not exist or could not be loaded, an empty
+        * array is returned
+        *
+        * @param string $extensionKey The extension key
+        * @return array
+        */
+       public function load($extensionKey) {
+               $pathAndFilename = t3lib_extMgm::extPath(strtolower($extensionKey)) . '/Configuration/Settings';
+               $c = t3lib_div::makeInstance('TX_EXTMVC_Configuration_Container');
+               if (file_exists($pathAndFilename . '.php')) {
+                       require ($pathAndFilename . '.php');
+               }
+               return $c->getAsArray();
+       }
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Source/TS.php b/typo3/sysext/extbase/Classes/Configuration/Source/TS.php
new file mode 100644 (file)
index 0000000..3fb123e
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * Configuration source based on TS settings
+ *
+ */
+class TX_EXTMVC_Configuration_Source_TS implements TX_EXTMVC_Configuration_SourceInterface {
+
+       /**
+        * Loads the specified TypoScript configuration file and returns its content in a
+        * configuration container. If the file does not exist or could not be loaded,
+        * the empty configuration container is returned.
+        *
+        * @param string $extensionKey The extension key
+        * @return array The settings as array without trailing dots
+        */
+        public function load($extensionKey) {
+               // SK: same as with dispatcher. strtolower($extensionKey) is wrong; example: tt_news -> tx_ttnews
+               $settings = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_' . strtolower($extensionKey) . '.'];
+               if (is_array($settings)) $settings = $this->postProcessSettings($settings);
+               return $settings;
+       }
+       
+       /**
+        * Removes all trailing dots recursively from TS settings array
+        *
+        * @param array $setup The settings array
+        * @return void
+        */
+       protected function postProcessSettings(array $settings) {
+               $processedSettings = array();
+               foreach ($settings as $key => $value) {
+                       if (is_array($value)) $value = $this->postProcessSettings($value);
+                       $processedSettings[preg_replace('/(.*)\.$/', '\1', $key, 1)] = $value;
+               }
+               return $processedSettings;
+       }
+       
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_FlexForm.php b/typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_FlexForm.php
deleted file mode 100644 (file)
index b67c74e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * Configuration source based on FlexForm settings
- * 
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Configuration_Source_FlexForm implements TX_EXTMVC_Configuration_SourceInterface {
-
-       /**
-        * XML FlexForm content
-        *
-        * @var string
-        **/
-       protected $flexFormContent;
-
-       /**
-        * Sets the flex form content
-        *
-        * @param string $flexFormContent Flexform content
-        * @return void
-        */
-       public function setFlexFormContent($flexFormContent) {
-               $this->flexFormContent = $flexFormContent;
-       }
-
-       /**
-        * Loads the specified FlexForm configuration  and returns its content in a
-        * configuration container. If the file does not exist or could not be loaded,
-        * the empty configuration container is returned.
-        *
-        * @param string $extensionKey The extension key
-        * @return TX_EXTMVC_Configuration_Container
-        */
-        public function load($extensionKey) {
-               $settings = array();
-               if (is_array($this->flexFormContent)) {
-                       $flexFormArray = $this->flexFormContent;
-               } elseif (!empty($this->flexFormContent)) {
-                       $flexFormArray = t3lib_div::xml2array($this->flexFormContent);
-               }
-               $sheetArray = $flexFormArray['data']['sDEF']['lDEF'];
-               if (is_array($sheetArray))      {
-                       foreach($sheetArray as $key => $value) {
-                               $settings[$key] = $value['vDEF'];
-                       }
-               }
-               return $settings;
-       }
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_PHP.php b/typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_PHP.php
deleted file mode 100644 (file)
index 1733e55..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * Configuration source based on PHP files
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Configuration_Source_PHP implements TX_EXTMVC_Configuration_SourceInterface {
-
-       /**
-        * Loads the specified configuration file and returns its content as an
-        * array. If the file does not exist or could not be loaded, an empty
-        * array is returned
-        *
-        * @param string $extensionKey The extension key
-        * @return array
-        */
-       public function load($extensionKey) {
-               $pathAndFilename = t3lib_extMgm::extPath(strtolower($extensionKey)) . '/Configuration/Settings';
-               $c = t3lib_div::makeInstance('TX_EXTMVC_Configuration_Container');
-               if (file_exists($pathAndFilename . '.php')) {
-                       require ($pathAndFilename . '.php');
-               }
-               return $c->getAsArray();
-       }
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_TS.php b/typo3/sysext/extbase/Classes/Configuration/Source/TX_EXTMVC_Configuration_Source_TS.php
deleted file mode 100644 (file)
index 3fb123e..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * Configuration source based on TS settings
- *
- */
-class TX_EXTMVC_Configuration_Source_TS implements TX_EXTMVC_Configuration_SourceInterface {
-
-       /**
-        * Loads the specified TypoScript configuration file and returns its content in a
-        * configuration container. If the file does not exist or could not be loaded,
-        * the empty configuration container is returned.
-        *
-        * @param string $extensionKey The extension key
-        * @return array The settings as array without trailing dots
-        */
-        public function load($extensionKey) {
-               // SK: same as with dispatcher. strtolower($extensionKey) is wrong; example: tt_news -> tx_ttnews
-               $settings = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_' . strtolower($extensionKey) . '.'];
-               if (is_array($settings)) $settings = $this->postProcessSettings($settings);
-               return $settings;
-       }
-       
-       /**
-        * Removes all trailing dots recursively from TS settings array
-        *
-        * @param array $setup The settings array
-        * @return void
-        */
-       protected function postProcessSettings(array $settings) {
-               $processedSettings = array();
-               foreach ($settings as $key => $value) {
-                       if (is_array($value)) $value = $this->postProcessSettings($value);
-                       $processedSettings[preg_replace('/(.*)\.$/', '\1', $key, 1)] = $value;
-               }
-               return $processedSettings;
-       }
-       
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/SourceInterface.php b/typo3/sysext/extbase/Classes/Configuration/SourceInterface.php
new file mode 100644 (file)
index 0000000..f0d5c21
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * Contract for a configuration source
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+interface TX_EXTMVC_Configuration_SourceInterface {
+
+       /**
+        * Loads the specified configuration file and returns its content in a
+        * configuration container
+        *
+        * @param string $extensionKey The extension key
+        * @return TX_EXTMVC_Configuration_Container
+        */
+       public function load($extensionKey);
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Container.php b/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Container.php
deleted file mode 100644 (file)
index 0263c20..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A general purpose configuration container.
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Configuration_Container implements Countable, Iterator, ArrayAccess {
-
-       /**
-        * @var array Configuration options and their values
-        */
-       protected $options = array();
-
-       /**
-        * @var boolean Whether this container is locked against write access or open
-        */
-       protected $locked = FALSE;
-
-       /**
-        * @var integer The current Iterator index
-        */
-       protected $iteratorIndex = 0;
-
-       /**
-        * @var integer The current number of options
-        */
-       protected $iteratorCount = 0;
-
-       /**
-        * Constructs the configuration container
-        *
-        * @param array $fromArray If specified, the configuration container will be intially built from the given array structure and values
-        */
-       public function __construct($fromArray = NULL) {
-               if (is_array($fromArray)) {
-                       $this->setFromArray($fromArray);
-               }
-       }
-
-       /**
-        * Sets the content of this configuration container by parsing the given array.
-        *
-        * @param array $fromArray Array structure (and values) which are supposed to be converted into container properties and sub containers
-        * @return void
-        */
-       public function setFromArray(array $fromArray) {
-               foreach ($fromArray as $key => $value) {
-                       if (is_array($value)) {
-                               $subContainer = new self($value);
-                               $this->offsetSet($key, $subContainer);
-                       } else {
-                               $this->offsetSet($key, $value);
-                       }
-               }
-       }
-
-       /**
-        * Returns this configuration container (and possible sub containers) as an array
-        *
-        * @return array This container converted to an array
-        */
-       public function getAsArray() {
-               $optionsArray = array();
-               foreach ($this->options as $key => $value) {
-                       $optionsArray[$key] = ($value instanceof TX_EXTMVC_Configuration_Container) ? $value->getAsArray() : $value;
-               }
-               return $optionsArray;
-       }
-       
-       /**
-        * Returns the this container as a TypoScript array (with the dot "." as a suffix for keys)
-        *
-        * @param mixed $options A plain value or a F3_FLOW3_Configuration_Container 
-        * @return array This container converted to a TypoScript array
-        */
-       public function getAsTsArray() {
-               $optionsArray = array();
-               foreach ($this->options as $key => $value) {
-                       if ($value instanceof F3_GimmeFive_Configuration_Container) {
-                               $key = $key . '.';
-                               $optionsArray[$key] = $this->getAsTsArray();
-                       } else {
-                               $optionsArray[$key] = $value;
-                       }
-               }
-               return $optionsArray;
-       }
-
-       /**
-        * Locks this configuration container agains write access.
-        *
-        * @return void
-        */
-       public function lock() {
-               $this->locked = TRUE;
-               foreach ($this->options as $option) {
-                       if ($option instanceof TX_EXTMVC_Configuration_Container) {
-                               $option->lock();
-                       }
-               }
-       }
-
-       /**
-        * If this container is locked against write access.
-        *
-        * @return boolean TRUE if the container is locked
-        */
-       public function isLocked() {
-               return $this->locked;
-       }
-
-       /**
-        * Merges this container with another configuration container
-        *
-        * @param TX_EXTMVC_Configuration_Container $otherConfiguration The other configuration container
-        * @return TX_EXTMVC_Configuration_Container This container
-        */
-       public function mergeWith(TX_EXTMVC_Configuration_Container $otherConfiguration) {
-               foreach ($otherConfiguration as $optionName => $newOptionValue) {
-                       if ($newOptionValue instanceof TX_EXTMVC_Configuration_Container && array_key_exists($optionName, $this->options)) {
-                               $existingOptionValue = $this->__get($optionName);
-                               if ($existingOptionValue instanceof TX_EXTMVC_Configuration_Container) {
-                                       $newOptionValue = $existingOptionValue->mergeWith($newOptionValue);
-                               }
-                       }
-                       $this->__set($optionName, $newOptionValue);
-               }
-               return $this;
-       }
-       
-       /**
-        * Returns the number of configuration options
-        *
-        * @return integer Option count
-        */
-       public function count() {
-               return $this->iteratorCount;
-       }
-
-       /**
-        * Returns the current configuration option
-        *
-        * @return mixed The current option's value
-        */
-       public function current() {
-               return current($this->options);
-       }
-
-       /**
-        * Returns the key of the current configuration option
-        *
-        * @return string The current configuration option's key
-        */
-       public function key() {
-               return key($this->options);
-       }
-
-       /**
-        * Returns the next configuration option
-        *
-        * @return mixed Value of the next configuration option
-        */
-       public function next() {
-               $this->iteratorIndex ++;
-               return next($this->options);
-       }
-
-       /**
-        * Rewinds the iterator index
-        *
-        * @return void
-        */
-       public function rewind() {
-               $this->iteratorIndex = 0;
-               reset ($this->options);
-       }
-
-       /**
-        * Checks if the current index is valid
-        *
-        * @return boolean If the current index is valid
-        */
-       public function valid() {
-               return $this->iteratorIndex < $this->iteratorCount;
-       }
-
-       /**
-        * Offset check for the ArrayAccess interface
-        *
-        * @param mixed $optionName
-        * @return boolean TRUE if the offset exists otherwise FALSE
-        */
-       public function offsetExists($optionName) {
-               return array_key_exists($optionName, $this->options);
-       }
-
-       /**
-        * Getter for the ArrayAccess interface
-        *
-        * @param mixed $optionName Name of the option to retrieve
-        * @return mixed The value
-        */
-       public function offsetGet($optionName) {
-               return $this->__get($optionName);
-       }
-
-       /**
-        * Setter for the ArrayAccess interface
-        *
-        * @param mixed $optionName Name of the option to set
-        * @param mixed $optionValue New value for the option
-        * @return void
-        */
-       public function offsetSet($optionName, $optionValue) {
-               $this->__set($optionName, $optionValue);
-       }
-
-       /**
-        * Unsetter for the ArrayAccess interface
-        *
-        * @param mixed $optionName Name of the option to unset
-        * @return void
-        */
-       public function offsetUnset($optionName) {
-               $this->__unset($optionName);
-       }
-
-       /**
-        * Magic getter method for configuration options. If an option does not exist,
-        * it will be created automatically - if this container is not locked.
-        *
-        * @param string $optionName Name of the configuration option to retrieve
-        * @return mixed The option value
-        */
-       public function __get($optionName) {
-               if (!array_key_exists($optionName, $this->options)) {
-                       if ($this->locked) throw new TX_EXTMVC_Configuration_Exception_NoSuchOption('An option "' . $optionName . '" does not exist in this configuration container.', 1216385011);
-                       $this->__set($optionName, new self());
-               }
-               return $this->options[$optionName];
-       }
-
-       /**
-        * Magic setter method for configuration options.
-        *
-        * @param string $optionName Name of the configuration option to set
-        * @param mixed $optionValue The option value
-        * @return void
-        * @throws TX_EXTMVC_Configuration_Exception_ContainerIsLocked if the container is locked
-        */
-       public function __set($optionName, $optionValue) {
-               if ($this->locked && !array_key_exists($optionName, $this->options)) throw new TX_EXTMVC_Configuration_Exception_ContainerIsLocked('You tried to create a new configuration option "' . $optionName . '" but the configuration container is already locked. Maybe a spelling mistake?', 1206023011);
-               $this->options[$optionName] = $optionValue;
-               $this->iteratorCount = count($this->options);
-       }
-
-       /**
-        * Magic isset method for configuration options.
-        *
-        * @param string $optionName Name of the configuration option to check
-        * @return boolean TRUE if the option is set, otherwise FALSE
-        */
-       public function __isset($optionName) {
-               return array_key_exists($optionName, $this->options);
-       }
-
-       /**
-        * Magic unsetter method for configuration options.
-        *
-        * @param string $optionName Name of the configuration option to unset
-        * @return void
-        * @throws TX_EXTMVC_Configuration_Exception_ContainerIsLocked if the container is locked
-        */
-       public function __unset($optionName) {
-               if ($this->locked) throw new TX_EXTMVC_Configuration_Exception_ContainerIsLocked('You tried to unset the configuration option "' . $optionName . '" but the configuration container is locked.', 1206023012);
-               unset($this->options[$optionName]);
-               $this->iteratorCount = count($this->options);
-       }
-
-       /**
-        * Magic method to allow setting of configuration options via dummy setters in the format "set[OptionName]([optionValue])".
-        *
-        * @param string $methodName Name of the called setter method.
-        * @param array $arguments Method arguments, passed to the configuration option.
-        * @return TX_EXTMVC_Configuration_Container This configuration container object
-        * @throws TX_EXTMVC_Configuration_Exception if $methodName does not start with "set" or number of arguments are empty
-        */
-       public function __call($methodName, $arguments) {
-               if (substr($methodName, 0, 3) != 'set') {
-                       throw new TX_EXTMVC_Configuration_Exception('Method "' . $methodName . '" does not exist.', 1213444319);
-               }
-               if (count($arguments) != 1) {
-                       throw new TX_EXTMVC_Configuration_Exception('You have to pass exactly one argument to a configuration option setter.', 1213444809);
-               }
-               $optionName = lcfirst(substr($methodName, 3));
-               $this->__set($optionName, $arguments[0]);
-
-               return $this;
-       }
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Exception.php b/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Exception.php
deleted file mode 100644 (file)
index bf26e89..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * @version $Id:$
- */
-
-/**
- * A generic Configuration Exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Configuration_Exception extends F3_FLOW3_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Manager.php b/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_Manager.php
deleted file mode 100644 (file)
index b32c32f..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-require_once(PATH_t3lib . 'interfaces/interface.t3lib_singleton.php');
-
-/**
- * A general purpose configuration manager
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Configuration_Manager implements t3lib_Singleton {
-
-       /**
-        * Storage for the settings, loaded by loadGlobalSettings()
-        *
-        * @var array
-        */
-       protected $settings = array();
-
-       /**
-        * The configuration source instances used for loading the raw configuration
-        *
-        * @var array
-        */
-       protected $configurationSources;
-
-       /**
-        * Constructs the configuration manager
-        *
-        * @param array $configurationSourcesObjectNames An array of object names of the configuration sources
-        */
-       public function __construct(array $configurationSources) {
-               $this->configurationSources = $configurationSources;
-       }
-
-       /**
-        * Returns an array with the settings defined for the specified extension.
-        *
-        * @param string $extensionKey Key of the extension to return the settings for
-        * @return array The settings of the specified extension
-        */
-       public function getSettings($extensionKey, $controllerName = '', $actionName = '') {
-               $settings = array();
-               if (is_array($this->settings[$extensionKey])) {
-                       $settings = $this->settings[$extensionKey];
-                       if (!empty($controllerName) && is_array($settings[$controllerName])) {
-                               if (!empty($actionName) && is_array($settings[$controllerName][$actionName])) {
-                                       $settings = $settings[$controllerName][$actionName];
-                               } else {
-                                       $settings = $settings[$controllerName];
-                               }
-                       }
-                       // SK: TODO: Look at this in detail
-                       // JR: This is an overlay of TS settings; "local" values overwrite more "global" values
-                       // TODO Should we provide a hierarchical TS setting overlay?
-                       // if (!empty($controllerName) && is_array($settings[$controllerName])) {
-                       //      foreach ($settings[$controllerName] as $key => $value) {
-                       //              if (array_key_exists($key, $settings)) {
-                       //                      $settings[$key] = $value;
-                       //              }
-                       //      }
-                       // }
-                       // if (!empty($actionName) && is_array($settings[$controllerName][$actionName])) {
-                       //      foreach ($settings[$controllerName][$actionName] as $key => $value) {
-                       //              if (array_key_exists($key, $settings)) {
-                       //                      $settings[$key] = $value;
-                       //              }
-                       //              if (array_key_exists($key, $settings[$controllerName])) {
-                       //                      $settings[$controllerName][$key] = $value;
-                       //              }
-                       //      }
-                       // }
-               }
-               return $settings;
-       }
-
-       /**
-        * Loads the settings defined in the specified extensions and merges them with
-        * those potentially existing in the global configuration folders.
-        *
-        * The result is stored in the configuration manager's settings registry
-        * and can be retrieved with the getSettings() method.
-        *
-        * @param string $extensionKey
-        * @return void
-        * @see getSettings()
-        */
-       public function loadGlobalSettings($extensionKey) {
-               $settings = $this->settings[$extensionKey];
-               if (empty($settings)) $settings = array();
-               foreach ($this->configurationSources as $configurationSource) {
-                       $settings = t3lib_div::array_merge_recursive_overrule($settings, $configurationSource->load($extensionKey));
-               }
-               $this->settings[$extensionKey] = $settings;
-       }
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_SourceInterface.php b/typo3/sysext/extbase/Classes/Configuration/TX_EXTMVC_Configuration_SourceInterface.php
deleted file mode 100644 (file)
index f0d5c21..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * Contract for a configuration source
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-interface TX_EXTMVC_Configuration_SourceInterface {
-
-       /**
-        * Loads the specified configuration file and returns its content in a
-        * configuration container
-        *
-        * @param string $extensionKey The extension key
-        * @return TX_EXTMVC_Configuration_Container
-        */
-       public function load($extensionKey);
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/AbstractController.php b/typo3/sysext/extbase/Classes/Controller/AbstractController.php
new file mode 100755 (executable)
index 0000000..fb0a2a7
--- /dev/null
@@ -0,0 +1,191 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An abstract base class for Controllers
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+abstract class TX_EXTMVC_Controller_AbstractController implements TX_EXTMVC_Controller_ControllerInterface {
+
+       /**
+        * @var string Key of the extension this controller belongs to
+        */
+       protected $extensionKey;
+
+       /**
+        * Contains the settings of the current extension
+        *
+        * @var array
+        */
+       protected $settings;
+
+       /**
+        * @var TX_EXTMVC_Request The current request
+        */
+       protected $request;
+
+       /**
+        * @var TX_EXTMVC_Response The response which will be returned by this action controller
+        */
+       protected $response;
+
+       /**
+        * @var TX_EXTMVC_Controller_Arguments Arguments passed to the controller
+        */
+       protected $arguments;
+
+       /**
+        * Actions that schould not be cached (changes the invocated dispatcher to a USER_INT cObject)
+        * @var array
+        */
+       protected $nonCachableActions = array();
+
+       /**
+        * Constructs the controller.
+        *
+        * @param F3_FLOW3_Object_FactoryInterface $objectFactory A reference to the Object Factory
+        * @param F3_FLOW3_Package_ManagerInterface $packageManager A reference to the Package Manager
+        */
+       public function __construct() {
+               // SK: Set $this->extensionKey, could be done the same way as it is done in Fluid
+               $this->arguments = t3lib_div::makeInstance('TX_EXTMVC_Controller_Arguments');
+       }
+
+       /**
+        * Injects the settings of the extension.
+        *
+        * @param array $settings Settings container of the current extension
+        * @return void
+        */
+       public function injectSettings(array $settings) {
+               $this->settings = $settings;
+       }
+
+       /**
+        * Processes a general request. The result can be returned by altering the given response.
+        *
+        * @param TX_EXTMVC_Request $request The request object
+        * @param TX_EXTMVC_Response $response The response, modified by this handler
+        * @return void
+        * @throws TX_EXTMVC_Exception_UnsupportedRequestType if the controller doesn't support the current request type
+        */
+       public function processRequest(TX_EXTMVC_Request $request, TX_EXTMVC_Response $response) {
+               $this->request = $request;
+               $this->request->setDispatched(TRUE);
+               $this->response = $response;
+
+               $this->initializeArguments();
+               $this->mapRequestArgumentsToLocalArguments();
+       }
+
+       /**
+        * Initializes (registers / defines) arguments of this controller.
+        *
+        * Override this method to add arguments which can later be accessed
+        * by the action methods.
+        *
+        * @return void
+        */
+       protected function initializeArguments() {
+       }
+
+       /**
+        * Forwards the request to another controller.
+        *
+        * @return void
+        * @throws TX_EXTMVC_Exception_StopAction
+        */
+       public function forward($actionName, $controllerName = NULL, $extensionKey = NULL, TX_EXTMVC_Controller_Arguments $arguments = NULL) {
+               $this->request->setDispatched(FALSE);
+               $this->request->setControllerActionName($actionName);
+               if ($controllerName !== NULL) $this->request->setControllerName($controllerName);
+               if ($extensionKey !== NULL) $this->request->setControllerExtensionKey($extensionKey);
+               if ($arguments !== NULL) $this->request->setArguments($arguments);
+               throw new TX_EXTMVC_Exception_StopAction();
+       }
+
+       /**
+        * Redirects the web request to another uri.
+        *
+        * NOTE: This method only supports web requests and will thrown an exception if used with other request types.
+        *
+        * @param mixed $uri Either a string representation of a URI or a F3_FLOW3_Property_DataType_URI object
+        * @param integer $delay (optional) The delay in seconds. Default is no delay.
+        * @param integer $statusCode (optional) The HTTP status code for the redirect. Default is "303 See Other"
+        * @throws TX_EXTMVC_Exception_UnsupportedRequestType If the request is not a web request
+        * @throws TX_EXTMVC_Exception_StopAction
+        */
+       public function redirect($uri, $delay = 0, $statusCode = 303) {
+               if (!$this->request instanceof TX_EXTMVC_Web_Request) throw new TX_EXTMVC_Exception_UnsupportedRequestType('redirect() only supports web requests.', 1220539734);
+
+               $escapedUri = htmlentities($uri, ENT_QUOTES, 'utf-8');
+               $this->response->setContent('<html><head><meta http-equiv="refresh" content="' . intval($delay) . ';url=' . $escapedUri . '"/></head></html>');
+               $this->response->setStatus($statusCode);
+               throw new TX_EXTMVC_Exception_StopAction();
+       }
+
+       /**
+        * Sends the specified HTTP status immediately.
+        *
+        * NOTE: This method only supports web requests and will thrown an exception if used with other request types.
+        *
+        * @param integer $statusCode The HTTP status code
+        * @param string $statusMessage A custom HTTP status message
+        * @param string $content Body content which further explains the status
+        * @throws TX_EXTMVC_Exception_UnsupportedRequestType If the request is not a web request
+        * @throws TX_EXTMVC_Exception_StopAction
+        */
+       public function throwStatus($statusCode, $statusMessage = NULL, $content = NULL) {
+               if (!$this->request instanceof TX_EXTMVC_Web_Request) throw new TX_EXTMVC_Exception_UnsupportedRequestType('throwStatus() only supports web requests.', 1220539739);
+
+               $this->response->setStatus($statusCode, $statusMessage);
+               if ($content === NULL) $content = $this->response->getStatus();
+               $this->response->setContent($content);
+               throw new TX_EXTMVC_Exception_StopAction();
+       }
+
+       /**
+        * Maps arguments delivered by the request object to the local controller arguments.
+        *
+        * @return void
+        */
+       protected function mapRequestArgumentsToLocalArguments() {
+               $requestArguments = $this->request->getArguments();
+               foreach ($this->arguments as $argument) {
+                       $argumentName = $argument->getName();
+                       $argumentShortName = $argument->getShortName();
+                       if (array_key_exists($argumentName, $requestArguments)) {
+                               $argument->setValue($requestArguments[$argumentName]);
+                       } elseif ($argumentShortName !== NULL && array_key_exists($argumentShortName, $requestArguments)) {
+                               $argument->setValue($requestArguments[$argumentShortName]);
+                       }
+               }
+       }
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/ActionController.php b/typo3/sysext/extbase/Classes/Controller/ActionController.php
new file mode 100644 (file)
index 0000000..1a1cf73
--- /dev/null
@@ -0,0 +1,182 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A multi action controller
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+// SK: fill initializeArguments() so it parses the arguments for a given view. We need to discuss how this parsing can be
+// SK: done effectively.
+class TX_EXTMVC_Controller_ActionController extends TX_EXTMVC_Controller_AbstractController {
+
+       /**
+        * @var boolean If initializeView() should be called on an action invocation.
+        */
+       protected $initializeView = TRUE;
+
+       /**
+        * @var TX_EXTMVC_View_AbstractView By default a view with the same name as the current action is provided. Contains NULL if none was found.
+        */
+       protected $view = NULL;
+
+       /**
+        * By default a matching view will be resolved. If this property is set, automatic resolving is disabled and the specified object is used instead.
+        * @var string
+        */
+       // SK: rename to defaultViewObjectName. Should only be used if no custom view could be found.
+       // SK: How do we implement this with TYPO3 v4? How can we check if a class exists?
+       // SK: Changing the logic here makes it possible to write specific views for a given action, and use the default view for all other actions.
+       protected $viewObjectName = NULL;
+
+       /**
+        * Pattern after which the view object name is built
+        *
+        * @var string
+        */
+       // SK: Decision: Do we support "format"?
+       protected $viewObjectNamePattern = 'TX_@extension_View_@controller@action';
+
+       /**
+        * Name of the action method
+        * @var string
+        */
+       protected $actionMethodName = 'indexAction';
+
+       /**
+        * Handles a request. The result output is returned by altering the given response.
+        *
+        * @param TX_EXTMVC_Request $request The request object
+        * @param TX_EXTMVC_Response $response The response, modified by this handler
+        * @return void
+        */
+       public function processRequest(TX_EXTMVC_Request $request, TX_EXTMVC_Response $response) {
+               $this->request = $request;
+               $this->request->setDispatched(TRUE);
+               $this->response = $response;
+
+               $this->actionMethodName = $this->resolveActionMethodName();
+               $this->initializeArguments();
+               $this->mapRequestArgumentsToLocalArguments();
+               if ($this->initializeView) $this->initializeView();
+               $this->initializeAction();
+               $this->callActionMethod();
+       }
+
+       /**
+        * Determines the action method and assures that the method exists.
+        *
+        * @return string The action method name
+        * @throws TX_EXTMVC_Exception_NoSuchAction if the action specified in the request object does not exist (and if there's no default action either).
+        */
+       protected function resolveActionMethodName() {
+               $actionMethodName = $this->request->getControllerActionName() . 'Action';
+               if (!method_exists($this, $actionMethodName)) throw new TX_EXTMVC_Exception_NoSuchAction('An action "' . $actionMethodName . '" does not exist in controller "' . get_class($this) . '".', 1186669086);
+               return $actionMethodName;
+       }
+       
+       /**
+        * Returns TRUE if the given action (a name of an action like 'show'; without 
+        * trailing 'Action') should be cached, otherwise it returns FALSE.
+        *
+        * @param string $actionName 
+        * @return void
+        * @author Jochen Rau <jochen.rau@typoplanet.de>
+        */
+       public function isCachableAction($actionName) {
+                return !in_array($actionName, $this->nonCachableActions);
+       }
+
+       /**
+        * Calls the specified action method and passes the arguments.
+        * If the action returns a string, it is appended to the content in the
+        * response object.
+        *
+        * @param string $actionMethodName Name of the action method
+        * @return void
+        */
+       protected function callActionMethod() {
+               $actionResult = call_user_func_array(array($this, $this->actionMethodName), array());
+               if ($actionResult === NULL && $this->view instanceof TX_EXTMVC_View_ViewInterface) {
+                       $this->response->appendContent($this->view->render());
+               } elseif (is_string($actionResult) && strlen($actionResult) > 0) {
+                       $this->response->appendContent($actionResult);
+               }
+       }
+
+       /**
+        * Prepares a view for the current action and stores it in $this->view.
+        * By default, this method tries to locate a view with a name matching
+        * the current action.
+        *
+        * @return void
+        */
+       protected function initializeView() {
+               $viewObjectName = ($this->viewObjectName === NULL) ? $this->resolveViewObjectName() : $this->viewObjectName;
+               if (!class_exists($viewObjectName)) $viewObjectName = 'TX_EXTMVC_View_EmptyView';
+
+               $this->view = t3lib_div::makeInstance($viewObjectName);
+               $this->view->setRequest($this->request);
+       }
+
+       /**
+        * Determines the fully qualified view object name.
+        *
+        * @return string The fully qualified view object name
+        */
+       protected function resolveViewObjectName() {
+               $possibleViewName = $this->viewObjectNamePattern;
+               $extensionKey = $this->request->getControllerExtensionKey();
+               $possibleViewName = str_replace('@extension', $extensionKey, $possibleViewName);
+               $possibleViewName = str_replace('@controller', $this->request->getControllerName(), $possibleViewName);
+               $possibleViewName = str_replace('@action', ucfirst($this->request->getControllerActionName()), $possibleViewName);
+               return $possibleViewName;
+       }
+
+       /**
+        * Initializes the controller before invoking an action method.
+        *
+        * Override this method to solve tasks which all actions have in
+        * common.
+        *
+        * @return void
+        */
+       protected function initializeAction() {
+       }
+
+       /**
+        * The default action of this controller.
+        *
+        * This method should always be overridden by the concrete action
+        * controller implementation.
+        *
+        * @return void
+        */
+       protected function indexAction() {
+               return 'No index action has been implemented yet for this controller.';
+       }
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/Argument.php b/typo3/sysext/extbase/Classes/Controller/Argument.php
new file mode 100644 (file)
index 0000000..5960164
--- /dev/null
@@ -0,0 +1,355 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A controller argument
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ * @scope prototype
+ */
+class TX_EXTMVC_Controller_Argument {
+
+       /**
+        * Name of this argument
+        * @var string
+        */
+       protected $name = '';
+
+       /**
+        * Short name of this argument
+        * @var string
+        */
+       protected $shortName = NULL;
+
+       /**
+        * Data type of this argument's value
+        * @var string
+        */
+       protected $dataType = 'Text';
+
+       /**
+        * TRUE if this argument is required
+        * @var boolean
+        */
+       protected $isRequired = FALSE;
+
+       /**
+        * Actual value of this argument
+        * @var object
+        */
+       protected $value = NULL;
+
+       /**
+        * The argument is valid
+        * @var boolean
+        */
+       protected $isValid = NULL;
+
+       /**
+        * Any error (TX_EXTMVC_Error_Error) that occured while initializing this argument (e.g. a mapping error)
+        * @var array
+        */
+       protected $errors = array();
+
+       /**
+        * The property validator for this argument
+        * @var TX_EXTMVC_Validation_Validator_ValidatorInterface
+        */
+       protected $validator = NULL;
+
+       /**
+        * The property validator for this arguments datatype
+        * @var TX_EXTMVC_Validation_Validator_ValidatorInterface
+        */
+       // TODO Remove DatatypeValidator
+       protected $datatypeValidator = NULL;
+
+       /**
+        * Uid for the argument, if it has one
+        * @var string
+        */
+       protected $uid = NULL;
+
+       /**
+        * Constructs this controller argument
+        *
+        * @param string $name Name of this argument
+        * @param string $dataType The data type of this argument
+        * @throws InvalidArgumentException if $name is not a string or empty
+        */
+       public function __construct($name, $dataType = 'Text') {
+               if (!is_string($name) || strlen($name) < 1) throw new InvalidArgumentException('$name must be of type string, ' . gettype($name) . ' given.', 1187951688);
+               $this->name = $name;
+               if (is_array($dataType)) {
+                       $this->setNewValidatorChain($dataType);
+               } else {
+                       $this->setDataType($dataType);
+               }
+       }
+
+       /**
+        * Returns the name of this argument
+        *
+        * @return string This argument's name
+        */
+       public function getName() {
+               return $this->name;
+       }
+
+       /**
+        * Sets the short name of this argument.
+        *
+        * @param string $shortName A "short name" - a single character
+        * @return TX_EXTMVC_Controller_Argument $this
+        * @throws InvalidArgumentException if $shortName is not a character
+        */
+       public function setShortName($shortName) {
+               if ($shortName !== NULL && (!is_string($shortName) || strlen($shortName) != 1)) throw new InvalidArgumentException('$shortName must be a single character or NULL', 1195824959);
+               $this->shortName = $shortName;
+               return $this;
+       }
+
+       /**
+        * Returns the short name of this argument
+        *
+        * @return string This argument's short name
+        */
+       public function getShortName() {
+               return $this->shortName;
+       }
+
+       /**
+        * Sets the data type of this argument's value
+        *
+        * @param string $dataType: Name of the data type
+        * @return TX_EXTMVC_Controller_Argument $this
+        */
+       public function setDataType($dataType) {
+               $this->dataType = ($dataType != '' ? $dataType : 'Text');
+               // TODO Make validator path and class names configurable
+               $dataTypeValidatorClassName = 'TX_EXTMVC_Validation_Validator_' . $this->dataType;
+               $classFilePathAndName = t3lib_extMgm::extPath('extmvc') . 'Classes/Validation/Validator/' . $this->dataType . '.php';
+               if (isset($classFilePathAndName) && file_exists($classFilePathAndName)) {                       
+                       require_once($classFilePathAndName);
+                       $this->datatypeValidator = t3lib_div::makeInstance($dataTypeValidatorClassName);
+               }
+               return $this;
+       }
+
+       /**
+        * Returns the data type of this argument's value
+        *
+        * @return string The data type
+        */
+       public function getDataType() {
+               return $this->dataType;
+       }
+
+       /**
+        * Marks this argument to be required
+        *
+        * @param boolean $required TRUE if this argument should be required
+        * @return TX_EXTMVC_Controller_Argument $this
+        */
+       public function setRequired($required) {
+               $this->isRequired = $required;
+               return $this;
+       }
+
+       /**
+        * Returns TRUE if this argument is required
+        *
+        * @return boolean TRUE if this argument is required
+        */
+       public function isRequired() {
+               return $this->isRequired;
+       }
+
+       /**
+        * Sets the value of this argument.
+        *
+        * @param mixed $value: The value of this argument
+        * @return TX_EXTMVC_Controller_Argument $this
+        * @throws TX_EXTMVC_Exception_InvalidArgumentValue if the argument is not a valid object of type $dataType
+        */
+       public function setValue($value) {
+               if ($this->isValidValueForThisArgument($value)) {
+                       $this->value = $value;
+               }
+               return $this;
+       }
+
+       /**
+        * Returns the value of this argument
+        *
+        * @return object The value of this argument - if none was set, NULL is returned
+        */
+       public function getValue() {
+               return $this->value;
+       }
+
+       /**
+        * Checks if this argument has a value set.
+        *
+        * @return boolean TRUE if a value was set, otherwise FALSE
+        */
+       public function isValue() {
+               return $this->value !== NULL;
+       }
+
+       /**
+        * undocumented function
+        *
+        * @param string $value 
+        * @return boolean TRUE if the value is valid for this argument, otherwise FALSE
+        */
+       protected function isValidValueForThisArgument($value) {
+               $isValid = TRUE;
+               $validatorErrors = t3lib_div::makeInstance('TX_EXTMVC_Validation_Errors');
+               // TODO use only Validator; do not distinguish between Validator and DatatypeValidator
+               if ($this->getValidator() !== NULL) {
+                       $isValid &= $this->getValidator()->isValid($value, $validatorErrors);
+               } elseif ($this->getDatatypeValidator() !== NULL) {
+                       $isValid = $this->getDatatypeValidator()->isValid($value, $validatorErrors);                    
+               } else {
+                       throw new TX_EXTMVC_Validation_Exception_NoValidatorFound('No appropriate validator for the argument "' . $this->getName() . '" was found.', 1235748909);
+               }
+               if (!$isValid) {
+                       foreach ($validatorErrors as $error) {
+                               $this->addError($error);
+                       }
+               }
+               $this->isValid = $isValid;
+               return (boolean)$isValid;
+       }
+
+       /**
+        * Returns TRUE when the argument is valid
+        *
+        * @return boolean TRUE if the argument is valid
+        */
+       public function isValid() {
+               return $this->isValid;
+       }
+       
+       /**
+        * Add an initialization error (e.g. a mapping error)
+        *
+        * @param string An error text
+        * @return void
+        */
+       public function addError($error) {
+               $this->errors[] = $error;
+       }
+
+       /**
+        * Get all initialization errors
+        *
+        * @return array An array containing TX_EXTMVC_Error_Error objects
+        * @see addError(TX_EXTMVC_Error_Error $error)
+        */
+       public function getErrors() {
+               return $this->errors;
+       }
+
+       /**
+        * Set an additional validator
+        *
+        * @param string Class name of a validator
+        * @return TX_EXTMVC_MVC_Controller_Argument Returns $this (used for fluent interface)
+        */
+       public function setValidator($className) {
+               $this->validator = t3lib_div::makeInstance($className);
+               return $this;
+       }
+
+       /**
+        * Returns the set validator
+        *
+        * @return TX_EXTMVC_Validation_Validator_ValidatorInterface The set validator, NULL if none was set
+        */
+       public function getValidator() {
+               return $this->validator;
+       }
+
+       /**
+        * Returns the set datatype validator
+        *
+        * @return TX_EXTMVC_Validation_Validator_ValidatorInterface The set datatype validator
+        */
+       public function getDatatypeValidator() {
+               return $this->datatypeValidator;
+       }
+       
+       /**
+        * Create and set a validator chain
+        *
+        * @param array Object names of the validators
+        * @return TX_EXTMVC_MVC_Controller_Argument Returns $this (used for fluent interface)
+        */
+       public function setNewValidatorChain(array $validators) {
+               $this->validator = t3lib_div::makeInstance('TX_EXTMVC_Validation_Validator_ChainValidator');
+               foreach ($validators as $validator) {
+                       if (is_array($validator)) {
+                               $objectName = 'TX_EXTMVC_Validation_Validator_' . $validator[0];
+                               $this->validator->addValidator(new $objectName);
+                       } else {
+                               $objectName = 'TX_EXTMVC_Validation_Validator_' . $validator;
+                               $this->validator->addValidator(t3lib_div::makeInstance($objectName));
+                       }
+               }
+               return $this;
+       }
+       
+       /**
+        * Set the uid for the argument.
+        *
+        * @param string $uid The uid for the argument.
+        * @return void
+        */
+       public function setUid($uid) {
+               $this->uid = $uid;
+       }
+
+       /**
+        * Get the uid of the argument, if it has one.
+        *
+        * @return string Uid of the argument. If none set, returns NULL.
+        */
+       public function getUid() {
+               return $this->uid;
+       }
+
+       /**
+        * Returns a string representation of this argument's value
+        *
+        * @return string
+        */
+       public function __toString() {
+               return (string)$this->value;
+       }
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/Arguments.php b/typo3/sysext/extbase/Classes/Controller/Arguments.php
new file mode 100644 (file)
index 0000000..9be43f7
--- /dev/null
@@ -0,0 +1,228 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A composite of controller arguments
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ * @scope prototype
+ */
+class TX_EXTMVC_Controller_Arguments extends ArrayObject {
+
+       /**
+        * @var array Names of the arguments contained by this object
+        */
+       protected $argumentNames = array();
+
+       /**
+        * Adds or replaces the argument specified by $value. The argument's name is taken from the
+        * argument object itself, therefore the $offset does not have any meaning in this context.
+        *
+        * @param mixed $offset Offset - not used here
+        * @param mixed $value The argument
+        * @return void
+        * @throws InvalidArgumentException if the argument is not a valid Controller Argument object
+        */
+       public function offsetSet($offset, $value) {
+               if (!$value instanceof TX_EXTMVC_Controller_Argument) throw new InvalidArgumentException('Controller arguments must be valid TX_EXTMVC_Controller_Argument objects.', 1187953786);
+
+               $argumentName = $value->getName();
+               parent::offsetSet($argumentName, $value);
+               $this->argumentNames[$argumentName] = TRUE;
+       }
+
+       /**
+        * Sets an argument, aliased to offsetSet()
+        *
+        * @param mixed $value The value
+        * @return void
+        * @throws InvalidArgumentException if the argument is not a valid Controller Argument object
+        */
+       public function append($value) {
+               if (!$value instanceof TX_EXTMVC_Controller_Argument) throw new InvalidArgumentException('Controller arguments must be valid TX_EXTMVC_Controller_Argument objects.', 1187953786);
+               $this->offsetSet(NULL, $value);
+       }
+
+       /**
+        * Unsets an argument
+        *
+        * @param mixed $offset Offset
+        * @return void
+        */
+       public function offsetUnset($offset) {
+               $translatedOffset = $this->translateToLongArgumentName($offset);
+               parent::offsetUnset($translatedOffset);
+
+               unset($this->argumentNames[$translatedOffset]);
+               if ($offset != $translatedOffset) {
+                       unset($this->argumentShortNames[$offset]);
+               }
+       }
+
+       /**
+        * Returns whether the requested index exists
+        *
+        * @param mixed $offset Offset
+        * @return boolean
+        */
+       public function offsetExists($offset) {
+               $translatedOffset = $this->translateToLongArgumentName($offset);
+               return parent::offsetExists($translatedOffset);
+       }
+
+       /**
+        * Returns the value at the specified index
+        *
+        * @param mixed $offset Offset
+        * @return TX_EXTMVC_Controller_Argument The requested argument object
+        * @throws TX_EXTMVC_Exception_NoSuchArgument if the argument does not exist
+        */
+       public function offsetGet($offset) {
+               $translatedOffset = $this->translateToLongArgumentName($offset);
+               if ($translatedOffset === '') throw new TX_EXTMVC_Exception_NoSuchArgument('The argument "' . $offset . '" does not exist.', 1216909923);
+               return parent::offsetGet($translatedOffset);
+       }
+
+       /**
+        * Creates, adds and returns a new controller argument to this composite object.
+        * If an argument with the same name exists already, it will be replaced by the
+        * new argument object.
+        *
+        * @param string $name Name of the argument
+        * @param string $dataType Name of one of the built-in data types
+        * @param boolean $isRequired TRUE if this argument should be marked as required
+        * @return TX_EXTMVC_Controller_Argument The new argument
+        */
+       public function addNewArgument($name, $dataType = 'Text', $isRequired = FALSE) {
+               $argument = new TX_EXTMVC_Controller_Argument($name, $dataType);
+               $argument->setRequired($isRequired);
+               $this->addArgument($argument);
+               return $argument;
+       }
+
+       /**
+        * Adds the specified controller argument to this composite object.
+        * If an argument with the same name exists already, it will be replaced by the
+        * new argument object.
+        *
+        * Note that the argument will be cloned, not referenced.
+        *
+        * @param TX_EXTMVC_Controller_Argument $argument The argument to add
+        * @return void
+        */
+       public function addArgument(TX_EXTMVC_Controller_Argument $argument) {
+               $this->offsetSet(NULL, $argument);
+       }
+
+       /**
+        * Returns an argument specified by name
+        *
+        * @param string $argumentName Name of the argument to retrieve
+        * @return TX_EXTMVC_Controller_Argument
+        * @throws TX_EXTMVC_Exception_NoSuchArgument
+        */
+       public function getArgument($argumentName) {
+               if (!$this->offsetExists($argumentName)) throw new TX_EXTMVC_Exception_NoSuchArgument('An argument "' . $argumentName . '" does not exist.', 1195815178);
+               return $this->offsetGet($argumentName);
+       }
+
+       /**
+        * Checks if an argument with the specified name exists
+        *
+        * @param string $argumentName Name of the argument to check for
+        * @return boolean TRUE if such an argument exists, otherwise FALSE
+        * @see offsetExists()
+        */
+       public function hasArgument($argumentName) {
+               return $this->offsetExists($argumentName);
+       }
+
+       /**
+        * Returns the names of all arguments contained in this object
+        *
+        * @return array Argument names
+        */
+       public function getArgumentNames() {
+               return array_keys($this->argumentNames);
+       }
+
+       /**
+        * Returns the short names of all arguments contained in this object that have one.
+        *
+        * @return array Argument short names
+        */
+       public function getArgumentShortNames() {
+               $argumentShortNames = array();
+               foreach ($this as $argument) {
+                       $argumentShortNames[$argument->getShortName()] = TRUE;
+               }
+               return array_keys($argumentShortNames);
+       }
+
+       /**
+        * Magic setter method for the argument values. Each argument
+        * value can be set by just calling the setArgumentName() method.
+        *
+        * @param string $methodName Name of the method
+        * @param array $arguments Method arguments
+        * @return void
+        */
+       public function __call($methodName, array $arguments) {
+               if (substr($methodName, 0, 3) !== 'set') throw new LogicException('Unknown method "' . $methodName . '".', 1210858451);
+
+               $firstLowerCaseArgumentName = $this->translateToLongArgumentName(strtolower($methodName{3}) . substr($methodName, 4));
+               $firstUpperCaseArgumentName = $this->translateToLongArgumentName(ucfirst(substr($methodName, 3)));
+
+               if (in_array($firstLowerCaseArgumentName, $this->getArgumentNames())) {
+                       $argument = parent::offsetGet($firstLowerCaseArgumentName);
+                       $argument->setValue($arguments[0]);
+               } elseif (in_array($firstUpperCaseArgumentName, $this->getArgumentNames())) {
+                       $argument = parent::offsetGet($firstUpperCaseArgumentName);
+                       $argument->setValue($arguments[0]);
+               }
+       }
+
+       /**
+        * Translates a short argument name to its corresponding long name. If the
+        * specified argument name is a real argument name already, it will be returned again.
+        *
+        * If an argument with the specified name or short name does not exist, an empty
+        * string is returned.
+        *
+        * @param string argument name
+        * @return string long argument name or empty string
+        */
+       protected function translateToLongArgumentName($argumentName) {
+
+               if (in_array($argumentName, $this->getArgumentNames())) return $argumentName;
+
+               foreach ($this as $argument) {
+                       if ($argumentName === $argument->getShortName()) return $argument->getName();
+               }
+               return '';
+       }
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/ControllerInterface.php b/typo3/sysext/extbase/Classes/Controller/ControllerInterface.php
new file mode 100644 (file)
index 0000000..70744ba
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * Interface for controllers
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+interface TX_EXTMVC_Controller_ControllerInterface {
+
+       /**
+        * Sets / injects the settings of the package this controller belongs to.
+        *
+        * @param array $settings Settings container of the current package
+        * @return void
+        */
+       public function injectSettings(array $settings);
+       
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/DefaultController.php b/typo3/sysext/extbase/Classes/Controller/DefaultController.php
new file mode 100755 (executable)
index 0000000..33cdd96
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A Special Case of a Controller: If no controller could be resolved or no
+ * controller has been specified in the request, this controller is chosen.
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Controller_DefaultController extends TX_EXTMVC_Controller_ActionController {
+
+       /**
+        * @var TX_EXTMVC_View_DefaultView
+        */
+       protected $defaultView;
+
+       /**
+        * Injects the default view
+        *
+        * @param TX_EXTMVC_View_DefaultView $defaultView The default view
+        * @return void
+        */
+       public function injectDefaultView(TX_EXTMVC_View_DefaultView $defaultView) {
+               $this->defaultView = $defaultView;
+       }
+
+       /**
+        * Processes a generic request and returns a response
+        *
+        * @param TX_EXTMVC_Request $request: The request
+        * @param TX_EXTMVC_Response $response: The response
+        */
+       public function processRequest(TX_EXTMVC_Request $request, TX_EXTMVC_Response $response) {
+               $request->setDispatched(TRUE);
+               switch (get_class($request)) {
+                       case 'TX_EXTMVC_Web_Request' :
+                               $this->processWebRequest($request, $response);
+                               break;
+                       default :
+                               $response->setContent(
+                                       "\nWelcome to TYPO3!\n\n" .
+                                       "This is the default view of the TYPO3 MVC object. You see this message because no \n" .
+                                       "other view is available. Please refer to the Developer's Guide for more information \n" .
+                                       "how to create and configure one.\n\n" .
+                                       "Have fun! The TYPO3 Development Team\n"
+                               );
+               }
+       }
+
+       /**
+        * Processes a web request and returns a response
+        *
+        * @param TX_EXTMVC_Web_Request $request: The request
+        * @param TX_EXTMVC_Web_Response $response: The response
+        */
+       protected function processWebRequest(TX_EXTMVC_Web_Request $request, TX_EXTMVC_Web_Response $response) {
+               $this->defaultView->setRequest($request);
+               $response->setContent($this->defaultView->render());
+       }
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_AbstractController.php b/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_AbstractController.php
deleted file mode 100755 (executable)
index fb0a2a7..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An abstract base class for Controllers
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-abstract class TX_EXTMVC_Controller_AbstractController implements TX_EXTMVC_Controller_ControllerInterface {
-
-       /**
-        * @var string Key of the extension this controller belongs to
-        */
-       protected $extensionKey;
-
-       /**
-        * Contains the settings of the current extension
-        *
-        * @var array
-        */
-       protected $settings;
-
-       /**
-        * @var TX_EXTMVC_Request The current request
-        */
-       protected $request;
-
-       /**
-        * @var TX_EXTMVC_Response The response which will be returned by this action controller
-        */
-       protected $response;
-
-       /**
-        * @var TX_EXTMVC_Controller_Arguments Arguments passed to the controller
-        */
-       protected $arguments;
-
-       /**
-        * Actions that schould not be cached (changes the invocated dispatcher to a USER_INT cObject)
-        * @var array
-        */
-       protected $nonCachableActions = array();
-
-       /**
-        * Constructs the controller.
-        *
-        * @param F3_FLOW3_Object_FactoryInterface $objectFactory A reference to the Object Factory
-        * @param F3_FLOW3_Package_ManagerInterface $packageManager A reference to the Package Manager
-        */
-       public function __construct() {
-               // SK: Set $this->extensionKey, could be done the same way as it is done in Fluid
-               $this->arguments = t3lib_div::makeInstance('TX_EXTMVC_Controller_Arguments');
-       }
-
-       /**
-        * Injects the settings of the extension.
-        *
-        * @param array $settings Settings container of the current extension
-        * @return void
-        */
-       public function injectSettings(array $settings) {
-               $this->settings = $settings;
-       }
-
-       /**
-        * Processes a general request. The result can be returned by altering the given response.
-        *
-        * @param TX_EXTMVC_Request $request The request object
-        * @param TX_EXTMVC_Response $response The response, modified by this handler
-        * @return void
-        * @throws TX_EXTMVC_Exception_UnsupportedRequestType if the controller doesn't support the current request type
-        */
-       public function processRequest(TX_EXTMVC_Request $request, TX_EXTMVC_Response $response) {
-               $this->request = $request;
-               $this->request->setDispatched(TRUE);
-               $this->response = $response;
-
-               $this->initializeArguments();
-               $this->mapRequestArgumentsToLocalArguments();
-       }
-
-       /**
-        * Initializes (registers / defines) arguments of this controller.
-        *
-        * Override this method to add arguments which can later be accessed
-        * by the action methods.
-        *
-        * @return void
-        */
-       protected function initializeArguments() {
-       }
-
-       /**
-        * Forwards the request to another controller.
-        *
-        * @return void
-        * @throws TX_EXTMVC_Exception_StopAction
-        */
-       public function forward($actionName, $controllerName = NULL, $extensionKey = NULL, TX_EXTMVC_Controller_Arguments $arguments = NULL) {
-               $this->request->setDispatched(FALSE);
-               $this->request->setControllerActionName($actionName);
-               if ($controllerName !== NULL) $this->request->setControllerName($controllerName);
-               if ($extensionKey !== NULL) $this->request->setControllerExtensionKey($extensionKey);
-               if ($arguments !== NULL) $this->request->setArguments($arguments);
-               throw new TX_EXTMVC_Exception_StopAction();
-       }
-
-       /**
-        * Redirects the web request to another uri.
-        *
-        * NOTE: This method only supports web requests and will thrown an exception if used with other request types.
-        *
-        * @param mixed $uri Either a string representation of a URI or a F3_FLOW3_Property_DataType_URI object
-        * @param integer $delay (optional) The delay in seconds. Default is no delay.
-        * @param integer $statusCode (optional) The HTTP status code for the redirect. Default is "303 See Other"
-        * @throws TX_EXTMVC_Exception_UnsupportedRequestType If the request is not a web request
-        * @throws TX_EXTMVC_Exception_StopAction
-        */
-       public function redirect($uri, $delay = 0, $statusCode = 303) {
-               if (!$this->request instanceof TX_EXTMVC_Web_Request) throw new TX_EXTMVC_Exception_UnsupportedRequestType('redirect() only supports web requests.', 1220539734);
-
-               $escapedUri = htmlentities($uri, ENT_QUOTES, 'utf-8');
-               $this->response->setContent('<html><head><meta http-equiv="refresh" content="' . intval($delay) . ';url=' . $escapedUri . '"/></head></html>');
-               $this->response->setStatus($statusCode);
-               throw new TX_EXTMVC_Exception_StopAction();
-       }
-
-       /**
-        * Sends the specified HTTP status immediately.
-        *
-        * NOTE: This method only supports web requests and will thrown an exception if used with other request types.
-        *
-        * @param integer $statusCode The HTTP status code
-        * @param string $statusMessage A custom HTTP status message
-        * @param string $content Body content which further explains the status
-        * @throws TX_EXTMVC_Exception_UnsupportedRequestType If the request is not a web request
-        * @throws TX_EXTMVC_Exception_StopAction
-        */
-       public function throwStatus($statusCode, $statusMessage = NULL, $content = NULL) {
-               if (!$this->request instanceof TX_EXTMVC_Web_Request) throw new TX_EXTMVC_Exception_UnsupportedRequestType('throwStatus() only supports web requests.', 1220539739);
-
-               $this->response->setStatus($statusCode, $statusMessage);
-               if ($content === NULL) $content = $this->response->getStatus();
-               $this->response->setContent($content);
-               throw new TX_EXTMVC_Exception_StopAction();
-       }
-
-       /**
-        * Maps arguments delivered by the request object to the local controller arguments.
-        *
-        * @return void
-        */
-       protected function mapRequestArgumentsToLocalArguments() {
-               $requestArguments = $this->request->getArguments();
-               foreach ($this->arguments as $argument) {
-                       $argumentName = $argument->getName();
-                       $argumentShortName = $argument->getShortName();
-                       if (array_key_exists($argumentName, $requestArguments)) {
-                               $argument->setValue($requestArguments[$argumentName]);
-                       } elseif ($argumentShortName !== NULL && array_key_exists($argumentShortName, $requestArguments)) {
-                               $argument->setValue($requestArguments[$argumentShortName]);
-                       }
-               }
-       }
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_ActionController.php b/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_ActionController.php
deleted file mode 100644 (file)
index 1a1cf73..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A multi action controller
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-// SK: fill initializeArguments() so it parses the arguments for a given view. We need to discuss how this parsing can be
-// SK: done effectively.
-class TX_EXTMVC_Controller_ActionController extends TX_EXTMVC_Controller_AbstractController {
-
-       /**
-        * @var boolean If initializeView() should be called on an action invocation.
-        */
-       protected $initializeView = TRUE;
-
-       /**
-        * @var TX_EXTMVC_View_AbstractView By default a view with the same name as the current action is provided. Contains NULL if none was found.
-        */
-       protected $view = NULL;
-
-       /**
-        * By default a matching view will be resolved. If this property is set, automatic resolving is disabled and the specified object is used instead.
-        * @var string
-        */
-       // SK: rename to defaultViewObjectName. Should only be used if no custom view could be found.
-       // SK: How do we implement this with TYPO3 v4? How can we check if a class exists?
-       // SK: Changing the logic here makes it possible to write specific views for a given action, and use the default view for all other actions.
-       protected $viewObjectName = NULL;
-
-       /**
-        * Pattern after which the view object name is built
-        *
-        * @var string
-        */
-       // SK: Decision: Do we support "format"?
-       protected $viewObjectNamePattern = 'TX_@extension_View_@controller@action';
-
-       /**
-        * Name of the action method
-        * @var string
-        */
-       protected $actionMethodName = 'indexAction';
-
-       /**
-        * Handles a request. The result output is returned by altering the given response.
-        *
-        * @param TX_EXTMVC_Request $request The request object
-        * @param TX_EXTMVC_Response $response The response, modified by this handler
-        * @return void
-        */
-       public function processRequest(TX_EXTMVC_Request $request, TX_EXTMVC_Response $response) {
-               $this->request = $request;
-               $this->request->setDispatched(TRUE);
-               $this->response = $response;
-
-               $this->actionMethodName = $this->resolveActionMethodName();
-               $this->initializeArguments();
-               $this->mapRequestArgumentsToLocalArguments();
-               if ($this->initializeView) $this->initializeView();
-               $this->initializeAction();
-               $this->callActionMethod();
-       }
-
-       /**
-        * Determines the action method and assures that the method exists.
-        *
-        * @return string The action method name
-        * @throws TX_EXTMVC_Exception_NoSuchAction if the action specified in the request object does not exist (and if there's no default action either).
-        */
-       protected function resolveActionMethodName() {
-               $actionMethodName = $this->request->getControllerActionName() . 'Action';
-               if (!method_exists($this, $actionMethodName)) throw new TX_EXTMVC_Exception_NoSuchAction('An action "' . $actionMethodName . '" does not exist in controller "' . get_class($this) . '".', 1186669086);
-               return $actionMethodName;
-       }
-       
-       /**
-        * Returns TRUE if the given action (a name of an action like 'show'; without 
-        * trailing 'Action') should be cached, otherwise it returns FALSE.
-        *
-        * @param string $actionName 
-        * @return void
-        * @author Jochen Rau <jochen.rau@typoplanet.de>
-        */
-       public function isCachableAction($actionName) {
-                return !in_array($actionName, $this->nonCachableActions);
-       }
-
-       /**
-        * Calls the specified action method and passes the arguments.
-        * If the action returns a string, it is appended to the content in the
-        * response object.
-        *
-        * @param string $actionMethodName Name of the action method
-        * @return void
-        */
-       protected function callActionMethod() {
-               $actionResult = call_user_func_array(array($this, $this->actionMethodName), array());
-               if ($actionResult === NULL && $this->view instanceof TX_EXTMVC_View_ViewInterface) {
-                       $this->response->appendContent($this->view->render());
-               } elseif (is_string($actionResult) && strlen($actionResult) > 0) {
-                       $this->response->appendContent($actionResult);
-               }
-       }
-
-       /**
-        * Prepares a view for the current action and stores it in $this->view.
-        * By default, this method tries to locate a view with a name matching
-        * the current action.
-        *
-        * @return void
-        */
-       protected function initializeView() {
-               $viewObjectName = ($this->viewObjectName === NULL) ? $this->resolveViewObjectName() : $this->viewObjectName;
-               if (!class_exists($viewObjectName)) $viewObjectName = 'TX_EXTMVC_View_EmptyView';
-
-               $this->view = t3lib_div::makeInstance($viewObjectName);
-               $this->view->setRequest($this->request);
-       }
-
-       /**
-        * Determines the fully qualified view object name.
-        *
-        * @return string The fully qualified view object name
-        */
-       protected function resolveViewObjectName() {
-               $possibleViewName = $this->viewObjectNamePattern;
-               $extensionKey = $this->request->getControllerExtensionKey();
-               $possibleViewName = str_replace('@extension', $extensionKey, $possibleViewName);
-               $possibleViewName = str_replace('@controller', $this->request->getControllerName(), $possibleViewName);
-               $possibleViewName = str_replace('@action', ucfirst($this->request->getControllerActionName()), $possibleViewName);
-               return $possibleViewName;
-       }
-
-       /**
-        * Initializes the controller before invoking an action method.
-        *
-        * Override this method to solve tasks which all actions have in
-        * common.
-        *
-        * @return void
-        */
-       protected function initializeAction() {
-       }
-
-       /**
-        * The default action of this controller.
-        *
-        * This method should always be overridden by the concrete action
-        * controller implementation.
-        *
-        * @return void
-        */
-       protected function indexAction() {
-               return 'No index action has been implemented yet for this controller.';
-       }
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_Argument.php b/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_Argument.php
deleted file mode 100644 (file)
index e615142..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A controller argument
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- * @scope prototype
- */
-class TX_EXTMVC_Controller_Argument {
-
-       /**
-        * Name of this argument
-        * @var string
-        */
-       protected $name = '';
-
-       /**
-        * Short name of this argument
-        * @var string
-        */
-       protected $shortName = NULL;
-
-       /**
-        * Data type of this argument's value
-        * @var string
-        */
-       protected $dataType = 'Text';
-
-       /**
-        * TRUE if this argument is required
-        * @var boolean
-        */
-       protected $isRequired = FALSE;
-
-       /**
-        * Actual value of this argument
-        * @var object
-        */
-       protected $value = NULL;
-
-       /**
-        * The argument is valid
-        * @var boolean
-        */
-       protected $isValid = NULL;
-
-       /**
-        * Any error (TX_EXTMVC_Error_Error) that occured while initializing this argument (e.g. a mapping error)
-        * @var array
-        */
-       protected $errors = array();
-
-       /**
-        * The property validator for this argument
-        * @var TX_EXTMVC_Validation_Validator_ValidatorInterface
-        */
-       protected $validator = NULL;
-
-       /**
-        * The property validator for this arguments datatype
-        * @var TX_EXTMVC_Validation_Validator_ValidatorInterface
-        */
-       // TODO Remove DatatypeValidator
-       protected $datatypeValidator = NULL;
-
-       /**
-        * Uid for the argument, if it has one
-        * @var string
-        */
-       protected $uid = NULL;
-
-       /**
-        * Constructs this controller argument
-        *
-        * @param string $name Name of this argument
-        * @param string $dataType The data type of this argument
-        * @throws InvalidArgumentException if $name is not a string or empty
-        */
-       public function __construct($name, $dataType = 'Text') {
-               if (!is_string($name) || strlen($name) < 1) throw new InvalidArgumentException('$name must be of type string, ' . gettype($name) . ' given.', 1187951688);
-               $this->name = $name;
-               if (is_array($dataType)) {
-                       $this->setNewValidatorChain($dataType);
-               } else {
-                       $this->setDataType($dataType);
-               }
-       }
-
-       /**
-        * Returns the name of this argument
-        *
-        * @return string This argument's name
-        */
-       public function getName() {
-               return $this->name;
-       }
-
-       /**
-        * Sets the short name of this argument.
-        *
-        * @param string $shortName A "short name" - a single character
-        * @return TX_EXTMVC_Controller_Argument $this
-        * @throws InvalidArgumentException if $shortName is not a character
-        */
-       public function setShortName($shortName) {
-               if ($shortName !== NULL && (!is_string($shortName) || strlen($shortName) != 1)) throw new InvalidArgumentException('$shortName must be a single character or NULL', 1195824959);
-               $this->shortName = $shortName;
-               return $this;
-       }
-
-       /**
-        * Returns the short name of this argument
-        *
-        * @return string This argument's short name
-        */
-       public function getShortName() {
-               return $this->shortName;
-       }
-
-       /**
-        * Sets the data type of this argument's value
-        *
-        * @param string $dataType: Name of the data type
-        * @return TX_EXTMVC_Controller_Argument $this
-        */
-       public function setDataType($dataType) {
-               $this->dataType = ($dataType != '' ? $dataType : 'Text');
-               // TODO Make validator path and class names configurable
-               $dataTypeValidatorClassName = 'TX_EXTMVC_Validation_Validator_' . $this->dataType;
-               $classFilePathAndName = t3lib_extMgm::extPath('extmvc') . 'Classes/Validation/Validator/' . $dataTypeValidatorClassName . '.php';
-               if (isset($classFilePathAndName) && file_exists($classFilePathAndName)) {                       
-                       require_once($classFilePathAndName);
-                       $this->datatypeValidator = t3lib_div::makeInstance($dataTypeValidatorClassName);
-               }
-               return $this;
-       }
-
-       /**
-        * Returns the data type of this argument's value
-        *
-        * @return string The data type
-        */
-       public function getDataType() {
-               return $this->dataType;
-       }
-
-       /**
-        * Marks this argument to be required
-        *
-        * @param boolean $required TRUE if this argument should be required
-        * @return TX_EXTMVC_Controller_Argument $this
-        */
-       public function setRequired($required) {
-               $this->isRequired = $required;
-               return $this;
-       }
-
-       /**
-        * Returns TRUE if this argument is required
-        *
-        * @return boolean TRUE if this argument is required
-        */
-       public function isRequired() {
-               return $this->isRequired;
-       }
-
-       /**
-        * Sets the value of this argument.
-        *
-        * @param mixed $value: The value of this argument
-        * @return TX_EXTMVC_Controller_Argument $this
-        * @throws TX_EXTMVC_Exception_InvalidArgumentValue if the argument is not a valid object of type $dataType
-        */
-       public function setValue($value) {
-               if ($this->isValidValueForThisArgument($value)) {
-                       $this->value = $value;
-               }
-               return $this;
-       }
-
-       /**
-        * Returns the value of this argument
-        *
-        * @return object The value of this argument - if none was set, NULL is returned
-        */
-       public function getValue() {
-               return $this->value;
-       }
-
-       /**
-        * Checks if this argument has a value set.
-        *
-        * @return boolean TRUE if a value was set, otherwise FALSE
-        */
-       public function isValue() {
-               return $this->value !== NULL;
-       }
-
-       /**
-        * undocumented function
-        *
-        * @param string $value 
-        * @return boolean TRUE if the value is valid for this argument, otherwise FALSE
-        */
-       protected function isValidValueForThisArgument($value) {
-               $isValid = TRUE;
-               $validatorErrors = t3lib_div::makeInstance('TX_EXTMVC_Validation_Errors');
-               if ($this->getValidator() !== NULL) {
-                       $isValid &= $this->getValidator()->isValid($value, $validatorErrors);
-               } elseif ($this->getDatatypeValidator() !== NULL) {
-                       $isValid = $this->getDatatypeValidator()->isValid($value, $validatorErrors);                    
-               } else {
-                       throw new TX_EXTMVC_Validation_NoValidatorFound('No appropriate validator for the argument "' . $this->getName() . '" was found.', 1235748909);
-               }
-               if (!$isValid) {
-                       foreach ($validatorErrors as $error) {
-                               $this->addError($error);
-                       }
-               }
-               $this->isValid = $isValid;
-               return (boolean)$isValid;
-       }
-
-       /**
-        * Returns TRUE when the argument is valid
-        *
-        * @return boolean TRUE if the argument is valid
-        */
-       public function isValid() {
-               return $this->isValid;
-       }
-       
-       /**
-        * Add an initialization error (e.g. a mapping error)
-        *
-        * @param string An error text
-        * @return void
-        */
-       public function addError($error) {
-               $this->errors[] = $error;
-       }
-
-       /**
-        * Get all initialization errors
-        *
-        * @return array An array containing TX_EXTMVC_Error_Error objects
-        * @see addError(TX_EXTMVC_Error_Error $error)
-        */
-       public function getErrors() {
-               return $this->errors;
-       }
-
-       /**
-        * Set an additional validator
-        *
-        * @param string Class name of a validator
-        * @return TX_EXTMVC_MVC_Controller_Argument Returns $this (used for fluent interface)
-        */
-       public function setValidator($className) {
-               $this->validator = t3lib_div::makeInstance($className);
-               return $this;
-       }
-
-       /**
-        * Returns the set validator
-        *
-        * @return TX_EXTMVC_Validation_Validator_ValidatorInterface The set validator, NULL if none was set
-        */
-       public function getValidator() {
-               return $this->validator;
-       }
-
-       /**
-        * Returns the set datatype validator
-        *
-        * @return TX_EXTMVC_Validation_Validator_ValidatorInterface The set datatype validator
-        */
-       public function getDatatypeValidator() {
-               return $this->datatypeValidator;
-       }
-       
-       /**
-        * Create and set a validator chain
-        *
-        * @param array Object names of the validators
-        * @return TX_EXTMVC_MVC_Controller_Argument Returns $this (used for fluent interface)
-        */
-       public function setNewValidatorChain(array $validators) {
-               $this->validator = t3lib_div::makeInstance('TX_EXTMVC_Validation_Validator_ChainValidator');
-               foreach ($validators as $validator) {
-                       if (is_array($validator)) {
-                               $objectName = 'TX_EXTMVC_Validation_Validator_' . $validator[0];
-                               $this->validator->addValidator(new $objectName);
-                       } else {
-                               $objectName = 'TX_EXTMVC_Validation_Validator_' . $validator;
-                               $this->validator->addValidator(t3lib_div::makeInstance($objectName));
-                       }
-               }
-               return $this;
-       }
-       
-       /**
-        * Set the uid for the argument.
-        *
-        * @param string $uid The uid for the argument.
-        * @return void
-        */
-       public function setUid($uid) {
-               $this->uid = $uid;
-       }
-
-       /**
-        * Get the uid of the argument, if it has one.
-        *
-        * @return string Uid of the argument. If none set, returns NULL.
-        */
-       public function getUid() {
-               return $this->uid;
-       }
-
-       /**
-        * Returns a string representation of this argument's value
-        *
-        * @return string
-        */
-       public function __toString() {
-               return (string)$this->value;
-       }
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_Arguments.php b/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_Arguments.php
deleted file mode 100644 (file)
index 9be43f7..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A composite of controller arguments
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- * @scope prototype
- */
-class TX_EXTMVC_Controller_Arguments extends ArrayObject {
-
-       /**
-        * @var array Names of the arguments contained by this object
-        */
-       protected $argumentNames = array();
-
-       /**
-        * Adds or replaces the argument specified by $value. The argument's name is taken from the
-        * argument object itself, therefore the $offset does not have any meaning in this context.
-        *
-        * @param mixed $offset Offset - not used here
-        * @param mixed $value The argument
-        * @return void
-        * @throws InvalidArgumentException if the argument is not a valid Controller Argument object
-        */
-       public function offsetSet($offset, $value) {
-               if (!$value instanceof TX_EXTMVC_Controller_Argument) throw new InvalidArgumentException('Controller arguments must be valid TX_EXTMVC_Controller_Argument objects.', 1187953786);
-
-               $argumentName = $value->getName();
-               parent::offsetSet($argumentName, $value);
-               $this->argumentNames[$argumentName] = TRUE;
-       }
-
-       /**
-        * Sets an argument, aliased to offsetSet()
-        *
-        * @param mixed $value The value
-        * @return void
-        * @throws InvalidArgumentException if the argument is not a valid Controller Argument object
-        */
-       public function append($value) {
-               if (!$value instanceof TX_EXTMVC_Controller_Argument) throw new InvalidArgumentException('Controller arguments must be valid TX_EXTMVC_Controller_Argument objects.', 1187953786);
-               $this->offsetSet(NULL, $value);
-       }
-
-       /**
-        * Unsets an argument
-        *
-        * @param mixed $offset Offset
-        * @return void
-        */
-       public function offsetUnset($offset) {
-               $translatedOffset = $this->translateToLongArgumentName($offset);
-               parent::offsetUnset($translatedOffset);
-
-               unset($this->argumentNames[$translatedOffset]);
-               if ($offset != $translatedOffset) {
-                       unset($this->argumentShortNames[$offset]);
-               }
-       }
-
-       /**
-        * Returns whether the requested index exists
-        *
-        * @param mixed $offset Offset
-        * @return boolean
-        */
-       public function offsetExists($offset) {
-               $translatedOffset = $this->translateToLongArgumentName($offset);
-               return parent::offsetExists($translatedOffset);
-       }
-
-       /**
-        * Returns the value at the specified index
-        *
-        * @param mixed $offset Offset
-        * @return TX_EXTMVC_Controller_Argument The requested argument object
-        * @throws TX_EXTMVC_Exception_NoSuchArgument if the argument does not exist
-        */
-       public function offsetGet($offset) {
-               $translatedOffset = $this->translateToLongArgumentName($offset);
-               if ($translatedOffset === '') throw new TX_EXTMVC_Exception_NoSuchArgument('The argument "' . $offset . '" does not exist.', 1216909923);
-               return parent::offsetGet($translatedOffset);
-       }
-
-       /**
-        * Creates, adds and returns a new controller argument to this composite object.
-        * If an argument with the same name exists already, it will be replaced by the
-        * new argument object.
-        *
-        * @param string $name Name of the argument
-        * @param string $dataType Name of one of the built-in data types
-        * @param boolean $isRequired TRUE if this argument should be marked as required
-        * @return TX_EXTMVC_Controller_Argument The new argument
-        */
-       public function addNewArgument($name, $dataType = 'Text', $isRequired = FALSE) {
-               $argument = new TX_EXTMVC_Controller_Argument($name, $dataType);
-               $argument->setRequired($isRequired);
-               $this->addArgument($argument);
-               return $argument;
-       }
-
-       /**
-        * Adds the specified controller argument to this composite object.
-        * If an argument with the same name exists already, it will be replaced by the
-        * new argument object.
-        *
-        * Note that the argument will be cloned, not referenced.
-        *
-        * @param TX_EXTMVC_Controller_Argument $argument The argument to add
-        * @return void
-        */
-       public function addArgument(TX_EXTMVC_Controller_Argument $argument) {
-               $this->offsetSet(NULL, $argument);
-       }
-
-       /**
-        * Returns an argument specified by name
-        *
-        * @param string $argumentName Name of the argument to retrieve
-        * @return TX_EXTMVC_Controller_Argument
-        * @throws TX_EXTMVC_Exception_NoSuchArgument
-        */
-       public function getArgument($argumentName) {
-               if (!$this->offsetExists($argumentName)) throw new TX_EXTMVC_Exception_NoSuchArgument('An argument "' . $argumentName . '" does not exist.', 1195815178);
-               return $this->offsetGet($argumentName);
-       }
-
-       /**
-        * Checks if an argument with the specified name exists
-        *
-        * @param string $argumentName Name of the argument to check for
-        * @return boolean TRUE if such an argument exists, otherwise FALSE
-        * @see offsetExists()
-        */
-       public function hasArgument($argumentName) {
-               return $this->offsetExists($argumentName);
-       }
-
-       /**
-        * Returns the names of all arguments contained in this object
-        *
-        * @return array Argument names
-        */
-       public function getArgumentNames() {
-               return array_keys($this->argumentNames);
-       }
-
-       /**
-        * Returns the short names of all arguments contained in this object that have one.
-        *
-        * @return array Argument short names
-        */
-       public function getArgumentShortNames() {
-               $argumentShortNames = array();
-               foreach ($this as $argument) {
-                       $argumentShortNames[$argument->getShortName()] = TRUE;
-               }
-               return array_keys($argumentShortNames);
-       }
-
-       /**
-        * Magic setter method for the argument values. Each argument
-        * value can be set by just calling the setArgumentName() method.
-        *
-        * @param string $methodName Name of the method
-        * @param array $arguments Method arguments
-        * @return void
-        */
-       public function __call($methodName, array $arguments) {
-               if (substr($methodName, 0, 3) !== 'set') throw new LogicException('Unknown method "' . $methodName . '".', 1210858451);
-
-               $firstLowerCaseArgumentName = $this->translateToLongArgumentName(strtolower($methodName{3}) . substr($methodName, 4));
-               $firstUpperCaseArgumentName = $this->translateToLongArgumentName(ucfirst(substr($methodName, 3)));
-
-               if (in_array($firstLowerCaseArgumentName, $this->getArgumentNames())) {
-                       $argument = parent::offsetGet($firstLowerCaseArgumentName);
-                       $argument->setValue($arguments[0]);
-               } elseif (in_array($firstUpperCaseArgumentName, $this->getArgumentNames())) {
-                       $argument = parent::offsetGet($firstUpperCaseArgumentName);
-                       $argument->setValue($arguments[0]);
-               }
-       }
-
-       /**
-        * Translates a short argument name to its corresponding long name. If the
-        * specified argument name is a real argument name already, it will be returned again.
-        *
-        * If an argument with the specified name or short name does not exist, an empty
-        * string is returned.
-        *
-        * @param string argument name
-        * @return string long argument name or empty string
-        */
-       protected function translateToLongArgumentName($argumentName) {
-
-               if (in_array($argumentName, $this->getArgumentNames())) return $argumentName;
-
-               foreach ($this as $argument) {
-                       if ($argumentName === $argument->getShortName()) return $argument->getName();
-               }
-               return '';
-       }
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_ControllerInterface.php b/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_ControllerInterface.php
deleted file mode 100644 (file)
index 70744ba..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * Interface for controllers
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-interface TX_EXTMVC_Controller_ControllerInterface {
-
-       /**
-        * Sets / injects the settings of the package this controller belongs to.
-        *
-        * @param array $settings Settings container of the current package
-        * @return void
-        */
-       public function injectSettings(array $settings);
-       
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_DefaultController.php b/typo3/sysext/extbase/Classes/Controller/TX_EXTMVC_Controller_DefaultController.php
deleted file mode 100755 (executable)
index 33cdd96..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A Special Case of a Controller: If no controller could be resolved or no
- * controller has been specified in the request, this controller is chosen.
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Controller_DefaultController extends TX_EXTMVC_Controller_ActionController {
-
-       /**
-        * @var TX_EXTMVC_View_DefaultView
-        */
-       protected $defaultView;
-
-       /**
-        * Injects the default view
-        *
-        * @param TX_EXTMVC_View_DefaultView $defaultView The default view
-        * @return void
-        */
-       public function injectDefaultView(TX_EXTMVC_View_DefaultView $defaultView) {
-               $this->defaultView = $defaultView;
-       }
-
-       /**
-        * Processes a generic request and returns a response
-        *
-        * @param TX_EXTMVC_Request $request: The request
-        * @param TX_EXTMVC_Response $response: The response
-        */
-       public function processRequest(TX_EXTMVC_Request $request, TX_EXTMVC_Response $response) {
-               $request->setDispatched(TRUE);
-               switch (get_class($request)) {
-                       case 'TX_EXTMVC_Web_Request' :
-                               $this->processWebRequest($request, $response);
-                               break;
-                       default :
-                               $response->setContent(
-                                       "\nWelcome to TYPO3!\n\n" .
-                                       "This is the default view of the TYPO3 MVC object. You see this message because no \n" .
-                                       "other view is available. Please refer to the Developer's Guide for more information \n" .
-                                       "how to create and configure one.\n\n" .
-                                       "Have fun! The TYPO3 Development Team\n"
-                               );
-               }
-       }
-
-       /**
-        * Processes a web request and returns a response
-        *
-        * @param TX_EXTMVC_Web_Request $request: The request
-        * @param TX_EXTMVC_Web_Response $response: The response
-        */
-       protected function processWebRequest(TX_EXTMVC_Web_Request $request, TX_EXTMVC_Web_Response $response) {
-               $this->defaultView->setRequest($request);
-               $response->setContent($this->defaultView->render());
-       }
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/AbstractDomainObject.php b/typo3/sysext/extbase/Classes/DomainObject/AbstractDomainObject.php
new file mode 100644 (file)
index 0000000..44cb18b
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A generic Domain Object
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+abstract class TX_EXTMVC_DomainObject_AbstractDomainObject implements TX_EXTMVC_DomainObject_DomainObjectInterface {
+
+       /**
+        * @var string The uid
+        */
+       protected $uid;
+
+       /**
+        * @var An array holding the clean property values. Set right after reconstitution of the object
+        */
+       private $_cleanProperties = NULL;
+
+       /**
+        * The generic constructor. If you want to implement your own __constructor() method in your Domain Object you have to call
+        * $this->initializeObject() in the first line of your constructor.
+        *
+        * @var array
+        */
+       public function __construct() {
+               $this->initializeObject();
+       }
+
+       /**
+        * This is the magic __wakeup() method. It's invoked by the unserialize statement in the reconstitution process
+        * of the object. If you want to implement your own __wakeup() method in your Domain Object you have to call
+        * parent::__wakeup() first!
+        *
+        * @return void
+        */
+       public function __wakeup() {
+               foreach ($GLOBALS['EXTMVC']['reconstituteObject']['properties'] as $propertyName => $value) {
+                       $this->_reconstituteProperty($propertyName, $value);
+               }
+               $this->initializeObject();
+               $this->initializeCleanProperties();
+       }
+
+       /**
+        * A template method to initialize an object. This can be used to manipulate the object after
+        * reconstitution and before the clean state of it's properties is stored.
+        *
+        * @return void
+        */
+       protected function initializeObject() {
+       }
+
+       /**
+        * Getter for uid
+        *
+        * @return string
+        */
+       public function getUid() {
+               return $this->uid;
+       }
+
+       /**
+        * Reconstitutes a property. This method should only be called at reconstitution time!
+        *
+        * @param string $propertyName
+        * @param string $value
+        * @return void
+        * @internal
+        */
+       public function _reconstituteProperty($propertyName, $value) {
+               if (property_exists($this, $propertyName)) {
+                       $this->$propertyName = $value;
+               } else {
+                       // TODO Should we throw new TX_EXTMVC_Persistence_Exception_UnknownProperty('The property "' . $propertyName . '" doesn\'t exist in this object.', 1233270476);
+               }
+       }
+
+       /**
+        * Register an object's clean state, e.g. after it has been reconstituted
+        * from the database
+        *
+        * @return void
+        * @internal
+        */
+       public function _memorizeCleanState() {
+               $this->initializeCleanProperties();
+               $cleanProperties = array();
+               foreach ($this->_cleanProperties as $propertyName => $propertyValue) {
+                       $cleanProperties[$propertyName] = $this->$propertyName;
+               }
+               $this->_cleanProperties = $cleanProperties;
+       }
+
+       /**
+        * Returns TRUE if the properties were modified after reconstitution
+        *
+        * @return boolean
+        * @internal
+        */
+       public function _isDirty() {
+               if (!is_array($this->_cleanProperties)) throw new TX_EXTMVC_Persistence_Exception_CleanStateNotMemorized('The clean state of the object "' . get_class($this) . '" has not been memorized before asking _isDirty().', 1233309106);
+               if ($this->uid !== NULL && $this->uid != $this->_cleanProperties['uid']) throw new TX_EXTMVC_Persistence_Exception_TooDirty('The uid "' . $this->uid . '" has been modified, that is simply too much.', 1222871239);
+               foreach ($this->_cleanProperties as $propertyName => $propertyValue) {
+                       if ($this->$propertyName !== $propertyValue) return TRUE;
+               }
+               return FALSE;
+       }
+
+       /**
+        * Returns a hash map of property names and property values
+        *
+        * @return array The properties
+        * @internal
+        */
+       public function _getProperties() {
+               return get_object_vars($this);
+       }
+
+       /**
+        * Returns a hash map of dirty properties and $values
+        *
+        * @return boolean
+        * @internal
+        */
+       public function _getDirtyProperties() {
+               if (!is_array($this->_cleanProperties)) throw new TX_EXTMVC_Persistence_Exception_CleanStateNotMemorized('The clean state of the object "' . get_class($this) . '" has not been memorized before asking _isDirty().', 1233309106);
+               if ($this->uid !== NULL && $this->uid != $this->_cleanProperties['uid']) throw new TX_EXTMVC_Persistence_Exception_TooDirty('The uid "' . $this->uid . '" has been modified, that is simply too much.', 1222871239);
+               $dirtyProperties = array();
+               foreach ($this->_cleanProperties as $propertyName => $propertyValue) {
+                       if ($this->$propertyName !== $propertyValue) {
+                               $dirtyProperties[$propertyName] = $this->$propertyName;
+                       }
+               }
+               return $dirtyProperties;
+       }
+
+       /**
+        * Saves a copy of values of the persitable properties inside the object itself. This method is normally
+        * called right after it's reconstitution from a storage. 
+        *
+        * @return void
+        * @author Jochen Rau <jochen.rau@typoplanet.de>
+        */
+       private function initializeCleanProperties() {
+               $properties = get_object_vars($this);
+               $dataMapper = t3lib_div::makeInstance('TX_EXTMVC_Persistence_Mapper_ObjectRelationalMapper');
+               foreach ($properties as $propertyName => $propertyValue) {
+                       if ($dataMapper->isPersistableProperty(get_class($this), $propertyName)) {
+                               $this->_cleanProperties[$propertyName] = NULL;
+                       }
+               }
+               $this->_cleanProperties['uid'] = NULL;
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/AbstractEntity.php b/typo3/sysext/extbase/Classes/DomainObject/AbstractEntity.php
new file mode 100644 (file)
index 0000000..6b6b17b
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An abstract Entity. An Entity is an object fundamentally defined not by its attributes, 
+ * but by a thread of continuity and identity (e.g. a person).
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+abstract class TX_EXTMVC_DomainObject_AbstractEntity extends TX_EXTMVC_DomainObject_AbstractDomainObject {
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/AbstractValueObject.php b/typo3/sysext/extbase/Classes/DomainObject/AbstractValueObject.php
new file mode 100644 (file)
index 0000000..e4ed9df
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A abstract Value Object. A Value Object is an object that describes some characteristic 
+ * or attribute (e.g. a color) but carries no concept of identity.
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+abstract class TX_EXTMVC_DomainObject_AbstractValueObject extends TX_EXTMVC_DomainObject_AbstractDomainObject {
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/DomainObjectInterface.php b/typo3/sysext/extbase/Classes/DomainObject/DomainObjectInterface.php
new file mode 100644 (file)
index 0000000..da84899
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A Domain Object Interface
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+interface TX_EXTMVC_DomainObject_DomainObjectInterface {
+
+       /**
+        * Reconstitutes a property. This method should only be called at reconstitution time!
+        *
+        * @param string $propertyName
+        * @param string $value
+        * @return void
+        * @internal
+        */
+       public function _reconstituteProperty($propertyName, $value);
+
+       /**
+        * Register an object's clean state, e.g. after it has been reconstituted
+        * from the database
+        *
+        * @return void
+        * @internal
+        */
+       public function _memorizeCleanState();
+
+       /**
+        * Returns TRUE if the properties were modified after reconstitution
+        *
+        * @return boolean
+        * @internal
+        */
+       public function _isDirty();
+       /**
+        * Returns a hash map of property names and property values
+        *
+        * @return array The properties
+        * @internal
+        */
+       public function _getProperties();
+       /**
+        * Returns a hash map of dirty properties and $values
+        *
+        * @return boolean
+        * @internal
+        */
+       public function _getDirtyProperties();
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractDomainObject.php b/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractDomainObject.php
deleted file mode 100644 (file)
index 44cb18b..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A generic Domain Object
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-abstract class TX_EXTMVC_DomainObject_AbstractDomainObject implements TX_EXTMVC_DomainObject_DomainObjectInterface {
-
-       /**
-        * @var string The uid
-        */
-       protected $uid;
-
-       /**
-        * @var An array holding the clean property values. Set right after reconstitution of the object
-        */
-       private $_cleanProperties = NULL;
-
-       /**
-        * The generic constructor. If you want to implement your own __constructor() method in your Domain Object you have to call
-        * $this->initializeObject() in the first line of your constructor.
-        *
-        * @var array
-        */
-       public function __construct() {
-               $this->initializeObject();
-       }
-
-       /**
-        * This is the magic __wakeup() method. It's invoked by the unserialize statement in the reconstitution process
-        * of the object. If you want to implement your own __wakeup() method in your Domain Object you have to call
-        * parent::__wakeup() first!
-        *
-        * @return void
-        */
-       public function __wakeup() {
-               foreach ($GLOBALS['EXTMVC']['reconstituteObject']['properties'] as $propertyName => $value) {
-                       $this->_reconstituteProperty($propertyName, $value);
-               }
-               $this->initializeObject();
-               $this->initializeCleanProperties();
-       }
-
-       /**
-        * A template method to initialize an object. This can be used to manipulate the object after
-        * reconstitution and before the clean state of it's properties is stored.
-        *
-        * @return void
-        */
-       protected function initializeObject() {
-       }
-
-       /**
-        * Getter for uid
-        *
-        * @return string
-        */
-       public function getUid() {
-               return $this->uid;
-       }
-
-       /**
-        * Reconstitutes a property. This method should only be called at reconstitution time!
-        *
-        * @param string $propertyName
-        * @param string $value
-        * @return void
-        * @internal
-        */
-       public function _reconstituteProperty($propertyName, $value) {
-               if (property_exists($this, $propertyName)) {
-                       $this->$propertyName = $value;
-               } else {
-                       // TODO Should we throw new TX_EXTMVC_Persistence_Exception_UnknownProperty('The property "' . $propertyName . '" doesn\'t exist in this object.', 1233270476);
-               }
-       }
-
-       /**
-        * Register an object's clean state, e.g. after it has been reconstituted
-        * from the database
-        *
-        * @return void
-        * @internal
-        */
-       public function _memorizeCleanState() {
-               $this->initializeCleanProperties();
-               $cleanProperties = array();
-               foreach ($this->_cleanProperties as $propertyName => $propertyValue) {
-                       $cleanProperties[$propertyName] = $this->$propertyName;
-               }
-               $this->_cleanProperties = $cleanProperties;
-       }
-
-       /**
-        * Returns TRUE if the properties were modified after reconstitution
-        *
-        * @return boolean
-        * @internal
-        */
-       public function _isDirty() {
-               if (!is_array($this->_cleanProperties)) throw new TX_EXTMVC_Persistence_Exception_CleanStateNotMemorized('The clean state of the object "' . get_class($this) . '" has not been memorized before asking _isDirty().', 1233309106);
-               if ($this->uid !== NULL && $this->uid != $this->_cleanProperties['uid']) throw new TX_EXTMVC_Persistence_Exception_TooDirty('The uid "' . $this->uid . '" has been modified, that is simply too much.', 1222871239);
-               foreach ($this->_cleanProperties as $propertyName => $propertyValue) {
-                       if ($this->$propertyName !== $propertyValue) return TRUE;
-               }
-               return FALSE;
-       }
-
-       /**
-        * Returns a hash map of property names and property values
-        *
-        * @return array The properties
-        * @internal
-        */
-       public function _getProperties() {
-               return get_object_vars($this);
-       }
-
-       /**
-        * Returns a hash map of dirty properties and $values
-        *
-        * @return boolean
-        * @internal
-        */
-       public function _getDirtyProperties() {
-               if (!is_array($this->_cleanProperties)) throw new TX_EXTMVC_Persistence_Exception_CleanStateNotMemorized('The clean state of the object "' . get_class($this) . '" has not been memorized before asking _isDirty().', 1233309106);
-               if ($this->uid !== NULL && $this->uid != $this->_cleanProperties['uid']) throw new TX_EXTMVC_Persistence_Exception_TooDirty('The uid "' . $this->uid . '" has been modified, that is simply too much.', 1222871239);
-               $dirtyProperties = array();
-               foreach ($this->_cleanProperties as $propertyName => $propertyValue) {
-                       if ($this->$propertyName !== $propertyValue) {
-                               $dirtyProperties[$propertyName] = $this->$propertyName;
-                       }
-               }
-               return $dirtyProperties;
-       }
-
-       /**
-        * Saves a copy of values of the persitable properties inside the object itself. This method is normally
-        * called right after it's reconstitution from a storage. 
-        *
-        * @return void
-        * @author Jochen Rau <jochen.rau@typoplanet.de>
-        */
-       private function initializeCleanProperties() {
-               $properties = get_object_vars($this);
-               $dataMapper = t3lib_div::makeInstance('TX_EXTMVC_Persistence_Mapper_ObjectRelationalMapper');
-               foreach ($properties as $propertyName => $propertyValue) {
-                       if ($dataMapper->isPersistableProperty(get_class($this), $propertyName)) {
-                               $this->_cleanProperties[$propertyName] = NULL;
-                       }
-               }
-               $this->_cleanProperties['uid'] = NULL;
-       }
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractEntity.php b/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractEntity.php
deleted file mode 100644 (file)
index 6b6b17b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An abstract Entity. An Entity is an object fundamentally defined not by its attributes, 
- * but by a thread of continuity and identity (e.g. a person).
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-abstract class TX_EXTMVC_DomainObject_AbstractEntity extends TX_EXTMVC_DomainObject_AbstractDomainObject {
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractValueObject.php b/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_AbstractValueObject.php
deleted file mode 100644 (file)
index e4ed9df..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A abstract Value Object. A Value Object is an object that describes some characteristic 
- * or attribute (e.g. a color) but carries no concept of identity.
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-abstract class TX_EXTMVC_DomainObject_AbstractValueObject extends TX_EXTMVC_DomainObject_AbstractDomainObject {
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_DomainObjectInterface.php b/typo3/sysext/extbase/Classes/DomainObject/TX_EXTMVC_DomainObject_DomainObjectInterface.php
deleted file mode 100644 (file)
index da84899..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A Domain Object Interface
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-interface TX_EXTMVC_DomainObject_DomainObjectInterface {
-
-       /**
-        * Reconstitutes a property. This method should only be called at reconstitution time!
-        *
-        * @param string $propertyName
-        * @param string $value
-        * @return void
-        * @internal
-        */
-       public function _reconstituteProperty($propertyName, $value);
-
-       /**
-        * Register an object's clean state, e.g. after it has been reconstituted
-        * from the database
-        *
-        * @return void
-        * @internal
-        */
-       public function _memorizeCleanState();
-
-       /**
-        * Returns TRUE if the properties were modified after reconstitution
-        *
-        * @return boolean
-        * @internal
-        */
-       public function _isDirty();
-       /**
-        * Returns a hash map of property names and property values
-        *
-        * @return array The properties
-        * @internal
-        */
-       public function _getProperties();
-       /**
-        * Returns a hash map of dirty properties and $values
-        *
-        * @return boolean
-        * @internal
-        */
-       public function _getDirtyProperties();
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception.php b/typo3/sysext/extbase/Classes/Exception.php
new file mode 100644 (file)
index 0000000..79a3593
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A generic MVC exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Exception extends Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InfiniteLoop.php b/typo3/sysext/extbase/Classes/Exception/InfiniteLoop.php
new file mode 100644 (file)
index 0000000..0503401
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Infinite Loop" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InfiniteLoop extends TX_EXTMVC_Exception {
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidActionName.php b/typo3/sysext/extbase/Classes/Exception/InvalidActionName.php
new file mode 100644 (file)
index 0000000..1641f0c
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "invalid action name" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidActionName extends TX_EXTMVC_Exception {
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidArgumentName.php b/typo3/sysext/extbase/Classes/Exception/InvalidArgumentName.php
new file mode 100644 (file)
index 0000000..9b025b7
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Argument Name" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidArgumentName extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidArgumentType.php b/typo3/sysext/extbase/Classes/Exception/InvalidArgumentType.php
new file mode 100644 (file)
index 0000000..265f4ba
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Argument Type" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+
+class InvalidArgumentType extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidArgumentValue.php b/typo3/sysext/extbase/Classes/Exception/InvalidArgumentValue.php
new file mode 100644 (file)
index 0000000..4fc5238
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Argument Value" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+
+class InvalidArgumentValue extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidController.php b/typo3/sysext/extbase/Classes/Exception/InvalidController.php
new file mode 100644 (file)
index 0000000..5d8e4f5
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Controller" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+
+class InvalidController extends TX_EXTMVC_Exception {
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidControllerName.php b/typo3/sysext/extbase/Classes/Exception/InvalidControllerName.php
new file mode 100644 (file)
index 0000000..029ce6c
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Controller Name" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidControllerName extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidFormat.php b/typo3/sysext/extbase/Classes/Exception/InvalidFormat.php
new file mode 100644 (file)
index 0000000..407348b
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Format" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidFormat extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidMarker.php b/typo3/sysext/extbase/Classes/Exception/InvalidMarker.php
new file mode 100644 (file)
index 0000000..2f29d60
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Marker" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidMarker extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidPackageKey.php b/typo3/sysext/extbase/Classes/Exception/InvalidPackageKey.php
new file mode 100644 (file)
index 0000000..715e572
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Extension Key" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidExtensionKey extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidPart.php b/typo3/sysext/extbase/Classes/Exception/InvalidPart.php
new file mode 100644 (file)
index 0000000..70907c5
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Part" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidPart extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidRequestMethod.php b/typo3/sysext/extbase/Classes/Exception/InvalidRequestMethod.php
new file mode 100644 (file)
index 0000000..a230e88
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Request Method" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidRequestMethod extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidRequestType.php b/typo3/sysext/extbase/Classes/Exception/InvalidRequestType.php
new file mode 100644 (file)
index 0000000..4b91325
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Request Type" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidRequestType extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidRoutePartHandler.php b/typo3/sysext/extbase/Classes/Exception/InvalidRoutePartHandler.php
new file mode 100644 (file)
index 0000000..87909c5
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "invalid RoutePartHandler" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidRoutePartHandler extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidTemplateSource.php b/typo3/sysext/extbase/Classes/Exception/InvalidTemplateSource.php
new file mode 100644 (file)
index 0000000..9cbd49c
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Template Resource" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidTemplateSource extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/InvalidViewHelper.php b/typo3/sysext/extbase/Classes/Exception/InvalidViewHelper.php
new file mode 100644 (file)
index 0000000..dc2b1ff
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "invalid ViewHelper" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidViewHelper extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/NoSuchAction.php b/typo3/sysext/extbase/Classes/Exception/NoSuchAction.php
new file mode 100644 (file)
index 0000000..87819b7
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A "No Such Action" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class NoSuchAction extends TX_EXTMVC_Exception {
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/NoSuchArgument.php b/typo3/sysext/extbase/Classes/Exception/NoSuchArgument.php
new file mode 100644 (file)
index 0000000..28e559d
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A "No Such Argument" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class NoSuchArgument extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/NoSuchController.php b/typo3/sysext/extbase/Classes/Exception/NoSuchController.php
new file mode 100644 (file)
index 0000000..59988ef
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A "No Such Controller" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class NoSuchController extends TX_EXTMVC_Exception {
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/StopAction.php b/typo3/sysext/extbase/Classes/Exception/StopAction.php
new file mode 100644 (file)
index 0000000..9307169
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * This exception is thrown by a controller to stop the execution of the current
+ * action and return the control to the dispatcher. The dispatcher catches this
+ * exception and - depending on the "dispatched" status of the request - either
+ * continues dispatching the request or returns control to the request handler.
+ *
+ * See the Action Controller's forward() and redirect() methods for more information.
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Exception_StopAction extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/StopUncachedAction.php b/typo3/sysext/extbase/Classes/Exception/StopUncachedAction.php
new file mode 100644 (file)
index 0000000..af8d685
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * This exception is thrown by a controller to stop the execution of the current
+ * action and return the control to the dispatcher. The dispatcher catches this
+ * exception and sets the extension to USER_INT (not cached)
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Exception_StopUncachedAction extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/SuccessiveDynamicRouteParts.php b/typo3/sysext/extbase/Classes/Exception/SuccessiveDynamicRouteParts.php
new file mode 100644 (file)
index 0000000..c9812bb
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Successive Dynamic RoutePart" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class SuccessiveDynamicRouteParts extends TX_EXTMVC_Exception {
+
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InfiniteLoop.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InfiniteLoop.php
deleted file mode 100644 (file)
index 0503401..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Infinite Loop" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InfiniteLoop extends TX_EXTMVC_Exception {
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidActionName.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidActionName.php
deleted file mode 100644 (file)
index 1641f0c..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "invalid action name" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidActionName extends TX_EXTMVC_Exception {
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentName.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentName.php
deleted file mode 100644 (file)
index 9b025b7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Argument Name" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidArgumentName extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentType.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentType.php
deleted file mode 100644 (file)
index 265f4ba..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Argument Type" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-
-class InvalidArgumentType extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentValue.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidArgumentValue.php
deleted file mode 100644 (file)
index 4fc5238..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Argument Value" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-
-class InvalidArgumentValue extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidController.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidController.php
deleted file mode 100644 (file)
index 5d8e4f5..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Controller" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-
-class InvalidController extends TX_EXTMVC_Exception {
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidControllerName.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidControllerName.php
deleted file mode 100644 (file)
index 029ce6c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Controller Name" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidControllerName extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidFormat.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidFormat.php
deleted file mode 100644 (file)
index 407348b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Format" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidFormat extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidMarker.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidMarker.php
deleted file mode 100644 (file)
index 2f29d60..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Marker" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidMarker extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidPackageKey.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidPackageKey.php
deleted file mode 100644 (file)
index 715e572..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Extension Key" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidExtensionKey extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidPart.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidPart.php
deleted file mode 100644 (file)
index 70907c5..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Part" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidPart extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRequestMethod.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRequestMethod.php
deleted file mode 100644 (file)
index a230e88..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Request Method" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidRequestMethod extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRequestType.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRequestType.php
deleted file mode 100644 (file)
index 4b91325..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Request Type" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidRequestType extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRoutePartHandler.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidRoutePartHandler.php
deleted file mode 100644 (file)
index 87909c5..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "invalid RoutePartHandler" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidRoutePartHandler extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidTemplateSource.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidTemplateSource.php
deleted file mode 100644 (file)
index 9cbd49c..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Template Resource" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidTemplateSource extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidViewHelper.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_InvalidViewHelper.php
deleted file mode 100644 (file)
index dc2b1ff..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "invalid ViewHelper" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidViewHelper extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchAction.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchAction.php
deleted file mode 100644 (file)
index 87819b7..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A "No Such Action" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class NoSuchAction extends TX_EXTMVC_Exception {
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchArgument.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchArgument.php
deleted file mode 100644 (file)
index 28e559d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A "No Such Argument" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class NoSuchArgument extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchController.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_NoSuchController.php
deleted file mode 100644 (file)
index 59988ef..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A "No Such Controller" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class NoSuchController extends TX_EXTMVC_Exception {
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_StopAction.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_StopAction.php
deleted file mode 100644 (file)
index 9307169..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * This exception is thrown by a controller to stop the execution of the current
- * action and return the control to the dispatcher. The dispatcher catches this
- * exception and - depending on the "dispatched" status of the request - either
- * continues dispatching the request or returns control to the request handler.
- *
- * See the Action Controller's forward() and redirect() methods for more information.
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Exception_StopAction extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_StopUncachedAction.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_StopUncachedAction.php
deleted file mode 100644 (file)
index af8d685..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * This exception is thrown by a controller to stop the execution of the current
- * action and return the control to the dispatcher. The dispatcher catches this
- * exception and sets the extension to USER_INT (not cached)
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Exception_StopUncachedAction extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_SuccessiveDynamicRouteParts.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_SuccessiveDynamicRouteParts.php
deleted file mode 100644 (file)
index c9812bb..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Successive Dynamic RoutePart" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class SuccessiveDynamicRouteParts extends TX_EXTMVC_Exception {
-
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_UnsupportedRequestType.php b/typo3/sysext/extbase/Classes/Exception/TX_EXTMVC_Exception_UnsupportedRequestType.php
deleted file mode 100644 (file)
index 72aeef7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Unsupported Request Type" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class UnsupportedRequestType extends TX_EXTMVC_Exception {
-
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Exception/UnsupportedRequestType.php b/typo3/sysext/extbase/Classes/Exception/UnsupportedRequestType.php
new file mode 100644 (file)
index 0000000..72aeef7
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Unsupported Request Type" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class UnsupportedRequestType extends TX_EXTMVC_Exception {
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception.php b/typo3/sysext/extbase/Classes/Persistence/Exception.php
new file mode 100644 (file)
index 0000000..ad28120
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A generic Persistence exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Persistence_Exception extends TX_EXTMVC_Exception {
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/InvalidClass.php b/typo3/sysext/extbase/Classes/Persistence/Exception/InvalidClass.php
new file mode 100644 (file)
index 0000000..a5ea4d5
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Class" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidClass extends TX_EXTMVC_Persistence_Exception {
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/InvalidPropertyType.php b/typo3/sysext/extbase/Classes/Persistence/Exception/InvalidPropertyType.php
new file mode 100644 (file)
index 0000000..64c9e4b
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Invalid Property Type" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class InvalidPropertyType extends TX_EXTMVC_Persistence_Exception {
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/MissingBackend.php b/typo3/sysext/extbase/Classes/Persistence/Exception/MissingBackend.php
new file mode 100644 (file)
index 0000000..10107b2
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A "Missing Backend" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class MissingBackend extends TX_EXTMVC_Persistence_Exception {
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_InvalidClass.php b/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_InvalidClass.php
deleted file mode 100644 (file)
index a5ea4d5..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Class" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidClass extends TX_EXTMVC_Persistence_Exception {
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_InvalidPropertyType.php b/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_InvalidPropertyType.php
deleted file mode 100644 (file)
index 64c9e4b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Invalid Property Type" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class InvalidPropertyType extends TX_EXTMVC_Persistence_Exception {
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_MissingBackend.php b/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_MissingBackend.php
deleted file mode 100644 (file)
index 10107b2..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A "Missing Backend" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class MissingBackend extends TX_EXTMVC_Persistence_Exception {
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_TooDirty.php b/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_TooDirty.php
deleted file mode 100644 (file)
index 8ba51b3..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * A "Too Dirty" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-// SK: What does "TooDirty" mean? The UID has been modified? I'd suggest a more understandable name :-)
-// JR: That's a class name Karsten has chosen. In deed, the exception will be thrown if UID has been modified 
-class TooDirty extends TX_EXTMVC_Persistence_Exception {
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_UnsupportedMethod.php b/typo3/sysext/extbase/Classes/Persistence/Exception/TX_EXTMVC_Persistence_Exception_UnsupportedMethod.php
deleted file mode 100644 (file)
index dbf7763..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
-*  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!
-***************************************************************/
-
-/**
- * An "Unsupported Method" exception
- *
- * @package TYPO3
- * @subpackage extmvc
- * @version $ID:$
- */
-class TX_EXTMVC_Persistence_Exception_UnsupportedMethod extends TX_EXTMVC_Persistence_Exception {
-}
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/TooDirty.php b/typo3/sysext/extbase/Classes/Persistence/Exception/TooDirty.php
new file mode 100644 (file)
index 0000000..8ba51b3
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A "Too Dirty" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+// SK: What does "TooDirty" mean? The UID has been modified? I'd suggest a more understandable name :-)
+// JR: That's a class name Karsten has chosen. In deed, the exception will be thrown if UID has been modified 
+class TooDirty extends TX_EXTMVC_Persistence_Exception {
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Exception/UnsupportedMethod.php b/typo3/sysext/extbase/Classes/Persistence/Exception/UnsupportedMethod.php
new file mode 100644 (file)
index 0000000..dbf7763
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * An "Unsupported Method" exception
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Persistence_Exception_UnsupportedMethod extends TX_EXTMVC_Persistence_Exception {
+}
+
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Mapper/ColumnMap.php b/typo3/sysext/extbase/Classes/Persistence/Mapper/ColumnMap.php
new file mode 100644 (file)
index 0000000..f226f04
--- /dev/null
@@ -0,0 +1,251 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A column map to map a column configured in $TCA on a property of a domain object.
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+// SK: I did not do an in-depth check of this class
+// SK: PHPDoc ;-)
+class TX_EXTMVC_Persistence_Mapper_ColumnMap {
+
+       /**
+        * Constants reflecting the type of relation
+        */
+       const RELATION_NONE = 0;
+       const RELATION_HAS_ONE = 1;
+       const RELATION_HAS_MANY = 2;
+       const RELATION_HAS_AND_BELONGS_TO_MANY = 3;
+
+       /**
+        * Constants reflecting the type of value
+        */
+       const TYPE_UNKNOWN = 0;
+       const TYPE_STRING = 1;
+       const TYPE_DATE = 2;
+       const TYPE_INTEGER = 3;
+       const TYPE_FLOAT = 4;
+       const TYPE_BOOLEAN = 5;
+
+       /**
+        * The property name corresponding to the table name
+        *
+        * @var string
+        **/
+       protected $propertyName;
+
+       /**
+        * The column name
+        *
+        * @var string
+        **/
+       protected $columnName;
+
+       /**
+        * The type of relation
+        *
+        * @var int
+        **/
+       protected $typeOfRelation;
+
+       /**
+        * The type of value
+        *
+        * @var int
+        **/
+       protected $typeOfValue;
+
+       /**
+        * The name of the child's class
+        *
+        * @var string
+        **/
+       protected $childClassName;
+
+       /**
+        * The name of the child's table
+        *
+        * @var string
+        **/
+       protected $childTableName;
+
+       /**
+        * The where clause to narrow down the selected child records
+        *
+        * @var string
+        **/
+       protected $childTableWhere;
+
+       /**
+        * The name of the field the results from the child's table are sorted by
+        *
+        * @var string
+        **/
+       protected $childSortByFieldName;
+
+       /**
+        * The name of the relation table
+        *
+        * @var string
+        **/
+       protected $relationTableName;
+
+       /**
+        * The name of the field holding the parents key
+        *
+        * @var string
+        **/
+       protected $parentKeyFieldName;
+
+       /**
+        * The name of the field holding the name of the table of the parent's records
+        *
+        * @var string
+        **/
+       protected $parentTableFieldName;
+
+       public function __construct($columnName) {
+               $this->setColumnName($columnName);
+               $this->setPropertyName(TX_EXTMVC_Utility_Strings::underscoredToLowerCamelCase($columnName));
+       }
+
+       public function setTypeOfRelation($typeOfRelation) {
+               switch ($typeOfRelation) {
+                       case self::RELATION_NONE;
+                       case self::RELATION_HAS_ONE;
+                       case self::RELATION_HAS_MANY;
+                       case self::RELATION_HAS_AND_BELONGS_TO_MANY;
+                               $this->typeOfRelation = $typeOfRelation;
+                               break;
+                       default:
+                               $this->typeOfRelation = NULL;
+                               break;
+               }
+       }
+
+       public function isRelation() {
+               return $this->typeOfRelation !== NULL && $this->typeOfRelation !== self::RELATION_NONE;
+       }
+
+       public function getTypeOfRelation() {
+               return $this->typeOfRelation;
+       }
+
+       public function setTypeOfValue($typeOfValue) {
+               switch ($typeOfValue) {
+                       case self::TYPE_UNKNOWN;
+                       case self::TYPE_STRING;
+                       case self::TYPE_DATE;
+                       case self::TYPE_INTEGER;
+                       case self::TYPE_FLOAT;
+                       case self::TYPE_BOOLEAN;
+                               $this->typeOfValue = $typeOfValue;
+                               break;
+                       default:
+                               $this->typeOfValue = NULL;
+                               break;
+               }
+       }
+
+       public function getTypeOfValue() {
+               return $this->typeOfValue;
+       }
+
+       public function setPropertyName($propertyName) {
+               $this->propertyName = $propertyName;
+       }
+
+       public function getPropertyName() {
+               return $this->propertyName;
+       }
+
+       public function setColumnName($columnName) {
+               $this->columnName = $columnName;
+       }
+
+       public function getColumnName() {
+               return $this->columnName;
+       }
+
+       public function setChildClassName($childClassName) {
+               $this->childClassName = $childClassName;
+       }
+
+       public function getChildClassName() {
+               return $this->childClassName;
+       }
+
+       public function setChildTableName($childTableName) {
+               $this->childTableName = $childTableName;
+       }
+
+       public function getChildTableName() {
+               return $this->childTableName;
+       }
+
+       public function setChildTableWhere($childTableWhere) {
+               $this->childTableWhere = $childTableWhere;
+       }
+
+       public function getChildTableWhere() {
+               return $this->childTableWhere;
+       }
+
+       public function setChildSortByFieldName($childSortByFieldName) {
+               $this->childSortByFieldName = $childSortByFieldName;
+       }
+
+       public function getChildSortByFieldName() {
+               return $this->childSortByFieldName;
+       }
+
+       public function setRelationTableName($relationTableName) {
+               $this->relationTableName = $relationTableName;
+       }
+
+       public function getRelationTableName() {
+               return $this->relationTableName;
+       }
+
+       public function setParentKeyFieldName($parentKeyFieldName) {
+               $this->parentKeyFieldName = $parentKeyFieldName;
+       }
+
+       public function getParentKeyFieldName() {
+               return $this->parentKeyFieldName;
+       }
+
+       public function setParentTableFieldName($parentTableFieldName) {
+               $this->parentTableFieldName = $parentTableFieldName;
+       }
+
+       public function getParentTableFieldName() {
+               return $this->parentTableFieldName;
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/typo3/sysext/extbase/Classes/Persistence/Mapper/DataMap.php b/typo3/sysext/extbase/Classes/Persistence/Mapper/DataMap.php
new file mode 100644 (file)
index 0000000..1818a45
--- /dev/null
@@ -0,0 +1,256 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2009 Jochen Rau <jochen.rau@typoplanet.de>
+*  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!
+***************************************************************/
+
+/**
+ * A data map to map a single table configured in $TCA on a domain object.
+ *
+ * @package TYPO3
+ * @subpackage extmvc
+ * @version $ID:$
+ */
+class TX_EXTMVC_Persistence_Mapper_DataMap {
+// SK: PHPDoc (even for getters and setters, sorry ;-) )
+// SK: I did not do an in-depth check of this class
+       /**
+        * The domain class name
+        *
+        * @var string
+        **/
+       protected $className;
+
+       /**
+        * The table name corresponding to the domain class configured in $TCA
+        *
+        * @var string
+        **/
+       protected $tableName;
+
+       /**
+        * An array of column maps configured in $TCA
+        *
+        * @var array
+        **/
+       protected $columnMaps;
+
+       /**
+        * Constructs this DataMap
+        *
+        * @param string $className The class name. This determines the table to fetch the configuration for
+        */
+       public function __construct($className) {
+               $this->setClassName($className);
+               // SK: strtolower(..) is the wrong conversion for the class name. See the notice in the dispatcher (tt_news ->tx_ttnews)
+               $this->setTableName(strtolower($this->className));
+               t3lib_div::loadTCA($this->getTableName());
+       }
+
+       public function setClassName($className) {
+               $this->className = $className;
+       }
+
+       public function getClassName() {
+               return $this->className;
+       }
+
+       public function setTableName($tableName) {
+               $this->tableName = $tableName;
+       }
+
+       public function getTableName() {
+               return $this->tableName;
+       }
+
+       // SK: Why is initialize() not called in the constructor? Without initialize(), the object cannot do anything - or am I wrong here?
+       public function initialize() {
+               $columns = $GLOBALS['TCA'][$this->getTableName()]['columns'];
+               if (is_array($columns)) {
+                       $this->addCommonColumns();
+                       foreach ($columns as $columnName => $columnConfiguration) {
+                               $columnMap = new TX_EXTMVC_Persistence_Mapper_ColumnMap($columnName, $this);
+                               $this->setTypeOfValue($columnMap, $columnConfiguration);
+                               // TODO support for IRRE
+                               // TODO support for MM_insert_fields and MM_match_fields
+                               // SK: Discuss the above things
+                               $this->setRelations($columnMap, $columnConfiguration);
+                               $this->addColumnMap($columnMap);
+                       }
+               } else {
+                       // TODO Throw exception
+               }
+       }
+
+       protected function addCommonColumns() {
+               $this->addColumn('uid', TX_EXTMVC_Persistence_Mapper_ColumnMap::TYPE_INTEGER);
+               $this->addColumn('pid', TX_EXTMVC_Persistence_Mapper_ColumnMap::TYPE_INTEGER);
+               $this->addColumn('tstamp', TX_EXTMVC_Persistence_Mapper_ColumnMap::TYPE_DATE);
+               $this->addColumn('crdate', TX_EXTMVC_Persistence_Mapper_ColumnMap::TYPE_DATE);
+               $this->addColumn('cruser_id', TX_EXTMVC_Persistence_Mapper_ColumnMap::TYPE_INTEGER);
+               if ($this->getDeletedColumnName() !== NULL) {
+                       $this->addColumn($this->getDeletedColumnName(), TX_EXTMVC_Persistence_Mapper_ColumnMap::TYPE_BOOLEAN);
+               }
+               if ($this->getHiddenColumnName() !== NULL) {
+                       $this->addColumn($this->getHiddenColumnName(), TX_EXTMVC_Persistence_Mapper_ColumnMap::TYPE_BOOLEAN);
+               }
+       }
+
+       protected function setTypeOfValue(TX_EXTMVC_Persistence_Mapper_ColumnMap &$columnMap, $columnConfiguration) {
+               if (strpos($columnConfiguration['config']['eval'], 'date') !== FALSE
+                       || strpos($columnConfiguration['config']['eval'], 'datetime') !== FALSE) {
+                   &