Skip to content

Commit 5be6238

Browse files
author
Thibaut Cholley
committed
wip
1 parent 61c6dee commit 5be6238

19 files changed

Lines changed: 45 additions & 40 deletions

src/GraphQl/Serializer/SerializerContextBuilder.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,8 @@ public function create(?string $resourceClass, Operation $operation, array $reso
4040
}
4141

4242
$context['operation'] = $operation;
43-
if ($operation->getInput()) {
44-
$context['input'] = $operation->getInput();
45-
}
46-
if ($operation->getOutput()) {
47-
$context['output'] = $operation->getOutput();
48-
}
43+
$context['input'] =['class' => $operation->getInputClass()];
44+
$context['output'] = ['class' => $operation->getOutputClass()];
4945
$context = $normalization ? array_merge($operation->getNormalizationContext() ?? [], $context) : array_merge($operation->getDenormalizationContext() ?? [], $context);
5046

5147
if ($normalization) {

src/GraphQl/State/Provider/ResolverProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function provide(Operation $operation, array $uriVariables = [], array $c
4444
$item = $queryResolver($item, $context);
4545
if (!$operation instanceof CollectionOperationInterface) {
4646
// The item retrieved can be of another type when using an identifier (see Relay Nodes at query.feature:23)
47-
$this->getResourceClass($item, $operation->getOutput()['class'] ?? $operation->getClass(), \sprintf('Custom query resolver "%s"', $queryResolverId).' has to return an item of class %s but returned an item of class %s.');
47+
$this->getResourceClass($item, $operation->getOutputClass(), \sprintf('Custom query resolver "%s"', $queryResolverId).' has to return an item of class %s but returned an item of class %s.');
4848
}
4949

5050
return $item;

src/GraphQl/Type/TypeBuilder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,8 @@ private function getResourceObjectTypeConfiguration(string $shortName, ResourceM
316316
$depth = $context['depth'] ?? 0;
317317
$wrapped = $context['wrapped'] ?? false;
318318

319-
$ioMetadata = $input ? $operation->getInput() : $operation->getOutput();
320-
if (null !== $ioMetadata && \array_key_exists('class', $ioMetadata) && null !== $ioMetadata['class']) {
319+
$ioMetadata = $input ? $operation->getInputClass() : $operation->getOutputClass();
320+
if (null !== $ioMetadata ) {
321321
$resourceClass = $ioMetadata['class'];
322322
}
323323

src/Hydra/Serializer/DocumentationNormalizer.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,11 @@ private function getHydraProperties(string $resourceClass, ApiResource $resource
216216
continue;
217217
}
218218

219-
$inputMetadata = $operation->getInput();
220-
if (null !== $inputClass = $inputMetadata['class'] ?? null) {
219+
if (null !== $inputClass = $operation->getInputClass()) {
221220
$classes[$inputClass] = true;
222221
}
223222

224-
$outputMetadata = $operation->getOutput();
225-
if (null !== $outputClass = $outputMetadata['class'] ?? null) {
223+
if (null !== $outputClass = $operation->getOutputClass()) {
226224
$classes[$outputClass] = true;
227225
}
228226
}
@@ -288,11 +286,9 @@ private function getHydraOperation(HttpOperation $operation, string $prefixedSho
288286
}
289287

290288
$shortName = $operation->getShortName();
291-
$inputMetadata = $operation->getInput() ?? [];
292-
$outputMetadata = $operation->getOutput() ?? [];
293289

294-
$inputClass = \array_key_exists('class', $inputMetadata) ? $inputMetadata['class'] : false;
295-
$outputClass = \array_key_exists('class', $outputMetadata) ? $outputMetadata['class'] : false;
290+
$inputClass = $operation->getInputClass();
291+
$outputClass = $operation->getOutputClass();
296292

297293
if ('GET' === $method && $operation instanceof CollectionOperationInterface) {
298294
$hydraOperation += [

src/JsonSchema/ResourceMetadataTrait.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ trait ResourceMetadataTrait
2929

3030
private function findOutputClass(string $className, string $type, Operation $operation, ?array $serializerContext): ?string
3131
{
32+
// TODO
3233
$inputOrOutput = ['class' => $className];
3334
$inputOrOutput = Schema::TYPE_OUTPUT === $type ? ($operation->getOutput() ?? $inputOrOutput) : ($operation->getInput() ?? $inputOrOutput);
3435
$forceSubschema = $serializerContext[SchemaFactory::FORCE_SUBSCHEMA] ?? false;

src/Mcp/Capability/Registry/Loader.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,13 @@ public function load(RegistryInterface $registry): void
4949
foreach ($metadata as $resource) {
5050
foreach ($resource->getMcp() ?? [] as $mcp) {
5151
if ($mcp instanceof McpTool) {
52-
$inputClass = $mcp->getInput()['class'] ?? $mcp->getClass();
52+
$inputClass = $mcp->getInputClass();
5353
$inputFormat = array_key_first($mcp->getInputFormats() ?? ['json' => ['application/json']]);
5454
$inputSchema = $this->schemaFactory->buildSchema($inputClass, $inputFormat, Schema::TYPE_INPUT, $mcp, null, [SchemaFactory::FORCE_SUBSCHEMA => true]);
5555

5656
$outputSchema = null;
5757
if (false !== $mcp->getStructuredContent()) {
58-
$outputClass = $mcp->getOutput()['class'] ?? $mcp->getClass();
58+
$outputClass = $mcp->getOutputClass();
5959
$outputFormat = array_key_first($mcp->getOutputFormats() ?? ['json' => ['application/json']]);
6060
$outputSchema = $this->schemaFactory->buildSchema($outputClass, $outputFormat, Schema::TYPE_OUTPUT, $mcp, null, [SchemaFactory::FORCE_SUBSCHEMA => true])->getArrayCopy();
6161
}

src/Mcp/State/ToolProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function provide(Operation $operation, array $uriVariables = [], array $c
3535
}
3636

3737
$data = (object) $context['mcp_data'];
38-
$class = $operation->getInput()['class'] ?? $operation->getClass();
38+
$class = $operation->getInputClass();
3939

4040
return $this->objectMapper->map($data, $class);
4141
}

src/Metadata/Metadata.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,14 @@ public function getInput(): mixed
277277
return $this->input;
278278
}
279279

280+
/**
281+
* @return class-string|null
282+
*/
283+
public function getInputClass(): ?string
284+
{
285+
return isset($this->input['class']) ? $this->input['class'] : $this->getClass();
286+
}
287+
280288
public function withInput(mixed $input): static
281289
{
282290
$self = clone $this;
@@ -290,6 +298,14 @@ public function getOutput(): mixed
290298
return $this->output;
291299
}
292300

301+
/**
302+
* @return class-string|null
303+
*/
304+
public function getOutputClass(): ?string
305+
{
306+
return isset($this->output['class']) ? $this->inpuoutputt['class'] : $this->getClass();
307+
}
308+
293309
public function withOutput(mixed $output): static
294310
{
295311
$self = clone $this;

src/Metadata/Resource/Factory/InputOutputResourceMetadataCollectionFactory.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public function create(string $resourceClass): ResourceMetadataCollection
3737
$resourceMetadataCollection = $this->decorated->create($resourceClass);
3838

3939
foreach ($resourceMetadataCollection as $key => $resourceMetadata) {
40+
// TODO
4041
$resourceMetadata = $resourceMetadata->withInput($this->transformInputOutput($resourceMetadata->getInput()));
4142
$resourceMetadata = $resourceMetadata->withOutput($this->transformInputOutput($resourceMetadata->getOutput()));
4243

@@ -65,19 +66,15 @@ private function getTransformedOperations(Operations|array $operations, ApiResou
6566
$operation = $operation->withOutput(null !== $operation->getOutput() ? $this->transformInputOutput($operation->getOutput()) : $resourceMetadata->getOutput());
6667

6768
if (
68-
$operation->getInput()
69-
&& \array_key_exists('class', $operation->getInput())
70-
&& null === $operation->getInput()['class']
69+
null === $operation->getInputClass()
7170
) {
7271
$operation = $operation->withDeserialize(null === $operation->canDeserialize() ? false : $operation->canDeserialize());
7372
$operation = $operation->withValidate(null === $operation->canValidate() ? false : $operation->canValidate());
7473
}
7574

7675
if (
7776
$operation instanceof HttpOperation
78-
&& $operation->getOutput()
79-
&& \array_key_exists('class', $operation->getOutput())
80-
&& null === $operation->getOutput()['class']
77+
&& null === $operation->getOutputClass()
8178
&& null === $operation->getStatus()
8279
) {
8380
$operation = $operation->withStatus(204);

src/Metadata/Resource/Factory/ObjectMapperMetadataCollectionFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ public function create(string $resourceClass): ResourceMetadataCollection
5757
$entityClass = $options->getModelClass();
5858
}
5959

60-
$class = $operation->getInput()['class'] ?? $operation->getClass();
61-
$outputClass = $operation->getOutput()['class'] ?? null;
60+
$class = $operation->getInputClass();
61+
$outputClass = $operation->getOutputClass();
6262
$entityMap = null;
6363

6464
// Look for Mapping metadata

0 commit comments

Comments
 (0)