diff --git a/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php old mode 100644 new mode 100755 index 05e7f4c..a73f6c4 --- a/core/lib/Drupal/Core/TypedData/TypedDataManager.php +++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php @@ -317,7 +317,7 @@ public function getValidator() { $this->validator = Validation::createValidatorBuilder() ->setMetadataFactory(new MetadataFactory()) ->setTranslator(new DrupalTranslator()) - ->setApiVersion(Validation::API_VERSION_2_4) + ->setApiVersion(Validation::API_VERSION_2_5) ->getValidator(); } return $this->validator; diff --git a/core/lib/Drupal/Core/TypedData/Validation/PropertyContainerMetadata.php b/core/lib/Drupal/Core/TypedData/Validation/ClassMetadata.php old mode 100644 new mode 100755 similarity index 67% rename from core/lib/Drupal/Core/TypedData/Validation/PropertyContainerMetadata.php rename to core/lib/Drupal/Core/TypedData/Validation/ClassMetadata.php index f5850eb..5bf4b2e --- a/core/lib/Drupal/Core/TypedData/Validation/PropertyContainerMetadata.php +++ b/core/lib/Drupal/Core/TypedData/Validation/ClassMetadata.php @@ -2,20 +2,20 @@ /** * @file - * Contains \Drupal\Core\TypedData\Validation\PropertyContainerMetadata. + * Contains \Drupal\Core\TypedData\Validation\ClassMetadata. */ namespace Drupal\Core\TypedData\Validation; use Drupal\Core\TypedData\ComplexDataInterface; use Drupal\Core\TypedData\ListInterface; -use Symfony\Component\Validator\PropertyMetadataContainerInterface; +use Symfony\Component\Validator\Mapping\ClassMetadataInterface; use Symfony\Component\Validator\ValidationVisitorInterface; /** * Typed data implementation of the validator MetadataInterface. */ -class PropertyContainerMetadata extends Metadata implements PropertyMetadataContainerInterface { +class ClassMetadata extends Metadata implements ClassMetadataInterface { /** * Overrides Metadata::accept(). @@ -65,4 +65,42 @@ public function getPropertyMetadata($property_name) { throw new \LogicException("There are no known properties."); } } + + /** + * Returns the names of all constrained properties. + * + * @return string[] A list of property names + */ + public function getConstrainedProperties() { + if ($this->typedData instanceof ComplexDataInterface) { + return range(0, count($this->typedData) - 1); + } + elseif ($this->typedData instanceof ComplexDataInterface) { + return array_keys($this->typedData->getProperties()); + } + else { + return array(); + } + } + + /** + * {@inheritdoc} + */ + public function getGroupSequence() { + return NULL; + } + + /** + * {@inheritdoc} + */ + public function hasGroupSequence() { + return FALSE; + } + + /** + * {@inheritdoc} + */ + public function isGroupSequenceProvider() { + return FALSE; + } } diff --git a/core/lib/Drupal/Core/TypedData/Validation/Metadata.php b/core/lib/Drupal/Core/TypedData/Validation/Metadata.php old mode 100644 new mode 100755 index 73bfc8b..acb0724 --- a/core/lib/Drupal/Core/TypedData/Validation/Metadata.php +++ b/core/lib/Drupal/Core/TypedData/Validation/Metadata.php @@ -8,8 +8,10 @@ namespace Drupal\Core\TypedData\Validation; use Drupal\Core\TypedData\TypedDataInterface; +use Symfony\Component\Validator\Mapping\CascadingStrategy; +use Symfony\Component\Validator\Mapping\TraversalStrategy; +use Symfony\Component\Validator\Mapping\PropertyMetadataInterface; use Symfony\Component\Validator\ValidationVisitorInterface; -use Symfony\Component\Validator\PropertyMetadataInterface; /** * Typed data implementation of the validator MetadataInterface. @@ -101,4 +103,32 @@ public function getPropertyValue($container) { public function getTypedData() { return $this->typedData; } + + /** + * {@inheritdoc} + */ + public function getClassName() { + return $this->typedData->getDataDefinition()->getClass(); + } + + /** + * {@inheritdoc} + */ + public function getConstraints() { + return $this->typedData->getConstraints(); + } + + /** + * {@inheritdoc} + */ + public function getCascadingStrategy() { + return CascadingStrategy::NONE; + } + + /** + * {@inheritdoc} + */ + public function getTraversalStrategy() { + return TraversalStrategy::IMPLICIT; + } } diff --git a/core/lib/Drupal/Core/TypedData/Validation/MetadataFactory.php b/core/lib/Drupal/Core/TypedData/Validation/MetadataFactory.php old mode 100644 new mode 100755 index 2858daf..4dbd2dc --- a/core/lib/Drupal/Core/TypedData/Validation/MetadataFactory.php +++ b/core/lib/Drupal/Core/TypedData/Validation/MetadataFactory.php @@ -10,7 +10,7 @@ use Drupal\Core\TypedData\ComplexDataInterface; use Drupal\Core\TypedData\ListInterface; use Drupal\Core\TypedData\TypedDataInterface; -use Symfony\Component\Validator\MetadataFactoryInterface; +use Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface; /** * Typed data implementation of the validator MetadataFactoryInterface. @@ -31,7 +31,7 @@ public function getMetadataFor($typed_data, $name = '') { throw new \InvalidArgumentException('The passed value must be a typed data object.'); } $is_container = $typed_data instanceof ComplexDataInterface || $typed_data instanceof ListInterface; - $class = '\Drupal\Core\TypedData\Validation\\' . ($is_container ? 'PropertyContainerMetadata' : 'Metadata'); + $class = '\Drupal\Core\TypedData\Validation\\' . ($is_container ? 'ClassMetadata' : 'Metadata'); return new $class($typed_data, $name, $this); } diff --git a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraintValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraintValidator.php old mode 100644 new mode 100755 index 31ffc5b..be1aa40 --- a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraintValidator.php +++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraintValidator.php @@ -38,7 +38,7 @@ public function validate($value, Constraint $constraint) { $property = $property->getValue(); } elseif ($property->isEmpty()) { - // @see \Drupal\Core\TypedData\Validation\PropertyContainerMetadata::accept(); + // @see \Drupal\Core\TypedData\Validation\ClassMetadata::accept(); $property = NULL; } $this->context->validateValue($property, $constraints, $name, $group);