|
8 | 8 | use Doctrine\Common\Annotations\FileCacheReader;
|
9 | 9 | use Hateoas\Configuration\Metadata\ConfigurationExtensionInterface;
|
10 | 10 | use Hateoas\Configuration\Metadata\Driver\AnnotationDriver;
|
| 11 | +use Hateoas\Configuration\Metadata\Driver\AttributeDriver; |
11 | 12 | use Hateoas\Configuration\Metadata\Driver\ExtensionDriver;
|
12 | 13 | use Hateoas\Configuration\Metadata\Driver\XmlDriver;
|
13 | 14 | use Hateoas\Configuration\Metadata\Driver\YamlDriver;
|
@@ -385,33 +386,31 @@ public function replaceMetadataDir(string $dir, string $namespacePrefix = ''): H
|
385 | 386 |
|
386 | 387 | private function buildMetadataFactory(): MetadataFactoryInterface
|
387 | 388 | {
|
| 389 | + $expressionEvaluator = $this->getExpressionEvaluator(); |
| 390 | + |
| 391 | + $typeParser = new Parser(); |
| 392 | + |
388 | 393 | $annotationReader = $this->annotationReader;
|
| 394 | + $drivers = [new AttributeDriver($expressionEvaluator, $this->chainProvider, $typeParser)]; |
389 | 395 |
|
390 |
| - if (null === $annotationReader) { |
| 396 | + if (null === $annotationReader && class_exists(AnnotationReader::class)) { |
391 | 397 | $annotationReader = new AnnotationReader();
|
392 | 398 |
|
393 | 399 | if (null !== $this->cacheDir) {
|
394 | 400 | $this->createDir($this->cacheDir . '/annotations');
|
395 | 401 | $annotationReader = new FileCacheReader($annotationReader, $this->cacheDir . '/annotations', $this->debug);
|
396 | 402 | }
|
397 |
| - } |
398 | 403 |
|
399 |
| - $expressionEvaluator = $this->getExpressionEvaluator(); |
400 |
| - |
401 |
| - $typeParser = new Parser(); |
| 404 | + $drivers[] = new AnnotationDriver($annotationReader, $expressionEvaluator, $this->chainProvider, $typeParser); |
| 405 | + } |
402 | 406 |
|
403 | 407 | if (!empty($this->metadataDirs)) {
|
404 |
| - $fileLocator = new FileLocator($this->metadataDirs); |
405 |
| - $metadataDriver = new DriverChain([ |
406 |
| - new YamlDriver($fileLocator, $expressionEvaluator, $this->chainProvider, $typeParser), |
407 |
| - new XmlDriver($fileLocator, $expressionEvaluator, $this->chainProvider, $typeParser), |
408 |
| - new AnnotationDriver($annotationReader, $expressionEvaluator, $this->chainProvider, $typeParser), |
409 |
| - ]); |
410 |
| - } else { |
411 |
| - $metadataDriver = new AnnotationDriver($annotationReader, $expressionEvaluator, $this->chainProvider, $typeParser); |
| 408 | + $fileLocator = new FileLocator($this->metadataDirs); |
| 409 | + $drivers[] = new YamlDriver($fileLocator, $expressionEvaluator, $this->chainProvider, $typeParser); |
| 410 | + $drivers[] = new XmlDriver($fileLocator, $expressionEvaluator, $this->chainProvider, $typeParser); |
412 | 411 | }
|
413 | 412 |
|
414 |
| - $metadataDriver = new ExtensionDriver($metadataDriver, $this->configurationExtensions); |
| 413 | + $metadataDriver = new ExtensionDriver(new DriverChain($drivers), $this->configurationExtensions); |
415 | 414 | $metadataFactory = new MetadataFactory($metadataDriver, null, $this->debug);
|
416 | 415 | $metadataFactory->setIncludeInterfaces($this->includeInterfaceMetadata);
|
417 | 416 |
|
|
0 commit comments