X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fsymfony%2Fserializer%2FMapping%2FLoader%2FYamlFileLoader.php;fp=vendor%2Fsymfony%2Fserializer%2FMapping%2FLoader%2FYamlFileLoader.php;h=e3afa4763271e693081947af0b4937b493a22c30;hp=be2de7b6f1aff44555f6c06cd68002979b2c7880;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/vendor/symfony/serializer/Mapping/Loader/YamlFileLoader.php b/vendor/symfony/serializer/Mapping/Loader/YamlFileLoader.php index be2de7b6f..e3afa4763 100644 --- a/vendor/symfony/serializer/Mapping/Loader/YamlFileLoader.php +++ b/vendor/symfony/serializer/Mapping/Loader/YamlFileLoader.php @@ -38,26 +38,11 @@ class YamlFileLoader extends FileLoader public function loadClassMetadata(ClassMetadataInterface $classMetadata) { if (null === $this->classes) { - if (!stream_is_local($this->file)) { - throw new MappingException(sprintf('This is not a local file "%s".', $this->file)); - } - - if (null === $this->yamlParser) { - $this->yamlParser = new Parser(); - } - - $classes = $this->yamlParser->parse(file_get_contents($this->file)); - - if (empty($classes)) { - return false; - } - - // not an array - if (!is_array($classes)) { - throw new MappingException(sprintf('The file "%s" must contain a YAML array.', $this->file)); - } + $this->classes = $this->getClassesFromYaml(); + } - $this->classes = $classes; + if (!$this->classes) { + return false; } if (!isset($this->classes[$classMetadata->getName()])) { @@ -90,9 +75,54 @@ class YamlFileLoader extends FileLoader $attributeMetadata->addGroup($group); } } + + if (isset($data['max_depth'])) { + if (!is_int($data['max_depth'])) { + throw new MappingException(sprintf('The "max_depth" value must be an integer in "%s" for the attribute "%s" of the class "%s".', $this->file, $attribute, $classMetadata->getName())); + } + + $attributeMetadata->setMaxDepth($data['max_depth']); + } } } return true; } + + /** + * Return the names of the classes mapped in this file. + * + * @return string[] The classes names + */ + public function getMappedClasses() + { + if (null === $this->classes) { + $this->classes = $this->getClassesFromYaml(); + } + + return array_keys($this->classes); + } + + private function getClassesFromYaml() + { + if (!stream_is_local($this->file)) { + throw new MappingException(sprintf('This is not a local file "%s".', $this->file)); + } + + if (null === $this->yamlParser) { + $this->yamlParser = new Parser(); + } + + $classes = $this->yamlParser->parse(file_get_contents($this->file)); + + if (empty($classes)) { + return array(); + } + + if (!is_array($classes)) { + throw new MappingException(sprintf('The file "%s" must contain a YAML array.', $this->file)); + } + + return $classes; + } }