[!!!][TASK] Remove deprecated Extbase-related code (Part 2) 49/59249/6
authorAlexander Schnitzler <git@alexanderschnitzler.de>
Thu, 20 Dec 2018 21:18:11 +0000 (22:18 +0100)
committerWouter Wolters <typo3@wouterwolters.nl>
Fri, 21 Dec 2018 11:05:16 +0000 (12:05 +0100)
* public methods in ClassSchema
* public methods in ReflectionService
* public methods in ValidatorResolver
* public constants in ValidatorResolver
* class RawValidator

Releases: master
Resolves: #87254
Change-Id: I3523e56cfab25fb147e8ce07c143aad9a6e8a549
Reviewed-on: https://review.typo3.org/59249
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
16 files changed:
typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
typo3/sysext/extbase/Classes/Reflection/ClassSchema.php
typo3/sysext/extbase/Classes/Reflection/ReflectionService.php
typo3/sysext/extbase/Classes/Validation/Validator/RawValidator.php [deleted file]
typo3/sysext/extbase/Classes/Validation/ValidatorResolver.php
typo3/sysext/extbase/Tests/Functional/Validation/ValidatorResolverTest.php
typo3/sysext/extbase/Tests/Unit/Property/TypeConverter/PersistentObjectConverterTest.php
typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyClassWithAllTypesOfProperties.php [deleted file]
typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyClassWithTags.php [deleted file]
typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyControllerWithIgnorevalidationAnnotation.php [deleted file]
typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/ReflectionServiceTest.php [deleted file]
typo3/sysext/extbase/Tests/UnitDeprecated/Validation/Validator/RawValidatorTest.php [deleted file]
typo3/sysext/extbase/Tests/UnitDeprecated/Validation/ValidatorResolverTest.php [deleted file]
typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassConstantMatcher.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php

index 3f4426e..c74aacc 100644 (file)
@@ -61,6 +61,7 @@ The following PHP classes that have been previously deprecated for v9 have been
 * :php:`TYPO3\CMS\Workspaces\Service\AutoPublishService`
 * :php:`TYPO3\CMS\Workspaces\Task\AutoPublishTask`
 * :php:`TYPO3\CMS\Workspaces\Task\CleanupPreviewLinkTask`
+* :php:`TYPO3\CMS\Extbase\Validation\Validator\RawValidator`
 
 
 The following PHP interfaces that have been previously deprecated for v9 have been removed:
@@ -442,6 +443,30 @@ The following public class properties have been dropped:
 * :php:`TYPO3\CMS\Impexp\Export->maxFileSize`
 * :php:`TYPO3\CMS\Impexp\Export->maxRecordSize`
 * :php:`TYPO3\CMS\Impexp\Export->maxExportSize`
+* :php:`TYPO3\CMS\Extbase\Reflection\ClassSchema->addProperty`
+* :php:`TYPO3\CMS\Extbase\Reflection\ClassSchema->setModelType`
+* :php:`TYPO3\CMS\Extbase\Reflection\ClassSchema->getModelType`
+* :php:`TYPO3\CMS\Extbase\Reflection\ClassSchema->setUuidPropertyName`
+* :php:`TYPO3\CMS\Extbase\Reflection\ClassSchema->getUuidPropertyName`
+* :php:`TYPO3\CMS\Extbase\Reflection\ClassSchema->markAsIdentityProperty`
+* :php:`TYPO3\CMS\Extbase\Reflection\ClassSchema->getIdentityProperties`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->getClassTagsValues`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->getClassTagValues`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->getClassPropertyNames`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->hasMethod`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->getMethodTagsValues`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->getMethodParameters`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->getPropertyTagsValues`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->getPropertyTagValues`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->isClassTaggedWith`
+* :php:`TYPO3\CMS\Extbase\Reflection\ReflectionService->isPropertyTaggedWith`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver->buildMethodArgumentsValidatorConjunctions`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver->buildSubObjectValidator`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver->parseValidatorAnnotation`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver->parseValidatorOptions`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver->unquoteString`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver->getMethodValidateAnnotations`
+
 
 
 The following class methods have changed visibility:
@@ -699,6 +724,8 @@ The following class constants have been dropped:
 * :php:`TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_INFO`
 * :php:`TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_NOTICE`
 * :php:`TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_WARNING`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver::PATTERN_MATCH_VALIDATORS`
+* :php:`TYPO3\CMS\Extbase\Validation\ValidatorResolver::PATTERN_MATCH_VALIDATOROPTIONS`
 
 
 The following constants have been set to protected:
index 667a999..883310e 100644 (file)
@@ -67,13 +67,6 @@ class ClassSchema
     protected $aggregateRoot = false;
 
     /**
-     * The name of the property holding the uuid of an entity, if any.
-     *
-     * @var string
-     */
-    protected $uuidPropertyName;
-
-    /**
      * Properties of the class which need to be persisted
      *
      * @var array
@@ -81,13 +74,6 @@ class ClassSchema
     protected $properties = [];
 
     /**
-     * The properties forming the identity of an object
-     *
-     * @var array
-     */
-    protected $identityProperties = [];
-
-    /**
      * Indicates if the class is a singleton or not.
      *
      * @var bool
@@ -253,14 +239,6 @@ class ClassSchema
                 $this->properties[$propertyName]['type'] = $type['type'] ? ltrim($type['type'], '\\') : null;
                 $this->properties[$propertyName]['elementType'] = $type['elementType'] ? ltrim($type['elementType'], '\\') : null;
             }
-
-            if ($docCommentParser->isTaggedWith('uuid')) {
-                $this->setUuidPropertyName($propertyName);
-            }
-
-            if ($docCommentParser->isTaggedWith('identity')) {
-                $this->markAsIdentityProperty($propertyName);
-            }
         }
     }
 
@@ -431,30 +409,6 @@ class ClassSchema
     }
 
     /**
-     * Adds (defines) a specific property and its type.
-     *
-     * @param string $name Name of the property
-     * @param string $type Type of the property
-     * @param bool $lazy Whether the property should be lazy-loaded when reconstituting
-     * @param string $cascade Strategy to cascade the object graph.
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function addProperty($name, $type, $lazy = false, $cascade = '')
-    {
-        trigger_error(
-            'This method will be removed in TYPO3 v10.0, properties will be automatically added on ClassSchema construction.',
-            E_USER_DEPRECATED
-        );
-        $type = TypeHandlingUtility::parseType($type);
-        $this->properties[$name] = [
-            'type' => $type['type'],
-            'elementType' => $type['elementType'],
-            'lazy' => $lazy,
-            'cascade' => $cascade
-        ];
-    }
-
-    /**
      * Returns the given property defined in this schema. Check with
      * hasProperty($propertyName) before!
      *
@@ -479,40 +433,6 @@ class ClassSchema
     }
 
     /**
-     * Sets the model type of the class this schema is referring to.
-     *
-     * @param int $modelType The model type, one of the MODELTYPE_* constants.
-     * @throws \InvalidArgumentException
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function setModelType($modelType)
-    {
-        trigger_error(
-            'This method will be removed in TYPO3 v10.0, modelType will be automatically set on ClassSchema construction.',
-            E_USER_DEPRECATED
-        );
-        if ($modelType < self::MODELTYPE_ENTITY || $modelType > self::MODELTYPE_VALUEOBJECT) {
-            throw new \InvalidArgumentException('"' . $modelType . '" is an invalid model type.', 1212519195);
-        }
-        $this->modelType = $modelType;
-    }
-
-    /**
-     * Returns the model type of the class this schema is referring to.
-     *
-     * @return int The model type, one of the MODELTYPE_* constants.
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getModelType()
-    {
-        trigger_error(
-            'This method will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-        return $this->modelType;
-    }
-
-    /**
      * Marks the class if it is root of an aggregate and therefore accessible
      * through a repository - or not.
      *
@@ -546,80 +466,6 @@ class ClassSchema
     }
 
     /**
-     * Sets the property marked as uuid of an object with @uuid
-     *
-     * @param string $propertyName
-     * @throws \InvalidArgumentException
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function setUuidPropertyName($propertyName)
-    {
-        trigger_error(
-            'Tagging properties with @uuid is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-        if (!array_key_exists($propertyName, $this->properties)) {
-            throw new \InvalidArgumentException('Property "' . $propertyName . '" must be added to the class schema before it can be marked as UUID property.', 1233863842);
-        }
-        $this->uuidPropertyName = $propertyName;
-    }
-
-    /**
-     * Gets the name of the property marked as uuid of an object
-     *
-     * @return string
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getUuidPropertyName()
-    {
-        trigger_error(
-            'Tagging properties with @uuid is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-        return $this->uuidPropertyName;
-    }
-
-    /**
-     * Marks the given property as one of properties forming the identity
-     * of an object. The property must already be registered in the class
-     * schema.
-     *
-     * @param string $propertyName
-     * @throws \InvalidArgumentException
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function markAsIdentityProperty($propertyName)
-    {
-        trigger_error(
-            'Tagging properties with @identity is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-        if (!array_key_exists($propertyName, $this->properties)) {
-            throw new \InvalidArgumentException('Property "' . $propertyName . '" must be added to the class schema before it can be marked as identity property.', 1233775407);
-        }
-        if ($this->properties[$propertyName]['annotations']['lazy'] === true) {
-            throw new \InvalidArgumentException('Property "' . $propertyName . '" must not be makred for lazy loading to be marked as identity property.', 1239896904);
-        }
-        $this->identityProperties[$propertyName] = $this->properties[$propertyName]['type'];
-    }
-
-    /**
-     * Gets the properties (names and types) forming the identity of an object.
-     *
-     * @return array
-     * @see markAsIdentityProperty()
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getIdentityProperties()
-    {
-        trigger_error(
-            'Tagging properties with @identity is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-        return $this->identityProperties;
-    }
-
-    /**
      * @return bool
      */
     public function hasConstructor(): bool
