/**
  * @param ObjectAdapterManager $oma
  */
 public function __construct(ObjectAdapterManager $oma)
 {
     $this->objectAdapterManager = $oma;
     $this->configuration = $this->objectAdapterManager->getConfiguration();
     $this->setCacheDriver($this->configuration->getMetadataCacheImpl());
     $this->driver = $this->configuration->getMetadataDriverImpl();
     $this->evm = $this->objectAdapterManager->getEventManager();
 }
 public function testLoadClassMetadataEvent()
 {
     $listener = new Listener();
     $evm = $this->objectAdapterManager->getEventManager();
     $evm->addEventListener(array(Event::loadClassMetadata), $listener);
     $meta = $this->getMetadataFor('Doctrine\\Tests\\ORM\\ODMAdapter\\Mapping\\Driver\\Model\\ReferenceMappingObject');
     $this->assertTrue($listener->called);
     $this->assertSame($this->objectAdapterManager, $listener->oma);
     $this->assertSame($meta, $listener->meta);
 }
 /**
  * Method will go through all mapped referenced objects and schedule them
  * for update if not jet done.
  *
  * @todo Check an own change compute mechanism.
  * Compute for Changes will be done inside the reference's UoW.
  */
 private function computeReferencedObjectsForUpdate()
 {
     foreach ($this->referencedObjects as $reference) {
         if (null === $this->getScheduledObjectForUpdate($reference['object'], $reference['fieldName']) && null === $this->getScheduledObjectForRemove($reference['object'], $reference['fieldName'])) {
             $classMetadata = $this->objectAdapterManager->getClassMetadata(get_class($reference['object']));
             // its same behavior as for update after persist
             if ($invoke = $this->eventListenersInvoker->getSubscribedSystems($classMetadata, Event::preUpdateReference)) {
                 $this->eventListenersInvoker->invoke($classMetadata, Event::preUpdateReference, $reference['object'], new LifecycleEventArgs($this->objectAdapterManager, $reference['fieldName'], $reference['object']), $invoke);
             }
             $this->syncCommonFields($reference['object'], $reference['referencedObject'], $classMetadata);
             $this->scheduleReferenceForUpdate($reference['object'], $reference['referencedObject'], $reference['fieldName']);
         }
     }
 }
 private function createObjectAdapterManager()
 {
     $configuration = new Configuration();
     $configuration->setManagers(array('reference-phpcr' => array('default' => $this->dm), 'reference-dbal-orm' => array('default' => $this->em)));
     $configuration->setClassMetadataFactoryName('Doctrine\\ORM\\ODMAdapter\\Mapping\\ClassMetadataFactory');
     $cache = new ArrayCache();
     $reader = new AnnotationReader($cache);
     $annotationDriver = new AnnotationDriver($reader);
     $annotationDriver->addPaths(array(__DIR__ . "/../../../Models"));
     $configuration->setMetadataDriverImpl($annotationDriver);
     $configuration->setProxyDir(__DIR__ . '/cache');
     $configuration->setAutoGenerateProxyClasses(true);
     $configuration->setProxyNamespace('__Test__');
     $configuration->setClassMetadataFactoryName('Doctrine\\ORM\\ODMAdapter\\Mapping\\ClassMetadataFactory');
     $this->objectAdapterManager = ObjectAdapterManager::create($configuration);
     $this->objectAdapterManager->addListenersToEventManagers();
 }
 /**
  * Detects if an object is mapped and if it isn't scheduled in the UoW as an reference to avoid
  * circular references.
  *
  * @param $object
  * @param \Doctrine\ORM\ODMAdapter\ObjectAdapterManager $objectAdapterManager
  * @return bool
  */
 protected function isReferenceable($object, ObjectAdapterManager $objectAdapterManager)
 {
     return !$objectAdapterManager->hasValidMapping(get_class($object)) || $objectAdapterManager->isReferenced($object) || $objectAdapterManager->isSleepingProxy($object) ? false : true;
 }
 /**
  * Initializes a new ListenersInvoker instance.
  *
  * @param ObjectAdapterManager $objectAdapterManager
  */
 public function __construct(ObjectAdapterManager $objectAdapterManager)
 {
     $this->eventManager = $objectAdapterManager->getEventManager();
     $this->objectAdapterManager = $objectAdapterManager;
 }
 /**
  * @expectedException \Doctrine\ORM\ODMAdapter\Exception\MappingException
  * @expectedExceptionMessage No reference mapping on stdClass
  */
 public function testGetManagerObjectWithoutTypeThrowsException()
 {
     $this->objectAdapterManager->getManager(new \stdClass(), 'test-field');
 }
 /**
  * Detects if an object is mapped and if it isn't scheduled in the UoW as an reference to avoid
  * circular references.
  *
  * @param $object
  * @return bool
  */
 protected function isReferenceable($object)
 {
     return !$this->objectAdapterManager->hasValidMapping(get_class($object)) || $this->objectAdapterManager->isReferenced($object) ? false : true;
 }