diff --git a/docs/index.rst b/docs/index.rst index 07470be..161c751 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -89,3 +89,11 @@ Storage ------- ... + +Persistence +~~~~~~~~~~~ + +.. note:: + + Describe special actions required with PHPCR-ODM when persisting documents + with collection mappings. diff --git a/src/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdater.php b/src/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdater.php index d362632..8a7e4c0 100644 --- a/src/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdater.php +++ b/src/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdater.php @@ -2,14 +2,11 @@ namespace Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm; -use Doctrine\Common\EventSubscriber; -use Doctrine\Common\Persistence\Event\LifecycleEventArgs; use Doctrine\Common\Util\ClassUtils; +use Doctrine\ODM\PHPCR\DocumentManagerInterface; use Doctrine\ODM\PHPCR\Event; use Metadata\MetadataFactory; use Metadata\MetadataFactoryInterface; -use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\PropertyEncoder; -use Doctrine\ODM\PHPCR\DocumentManagerInterface; /** * The collection identifier updater updates the IDs (paths) of any documents @@ -79,4 +76,3 @@ public function update(DocumentManagerInterface $documentManager, $document) } } } - diff --git a/src/Storage/Doctrine/PhpcrOdm/Subscriber/CollectionSubscriber.php b/src/Storage/Doctrine/PhpcrOdm/Subscriber/CollectionSubscriber.php index 0a1b08d..c434e2a 100644 --- a/src/Storage/Doctrine/PhpcrOdm/Subscriber/CollectionSubscriber.php +++ b/src/Storage/Doctrine/PhpcrOdm/Subscriber/CollectionSubscriber.php @@ -4,14 +4,14 @@ use Doctrine\Common\EventSubscriber; use Doctrine\Common\Persistence\Event\LifecycleEventArgs; +use Doctrine\Common\Persistence\Event\ManagerEventArgs; use Doctrine\Common\Util\ClassUtils; use Doctrine\ODM\PHPCR\Event; +use Doctrine\ODM\PHPCR\Mapping\ClassMetadata; use Metadata\MetadataFactory; use Metadata\MetadataFactoryInterface; -use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\PropertyEncoder; -use Doctrine\ODM\PHPCR\Mapping\ClassMetadata; -use Doctrine\Common\Persistence\Event\ManagerEventArgs; use PHPCR\Util\PathHelper; +use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\PropertyEncoder; /** * This class provides exception messages for cases when the collection @@ -37,7 +37,7 @@ public function getSubscribedEvents() { return [ Event::prePersist, - Event::preFlush + Event::preFlush, ]; } @@ -101,7 +101,7 @@ public function prePersist(LifecycleEventArgs $args) if (!isset($ctMetadata->propertyMetadata[$childrenField])) { continue; } - + $childCtMetadata = $ctMetadata->propertyMetadata[$childrenField]; $children = $odmMetadata->getFieldValue($document, $childrenField); @@ -112,7 +112,7 @@ public function prePersist(LifecycleEventArgs $args) $this->stack[] = [ 'children' => $children, 'ct_metadata' => $childCtMetadata, - 'field' => $childrenField + 'field' => $childrenField, ]; } } diff --git a/tests/Functional/Container.php b/tests/Functional/Container.php index 82ebe5c..f257afb 100644 --- a/tests/Functional/Container.php +++ b/tests/Functional/Container.php @@ -25,6 +25,7 @@ use Psi\Component\ContentType\Form\Extension\FieldExtension; use Psi\Component\ContentType\Metadata\Driver\AnnotationDriver as CTAnnotationDriver; use Psi\Component\ContentType\Metadata\Driver\ArrayDriver; +use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\CollectionIdentifierUpdater; use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\FieldMapper; use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\NodeTypeRegistrator as CtNodeTypeRegistrator; use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\PropertyEncoder; @@ -44,7 +45,6 @@ use Psi\Component\ContentType\View\ScalarView; use Psi\Component\ContentType\ViewRegistry; use Symfony\Component\Form\Forms; -use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\CollectionIdentifierUpdater; class Container extends PimpleContainer { diff --git a/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectTest.php b/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectTest.php index 7498519..3a82e9b 100644 --- a/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectTest.php +++ b/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectTest.php @@ -209,4 +209,3 @@ private function createArticleSlideshow() return $article; } } - diff --git a/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectUnrestrictTest.php b/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectUnrestrictTest.php index 5cb3429..c3eca67 100644 --- a/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectUnrestrictTest.php +++ b/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ObjectUnrestrictTest.php @@ -2,7 +2,6 @@ namespace Psi\Component\ContentType\Tests\Functional\Storage\Doctrine\PhpcrOdm; -use Doctrine\ODM\PHPCR\ChildrenCollection; use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\Article; use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\ArticleWithRestrictedChildren; use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\Image; @@ -15,12 +14,13 @@ class ObjectUnrestrictTest extends PhpcrOdmTestCase public function init(array $mapping) { $container = $this->getContainer([ - 'mapping' => $mapping + 'mapping' => $mapping, ]); $this->documentManager = $container->get('doctrine_phpcr.document_manager'); $this->initPhpcr($this->documentManager); $this->updater = $container->get('psi_content_type.storage.doctrine.phpcr_odm.collection_updater'); } + /** * It should automatically allow mapped content objects as children. */ @@ -90,7 +90,7 @@ public function testCollectionAddToValidChildren() $article->id = '/test/article'; $article->title = 'Foo'; $article->date = new \DateTime(); - $article->slideshow = [ $image1, $image2, $image3 ]; + $article->slideshow = [$image1, $image2, $image3]; $this->documentManager->persist($article); $this->updater->update($this->documentManager, $article); @@ -100,7 +100,6 @@ public function testCollectionAddToValidChildren() $this->documentManager->find(null, '/test/article'); } - private function createArticleSlideshow() { $article = new Article(); @@ -119,4 +118,3 @@ private function createArticleSlideshow() return $article; } } - diff --git a/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ScalarTest.php b/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ScalarTest.php index 3ec7493..c4f9142 100644 --- a/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ScalarTest.php +++ b/tests/Functional/Storage/Doctrine/PhpcrOdm/CollectionType/ScalarTest.php @@ -2,10 +2,7 @@ namespace Psi\Component\ContentType\Tests\Functional\Storage\Doctrine\PhpcrOdm; -use Doctrine\ODM\PHPCR\ChildrenCollection; use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\Article; -use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\ArticleWithRestrictedChildren; -use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\Image; class ScalarTest extends PhpcrOdmTestCase { @@ -66,4 +63,3 @@ public function testIntegerCollection() $this->assertSame([12, 13, 14], $article->numbers); } } - diff --git a/tests/Functional/Storage/Doctrine/PhpcrOdm/GeneralTest.php b/tests/Functional/Storage/Doctrine/PhpcrOdm/GeneralTest.php index b8634f0..d93e2e8 100644 --- a/tests/Functional/Storage/Doctrine/PhpcrOdm/GeneralTest.php +++ b/tests/Functional/Storage/Doctrine/PhpcrOdm/GeneralTest.php @@ -2,9 +2,7 @@ namespace Psi\Component\ContentType\Tests\Functional\Storage\Doctrine\PhpcrOdm; -use Doctrine\ODM\PHPCR\ChildrenCollection; use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\Article; -use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\ArticleWithRestrictedChildren; use Psi\Component\ContentType\Tests\Functional\Example\Storage\Doctrine\PhpcrOdm\Image; class GeneralTest extends PhpcrOdmTestCase diff --git a/tests/Unit/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdaterTest.php b/tests/Unit/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdaterTest.php index 62693bd..f344e8a 100644 --- a/tests/Unit/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdaterTest.php +++ b/tests/Unit/Storage/Doctrine/PhpcrOdm/CollectionIdentifierUpdaterTest.php @@ -2,13 +2,13 @@ namespace Psi\Component\ContentType\Tests\Unit\Storage\Doctrine\PhpcrOdm; -use Metadata\MetadataFactoryInterface; -use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\PropertyEncoder; -use Doctrine\ODM\PHPCR\Mapping\ClassMetadataFactory; +use Doctrine\ODM\PHPCR\DocumentManagerInterface; use Doctrine\ODM\PHPCR\Mapping\ClassMetadata as OdmMetadata; +use Doctrine\ODM\PHPCR\Mapping\ClassMetadataFactory; +use Metadata\MetadataFactoryInterface; use Psi\Component\ContentType\Metadata\ClassMetadata; use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\CollectionIdentifierUpdater; -use Doctrine\ODM\PHPCR\DocumentManagerInterface; +use Psi\Component\ContentType\Storage\Doctrine\PhpcrOdm\PropertyEncoder; class CollectionIdentifierUpdaterTest extends \PHPUnit_Framework_TestCase { @@ -63,7 +63,7 @@ public function testIgnoreNonCtMappings() $this->odmMetadata->getIdentifierValue($this->document)->willReturn($identifier); $this->odmMetadata->childrenMappings = [ - 'some_collection' + 'some_collection', ]; $this->odmMetadata->getFieldValue($this->document, 'some_collection')->shouldNotBeCalled(); @@ -86,7 +86,7 @@ public function testSetIdentifierValue() $this->odmMetadata->getIdentifierValue($this->document)->willReturn($identifier); $this->odmMetadata->childrenMappings = [ - 'some_collection' + 'some_collection', ]; $this->ctMetadata->propertyMetadata = [ 'some_collection' => 'something',