diff --git a/src/JsonapiExtrasServiceProvider.php b/src/JsonapiExtrasServiceProvider.php index c8fa8a884eff3e51f56afd32eeb1c66224ffe332..7e3bee4aef8bffc047a9dc15bbcdf2f1e5f0d66b 100644 --- a/src/JsonapiExtrasServiceProvider.php +++ b/src/JsonapiExtrasServiceProvider.php @@ -41,7 +41,20 @@ class JsonapiExtrasServiceProvider extends ServiceProviderBase { // \Drupal\jsonapi\Serializer\Serializer::__construct(). $container_namespaces = $container->getParameter('container.namespaces'); $container_modules = $container->getParameter('container.modules'); - $container_namespaces['Drupal\jsonapi\Normalizer\ImpostorFrom\jsonapi_extras'][] = dirname($container_modules['jsonapi_extras']['pathname']) . '/src-impostor-normalizers'; + $jsonapi_impostor_path = dirname($container_modules['jsonapi_extras']['pathname']) . '/src-impostor-normalizers'; + $container_namespaces['Drupal\jsonapi\Normalizer\ImpostorFrom\jsonapi_extras'][] = $jsonapi_impostor_path; + // Manually include the impostor definitions to avoid class not found error + // during compilation, which gets triggered though cache-clear. + $container->getDefinition('serializer.normalizer.field_item.jsonapi_extras') + ->setFile($jsonapi_impostor_path . '/FieldItemNormalizerImpostor.php'); + $container->getDefinition('serializer.normalizer.resource_identifier.jsonapi_extras') + ->setFile($jsonapi_impostor_path . '/ResourceIdentifierNormalizerImpostor.php'); + $container->getDefinition('serializer.normalizer.resource_object.jsonapi_extras') + ->setFile($jsonapi_impostor_path . '/ResourceObjectNormalizerImpostor.php'); + $container->getDefinition('serializer.normalizer.content_entity.jsonapi_extras') + ->setFile($jsonapi_impostor_path . '/ContentEntityDenormalizerImpostor.php'); + $container->getDefinition('serializer.normalizer.config_entity.jsonapi_extras') + ->setFile($jsonapi_impostor_path . '/ConfigEntityDenormalizerImpostor.php'); $container->setParameter('container.namespaces', $container_namespaces); }