From 442681b7debf49d77d74c5428380603eba5a0bc9 Mon Sep 17 00:00:00 2001 From: David Buchmann Date: Mon, 8 Jan 2024 13:44:17 +0100 Subject: [PATCH] fix reference deletion to not be case sensitive --- CHANGELOG.md | 5 +++++ .../XmlPropsRemover/XmlPropsRemover.php | 18 +++++++++++------- .../XmlParser/XmlToPropsParserTest.php | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fffd90d8..f9e6c20b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ Changelog 1.x === +1.11.1 +------ + +* Fix regression of 1.11.0: Reference deletion should work regardless of upper or lowercase of the type names in XML data. + 1.11.0 ------ diff --git a/src/Jackalope/Transport/DoctrineDBAL/XmlPropsRemover/XmlPropsRemover.php b/src/Jackalope/Transport/DoctrineDBAL/XmlPropsRemover/XmlPropsRemover.php index 9f8bbc59..53a9c3f4 100644 --- a/src/Jackalope/Transport/DoctrineDBAL/XmlPropsRemover/XmlPropsRemover.php +++ b/src/Jackalope/Transport/DoctrineDBAL/XmlPropsRemover/XmlPropsRemover.php @@ -2,6 +2,8 @@ namespace Jackalope\Transport\DoctrineDBAL\XmlPropsRemover; +use PHPCR\PropertyType; + /** * @internal */ @@ -99,14 +101,16 @@ private function startHandler($parser, $name, $attrs): void if ($name === 'SV:PROPERTY') { $svName = $attrs['SV:NAME']; - if (\in_array($svName, $this->propertyNames)) { + if (\in_array((string) $svName, $this->propertyNames, true)) { $this->skipCurrentTag = true; - $svType = $attrs['SV:TYPE']; - - if ($svType === 'reference') { - $this->references[] = $svName; - } elseif ($svType === 'weakreference') { - $this->weakReferences[] = $svName; + // use PHPCR PropertyType to avoid encoding issues + switch (PropertyType::valueFromName($attrs['SV:TYPE'])) { + case PropertyType::REFERENCE: + $this->references[] = $svName; + break; + case PropertyType::WEAKREFERENCE: + $this->weakReferences[] = $svName; + break; } return; diff --git a/tests/Jackalope/Transport/DoctrineDBAL/XmlParser/XmlToPropsParserTest.php b/tests/Jackalope/Transport/DoctrineDBAL/XmlParser/XmlToPropsParserTest.php index 200bb7c6..4f656caa 100644 --- a/tests/Jackalope/Transport/DoctrineDBAL/XmlParser/XmlToPropsParserTest.php +++ b/tests/Jackalope/Transport/DoctrineDBAL/XmlParser/XmlToPropsParserTest.php @@ -108,7 +108,7 @@ public function testParseWithoutSvValueNode(): void nt:unstructured 1922ec03-b5ed-40cf-856c-ecfb8eac12e2 - 94c9aefe-faaa-4896-816b-5bfc575681f0 + 94c9aefe-faaa-4896-816b-5bfc575681f0 a8ae4420-095b-4045-8775-b731cbae2fe1 842e61c0-09ab-42a9-87c0-308ccc90e6f6