index 350801d..5e4b77f 100644 (file)
@@ -79,76 +79,6 @@ class ReflectionService implements SingletonInterface
     }
 
     /**
-     * Returns all tags and their values the specified class is tagged with
-     *
-     * @param string $className Name of the class
-     * @return array An array of tags and their values or an empty array if no tags were found
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getClassTagsValues($className): array
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return [];
-        }
-
-        return $classSchema->getTags();
-    }
-
-    /**
-     * Returns the values of the specified class tag
-     *
-     * @param string $className Name of the class containing the property
-     * @param string $tag Tag to return the values of
-     * @return array An array of values or an empty array if the tag was not found
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getClassTagValues($className, $tag): array
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return [];
-        }
-
-        return $classSchema->getTags()[$tag] ?? [];
-    }
-
-    /**
-     * Returns the names of all properties of the specified class
-     *
-     * @param string $className Name of the class to return the property names of
-     * @return array An array of property names or an empty array if none exist
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getClassPropertyNames($className): array
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return [];
-        }
-
-        return array_keys($classSchema->getProperties());
-    }
-
-    /**
      * Returns the class schema for the given class
      *
      * @param mixed $classNameOrObject The class name or an object
@@ -166,189 +96,6 @@ class ReflectionService implements SingletonInterface
     }
 
     /**
-     * Wrapper for method_exists() which tells if the given method exists.
-     *
-     * @param string $className Name of the class containing the method
-     * @param string $methodName Name of the method
-     * @return bool
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function hasMethod($className, $methodName): bool
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return false;
-        }
-
-        return $classSchema->hasMethod($methodName);
-    }
-
-    /**
-     * Returns all tags and their values the specified method is tagged with
-     *
-     * @param string $className Name of the class containing the method
-     * @param string $methodName Name of the method to return the tags and values of
-     * @return array An array of tags and their values or an empty array of no tags were found
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getMethodTagsValues($className, $methodName): array
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return [];
-        }
-
-        return $classSchema->getMethod($methodName)['tags'] ?? [];
-    }
-
-    /**
-     * Returns an array of parameters of the given method. Each entry contains
-     * additional information about the parameter position, type hint etc.
-     *
-     * @param string $className Name of the class containing the method
-     * @param string $methodName Name of the method to return parameter information of
-     * @return array An array of parameter names and additional information or an empty array of no parameters were found
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getMethodParameters($className, $methodName): array
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return [];
-        }
-
-        return $classSchema->getMethod($methodName)['params'] ?? [];
-    }
-
-    /**
-     * Returns all tags and their values the specified class property is tagged with
-     *
-     * @param string $className Name of the class containing the property
-     * @param string $propertyName Name of the property to return the tags and values of
-     * @return array An array of tags and their values or an empty array of no tags were found
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getPropertyTagsValues($className, $propertyName): array
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return [];
-        }
-
-        return $classSchema->getProperty($propertyName)['tags'] ?? [];
-    }
-
-    /**
-     * Returns the values of the specified class property tag
-     *
-     * @param string $className Name of the class containing the property
-     * @param string $propertyName Name of the tagged property
-     * @param string $tag Tag to return the values of
-     * @return array An array of values or an empty array if the tag was not found
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function getPropertyTagValues($className, $propertyName, $tag): array
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return [];
-        }
-
-        return $classSchema->getProperty($propertyName)['tags'][$tag] ?? [];
-    }
-
-    /**
-     * Tells if the specified class is tagged with the given tag
-     *
-     * @param string $className Name of the class
-     * @param string $tag Tag to check for
-     * @return bool TRUE if the class is tagged with $tag, otherwise FALSE
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function isClassTaggedWith($className, $tag): bool
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return false;
-        }
-
-        foreach (array_keys($classSchema->getTags()) as $tagName) {
-            if ($tagName === $tag) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Tells if the specified class property is tagged with the given tag
-     *
-     * @param string $className Name of the class
-     * @param string $propertyName Name of the property
-     * @param string $tag Tag to check for
-     * @return bool TRUE if the class property is tagged with $tag, otherwise FALSE
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function isPropertyTaggedWith($className, $propertyName, $tag): bool
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        try {
-            $classSchema = $this->getClassSchema($className);
-        } catch (\Exception $e) {
-            return false;
-        }
-
-        $property = $classSchema->getProperty($propertyName);
-
-        if (empty($property)) {
-            return false;
-        }
-
-        return isset($property['tags'][$tag]);
-    }
-
-    /**
      * Builds class schemata from classes annotated as entities or value objects
      *
      * @param string $className
diff --git a/typo3/sysext/extbase/Classes/Validation/Validator/RawValidator.php b/typo3/sysext/extbase/Classes/Validation/Validator/RawValidator.php
deleted file mode 100644 (file)
index 3c7ad98..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-namespace TYPO3\CMS\Extbase\Validation\Validator;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * A validator which accepts any input.
- *
- * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
- */
-class RawValidator extends AbstractValidator
-{
-    /**
-     * @param array $options
-     */
-    public function __construct(array $options = [])
-    {
-        trigger_error(
-            __CLASS__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        parent::__construct($options);
-    }
-
-    /**
-     * This validator is always valid.
-     *
-     * @param mixed $value The value that should be validated (not used here)
-     */
-    public function isValid($value)
-    {
-    }
-}
index 06d3dc4..14bcff0 100644 (file)
@@ -28,41 +28,6 @@ use TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator;
 class ValidatorResolver implements \TYPO3\CMS\Core\SingletonInterface
 {
     /**
-     * Match validator names and options
-     * @deprecated and will be removed in TYPO3 v10.0.
-     *
-     * @var string
-     */
-    const PATTERN_MATCH_VALIDATORS = '/
-                       (?:^|,\s*)
-                       (?P<validatorName>[a-z0-9:.\\\\]+)
-                       \s*
-                       (?:\(
-                               (?P<validatorOptions>(?:\s*[a-z0-9]+\s*=\s*(?:
-                                       "(?:\\\\"|[^"])*"
-                                       |\'(?:\\\\\'|[^\'])*\'
-                                       |(?:\s|[^,"\']*)
-                               )(?:\s|,)*)*)
-                       \))?
-               /ixS';
-
-    /**
-     * Match validator options (to parse actual options)
-     * @var string
-     * @deprecated and will be removed in TYPO3 v10.0.
-     */
-    const PATTERN_MATCH_VALIDATOROPTIONS = '/
-                       \s*
-                       (?P<optionName>[a-z0-9]+)
-                       \s*=\s*
-                       (?P<optionValue>
-                               "(?:\\\\"|[^"])*"
-                               |\'(?:\\\\\'|[^\'])*\'
-                               |(?:\s|[^,"\']*)
-                       )
-               /ixS';
-
-    /**
      * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface
      */
     protected $objectManager;
@@ -143,121 +108,6 @@ class ValidatorResolver implements \TYPO3\CMS\Core\SingletonInterface
     }
 
     /**
-     * Detects and registers any validators for arguments:
-     * - by the data type specified in the param annotations
-     * - additional validators specified in the validate annotations of a method
-     *
-     * @param string $className
-     * @param string $methodName
-     * @param array $methodParameters Optional pre-compiled array of method parameters
-     * @param array $methodValidateAnnotations Optional pre-compiled array of validate annotations (as array)
-     * @return ConjunctionValidator[] An Array of ValidatorConjunctions for each method parameters.
-     * @throws \TYPO3\CMS\Extbase\Validation\Exception\InvalidValidationConfigurationException
-     * @throws \TYPO3\CMS\Extbase\Validation\Exception\NoSuchValidatorException
-     * @throws \TYPO3\CMS\Extbase\Validation\Exception\InvalidTypeHintException
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    public function buildMethodArgumentsValidatorConjunctions($className, $methodName, array $methodParameters = null, array $methodValidateAnnotations = null)
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        /** @var ConjunctionValidator[] $validatorConjunctions */
-        $validatorConjunctions = [];
-
-        if ($methodParameters === null) {
-            $methodParameters = $this->reflectionService
-                ->getClassSchema($className)
-                ->getMethod($methodName)['params'] ?? [];
-        }
-        if (empty($methodParameters)) {
-            return $validatorConjunctions;
-        }
-
-        foreach ($methodParameters as $parameterName => $methodParameter) {
-            /** @var ConjunctionValidator $validatorConjunction */
-            $validatorConjunction = $this->createValidator(ConjunctionValidator::class);
-
-            if (!array_key_exists('type', $methodParameter)) {
-                throw new Exception\InvalidTypeHintException('Missing type information, probably no @param annotation for parameter "$' . $parameterName . '" in ' . $className . '->' . $methodName . '()', 1281962564);
-            }
-
-            if (strpbrk($methodParameter['type'], '\\') === false) {
-                $typeValidator = $this->createValidator($methodParameter['type']);
-            } else {
-                $typeValidator = null;
-            }
-
-            if ($typeValidator !== null) {
-                $validatorConjunction->addValidator($typeValidator);
-            }
-            $validatorConjunctions[$parameterName] = $validatorConjunction;
-        }
-
-        if ($methodValidateAnnotations === null) {
-            $validateAnnotations = $this->getMethodValidateAnnotations($className, $methodName);
-            $methodValidateAnnotations = array_map(function ($validateAnnotation) {
-                return [
-                    'type' => $validateAnnotation['validatorName'],
-                    'options' => $validateAnnotation['validatorOptions'],
-                    'argumentName' => $validateAnnotation['argumentName'],
-                ];
-            }, $validateAnnotations);
-        }
-
-        foreach ($methodValidateAnnotations as $annotationParameters) {
-            $newValidator = $this->createValidator($annotationParameters['type'], $annotationParameters['options']);
-            if ($newValidator === null) {
-                throw new Exception\NoSuchValidatorException('Invalid validate annotation in ' . $className . '->' . $methodName . '(): Could not resolve class name for  validator "' . $annotationParameters['type'] . '".', 1239853109);
-            }
-            if (isset($validatorConjunctions[$annotationParameters['argumentName']])) {
-                $validatorConjunctions[$annotationParameters['argumentName']]->addValidator($newValidator);
-            } elseif (strpos($annotationParameters['argumentName'], '.') !== false) {
-                $objectPath = explode('.', $annotationParameters['argumentName']);
-                $argumentName = array_shift($objectPath);
-                $validatorConjunctions[$argumentName]->addValidator($this->buildSubObjectValidator($objectPath, $newValidator));
-            } else {
-                throw new Exception\InvalidValidationConfigurationException('Invalid validate annotation in ' . $className . '->' . $methodName . '(): Validator specified for argument name "' . $annotationParameters['argumentName'] . '", but this argument does not exist.', 1253172726);
-            }
-        }
-
-        return $validatorConjunctions;
-    }
-
-    /**
-     * Builds a chain of nested object validators by specification of the given
-     * object path.
-     *
-     * @param array $objectPath The object path
-     * @param \TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface $propertyValidator The validator which should be added to the property specified by objectPath
-     * @return \TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    protected function buildSubObjectValidator(array $objectPath, \TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface $propertyValidator)
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        $rootObjectValidator = $this->objectManager->get(\TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator::class, []);
-        $parentObjectValidator = $rootObjectValidator;
-
-        while (count($objectPath) > 1) {
-            $subObjectValidator = $this->objectManager->get(\TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator::class, []);
-            $subPropertyName = array_shift($objectPath);
-            $parentObjectValidator->addPropertyValidator($subPropertyName, $subObjectValidator);
-            $parentObjectValidator = $subObjectValidator;
-        }
-
-        $parentObjectValidator->addPropertyValidator(array_shift($objectPath), $propertyValidator);
-
-        return $rootObjectValidator;
-    }
-
-    /**
      * Builds a base validator conjunction for the given data type.
      *
      * The base validation rules are those which were declared directly in a class (typically
@@ -370,92 +220,6 @@ class ValidatorResolver implements \TYPO3\CMS\Core\SingletonInterface
     }
 
     /**
-     * Parses the validator options given in @validate annotations.
-     *
-     * @param string $validateValue
-     * @return array
-     * @internal
-     * @deprecated Helper, remove in TYPO3 v10.0 together with the deprecated consumer methods
-     */
-    public function parseValidatorAnnotation($validateValue)
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        $matches = [];
-        if ($validateValue[0] === '$') {
-            $parts = explode(' ', $validateValue, 2);
-            $validatorConfiguration = ['argumentName' => ltrim($parts[0], '$'), 'validators' => []];
-            preg_match_all(self::PATTERN_MATCH_VALIDATORS, $parts[1], $matches, PREG_SET_ORDER);
-        } else {
-            $validatorConfiguration = ['validators' => []];
-            preg_match_all(self::PATTERN_MATCH_VALIDATORS, $validateValue, $matches, PREG_SET_ORDER);
-        }
-        foreach ($matches as $match) {
-            $validatorOptions = [];
-            if (isset($match['validatorOptions'])) {
-                $validatorOptions = $this->parseValidatorOptions($match['validatorOptions']);
-            }
-            $validatorConfiguration['validators'][] = ['validatorName' => $match['validatorName'], 'validatorOptions' => $validatorOptions];
-        }
-        return $validatorConfiguration;
-    }
-
-    /**
-     * Parses $rawValidatorOptions not containing quoted option values.
-     * $rawValidatorOptions will be an empty string afterwards (pass by ref!).
-     *
-     * @param string $rawValidatorOptions
-     * @return array An array of optionName/optionValue pairs
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    protected function parseValidatorOptions($rawValidatorOptions)
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        $validatorOptions = [];
-        $parsedValidatorOptions = [];
-        preg_match_all(self::PATTERN_MATCH_VALIDATOROPTIONS, $rawValidatorOptions, $validatorOptions, PREG_SET_ORDER);
-        foreach ($validatorOptions as $validatorOption) {
-            $parsedValidatorOptions[trim($validatorOption['optionName'])] = trim($validatorOption['optionValue']);
-        }
-        array_walk($parsedValidatorOptions, [$this, 'unquoteString']);
-        return $parsedValidatorOptions;
-    }
-
-    /**
-     * Removes escapings from a given argument string and trims the outermost
-     * quotes.
-     *
-     * This method is meant as a helper for regular expression results.
-     *
-     * @param string &$quotedValue Value to unquote
-     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
-     */
-    protected function unquoteString(&$quotedValue)
-    {
-        trigger_error(
-            'Method ' . __METHOD__ . ' is deprecated and will be removed in TYPO3 v10.0.',
-            E_USER_DEPRECATED
-        );
-
-        switch ($quotedValue[0]) {
-            case '"':
-                $quotedValue = str_replace('\\"', '"', trim($quotedValue, '"'));
-                break;
-            case '\'':
-                $quotedValue = str_replace('\\\'', '\'', trim($quotedValue, '\''));
-                break;
-        }
-        $quotedValue = str_replace('\\\\', '\\', $quotedValue);
-    }
-
-    /**
      * Returns an object of an appropriate validator for the given class. If no validator is available
      * FALSE is returned
      *
@@ -543,34 +307,4 @@ class ValidatorResolver implements \TYPO3\CMS\Core\SingletonInterface
         }
         return $type;
     }
-
-    /**
-     * Temporary replacement for $this->reflectionService->getMethodAnnotations()
-     *
-     * @param string $className
-     * @param string $methodName
-     *
-     * @return array
-     * @deprecated Helper, remove in TYPO3 v10.0 together with buildMethodArgumentsValidatorConjunctions()
-     */
-    public function getMethodValidateAnnotations($className, $methodName)
-    {
-        $validateAnnotations = [];
-        $methodTagsValues = $this->reflectionService->getClassSchema($className)->getMethod($methodName)['tags'] ?? [];
-        if (isset($methodTagsValues['validate']) && is_array($methodTagsValues['validate'])) {
-            foreach ($methodTagsValues['validate'] as $validateValue) {
-                $parsedAnnotations = $this->parseValidatorAnnotation($validateValue);
-
-                foreach ($parsedAnnotations['validators'] as $validator) {
-                    $validateAnnotations[] = [
-                        'argumentName' => $parsedAnnotations['argumentName'],
-                        'validatorName' => $validator['validatorName'],
-                        'validatorOptions' => $validator['validatorOptions']
-                    ];
-                }
-            }
-        }
-
-        return $validateAnnotations;
-    }
 }
index b4d201a..a7bc2db 100644 (file)
@@ -146,20 +146,6 @@ class ValidatorResolverTest extends \TYPO3\TestingFramework\Core\Functional\Func
     /**
      * @test
      */
-    public function buildMethodArgumentsValidatorConjunctionsReturnsEmptyArrayIfMethodHasNoArguments()
-    {
-        $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(Fixture\Controller\TestController::class);
-        $result = $this->validatorResolver->buildMethodArgumentsValidatorConjunctions(
-            $controller,
-            'noParamsAction'
-        );
-
-        static::assertSame([], $result);
-    }
-
-    /**
-     * @test
-     */
     public function buildBaseValidatorConjunctionAddsValidatorsDefinedByAnnotationsInTheClassToTheReturnedConjunction()
     {
         $this->validatorResolver->_call(
index 7533e8d..f02ff06 100644 (file)
@@ -253,7 +253,6 @@ class PersistentObjectConverterTest extends UnitTestCase
         $mockClassSchema = $this->getMockBuilder(\TYPO3\CMS\Extbase\Reflection\ClassSchema::class)
             ->setConstructorArgs([\TYPO3\CMS\Extbase\Tests\Unit\Property\TypeConverter\Fixtures\Query::class])
             ->getMock();
-        $mockClassSchema->expects($this->any())->method('getIdentityProperties')->will($this->returnValue(['key1' => 'someType']));
         $this->mockReflectionService->expects($this->any())->method('getClassSchema')->with('SomeType')->will($this->returnValue($mockClassSchema));
 
         $mockConstraint = $this->getMockBuilder(\TYPO3\CMS\Extbase\Persistence\Generic\Qom\Comparison::class)->disableOriginalConstructor()->getMock();
@@ -336,11 +335,6 @@ class PersistentObjectConverterTest extends UnitTestCase
         $expectedObject = new \TYPO3\CMS\Extbase\Tests\Fixture\ClassWithSetters();
         $expectedObject->property1 = 'bar';
 
-        $this->mockReflectionService
-            ->expects($this->any())
-            ->method('getMethodParameters')
-            ->with(\TYPO3\CMS\Extbase\Tests\Fixture\ClassWithSetters::class, '__construct')
-            ->will($this->throwException(new \ReflectionException('testing', 1476107618)));
         $configuration = $this->buildConfiguration([PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED => true]);
         $result = $this->converter->convertFrom($source, \TYPO3\CMS\Extbase\Tests\Fixture\ClassWithSetters::class, $convertedChildProperties, $configuration);
         $this->assertEquals($expectedObject, $result);
@@ -361,7 +355,6 @@ class PersistentObjectConverterTest extends UnitTestCase
             'propertyNotExisting' => 'bar'
         ];
         $this->mockObjectManager->expects($this->any())->method('get')->with(\TYPO3\CMS\Extbase\Tests\Fixture\ClassWithSetters::class)->will($this->returnValue($object));
-        $this->mockReflectionService->expects($this->any())->method('getMethodParameters')->with(\TYPO3\CMS\Extbase\Tests\Fixture\ClassWithSetters::class, '__construct')->will($this->returnValue([]));
         $configuration = $this->buildConfiguration([PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED => true]);
         $result = $this->converter->convertFrom($source, \TYPO3\CMS\Extbase\Tests\Fixture\ClassWithSetters::class, $convertedChildProperties, $configuration);
         $this->assertSame($object, $result);
diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyClassWithAllTypesOfProperties.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyClassWithAllTypesOfProperties.php
deleted file mode 100644 (file)
index 31b26b6..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-declare(strict_types = 1);
-
-namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Reflection\Fixture;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Fixture class with getters and setters
- */
-class DummyClassWithAllTypesOfProperties
-{
-    public $publicProperty;
-
-    protected $protectedProperty;
-
-    private $privateProperty;
-
-    public static $publicStaticProperty;
-
-    protected static $protectedStaticProperty;
-
-    private static $privateStaticProperty;
-
-    /**
-     * @license
-     * @copyright
-     * @author
-     * @version
-     */
-    public $propertyWithIgnoredTags;
-
-    /**
-     * @inject
-     * @var DummyClassWithAllTypesOfProperties
-     */
-    public $propertyWithInjectAnnotation;
-
-    /**
-     * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Tests\Unit\Reflection\Fixture\DummyClassWithAllTypesOfProperties>
-     */
-    public $propertyWithObjectStorageAnnotation;
-}
diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyClassWithTags.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyClassWithTags.php
deleted file mode 100644 (file)
index 215d34e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Reflection\Fixture;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Fixture class with tags
- *
- * @license
- * @copyright
- * @author
- * @version
- *
- * @see
- */
-class DummyClassWithTags
-{
-}
diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyControllerWithIgnorevalidationAnnotation.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/Fixture/DummyControllerWithIgnorevalidationAnnotation.php
deleted file mode 100644 (file)
index ec47c39..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Reflection\Fixture;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Fixture class with getters and setters
- */
-class DummyControllerWithIgnorevalidationAnnotation
-{
-    /**
-     * @param $someArgument
-     * @ignorevalidation $someArgument
-     * @ignorevalidation $foo
-     * @ignorevalidation $foo $bar
-     */
-    public function someAction($someArgument)
-    {
-    }
-}
diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/ReflectionServiceTest.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Reflection/ReflectionServiceTest.php
deleted file mode 100644 (file)
index 325d2d7..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-<?php
-declare(strict_types = 1);
-
-namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Reflection;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Extbase\Reflection\ReflectionService;
-use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
-
-/**
- * Test case
- * @see test for reflection
- * @link second test for reflection
- * @link second test for reflection with second value
- */
-class ReflectionServiceTest extends UnitTestCase
-{
-    /**
-     * @param array $foo The foo parameter
-     * @return string
-     */
-    public function fixtureMethodForMethodTagsValues(array $foo): string
-    {
-        return '';
-    }
-
-    /**
-     * @param bool $dummy
-     * @param int $foo
-     */
-    public function fixtureMethodForMethodTagsValuesWithShortTypes($dummy, $foo): void
-    {
-    }
-
-    /**
-     * @test
-     */
-    public function getClassTagsValues(): void
-    {
-        $service = new ReflectionService();
-        $classValues = $service->getClassTagsValues(static::class);
-        $this->assertEquals([
-            'see' => ['test for reflection'],
-            'link' => ['second test for reflection', 'second test for reflection with second value']
-        ], $classValues);
-
-        $this->assertEquals(
-            [],
-            $service->getClassTagsValues('NonExistantNamespace\\NonExistantClass')
-        );
-    }
-
-    /**
-     * @test
-     */
-    public function getClassTagValues(): void
-    {
-        $service = new ReflectionService();
-        $classValues = $service->getClassTagValues(static::class, 'see');
-        $this->assertEquals([
-            'test for reflection',
-        ], $classValues);
-
-        $this->assertEquals(
-            [],
-            $service->getClassTagValues(static::class, 'nonExistantTag')
-        );
-
-        $this->assertEquals(
-            [],
-            $service->getClassTagValues('NonExistantNamespace\\NonExistantClass', 'nonExistantTag')
-        );
-    }
-
-    /**
-     * @test
-     */
-    public function hasMethod(): void
-    {
-        $service = new ReflectionService();
-        $this->assertTrue($service->hasMethod(static::class, 'fixtureMethodForMethodTagsValues'));
-        $this->assertFalse($service->hasMethod(static::class, 'notExistentMethod'));
-        $this->assertFalse($service->hasMethod('NonExistantNamespace\\NonExistantClass', 'notExistentMethod'));
-    }
-
-    /**
-     * @test
-     */
-    public function getMethodTagsValues(): void
-    {
-        $service = new ReflectionService();
-        $tagsValues = $service->getMethodTagsValues(static::class, 'fixtureMethodForMethodTagsValues');
-        $this->assertEquals([
-            'param' => ['array $foo The foo parameter'],
-            'return' => ['string']
-        ], $tagsValues);
-
-        $this->assertEquals(
-            [],
-            $service->getMethodTagsValues(static::class, 'notExistentMethod')
-        );
-
-        $this->assertEquals(
-            [],
-            $service->getMethodTagsValues('NonExistantNamespace\\NonExistantClass', 'notExistentMethod')
-        );
-    }
-
-    /**
-     * @test
-     */
-    public function getMethodParameters(): void
-    {
-        $service = new ReflectionService();
-        $parameters = $service->getMethodParameters(static::class, 'fixtureMethodForMethodTagsValues');
-        $this->assertSame([
-            'foo' => [
-                'position' => 0,
-                'byReference' => false,
-                'array' => true,
-                'optional' => false,
-                'allowsNull' => false,
-                'class' => null,
-                'type' => 'array',
-                'nullable' => false,
-                'default' =>  null,
-                'hasDefaultValue' =>  false,
-                'defaultValue' =>  null,
-                'dependency' =>  null,
-                'validators' => [],
-            ]
-        ], $parameters);
-
-        $this->assertSame(
-            [],
-            $service->getMethodParameters(static::class, 'notExistentMethod')
-        );
-
-        $this->assertSame(
-            [],
-            $service->getMethodParameters('NonExistantNamespace\\NonExistantClass', 'notExistentMethod')
-        );
-    }
-
-    /**
-     * @test
-     */
-    public function getMethodParametersWithShortTypeNames(): void
-    {
-        $service = new ReflectionService();
-        $parameters = $service->getMethodParameters(static::class, 'fixtureMethodForMethodTagsValuesWithShortTypes');
-        $this->assertSame([
-            'dummy' => [
-                'position' => 0,
-                'byReference' => false,
-                'array' => false,
-                'optional' => false,
-                'allowsNull' => true,
-                'class' => null,
-                'type' => 'boolean',
-                'nullable' => true,
-                'default' =>  null,
-                'hasDefaultValue' =>  false,
-                'defaultValue' =>  null,
-                'dependency' =>  null,
-                'validators' => [],
-            ],
-            'foo' => [
-                'position' => 1,
-                'byReference' => false,
-                'array' => false,
-                'optional' => false,
-                'allowsNull' => true,
-                'class' => null,
-                'type' => 'integer',
-                'nullable' => true,
-                'default' =>  null,
-                'hasDefaultValue' =>  false,
-                'defaultValue' =>  null,
-                'dependency' =>  null,
-                'validators' => [],
-            ]
-        ], $parameters);
-    }
-
-    public function testIsClassTaggedWith(): void
-    {
-        $service = new ReflectionService();
-        $this->assertTrue($service->isClassTaggedWith(
-            Fixture\DummyClassWithTags::class,
-            'see'
-        ));
-
-        $this->assertFalse($service->isClassTaggedWith(
-            Fixture\DummyClassWithAllTypesOfProperties::class,
-            'bar'
-        ));
-
-        $this->assertFalse($service->isClassTaggedWith(
-            'NonExistantNamespace\\NonExistantClass',
-            'foo'
-        ));
-    }
-
-    public function testIsPropertyTaggedWith(): void
-    {
-        $service = new ReflectionService();
-        $this->assertTrue($service->isPropertyTaggedWith(
-            Fixture\DummyClassWithAllTypesOfProperties::class,
-            'propertyWithInjectAnnotation',
-            'inject'
-        ));
-
-        $this->assertFalse($service->isPropertyTaggedWith(
-            Fixture\DummyClassWithAllTypesOfProperties::class,
-            'propertyWithInjectAnnotation',
-            'foo'
-        ));
-
-        $this->assertFalse($service->isPropertyTaggedWith(
-            Fixture\DummyClassWithAllTypesOfProperties::class,
-            'nonExistantProperty',
-            'foo'
-        ));
-
-        $this->assertFalse($service->isPropertyTaggedWith(
-            'NonExistantNamespace\\NonExistantClass',
-            'propertyWithInjectAnnotation',
-            'inject'
-        ));
-    }
-
-    public function testgetPropertyTagValues(): void
-    {
-        $service = new ReflectionService();
-        $this->assertSame(
-            [],
-            $service->getPropertyTagValues(
-                Fixture\DummyClassWithAllTypesOfProperties::class,
-                'propertyWithInjectAnnotation',
-                'foo'
-            )
-        );
-
-        $this->assertSame(
-            [],
-            $service->getPropertyTagValues(
-                Fixture\DummyClassWithAllTypesOfProperties::class,
-                'propertyWithInjectAnnotation',
-                'inject'
-            )
-        );
-    }
-
-    public function testGetPropertyTagsValues(): void
-    {
-        $service = new ReflectionService();
-        $this->assertSame(
-            [
-                'inject' => [],
-                'var' => [
-                    'DummyClassWithAllTypesOfProperties'
-                ]
-            ],
-            $service->getPropertyTagsValues(
-                Fixture\DummyClassWithAllTypesOfProperties::class,
-                'propertyWithInjectAnnotation'
-            )
-        );
-
-        $this->assertSame(
-            [],
-            $service->getPropertyTagsValues(
-                Fixture\DummyClassWithAllTypesOfProperties::class,
-                'nonExistantProperty'
-            )
-        );
-
-        $this->assertSame(
-            [],
-            $service->getPropertyTagsValues(
-                'NonExistantNamespace\\NonExistantClass',
-                'nonExistantProperty'
-            )
-        );
-    }
-
-    public function testGetClassPropertyNames(): void
-    {
-        $service = new ReflectionService();
-        $this->assertSame(
-            [
-                'publicProperty',
-                'protectedProperty',
-                'privateProperty',
-                'publicStaticProperty',
-                'protectedStaticProperty',
-                'privateStaticProperty',
-                'propertyWithIgnoredTags',
-                'propertyWithInjectAnnotation',
-                'propertyWithObjectStorageAnnotation'
-            ],
-            $service->getClassPropertyNames(Fixture\DummyClassWithAllTypesOfProperties::class)
-        );
-
-        $this->assertSame(
-            [],
-            $service->getClassPropertyNames('NonExistantNamespace\\NonExistantClass')
-        );
-    }
-}
diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Validation/Validator/RawValidatorTest.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Validation/Validator/RawValidatorTest.php
deleted file mode 100644 (file)
index 1f7bd61..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Validation\Validator;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Testcase for the raw validator
- */
-class RawValidatorTest extends \TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator\AbstractValidatorTestcase
-{
-    /**
-     * @var string
-     */
-    protected $validatorClassName = \TYPO3\CMS\Extbase\Validation\Validator\RawValidator::class;
-
-    /**
-     * @test
-     */
-    public function theRawValidatorAlwaysReturnsNoErrors()
-    {
-        $rawValidator = new \TYPO3\CMS\Extbase\Validation\Validator\RawValidator([]);
-        $this->assertFalse($rawValidator->validate('simple1expression')->hasErrors());
-        $this->assertFalse($rawValidator->validate('')->hasErrors());
-        $this->assertFalse($rawValidator->validate(null)->hasErrors());
-        $this->assertFalse($rawValidator->validate(false)->hasErrors());
-        $this->assertFalse($rawValidator->validate(new \ArrayObject())->hasErrors());
-    }
-}
diff --git a/typo3/sysext/extbase/Tests/UnitDeprecated/Validation/ValidatorResolverTest.php b/typo3/sysext/extbase/Tests/UnitDeprecated/Validation/ValidatorResolverTest.php
deleted file mode 100644 (file)
index 3a64442..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-<?php
-declare(strict_types = 1);
-namespace TYPO3\CMS\Extbase\Tests\UnitDeprecated\Validation;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Extbase\Reflection\ClassSchema;
-use TYPO3\CMS\Extbase\Validation\Exception\InvalidValidationConfigurationException;
-use TYPO3\CMS\Extbase\Validation\ValidatorResolver;
-use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
-
-/**
- * Test case
- */
-class ValidatorResolverTest extends UnitTestCase
-{
-    /**
-     * @var \TYPO3\CMS\Extbase\Validation\ValidatorResolver | \PHPUnit_Framework_MockObject_MockObject | \TYPO3\TestingFramework\Core\AccessibleObjectInterface
-     */
-    protected $validatorResolver;
-
-    protected function setUp()
-    {
-        $this->validatorResolver = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Validation\ValidatorResolver::class, ['dummy']);
-    }
-
-    /**
-     * @test
-     */
-    public function buildMethodArgumentsValidatorConjunctionsReturnsEmptyArrayIfMethodHasNoArguments()
-    {
-        $mockController = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Mvc\Controller\ActionController::class, ['fooAction'], [], '', false);
-        $className = get_class($mockController);
-        $methodName = 'fooAction';
-
-        $classSchemaMock = $this->createMock(ClassSchema::class);
-        $classSchemaMock->expects($this->any())->method('getMethod')->with($methodName)->willReturn([
-            'params' => [],
-        ]);
-
-        $mockReflectionService = $this->createMock(\TYPO3\CMS\Extbase\Reflection\ReflectionService::class);
-        $mockReflectionService->expects($this->any())->method('getClassSchema')->with($className)->willReturn($classSchemaMock);
-
-        /** @var ValidatorResolver|\PHPUnit_Framework_MockObject_MockObject|\TYPO3\TestingFramework\Core\AccessibleObjectInterface $validatorResolver */
-        $validatorResolver = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Validation\ValidatorResolver::class, ['createValidator']);
-        $validatorResolver->_set('reflectionService', $mockReflectionService);
-
-        $result = $validatorResolver->buildMethodArgumentsValidatorConjunctions($className, $methodName);
-        $this->assertSame([], $result);
-    }
-
-    /**
-     * @test
-     */
-    public function buildMethodArgumentsValidatorConjunctionsBuildsAConjunctionFromValidateAnnotationsOfTheSpecifiedMethod()
-    {
-        $mockObject = $this->getMockBuilder('stdClass')
-            ->setMethods(['fooMethod'])
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $className = get_class($mockObject);
-        $methodName = 'fooAction';
-
-        $methodParameters = [
-            'arg1' => [
-                'type' => 'string'
-            ],
-            'arg2' => [
-                'type' => 'array'
-            ]
-        ];
-        $methodTagsValues = [
-            'param' => [
-                'string $arg1',
-                'array $arg2'
-            ],
-            'validate' => [
-                '$arg1 Foo(bar = baz), Bar',
-                '$arg2 VENDOR\\ModelCollection\\Domain\\Model\\Model'
-            ]
-        ];
-
-        $classSchemaMock = $this->createMock(ClassSchema::class);
-        $classSchemaMock->expects($this->any())->method('getMethod')->with($methodName)->willReturn([
-            'params' => $methodParameters,
-            'tags' => $methodTagsValues
-        ]);
-
-        $mockReflectionService = $this->createMock(\TYPO3\CMS\Extbase\Reflection\ReflectionService::class);
-        $mockReflectionService->expects($this->any())->method('getClassSchema')->with($className)->willReturn($classSchemaMock);
-
-        $mockStringValidator = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface::class);
-        $mockArrayValidator = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface::class);
-        $mockFooValidator = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface::class);
-        $mockBarValidator = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface::class);
-        $mockQuuxValidator = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface::class);
-        $conjunction1 = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator::class);
-        $conjunction1->expects($this->at(0))->method('addValidator')->with($mockStringValidator);
-        $conjunction1->expects($this->at(1))->method('addValidator')->with($mockFooValidator);
-        $conjunction1->expects($this->at(2))->method('addValidator')->with($mockBarValidator);
-        $conjunction2 = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator::class);
-        $conjunction2->expects($this->at(0))->method('addValidator')->with($mockArrayValidator);
-        $conjunction2->expects($this->at(1))->method('addValidator')->with($mockQuuxValidator);
-        $mockArguments = new \TYPO3\CMS\Extbase\Mvc\Controller\Arguments();
-        $mockArguments->addArgument(new \TYPO3\CMS\Extbase\Mvc\Controller\Argument('arg1', 'dummyValue'));
-        $mockArguments->addArgument(new \TYPO3\CMS\Extbase\Mvc\Controller\Argument('arg2', 'dummyValue'));
-
-        /** @var ValidatorResolver|\PHPUnit_Framework_MockObject_MockObject|\TYPO3\TestingFramework\Core\AccessibleObjectInterface $validatorResolver */
-        $validatorResolver = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Validation\ValidatorResolver::class, ['createValidator']);
-        $validatorResolver->expects($this->at(0))->method('createValidator')->with(\TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator::class)->will($this->returnValue($conjunction1));
-        $validatorResolver->expects($this->at(1))->method('createValidator')->with('string')->will($this->returnValue($mockStringValidator));
-        $validatorResolver->expects($this->at(2))->method('createValidator')->with(\TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator::class)->will($this->returnValue($conjunction2));
-        $validatorResolver->expects($this->at(3))->method('createValidator')->with('array')->will($this->returnValue($mockArrayValidator));
-        $validatorResolver->expects($this->at(4))->method('createValidator')->with('Foo', ['bar' => 'baz'])->will($this->returnValue($mockFooValidator));
-        $validatorResolver->expects($this->at(5))->method('createValidator')->with('Bar')->will($this->returnValue($mockBarValidator));
-        $validatorResolver->expects($this->at(6))->method('createValidator')->with('VENDOR\\ModelCollection\\Domain\\Model\\Model')->will($this->returnValue($mockQuuxValidator));
-        $validatorResolver->_set('reflectionService', $mockReflectionService);
-
-        $result = $validatorResolver->buildMethodArgumentsValidatorConjunctions($className, $methodName);
-        $this->assertEquals(['arg1' => $conjunction1, 'arg2' => $conjunction2], $result);
-    }
-
-    /**
-     * @test
-     */
-    public function buildMethodArgumentsValidatorConjunctionsThrowsExceptionIfValidationAnnotationForNonExistingArgumentExists()
-    {
-        $this->expectException(InvalidValidationConfigurationException::class);
-        $this->expectExceptionCode(1253172726);
-        $mockObject = $this->getMockBuilder('stdClass')
-            ->setMethods(['fooMethod'])
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $className = get_class($mockObject);
-        $methodName = 'fooAction';
-
-        $methodParameters = [
-            'arg1' => [
-                'type' => 'string'
-            ]
-        ];
-        $methodTagsValues = [
-            'param' => [
-                'string $arg1'
-            ],
-            'validate' => [
-                '$arg2 VENDOR\\ModelCollection\\Domain\\Model\\Model'
-            ]
-        ];
-
-        $classSchemaMock = $this->createMock(ClassSchema::class);
-        $classSchemaMock->expects($this->any())->method('getMethod')->with($methodName)->willReturn([
-            'params' => $methodParameters,
-            'tags' => $methodTagsValues
-        ]);
-
-        $mockReflectionService = $this->createMock(\TYPO3\CMS\Extbase\Reflection\ReflectionService::class);
-        $mockReflectionService->expects($this->any())->method('getClassSchema')->with($className)->willReturn($classSchemaMock);
-
-        $mockStringValidator = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface::class);
-        $mockQuuxValidator = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface::class);
-        $conjunction1 = $this->createMock(\TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator::class);
-        $conjunction1->expects($this->at(0))->method('addValidator')->with($mockStringValidator);
-
-        /** @var ValidatorResolver|\PHPUnit_Framework_MockObject_MockObject|\TYPO3\TestingFramework\Core\AccessibleObjectInterface $validatorResolver */
-        $validatorResolver = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Validation\ValidatorResolver::class, ['createValidator']);
-        $validatorResolver->expects($this->at(0))->method('createValidator')->with(\TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator::class)->will($this->returnValue($conjunction1));
-        $validatorResolver->expects($this->at(1))->method('createValidator')->with('string')->will($this->returnValue($mockStringValidator));
-        $validatorResolver->expects($this->at(2))->method('createValidator')->with('VENDOR\\ModelCollection\\Domain\\Model\\Model')->will($this->returnValue($mockQuuxValidator));
-        $validatorResolver->_set('reflectionService', $mockReflectionService);
-        $validatorResolver->buildMethodArgumentsValidatorConjunctions($className, $methodName);
-    }
-
-    /**
-     * dataProvider for parseValidatorAnnotationCanParseAnnotations
-     * @return array
-     */
-    public function validatorAnnotations(): array
-    {
-        return [
-            [
-                '$var Bar',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Bar', 'validatorOptions' => []]
-                    ]
-                ]
-            ],
-            [
-                '$var Bar, Foo',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Bar', 'validatorOptions' => []],
-                        ['validatorName' => 'Foo', 'validatorOptions' => []]
-                    ]
-                ]
-            ],
-            [
-                '$var Baz (Foo=Bar)',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Baz', 'validatorOptions' => ['Foo' => 'Bar']]
-                    ]
-                ]
-            ],
-            [
-                '$var Buzz (Foo="B=a, r", Baz=1)',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Buzz', 'validatorOptions' => ['Foo' => 'B=a, r', 'Baz' => '1']]
-                    ]
-                ]
-            ],
-            [
-                '$var Foo(Baz=1, Bar=Quux)',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Foo', 'validatorOptions' => ['Baz' => '1', 'Bar' => 'Quux']]
-                    ]
-                ]
-            ],
-            [
-                '$var Pax, Foo(Baz = \'1\', Bar = Quux)',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Pax', 'validatorOptions' => []],
-                        ['validatorName' => 'Foo', 'validatorOptions' => ['Baz' => '1', 'Bar' => 'Quux']]
-                    ]
-                ]
-            ],
-            [
-                '$var Reg (P="[at]*(h|g)"), Quux',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Reg', 'validatorOptions' => ['P' => '[at]*(h|g)']],
-                        ['validatorName' => 'Quux', 'validatorOptions' => []]
-                    ]
-                ]
-            ],
-            [
-                '$var Baz (Foo="B\\"ar")',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Baz', 'validatorOptions' => ['Foo' => 'B"ar']]
-                    ]
-                ]
-            ],
-            [
-                '$var Baz(Foo="5"), Bar(Quux="123")',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Baz', 'validatorOptions' => ['Foo' => '5']],
-                        ['validatorName' => 'Bar', 'validatorOptions' => ['Quux' => '123']]
-                    ]
-                ]
-            ],
-            [
-                '$var Baz(Foo="2"), Bar(Quux=123, Pax="a weird \\"string\\" with *freaky* \\stuff")',
-                [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Baz', 'validatorOptions' => ['Foo' => '2']],
-                        ['validatorName' => 'Bar', 'validatorOptions' => ['Quux' => '123', 'Pax' => 'a weird "string" with *freaky* \\stuff']]
-                    ]
-                ]
-            ],
-            'namespaced validator class name' => [
-                'annotation' => '$var F3\TestPackage\Quux',
-                'expected' => [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'F3\TestPackage\Quux', 'validatorOptions' => []]
-                    ]
-                ]
-            ],
-            'shorthand notation for system validator' => [
-                'annotation' => '$var TYPO3.CMS.Mypkg:MySecond',
-                'expected' => [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'TYPO3.CMS.Mypkg:MySecond', 'validatorOptions' => []]
-                    ]
-                ]
-            ],
-            'shorthand notation for custom validator with parameter' => [
-                'annotation' => '$var Acme.Mypkg:MyThird(Foo="2")',
-                'expected' => [
-                    'argumentName' => 'var',
-                    'validators' => [
-                        ['validatorName' => 'Acme.Mypkg:MyThird', 'validatorOptions' => ['Foo' => '2']]
-                    ]
-                ]
-            ],
-        ];
-    }
-
-    /**
-     * @test
-     * @dataProvider validatorAnnotations
-     *
-     * @param mixed $annotation
-     * @param mixed $expectedResult
-     */
-    public function parseValidatorAnnotationCanParseAnnotations($annotation, $expectedResult)
-    {
-        $result = $this->validatorResolver->_call('parseValidatorAnnotation', $annotation);
-        static::assertEquals($result, $expectedResult);
-    }
-}
index 60d1ac2..5c2eaf1 100644 (file)
@@ -158,4 +158,14 @@ return [
             'Deprecation-86438-PageRenderer-loadJQuery.rst',
         ],
     ],
