1313
1414use GraphQL \Type \Schema ;
1515use Overblog \GraphQLBundle \Config \TypeWithOutputFieldsDefinition ;
16+ use Overblog \GraphQLBundle \EventListener \ClassLoaderListener ;
1617use Symfony \Component \Cache \Adapter \ArrayAdapter ;
1718use Symfony \Component \Config \FileLocator ;
1819use Symfony \Component \DependencyInjection \ContainerBuilder ;
@@ -45,7 +46,8 @@ public function load(array $configs, ContainerBuilder $container)
4546 $ this ->setConfigBuilders ($ config , $ container );
4647 $ this ->setVersions ($ config , $ container );
4748 $ this ->setShowDebug ($ config , $ container );
48- $ this ->setAutoMappingParameters ($ config , $ container );
49+ $ this ->setDefinitionParameters ($ config , $ container );
50+ $ this ->setClassLoaderListener ($ config , $ container );
4951
5052 $ container ->setParameter ($ this ->getAlias ().'.resources_dir ' , realpath (__DIR__ .'/../Resources ' ));
5153 }
@@ -68,13 +70,35 @@ public function getAlias()
6870
6971 public function getConfiguration (array $ config , ContainerBuilder $ container )
7072 {
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+ );
7277 }
7378
74- private function setAutoMappingParameters (array $ config , ContainerBuilder $ container )
79+ private function setClassLoaderListener (array $ config , ContainerBuilder $ container )
7580 {
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
7696 $ container ->setParameter ($ this ->getAlias ().'.auto_mapping.enabled ' , $ config ['definitions ' ]['auto_mapping ' ]['enabled ' ]);
7797 $ 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 ' ]);
78102 }
79103
80104 private function setBatchingMethod (array $ config , ContainerBuilder $ container )
0 commit comments