Skip to content

Commit 0837430

Browse files
committed
clean the object manager after r/w operations
1 parent d63f8e7 commit 0837430

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

src/Test/Functional/StatementRepositoryTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use XApi\Repository\Api\Test\Functional\StatementRepositoryTest as BaseStatementRepositoryTest;
1616
use XApi\Repository\Doctrine\Repository\Mapping\StatementRepository as MappedStatementRepository;
1717
use XApi\Repository\Doctrine\Repository\StatementRepository;
18+
use XApi\Repository\Doctrine\Test\StatementRepository as FreshStatementRepository;
1819

1920
/**
2021
* @author Christian Flothmann <[email protected]>
@@ -41,7 +42,7 @@ protected function setUp()
4142

4243
protected function createStatementRepository()
4344
{
44-
return new StatementRepository($this->repository);
45+
return new FreshStatementRepository(new StatementRepository($this->repository), $this->objectManager);
4546
}
4647

4748
protected function cleanDatabase()

src/Test/StatementRepository.php

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace XApi\Repository\Doctrine\Test;
4+
5+
use Doctrine\Common\Persistence\ObjectManager;
6+
use Xabbuh\XApi\Model\Actor;
7+
use Xabbuh\XApi\Model\Statement;
8+
use Xabbuh\XApi\Model\StatementId;
9+
use Xabbuh\XApi\Model\StatementsFilter;
10+
use XApi\Repository\Api\StatementRepositoryInterface;
11+
12+
/**
13+
* Statement repository clearing the object manager between read and write operations.
14+
*
15+
* @author Christian Flothmann <[email protected]>
16+
*/
17+
final class StatementRepository implements StatementRepositoryInterface
18+
{
19+
private $repository;
20+
private $objectManager;
21+
22+
public function __construct(StatementRepositoryInterface $repository, ObjectManager $objectManager)
23+
{
24+
$this->repository = $repository;
25+
$this->objectManager = $objectManager;
26+
}
27+
28+
public function findStatementById(StatementId $statementId, Actor $authority = null)
29+
{
30+
$statement = $this->repository->findStatementById($statementId, $authority);
31+
$this->objectManager->clear();
32+
33+
return $statement;
34+
}
35+
36+
public function findVoidedStatementById(StatementId $voidedStatementId, Actor $authority = null)
37+
{
38+
$statement = $this->findVoidedStatementById($voidedStatementId, $authority);
39+
$this->objectManager->clear();
40+
41+
return $statement;
42+
}
43+
44+
public function findStatementsBy(StatementsFilter $criteria, Actor $authority = null)
45+
{
46+
$statements = $this->findStatementsBy($criteria, $authority);
47+
$this->objectManager->clear();
48+
49+
return $statements;
50+
}
51+
52+
public function storeStatement(Statement $statement, $flush = true)
53+
{
54+
$this->repository->storeStatement($statement);
55+
$this->objectManager->clear();
56+
}
57+
}

0 commit comments

Comments
 (0)