Revert "[BUGFIX] keep PersistentObjectConverterTest from cloning objects"
authorSebastian Kurfuerst <sebastian@typo3.org>
Tue, 7 Feb 2012 05:59:00 +0000 (06:59 +0100)
committerSebastian Kurfuerst <sebastian@typo3.org>
Tue, 7 Feb 2012 06:02:54 +0000 (07:02 +0100)
Sorry that I let this slip through... The problem now is the following:

If deactivating *clone*, the automatic persistence would find changes even
if the controller decides that the object should not be saved. Thus, this
is a breaking change which can also have a huge security impact. That's
why I am reverting it now.

Thus, we have two possibilities to solve the issue:

1) we revert the patch, clone the objects and the user has to call
   $this->myRepository->update()...
   -> that's what I did now...

2) we could change the behavior as follows, as it is done in FLOW3 now:

- we remove the "clone"
- automatic persistence of objects will be COMPLETELY deactivated
- the user *explicitely* has to save a changed aggregate root into ...Repository->update()
- everything which is part of this aggregate will be saved with it, but referenced other aggregate roots will not be.

The second concept is implemented in FLOW3, and is much more consistent
and a lot faster (in fact, I consider the automagic persistence a design fault
of the early FLOW3 as of now...)

As 2) would not be backwards compatible we'd need to activate it using
a feature flag.

This reverts commit cf1b620b53118eaa89e1817043c0c0f313343520
Conflicts:

Classes/Property/TypeConverter/PersistentObjectConverter.php

Change-Id: Ie6937e68cd87783f8b64942bdf862a08b572de89

typo3/sysext/extbase/Classes/Property/TypeConverter/PersistentObjectConverter.php

index 3f0f3e4..8589c9d 100644 (file)
@@ -195,7 +195,6 @@ class Tx_Extbase_Property_TypeConverter_PersistentObjectConverter extends Tx_Ext
                                if ($configuration === NULL || $configuration->getConfigurationValue('Tx_Extbase_Property_TypeConverter_PersistentObjectConverter', self::CONFIGURATION_MODIFICATION_ALLOWED) !== TRUE) {
                                        throw new Tx_Extbase_Property_Exception_InvalidPropertyMappingConfigurationException('Modification of persistent objects not allowed. To enable this, you need to set the PropertyMappingConfiguration Value "CONFIGURATION_MODIFICATION_ALLOWED" to TRUE.', 1297932028);
                                }
-
                                $object = clone $object;
                        }