From 7c35b1e34f563f8523ac3996cac12fdbceb8e619 Mon Sep 17 00:00:00 2001 From: Baptiste Leduc Date: Mon, 15 Apr 2024 12:33:18 +0200 Subject: [PATCH] Use AutoMapper exceptions (#109) --- CHANGELOG.md | 3 +++ src/Extractor/ReadAccessor.php | 3 ++- src/Generator/CreateTargetStatementsGenerator.php | 3 ++- src/Generator/PropertyConditionsGenerator.php | 5 +++-- src/Loader/FileLoader.php | 3 ++- src/MapperContext.php | 3 ++- src/Provider/ProviderRegistry.php | 4 +++- .../Bundle/DependencyInjection/AutoMapperExtension.php | 5 +++-- src/Transformer/ExpressionLanguageTransformer.php | 3 ++- src/Transformer/FixedValueTransformer.php | 3 ++- 10 files changed, 24 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c44858a7..be801025 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- [GH#109](https://github.com/jolicode/automapper/pull/109) Use AutoMapper exceptions + ## [9.0.0-beta.2] - 2024-04-02 ### Added - [GH#95](https://github.com/jolicode/automapper/pull/95) Add Api Platform integration diff --git a/src/Extractor/ReadAccessor.php b/src/Extractor/ReadAccessor.php index 7366aecc..41ff107c 100644 --- a/src/Extractor/ReadAccessor.php +++ b/src/Extractor/ReadAccessor.php @@ -5,6 +5,7 @@ namespace AutoMapper\Extractor; use AutoMapper\Exception\CompileException; +use AutoMapper\Exception\InvalidArgumentException; use AutoMapper\MapperContext; use PhpParser\Node\Arg; use PhpParser\Node\Expr; @@ -43,7 +44,7 @@ public function __construct( private readonly array $context = [], ) { if (self::TYPE_METHOD === $this->type && null === $this->sourceClass) { - throw new \InvalidArgumentException('Source class must be provided when using "method" type.'); + throw new InvalidArgumentException('Source class must be provided when using "method" type.'); } } diff --git a/src/Generator/CreateTargetStatementsGenerator.php b/src/Generator/CreateTargetStatementsGenerator.php index 456201c3..0ed0ad68 100644 --- a/src/Generator/CreateTargetStatementsGenerator.php +++ b/src/Generator/CreateTargetStatementsGenerator.php @@ -4,6 +4,7 @@ namespace AutoMapper\Generator; +use AutoMapper\Exception\LogicException; use AutoMapper\Exception\MissingConstructorArgumentsException; use AutoMapper\Generator\Shared\CachedReflectionStatementsGenerator; use AutoMapper\Generator\Shared\DiscriminatorStatementsGenerator; @@ -322,6 +323,6 @@ private function getValueAsExpr(mixed $value): Expr return $expr->expr; } - throw new \LogicException('Cannot extract expr from ' . var_export($value, true)); + throw new LogicException('Cannot extract expr from ' . var_export($value, true)); } } diff --git a/src/Generator/PropertyConditionsGenerator.php b/src/Generator/PropertyConditionsGenerator.php index ee6ecf6c..ee9a31c5 100644 --- a/src/Generator/PropertyConditionsGenerator.php +++ b/src/Generator/PropertyConditionsGenerator.php @@ -4,6 +4,7 @@ namespace AutoMapper\Generator; +use AutoMapper\Exception\LogicException; use AutoMapper\MapperContext; use AutoMapper\Metadata\GeneratorMetadata; use AutoMapper\Metadata\PropertyMetadata; @@ -258,7 +259,7 @@ private function customCondition(GeneratorMetadata $metadata, PropertyMetadata $ } if ($argumentsCount > 2) { - throw new \LogicException('Callable condition must have 1 or 2 arguments required, but it has ' . $argumentsCount); + throw new LogicException('Callable condition must have 1 or 2 arguments required, but it has ' . $argumentsCount); } } @@ -302,6 +303,6 @@ private function customCondition(GeneratorMetadata $metadata, PropertyMetadata $ return $expr->expr; } - throw new \LogicException('Cannot use callback or create expression language condition from expression "' . $propertyMetadata->if . "'"); + throw new LogicException('Cannot use callback or create expression language condition from expression "' . $propertyMetadata->if . "'"); } } diff --git a/src/Loader/FileLoader.php b/src/Loader/FileLoader.php index 09f9a94d..a37b9566 100644 --- a/src/Loader/FileLoader.php +++ b/src/Loader/FileLoader.php @@ -4,6 +4,7 @@ namespace AutoMapper\Loader; +use AutoMapper\Exception\RuntimeException; use AutoMapper\Generator\MapperGenerator; use AutoMapper\Metadata\MapperMetadata; use AutoMapper\Metadata\MetadataFactory; @@ -128,7 +129,7 @@ private function write(string $file, string $contents): void $fp = fopen($file, 'w'); if (false === $fp) { - throw new \RuntimeException(sprintf('Could not open file "%s"', $file)); + throw new RuntimeException(sprintf('Could not open file "%s"', $file)); } if (flock($fp, LOCK_EX)) { diff --git a/src/MapperContext.php b/src/MapperContext.php index c30c75ce..4c045921 100644 --- a/src/MapperContext.php +++ b/src/MapperContext.php @@ -5,6 +5,7 @@ namespace AutoMapper; use AutoMapper\Exception\CircularReferenceException; +use AutoMapper\Exception\RuntimeException; /** * Context for mapping. @@ -326,7 +327,7 @@ public static function getForcedTimezone(array $context): ?\DateTimeZone try { return new \DateTimeZone($timezone); } catch (\Exception $e) { - throw new \RuntimeException("Invalid timezone \"$timezone\" passed to automapper context.", previous: $e); + throw new RuntimeException("Invalid timezone \"$timezone\" passed to automapper context.", previous: $e); } } } diff --git a/src/Provider/ProviderRegistry.php b/src/Provider/ProviderRegistry.php index 9718397e..274d0db1 100644 --- a/src/Provider/ProviderRegistry.php +++ b/src/Provider/ProviderRegistry.php @@ -4,6 +4,8 @@ namespace AutoMapper\Provider; +use AutoMapper\Exception\InvalidArgumentException; + /** * @internal */ @@ -34,7 +36,7 @@ public function __construct(iterable $providers) public function getProvider(string $id): ProviderInterface { if (!\array_key_exists($id, $this->providers)) { - throw new \InvalidArgumentException(sprintf('Provider with id "%s" not found.', $id)); + throw new InvalidArgumentException(sprintf('Provider with id "%s" not found.', $id)); } return $this->providers[$id]; diff --git a/src/Symfony/Bundle/DependencyInjection/AutoMapperExtension.php b/src/Symfony/Bundle/DependencyInjection/AutoMapperExtension.php index 5dd81342..37ebe86f 100644 --- a/src/Symfony/Bundle/DependencyInjection/AutoMapperExtension.php +++ b/src/Symfony/Bundle/DependencyInjection/AutoMapperExtension.php @@ -8,6 +8,7 @@ use AutoMapper\ConstructorStrategy; use AutoMapper\Event\PropertyMetadataEvent; use AutoMapper\EventListener\Symfony\AdvancedNameConverterListener; +use AutoMapper\Exception\LogicException; use AutoMapper\Loader\ClassLoaderInterface; use AutoMapper\Loader\EvalLoader; use AutoMapper\Loader\FileLoader; @@ -94,7 +95,7 @@ public function load(array $configs, ContainerBuilder $container): void if ($config['serializer']) { if (!interface_exists(SerializerInterface::class)) { - throw new \LogicException('The "symfony/serializer" component is required to use the "serializer" feature.'); + throw new LogicException('The "symfony/serializer" component is required to use the "serializer" feature.'); } $loader->load('event_serializer.php'); @@ -102,7 +103,7 @@ public function load(array $configs, ContainerBuilder $container): void if ($config['normalizer']['enabled']) { if (!interface_exists(NormalizerInterface::class)) { - throw new \LogicException('The "symfony/serializer" component is required to use the "normalizer" feature.'); + throw new LogicException('The "symfony/serializer" component is required to use the "normalizer" feature.'); } $loader->load('normalizer.php'); diff --git a/src/Transformer/ExpressionLanguageTransformer.php b/src/Transformer/ExpressionLanguageTransformer.php index 57923add..e826f186 100644 --- a/src/Transformer/ExpressionLanguageTransformer.php +++ b/src/Transformer/ExpressionLanguageTransformer.php @@ -4,6 +4,7 @@ namespace AutoMapper\Transformer; +use AutoMapper\Exception\LogicException; use AutoMapper\Generator\UniqueVariableScope; use AutoMapper\Metadata\PropertyMetadata; use PhpParser\Node\Expr; @@ -33,6 +34,6 @@ public function transform(Expr $input, Expr $target, PropertyMetadata $propertyM return [$expr->expr, []]; } - throw new \LogicException('Cannot use callback or create expression language condition from expression "' . $this->expression . "'"); + throw new LogicException('Cannot use callback or create expression language condition from expression "' . $this->expression . "'"); } } diff --git a/src/Transformer/FixedValueTransformer.php b/src/Transformer/FixedValueTransformer.php index 9703a7fb..9ec5bc9c 100644 --- a/src/Transformer/FixedValueTransformer.php +++ b/src/Transformer/FixedValueTransformer.php @@ -4,6 +4,7 @@ namespace AutoMapper\Transformer; +use AutoMapper\Exception\LogicException; use AutoMapper\Generator\UniqueVariableScope; use AutoMapper\Metadata\PropertyMetadata; use PhpParser\Node\Expr; @@ -33,6 +34,6 @@ public function transform(Expr $input, Expr $target, PropertyMetadata $propertyM return [$expr->expr, []]; } - throw new \LogicException('Cannot create php code from value ' . json_encode($this->value)); + throw new LogicException('Cannot create php code from value ' . json_encode($this->value)); } }