/**
* @return array
*/
protected function prepareRepositories()
{
$builder = $this->getContainerBuilder();
$repositories = [];
foreach ($builder->findByType(Repository::class) as $repositoryName => $definition) {
$repositoryClass = $definition->getClass();
$reflection = new ClassType($repositoryClass);
$name = $reflection->getAnnotation('entity2');
if ($name === NULL) {
$name = $this->createEntityName($repositoryClass);
}
$repositories[$name] = $repositoryClass;
$mapperClass = Strings::replace($repositoryClass, '~Repository$~', 'Mapper');
$mapperName = $builder->getByType($mapperClass);
if ($mapperName === NULL) {
$mapperName = Strings::replace($repositoryName, '~Repository$~', 'Mapper');
$builder->addDefinition($mapperName)->setClass($mapperClass)->setArguments(['cache' => '@' . $this->prefix('cache')]);
} else {
$builder->getDefinition($mapperName)->setArguments(['cache' => '@' . $this->prefix('cache')]);
}
$definition->setArguments(['mapper' => '@' . $mapperName, 'dependencyProvider' => '@' . $this->prefix('dependencyProvider')]);
$definition->addSetup('setModel', ['@' . $this->prefix('model')]);
}
return $repositories;
}