• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

overblog / GraphQLBundle / 5108321640

pending completion
5108321640

push

github

web-flow
Merge pull request #1122 from sparklink-pro/master

Update webonyx / Cleanup / Fix tests

4263 of 4332 relevant lines covered (98.41%)

39.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

46.67
/src/Config/Parser/AnnotationParser.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Overblog\GraphQLBundle\Config\Parser;
6

7
use Doctrine\Common\Annotations\AnnotationReader;
8
use Doctrine\Common\Annotations\AnnotationRegistry;
9
use Doctrine\Common\Annotations\PsrCachedReader;
10
use Doctrine\Common\Annotations\Reader;
11
use Overblog\GraphQLBundle\Config\Parser\MetadataParser\MetadataParser;
12
use ReflectionClass;
13
use ReflectionMethod;
14
use ReflectionProperty;
15
use Reflector;
16
use Symfony\Component\Cache\Adapter\ApcuAdapter;
17
use Symfony\Component\Cache\Adapter\PhpFilesAdapter;
18
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
19

20
final class AnnotationParser extends MetadataParser
21
{
22
    public const METADATA_FORMAT = '@%s';
23

24
    protected static Reader $annotationReader;
25

26
    protected static function getMetadatas(Reflector $reflector): array
27
    {
28
        $reader = self::getAnnotationReader();
25✔
29

30
        switch (true) {
31
            case $reflector instanceof ReflectionClass: return $reader->getClassAnnotations($reflector);
25✔
32
            case $reflector instanceof ReflectionMethod: return $reader->getMethodAnnotations($reflector);
24✔
33
            case $reflector instanceof ReflectionProperty: return $reader->getPropertyAnnotations($reflector);
24✔
34
        }
35

36
        return [];
24✔
37
    }
38

39
    public static function getAnnotationReader(): Reader
40
    {
41
        if (!isset(self::$annotationReader)) {
50✔
42
            if (!class_exists(AnnotationReader::class)) {
×
43
                throw new ServiceNotFoundException("In order to use annotations, you need to install 'doctrine/annotations' first. See: 'https://www.doctrine-project.org/projects/annotations.html'");
×
44
            }
45
            if (!class_exists(ApcuAdapter::class)) {
×
46
                throw new ServiceNotFoundException("In order to use annotations, you need to install 'symfony/cache' first. See: 'https://symfony.com/doc/current/components/cache.html'");
×
47
            }
48

49
            if (class_exists(AnnotationRegistry::class) && method_exists(AnnotationRegistry::class, 'registerLoader')) {
×
50
                AnnotationRegistry::registerLoader('class_exists');
×
51
            }
52
            $cacheKey = md5(__DIR__);
×
53
            // @codeCoverageIgnoreStart
54
            if (extension_loaded('apcu') && apcu_enabled()) {
55
                $annotationCache = new ApcuAdapter($cacheKey);
56
            } else {
57
                $annotationCache = new PhpFilesAdapter($cacheKey);
58
            }
59
            // @codeCoverageIgnoreEnd
60

61
            self::$annotationReader = new PsrCachedReader(new AnnotationReader(), $annotationCache, true);
×
62
        }
63

64
        return self::$annotationReader;
50✔
65
    }
66
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc