diff --git a/CHANGELOG.md b/CHANGELOG.md index 54b2553..6ebbaaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# Version 18.1.0 + +## Features + +### PHP 8.4 Compatibility + +* Add PHP 8.4 support +* Fix + # Version 18.0.0 ## Features diff --git a/composer.json b/composer.json index f06f263..75e53fa 100755 --- a/composer.json +++ b/composer.json @@ -5,12 +5,12 @@ "require": { "php": "^8.1", "doctrine/collections": "^2.2.2", - "doctrine/annotations": "^1.14.0|^2.0.1", - "jms/serializer": "^3.30.0", + "doctrine/annotations": "^2.0.1", + "jms/serializer": "^3.30", "jean85/pretty-package-versions": "^2.0.6", "symfony/expression-language": "~6.4.8", - "techdivision/import": "^18.0.0", - "techdivision/import-dbal": "^2.0.0" + "techdivision/import": "^18.1", + "techdivision/import-dbal": "^2.0" }, "require-dev": { "doctrine/dbal": "^4.0.4", diff --git a/src/Configuration/Logger/Handler.php b/src/Configuration/Logger/Handler.php index 0780795..de68493 100644 --- a/src/Configuration/Logger/Handler.php +++ b/src/Configuration/Logger/Handler.php @@ -16,6 +16,7 @@ use JMS\Serializer\Annotation\Type; use JMS\Serializer\Annotation\SerializedName; +use TechDivision\Import\Configuration\Jms\Configuration\Mailer; use TechDivision\Import\Configuration\Jms\Configuration\ParamsTrait; use TechDivision\Import\Configuration\Logger\HandlerConfigurationInterface; @@ -55,13 +56,13 @@ class Handler implements HandlerConfigurationInterface protected $formatter; /** - * The swift mailer logger configuration to use. + * The mailer logger configuration to use. * - * @var \TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer - * @Type("TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer") - * @SerializedName("swift-mailer") + * @var Mailer + * @Type("TechDivision\Import\Configuration\Jms\Configuration\Mailer") + * @SerializedName("mailer") */ - protected $swiftMailer; + protected Mailer $mailer; /** * Return's the handler's DI ID to use. @@ -84,12 +85,12 @@ public function getFormatter() } /** - * Return's the swift mailer configuration to use. + * Return's the mailer configuration to use. * - * @return \TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer The swift mailer configuration to use + * @return Mailer The mailer configuration to use */ - public function getSwiftMailer() + public function getMailer() { - return $this->swiftMailer; + return $this->mailer; } } diff --git a/src/Configuration/SwiftMailer.php b/src/Configuration/Mailer.php similarity index 62% rename from src/Configuration/SwiftMailer.php rename to src/Configuration/Mailer.php index 727a291..9522c74 100644 --- a/src/Configuration/SwiftMailer.php +++ b/src/Configuration/Mailer.php @@ -1,7 +1,7 @@ * @copyright 2016 TechDivision GmbH @@ -26,7 +27,7 @@ * @link https://github.com/techdivision/import-configuration-jms * @link http://www.techdivision.com */ -class SwiftMailer implements SwiftMailerConfigurationInterface +class Mailer implements MailerConfigurationInterface { /** @@ -37,23 +38,23 @@ class SwiftMailer implements SwiftMailerConfigurationInterface use ParamsTrait; /** - * The DI ID used to create the swift mailer instance. + * The DI ID used to create the mailer instance. * * @var string * @Type("string") */ - protected $id; + protected string $id; /** - * The swift mailer transport configuration to use. + * The mailer transport configuration to use. * - * @var \TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer\Transport - * @Type("TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer\Transport") + * @var Transport + * @Type("TechDivision\Import\Configuration\Jms\Configuration\Mailer\Transport") */ - protected $transport; + protected Transport $transport; /** - * Return's the DI ID used to create the swift mailer instance. + * Return's the DI ID used to create the mailer instance. * * @return string The DI ID */ @@ -63,9 +64,9 @@ public function getId() } /** - * Return's the swift mailer transport configuration to use. + * Return's the mailer transport configuration to use. * - * @return \TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer\Transport The transport configuration to use + * @return Transport The transport configuration to use */ public function getTransport() { diff --git a/src/Configuration/SwiftMailer/Transport.php b/src/Configuration/Mailer/Transport.php similarity index 76% rename from src/Configuration/SwiftMailer/Transport.php rename to src/Configuration/Mailer/Transport.php index 0b454ad..e226785 100644 --- a/src/Configuration/SwiftMailer/Transport.php +++ b/src/Configuration/Mailer/Transport.php @@ -1,7 +1,7 @@ * @copyright 2016 TechDivision GmbH diff --git a/src/Configuration/Plugin.php b/src/Configuration/Plugin.php index d82546f..a90f81d 100644 --- a/src/Configuration/Plugin.php +++ b/src/Configuration/Plugin.php @@ -92,13 +92,13 @@ class Plugin implements PluginConfigurationInterface, ListenerAwareConfiguration protected $subjects; /** - * The swift mailer configuration to use. + * The mailer configuration to use. * - * @var \TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer - * @Type("TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer") - * @SerializedName("swift-mailer") + * @var Mailer + * @Type("TechDivision\Import\Configuration\Jms\Configuration\Mailer") + * @SerializedName("mailer") */ - protected $swiftMailer; + protected Mailer $mailer; /** * The import adapter configuration instance. @@ -210,13 +210,13 @@ public function getSubjects() } /** - * Return's the swift mailer configuration to use. + * Return's the mailer configuration to use. * - * @return \TechDivision\Import\Configuration\Jms\Configuration\SwiftMailer The swift mailer configuration to use + * @return Mailer The mailer configuration to use */ - public function getSwiftMailer() + public function getMailer() { - return $this->swiftMailer; + return $this->mailer; } /** diff --git a/src/Listeners/Renderer/Debug/ConfigurationFileRenderer.php b/src/Listeners/Renderer/Debug/ConfigurationFileRenderer.php index 24ade64..219eaad 100644 --- a/src/Listeners/Renderer/Debug/ConfigurationFileRenderer.php +++ b/src/Listeners/Renderer/Debug/ConfigurationFileRenderer.php @@ -15,10 +15,8 @@ namespace TechDivision\Import\Configuration\Jms\Listeners\Renderer\Debug; -use Jean85\PrettyVersions; use JMS\Serializer\SerializerBuilder; use JMS\Serializer\SerializationContext; -use JMS\Serializer\JsonSerializationVisitor; use JMS\Serializer\Expression\ExpressionEvaluator; use JMS\Serializer\Naming\IdenticalPropertyNamingStrategy; use JMS\Serializer\Naming\SerializedNameAnnotationStrategy; @@ -54,21 +52,11 @@ protected function dump(ConfigurationInterface $configuration) : string $builder->addDefaultSerializationVisitors(); $builder->setExpressionEvaluator(new ExpressionEvaluator(new ExpressionLanguage())); - // try to load the JMS serializer - $version = PrettyVersions::getVersion('jms/serializer'); - - // query whether or not we're < than 2.0.0 - if (version_compare($version->getPrettyVersion(), '2.0.0', '<')) { - // initialize the naming strategy - $namingStrategy = new SerializedNameAnnotationStrategy(new IdenticalPropertyNamingStrategy()); - - // initialize the visitor because we want to set JSON options - $visitor = new JsonSerializationVisitor($namingStrategy); - $visitor->setOptions(JSON_PRETTY_PRINT); - } else { - // initialize the json visitor factory because we want to set JSON options - $visitor = new JsonSerializationVisitorFactory(); - } + // set property naming strategy to respect @SerializedName annotations (JMS v3+) + $builder->setPropertyNamingStrategy(new SerializedNameAnnotationStrategy(new IdenticalPropertyNamingStrategy())); + // initialize the json visitor factory because we want to set JSON options + $visitor = new JsonSerializationVisitorFactory(); + $visitor->setOptions(JSON_PRETTY_PRINT | JSON_PRESERVE_ZERO_FRACTION); // register the visitor in the builder instance $builder->setSerializationVisitor($format = 'json', $visitor);