Cleaned up doctrine removal fix changes
This commit is contained in:
parent
65be0a415e
commit
1d2887a83b
|
@ -317,8 +317,7 @@ class FOQElasticaExtension extends Extension
|
||||||
$listenerDef->replaceArgument(0, new Reference($objectPersisterId));
|
$listenerDef->replaceArgument(0, new Reference($objectPersisterId));
|
||||||
$listenerDef->replaceArgument(1, $typeConfig['model']);
|
$listenerDef->replaceArgument(1, $typeConfig['model']);
|
||||||
$listenerDef->replaceArgument(3, $typeConfig['identifier']);
|
$listenerDef->replaceArgument(3, $typeConfig['identifier']);
|
||||||
$events = $this->getDoctrineEvents($typeConfig);
|
$listenerDef->replaceArgument(2, $this->getDoctrineEvents($typeConfig));
|
||||||
$listenerDef->replaceArgument(2, $events);
|
|
||||||
switch ($typeConfig['driver']) {
|
switch ($typeConfig['driver']) {
|
||||||
case 'orm': $listenerDef->addTag('doctrine.event_subscriber'); break;
|
case 'orm': $listenerDef->addTag('doctrine.event_subscriber'); break;
|
||||||
case 'mongodb': $listenerDef->addTag('doctrine.common.event_subscriber'); break;
|
case 'mongodb': $listenerDef->addTag('doctrine.common.event_subscriber'); break;
|
||||||
|
@ -336,11 +335,13 @@ class FOQElasticaExtension extends Extension
|
||||||
'update' => array('postUpdate'),
|
'update' => array('postUpdate'),
|
||||||
'delete' => array('postRemove', 'preRemove')
|
'delete' => array('postRemove', 'preRemove')
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($eventMapping as $event => $doctrineEvents) {
|
foreach ($eventMapping as $event => $doctrineEvents) {
|
||||||
if (isset($typeConfig['listener'][$event]) && $typeConfig['listener'][$event]) {
|
if (isset($typeConfig['listener'][$event]) && $typeConfig['listener'][$event]) {
|
||||||
$events = array_merge($events, $doctrineEvents);
|
$events = array_merge($events, $doctrineEvents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $events;
|
return $events;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,19 +28,19 @@ abstract class AbstractListener
|
||||||
*/
|
*/
|
||||||
protected $events;
|
protected $events;
|
||||||
|
|
||||||
protected $identifier;
|
protected $esIdentifierField;
|
||||||
protected $scheduledForRemoval;
|
protected $scheduledForRemoval;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
**/
|
**/
|
||||||
public function __construct(ObjectPersisterInterface $objectPersister, $objectClass, array $events, $identifier = 'id')
|
public function __construct(ObjectPersisterInterface $objectPersister, $objectClass, array $events, $esIdentifierField = 'id')
|
||||||
{
|
{
|
||||||
$this->objectPersister = $objectPersister;
|
$this->objectPersister = $objectPersister;
|
||||||
$this->objectClass = $objectClass;
|
$this->objectClass = $objectClass;
|
||||||
$this->events = $events;
|
$this->events = $events;
|
||||||
$this->identifier = $identifier;
|
$this->esIdentifierField = $esIdentifierField;
|
||||||
$this->scheduledForRemoval = new \SplObjectStorage();
|
$this->scheduledForRemoval = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,15 +53,16 @@ abstract class AbstractListener
|
||||||
|
|
||||||
protected function scheduleForRemoval($object)
|
protected function scheduleForRemoval($object)
|
||||||
{
|
{
|
||||||
$getIdentifierMethod = 'get' . ucfirst($this->identifier);
|
$getEsIdentifierMethod = 'get' . ucfirst($this->esIdentifierField);
|
||||||
$this->scheduledForRemoval[$object] = $object->$getIdentifierMethod();
|
$this->scheduledForRemoval[spl_object_hash($object)] = $object->$getEsIdentifierMethod();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function removeIfScheduled($object)
|
protected function removeIfScheduled($object)
|
||||||
{
|
{
|
||||||
if (isset($this->scheduledForRemoval[$object])) {
|
$objectHash = spl_object_hash($object);
|
||||||
$this->objectPersister->deleteById($this->scheduledForRemoval[$object]);
|
if (isset($this->scheduledForRemoval[$objectHash])) {
|
||||||
|
$this->objectPersister->deleteById($this->scheduledForRemoval[$objectHash]);
|
||||||
|
unset($this->scheduledForRemoval[$objectHash]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,5 +43,4 @@ class Listener extends AbstractListener implements EventSubscriber
|
||||||
$this->removeIfScheduled($entity);
|
$this->removeIfScheduled($entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,13 +61,10 @@ class ObjectPersister implements ObjectPersisterInterface
|
||||||
* @param object $object
|
* @param object $object
|
||||||
* @return null
|
* @return null
|
||||||
**/
|
**/
|
||||||
public function deleteOne($object, $id = null)
|
public function deleteOne($object)
|
||||||
{
|
{
|
||||||
if (!$id) {
|
$document = $this->transformToElasticaDocument($object);
|
||||||
$document = $this->transformToElasticaDocument($object);
|
$this->type->deleteById($document->getId());
|
||||||
$id = $document->getId();
|
|
||||||
}
|
|
||||||
$this->type->deleteById($id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -107,5 +104,4 @@ class ObjectPersister implements ObjectPersisterInterface
|
||||||
{
|
{
|
||||||
return $this->transformer->transform($object, $this->fields);
|
return $this->transformer->transform($object, $this->fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ use FOQ\ElasticaBundle\Doctrine\MongoDB\Listener;
|
||||||
|
|
||||||
class Document
|
class Document
|
||||||
{
|
{
|
||||||
|
|
||||||
public function getId()
|
public function getId()
|
||||||
{
|
{
|
||||||
return ListenerTest::DOCUMENT_ID;
|
return ListenerTest::DOCUMENT_ID;
|
||||||
|
@ -16,7 +15,6 @@ class Document
|
||||||
{
|
{
|
||||||
return ListenerTest::DOCUMENT_IDENTIFIER;
|
return ListenerTest::DOCUMENT_IDENTIFIER;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,7 +22,6 @@ class Document
|
||||||
*/
|
*/
|
||||||
class ListenerTest extends \PHPUnit_Framework_TestCase
|
class ListenerTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
const DOCUMENT_ID = 78;
|
const DOCUMENT_ID = 78;
|
||||||
const DOCUMENT_IDENTIFIER = 826;
|
const DOCUMENT_IDENTIFIER = 826;
|
||||||
|
|
||||||
|
@ -129,5 +126,4 @@ class ListenerTest extends \PHPUnit_Framework_TestCase
|
||||||
$listener->preRemove($eventArgsMock);
|
$listener->preRemove($eventArgsMock);
|
||||||
$listener->postRemove($eventArgsMock);
|
$listener->postRemove($eventArgsMock);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ use FOQ\ElasticaBundle\Doctrine\ORM\Listener;
|
||||||
|
|
||||||
class Entity
|
class Entity
|
||||||
{
|
{
|
||||||
|
|
||||||
public function getId()
|
public function getId()
|
||||||
{
|
{
|
||||||
return ListenerTest::ENTITY_ID;
|
return ListenerTest::ENTITY_ID;
|
||||||
|
@ -16,7 +15,6 @@ class Entity
|
||||||
{
|
{
|
||||||
return ListenerTest::ENTITY_IDENTIFIER;
|
return ListenerTest::ENTITY_IDENTIFIER;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,7 +22,6 @@ class Entity
|
||||||
*/
|
*/
|
||||||
class ListenerTest extends \PHPUnit_Framework_TestCase
|
class ListenerTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
const ENTITY_ID = 21;
|
const ENTITY_ID = 21;
|
||||||
const ENTITY_IDENTIFIER = 912;
|
const ENTITY_IDENTIFIER = 912;
|
||||||
|
|
||||||
|
@ -129,5 +126,4 @@ class ListenerTest extends \PHPUnit_Framework_TestCase
|
||||||
$listener->preRemove($eventArgsMock);
|
$listener->preRemove($eventArgsMock);
|
||||||
$listener->postRemove($eventArgsMock);
|
$listener->postRemove($eventArgsMock);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue