13
13
14
14
use GraphQL \Type \Schema ;
15
15
use Overblog \GraphQLBundle \Config \TypeWithOutputFieldsDefinition ;
16
+ use Overblog \GraphQLBundle \EventListener \ClassLoaderListener ;
16
17
use Symfony \Component \Cache \Adapter \ArrayAdapter ;
17
18
use Symfony \Component \Config \FileLocator ;
18
19
use Symfony \Component \DependencyInjection \ContainerBuilder ;
@@ -45,7 +46,8 @@ public function load(array $configs, ContainerBuilder $container)
45
46
$ this ->setConfigBuilders ($ config , $ container );
46
47
$ this ->setVersions ($ config , $ container );
47
48
$ this ->setShowDebug ($ config , $ container );
48
- $ this ->setAutoMappingParameters ($ config , $ container );
49
+ $ this ->setDefinitionParameters ($ config , $ container );
50
+ $ this ->setClassLoaderListener ($ config , $ container );
49
51
50
52
$ container ->setParameter ($ this ->getAlias ().'.resources_dir ' , realpath (__DIR__ .'/../Resources ' ));
51
53
}
@@ -68,13 +70,35 @@ public function getAlias()
68
70
69
71
public function getConfiguration (array $ config , ContainerBuilder $ container )
70
72
{
71
- return new Configuration ($ container ->getParameter ('kernel.debug ' ));
73
+ return new Configuration (
74
+ $ container ->getParameter ('kernel.debug ' ),
75
+ $ container ->hasParameter ('kernel.cache_dir ' ) ? $ container ->getParameter ('kernel.cache_dir ' ) : null
76
+ );
72
77
}
73
78
74
- private function setAutoMappingParameters (array $ config , ContainerBuilder $ container )
79
+ private function setClassLoaderListener (array $ config , ContainerBuilder $ container )
75
80
{
81
+ $ container ->setParameter ($ this ->getAlias ().'.use_classloader_listener ' , $ config ['definitions ' ]['use_classloader_listener ' ]);
82
+ if ($ config ['definitions ' ]['use_classloader_listener ' ]) {
83
+ $ definition = $ container ->setDefinition (
84
+ $ this ->getAlias ().'.event_listener.classloader_listener ' ,
85
+ new Definition (ClassLoaderListener::class)
86
+ );
87
+ $ definition ->setArguments ([new Reference ($ this ->getAlias ().'.cache_compiler ' )]);
88
+ $ definition ->addTag ('kernel.event_listener ' , ['event ' => 'kernel.request ' , 'method ' => 'load ' , 'priority ' => 255 ]);
89
+ $ definition ->addTag ('kernel.event_listener ' , ['event ' => 'console.command ' , 'method ' => 'load ' , 'priority ' => 255 ]);
90
+ }
91
+ }
92
+
93
+ private function setDefinitionParameters (array $ config , ContainerBuilder $ container )
94
+ {
95
+ // auto mapping
76
96
$ container ->setParameter ($ this ->getAlias ().'.auto_mapping.enabled ' , $ config ['definitions ' ]['auto_mapping ' ]['enabled ' ]);
77
97
$ container ->setParameter ($ this ->getAlias ().'.auto_mapping.directories ' , $ config ['definitions ' ]['auto_mapping ' ]['directories ' ]);
98
+ // generator and config
99
+ $ container ->setParameter ($ this ->getAlias ().'.default_resolver ' , $ config ['definitions ' ]['default_resolver ' ]);
100
+ $ container ->setParameter ($ this ->getAlias ().'.class_namespace ' , $ config ['definitions ' ]['class_namespace ' ]);
101
+ $ container ->setParameter ($ this ->getAlias ().'.cache_dir ' , $ config ['definitions ' ]['cache_dir ' ]);
78
102
}
79
103
80
104
private function setBatchingMethod (array $ config , ContainerBuilder $ container )
0 commit comments