+    'TYPO3\CMS\Extbase\Validation\ValidatorResolver::PATTERN_MATCH_VALIDATORS' => [
+        'restFiles' => [
+            'Breaking-80700-DeprecatedFunctionalityRemoved.rst',
+        ],
+    ],
+    'TYPO3\CMS\Extbase\Validation\ValidatorResolver::PATTERN_MATCH_VALIDATOROPTIONS' => [
+        'restFiles' => [
+            'Breaking-80700-DeprecatedFunctionalityRemoved.rst',
+        ],
+    ],
 ];
index 97e3778..f8f1eb7 100644 (file)
@@ -691,6 +691,7 @@ return [
     ],
     'TYPO3\CMS\Extbase\Validation\Validator\RawValidator' => [
         'restFiles' => [
+            'Breaking-80700-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-83503-DeprecateUnneededRawValidator.rst',
         ],
     ],
index a1d4f9f..a40a9bf 100644 (file)
@@ -1535,6 +1535,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 4,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst',
         ],
     ],
@@ -1542,6 +1543,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst',
         ],
     ],
@@ -1549,6 +1551,7 @@ return [
         'numberOfMandatoryArguments' => 0,
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst',
         ],
     ],
@@ -1556,6 +1559,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst',
         ],
     ],
@@ -1563,6 +1567,7 @@ return [
         'numberOfMandatoryArguments' => 0,
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst',
         ],
     ],
