Skip to content

Commit 9515552

Browse files
authored
Merge pull request #2019 from MoltenCoreIO/fix-subresourceMaxDepth-xml-yaml
fix issue #1717 - Support Subresources MaxDepth for yaml and xml
2 parents 9790b8d + cb0fadf commit 9515552

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

src/Metadata/Extractor/XmlExtractor.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ private function getProperties(\SimpleXMLElement $resource): array
122122
'subresource' => $property->subresource ? [
123123
'collection' => $this->phpize($property->subresource, 'collection', 'bool'),
124124
'resourceClass' => $this->phpize($property->subresource, 'resourceClass', 'string'),
125+
'maxDepth' => $this->phpize($property->subresource, 'maxDepth', 'integer'),
125126
] : null,
126127
];
127128
}
@@ -143,6 +144,8 @@ private function phpize(\SimpleXMLElement $array, string $key, string $type)
143144
switch ($type) {
144145
case 'string':
145146
return (string) $array[$key];
147+
case 'integer':
148+
return (int) $array[$key];
146149
case 'bool':
147150
return (bool) XmlUtils::phpize($array[$key]);
148151
}

src/Metadata/Property/Factory/ExtractorPropertyMetadataFactory.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ private function createSubresourceMetadata($subresource, PropertyMetadata $prope
142142
}
143143

144144
$type = $propertyMetadata->getType();
145+
$maxDepth = $subresource['maxDepth'] ?? null;
145146

146147
if (null !== $type) {
147148
$isCollection = $type->isCollection();
@@ -153,6 +154,6 @@ private function createSubresourceMetadata($subresource, PropertyMetadata $prope
153154
return null;
154155
}
155156

156-
return new SubresourceMetadata($resourceClass, $isCollection);
157+
return new SubresourceMetadata($resourceClass, $isCollection, $maxDepth);
157158
}
158159
}

tests/Metadata/Property/Factory/ExtractorPropertyMetadataFactoryTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public function testCreateWithCollectionTypedParentPropertyMetadataFactoryYaml(P
145145
);
146146

147147
$expectedPropertyMetadata = $expectedPropertyMetadata->withType($collectionType);
148-
$expectedPropertyMetadata = $expectedPropertyMetadata->withSubresource(new SubresourceMetadata(RelatedDummy::class, true));
148+
$expectedPropertyMetadata = $expectedPropertyMetadata->withSubresource(new SubresourceMetadata(RelatedDummy::class, true, 1));
149149

150150
$decorated = $this->prophesize(PropertyMetadataFactoryInterface::class);
151151
$decorated
@@ -170,7 +170,7 @@ public function testCreateWithTypedParentPropertyMetadataFactoryYaml(PropertyMet
170170
$type = new Type(Type::BUILTIN_TYPE_OBJECT, false, RelatedDummy::class);
171171

172172
$expectedPropertyMetadata = $expectedPropertyMetadata->withType($type);
173-
$expectedPropertyMetadata = $expectedPropertyMetadata->withSubresource(new SubresourceMetadata(RelatedDummy::class, false));
173+
$expectedPropertyMetadata = $expectedPropertyMetadata->withSubresource(new SubresourceMetadata(RelatedDummy::class, false, 1));
174174

175175
$decorated = $this->prophesize(PropertyMetadataFactoryInterface::class);
176176
$decorated

tests/Metadata/Property/Factory/FileConfigurationMetadataFactoryProvider.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function propertyMetadataProvider()
3838
'bar' => [['Bar'], 'baz' => 'Baz'],
3939
'baz' => 'Baz',
4040
],
41-
'subresource' => new SubresourceMetadata('Foo', true),
41+
'subresource' => new SubresourceMetadata('Foo', true, 1),
4242
];
4343

4444
return [[$this->getPropertyMetadata($metadata)]];
@@ -55,7 +55,7 @@ public function decoratedPropertyMetadataProvider()
5555
'required' => true,
5656
'identifier' => false,
5757
'attributes' => ['Foo'],
58-
'subresource' => new SubresourceMetadata('Foo', true),
58+
'subresource' => new SubresourceMetadata('Foo', true, 1),
5959
];
6060

6161
return [[$this->getPropertyMetadata($metadata)]];

0 commit comments

Comments
 (0)