GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( edf55a...cda77c )
by Asmir
03:02
created

JMSSerializerExtension   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 115
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 10

Test Coverage

Coverage 71.83%

Importance

Changes 0
Metric Value
wmc 16
lcom 0
cbo 10
dl 0
loc 115
ccs 51
cts 71
cp 0.7183
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
F loadInternal() 0 107 15
A getConfiguration() 0 4 1
1
<?php
2
3
/*
4
 * Copyright 2011 Johannes M. Schmitt <[email protected]>
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 * http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
19
namespace JMS\SerializerBundle\DependencyInjection;
20
21
use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
22
use Symfony\Component\DependencyInjection\Alias;
23
use JMS\Serializer\Exception\RuntimeException;
24
use Symfony\Component\Config\FileLocator;
25
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
26
use Symfony\Component\DependencyInjection\Reference;
27
use Symfony\Component\DependencyInjection\ContainerBuilder;
28
29
class JMSSerializerExtension extends ConfigurableExtension
30
{
31 13
    public function loadInternal(array $config, ContainerBuilder $container)
32
    {
33 13
        $loader = new XmlFileLoader($container, new FileLocator(array(
34 13
                        __DIR__.'/../Resources/config/')));
35 13
        $loader->load('services.xml');
36
37
        // Built-in handlers.
38 13
        $container->getDefinition('jms_serializer.datetime_handler')
39 13
            ->addArgument($config['handlers']['datetime']['default_format'])
40 13
            ->addArgument($config['handlers']['datetime']['default_timezone'])
41 13
            ->addArgument($config['handlers']['datetime']['cdata'])
42
        ;
43
44
        // property naming
45
        $container
46 13
            ->getDefinition('jms_serializer.camel_case_naming_strategy')
47 13
            ->addArgument($config['property_naming']['separator'])
48 13
            ->addArgument($config['property_naming']['lower_case'])
49
        ;
50 13
        if ($config['property_naming']['enable_cache']) {
51
            $container
52 13
                ->getDefinition('jms_serializer.cache_naming_strategy')
53 13
                ->addArgument(new Reference((string) $container->getAlias('jms_serializer.naming_strategy')))
54
            ;
55 13
            $container->setAlias('jms_serializer.naming_strategy', 'jms_serializer.cache_naming_strategy');
56 13
        }
57
58 13
        $bundles = $container->getParameter('kernel.bundles');
59
60 13
        if (!empty($config['expression_evaluator']['id'])) {
61
            $container
62 12
                ->getDefinition('jms_serializer.serializer')
63 12
                ->replaceArgument(7, new Reference($config['expression_evaluator']['id']));
64 12
        } else {
65 1
            $container->removeDefinition('jms_serializer.expression_evaluator');
66
        }
67
68
        // metadata
69 13
        if ('none' === $config['metadata']['cache']) {
70
            $container->removeAlias('jms_serializer.metadata.cache');
71 13
        } elseif ('file' === $config['metadata']['cache']) {
72
            $container
73 13
                ->getDefinition('jms_serializer.metadata.cache.file_cache')
74 13
                ->replaceArgument(0, $config['metadata']['file_cache']['dir'])
75
            ;
76
77 13
            $dir = $container->getParameterBag()->resolveValue($config['metadata']['file_cache']['dir']);
78 13
            if (!file_exists($dir)) {
79 1
                if (!$rs = @mkdir($dir, 0777, true)) {
80
                    throw new RuntimeException(sprintf('Could not create cache directory "%s".', $dir));
81
                }
82 1
            }
83 13
        } else {
84
            $container->setAlias('jms_serializer.metadata.cache', new Alias($config['metadata']['cache'], false));
85
        }
86
87 13
        if ($config['metadata']['infer_types_from_doctrine_metadata'] === false) {
88
            $container->setParameter('jms_serializer.infer_types_from_doctrine_metadata', false);
89
        }
90
91
        $container
92 13
            ->getDefinition('jms_serializer.metadata_factory')
93 13
            ->replaceArgument(2, $config['metadata']['debug'])
94
        ;
95
96
        // directories
97 13
        $directories = array();
98 13
        if ($config['metadata']['auto_detection']) {
99 13
            foreach ($bundles as $name => $class) {
100
                $ref = new \ReflectionClass($class);
101
102
                $directories[$ref->getNamespaceName()] = dirname($ref->getFileName()).'/Resources/config/serializer';
103 13
            }
104 13
        }
105 13
        foreach ($config['metadata']['directories'] as $directory) {
106
            $directory['path'] = rtrim(str_replace('\\', '/', $directory['path']), '/');
107
108
            if ('@' === $directory['path'][0]) {
109
                $bundleName = substr($directory['path'], 1, strpos($directory['path'], '/') - 1);
110
111
                if (!isset($bundles[$bundleName])) {
112
                    throw new RuntimeException(sprintf('The bundle "%s" has not been registered with AppKernel. Available bundles: %s', $bundleName, implode(', ', array_keys($bundles))));
113
                }
114
115
                $ref = new \ReflectionClass($bundles[$bundleName]);
116
                $directory['path'] = dirname($ref->getFileName()).substr($directory['path'], strlen('@'.$bundleName));
117
            }
118
119
            $directories[rtrim($directory['namespace_prefix'], '\\')] = rtrim($directory['path'], '\\/');
120 13
        }
121
        $container
122 13
            ->getDefinition('jms_serializer.metadata.file_locator')
123 13
            ->replaceArgument(0, $directories)
124
        ;
125
126 13
        $container->setParameter('jms_serializer.xml_deserialization_visitor.doctype_whitelist', $config['visitors']['xml']['doctype_whitelist']);
127 13
        $container->setParameter('jms_serializer.xml_serialization_visitor.format_output', $config['visitors']['xml']['format_output']);
128 13
        $container->setParameter('jms_serializer.json_serialization_visitor.options', $config['visitors']['json']['options']);
129
130 13
        if ( ! $config['enable_short_alias']) {
131
            $container->removeAlias('serializer');
132
        }
133
134 13
        if ( ! $container->getParameter('kernel.debug')) {
135
            $container->removeDefinition('jms_serializer.stopwatch_subscriber');
136
        }
137 13
    }
138
139 14
    public function getConfiguration(array $config, ContainerBuilder $container)
140
    {
141 14
        return new Configuration($container->getParameterBag()->resolveValue('%kernel.debug%'));
142
    }
143
}
144