@@ -1570,6 +1575,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst',
         ],
     ],
@@ -1577,6 +1583,7 @@ return [
         'numberOfMandatoryArguments' => 0,
         'maximumNumberOfArguments' => 0,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-57594-OptimizeReflectionServiceCacheHandling.rst',
         ],
     ],
@@ -2277,6 +2284,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-83475-AggregateValidatorInformationInClassSchema-1.rst',
         ],
     ],
@@ -2489,6 +2497,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 2,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85005-DeprecateMethodsAndConstantsInValidatorResolver.rst',
         ],
     ],
@@ -2496,6 +2505,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85005-DeprecateMethodsAndConstantsInValidatorResolver.rst',
         ],
     ],
@@ -2503,6 +2513,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85005-DeprecateMethodsAndConstantsInValidatorResolver.rst',
         ],
     ],
@@ -2510,9 +2521,17 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85005-DeprecateMethodsAndConstantsInValidatorResolver.rst',
         ],
     ],
+    'TYPO3\CMS\Extbase\Validation\ValidatorResolver->getMethodValidateAnnotations' => [
+        'numberOfMandatoryArguments' => 2,
+        'maximumNumberOfArguments' => 2,
+        'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
+        ],
+    ],
     'TYPO3\CMS\Extbase\Mvc\Controller\Argument->getValidationResults' => [
         'numberOfMandatoryArguments' => 0,
         'maximumNumberOfArguments' => 0,
@@ -2609,6 +2628,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2616,6 +2636,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 2,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2623,6 +2644,7 @@ return [
         'numberOfMandatoryArguments' => 1,
         'maximumNumberOfArguments' => 1,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2630,6 +2652,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 2,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2637,6 +2660,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 2,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2644,6 +2668,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 2,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2651,6 +2676,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 2,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2658,6 +2684,7 @@ return [
         'numberOfMandatoryArguments' => 3,
         'maximumNumberOfArguments' => 3,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2665,6 +2692,7 @@ return [
         'numberOfMandatoryArguments' => 2,
         'maximumNumberOfArguments' => 2,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],
@@ -2672,6 +2700,7 @@ return [
         'numberOfMandatoryArguments' => 3,
         'maximumNumberOfArguments' => 3,
         'restFiles' => [
+            'Breaking-87193-DeprecatedFunctionalityRemoved.rst',
             'Deprecation-85004-DeprecateMethodsInReflectionService.rst',
         ],
     ],