Skip to content

Commit 2e68ca3

Browse files
committed
Rename things + fix denormalization
1 parent 10b1920 commit 2e68ca3

13 files changed

+68
-65
lines changed

src/Bridge/Symfony/Routing/ApiLoader.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ public function load($data, $type = null): RouteCollection
121121
'_controller' => $controller,
122122
'_format' => null,
123123
'_api_resource_class' => $operation['resource_class'],
124-
'_api_input_resource_class' => $operation['input_class'],
125-
'_api_output_resource_class' => $operation['output_class'],
124+
'_api_input_class' => $operation['input_class'],
125+
'_api_output_class' => $operation['output_class'],
126126
'_api_subresource_operation_name' => $operation['route_name'],
127127
'_api_subresource_context' => [
128128
'property' => $operation['property'],
@@ -210,8 +210,8 @@ private function addRoute(RouteCollection $routeCollection, string $resourceClas
210210
'_controller' => $controller,
211211
'_format' => null,
212212
'_api_resource_class' => $resourceClass,
213-
'_api_input_resource_class' => $resourceMetadata->getAttribute('input_class', $resourceClass),
214-
'_api_output_resource_class' => $resourceMetadata->getAttribute('output_class', $resourceClass),
213+
'_api_input_class' => $resourceMetadata->getAttribute('input_class', $resourceClass),
214+
'_api_output_class' => $resourceMetadata->getAttribute('output_class', $resourceClass),
215215
sprintf('_api_%s_operation_name', $operationType) => $operationName,
216216
] + ($operation['defaults'] ?? []),
217217
$operation['requirements'] ?? [],

src/DataProvider/OperationDataProviderTrait.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ trait OperationDataProviderTrait
4949
*/
5050
private function getCollectionData(array $attributes, array $context)
5151
{
52-
return $this->collectionDataProvider->getCollection($attributes['output_resource_class'], $attributes['collection_operation_name'], $context);
52+
return $this->collectionDataProvider->getCollection($attributes['output_class'], $attributes['collection_operation_name'], $context);
5353
}
5454

5555
/**
@@ -59,7 +59,7 @@ private function getCollectionData(array $attributes, array $context)
5959
*/
6060
private function getItemData($identifiers, array $attributes, array $context)
6161
{
62-
return $this->itemDataProvider->getItem($attributes['output_resource_class'], $identifiers, $attributes['item_operation_name'], $context);
62+
return $this->itemDataProvider->getItem($attributes['output_class'], $identifiers, $attributes['item_operation_name'], $context);
6363
}
6464

6565
/**
@@ -75,7 +75,7 @@ private function getSubresourceData($identifiers, array $attributes, array $cont
7575
throw new RuntimeException('Subresources not supported');
7676
}
7777

78-
return $this->subresourceDataProvider->getSubresource($attributes['output_resource_class'], $identifiers, $attributes['subresource_context'] + $context, $attributes['subresource_operation_name']);
78+
return $this->subresourceDataProvider->getSubresource($attributes['output_class'], $identifiers, $attributes['subresource_context'] + $context, $attributes['subresource_operation_name']);
7979
}
8080

8181
/**
@@ -93,7 +93,7 @@ private function extractIdentifiers(array $parameters, array $attributes)
9393
$id = $parameters['id'];
9494

9595
if (null !== $this->identifierConverter) {
96-
return $this->identifierConverter->convert((string) $id, $attributes['output_resource_class']);
96+
return $this->identifierConverter->convert((string) $id, $attributes['output_class']);
9797
}
9898

9999
return $id;

src/EventListener/DeserializeListener.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public function onKernelRequest(GetResponseEvent $event)
9090
$request->attributes->set(
9191
'data',
9292
$this->serializer->deserialize(
93-
$requestContent, $attributes['input_resource_class'], $format, $context
93+
$requestContent, $attributes['input_class'], $format, $context
9494
)
9595
);
9696
}

src/Serializer/AbstractItemNormalizer.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ public function hasCacheableSupportsMethod(): bool
9696
*/
9797
public function normalize($object, $format = null, array $context = [])
9898
{
99-
if (isset($context['resource_class']) && isset($context['normalize_resource_class'])) {
100-
$context['resource_class'] = $context['normalize_resource_class'];
99+
if (isset($context['resource_class']) && isset($context['output_class'])) {
100+
$context['resource_class'] = $context['output_class'];
101101
}
102102

103103
$resourceClass = $this->resourceClassResolver->getResourceClass($object, $context['resource_class'] ?? null, true);
@@ -126,12 +126,15 @@ public function supportsDenormalization($data, $type, $format = null)
126126
public function denormalize($data, $class, $format = null, array $context = [])
127127
{
128128
$context['api_denormalize'] = true;
129+
129130
if (!isset($context['resource_class'])) {
130131
$context['resource_class'] = $class;
131132

132-
if (isset($context['denormalize_resource_class'])) {
133-
$context['resource_class'] = $context['denormalize_resource_class'];
133+
if (isset($context['input_class'])) {
134+
$context['resource_class'] = $context['input_class'];
134135
}
136+
} elseif (isset($context['input_class'])) {
137+
$context['resource_class'] = $context['input_class'];
135138
}
136139

137140
return parent::denormalize($data, $class, $format, $context);

src/Serializer/SerializerContextBuilder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ public function createFromRequest(Request $request, bool $normalization, array $
7373
}
7474

7575
$context['resource_class'] = $attributes['resource_class'];
76-
$context['denormalize_resource_class'] = $attributes['input_resource_class'] ?? $attributes['resource_class'];
77-
$context['normalize_resource_class'] = $attributes['output_resource_class'] ?? $attributes['resource_class'];
76+
$context['input_class'] = $attributes['input_class'] ?? $attributes['resource_class'];
77+
$context['output_class'] = $attributes['output_class'] ?? $attributes['resource_class'];
7878
$context['request_uri'] = $request->getRequestUri();
7979
$context['uri'] = $request->getUri();
8080

src/Util/AttributesExtractor.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public static function extractAttributes(array $attributes): array
3636
{
3737
$result = ['resource_class' => $attributes['_api_resource_class'] ?? null];
3838

39-
$result['input_resource_class'] = $attributes['_api_input_resource_class'] ?? $result['resource_class'];
40-
$result['output_resource_class'] = $attributes['_api_output_resource_class'] ?? $result['resource_class'];
39+
$result['input_class'] = $attributes['_api_input_class'] ?? $result['resource_class'];
40+
$result['output_class'] = $attributes['_api_output_class'] ?? $result['resource_class'];
4141

4242
if ($subresourceContext = $attributes['_api_subresource_context'] ?? null) {
4343
$result['subresource_context'] = $subresourceContext;

tests/Bridge/Symfony/Bundle/DataCollector/RequestDataCollectorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public function testWithResource()
107107
$this->response
108108
);
109109

110-
$this->assertSame(['resource_class' => DummyEntity::class, 'input_resource_class' => DummyEntity::class, 'output_resource_class' => DummyEntity::class, 'item_operation_name' => 'get', 'receive' => true, 'persist' => true], $dataCollector->getRequestAttributes());
110+
$this->assertSame(['resource_class' => DummyEntity::class, 'input_class' => DummyEntity::class, 'output_class' => DummyEntity::class, 'item_operation_name' => 'get', 'receive' => true, 'persist' => true], $dataCollector->getRequestAttributes());
111111
$this->assertSame(['foo', 'bar'], $dataCollector->getAcceptableContentTypes());
112112
$this->assertSame(DummyEntity::class, $dataCollector->getResourceClass());
113113
$this->assertSame(['foo' => null, 'a_filter' => \stdClass::class], $dataCollector->getFilters());

tests/Bridge/Symfony/Routing/ApiLoaderTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,8 @@ private function getRoute(string $path, string $controller, string $resourceClas
305305
'_controller' => $controller,
306306
'_format' => null,
307307
'_api_resource_class' => $resourceClass,
308-
'_api_input_resource_class' => $resourceClass,
309-
'_api_output_resource_class' => $resourceClass,
308+
'_api_input_class' => $resourceClass,
309+
'_api_output_class' => $resourceClass,
310310
sprintf('_api_%s_operation_name', $collection ? 'collection' : 'item') => $operationName,
311311
] + $extraDefaults,
312312
$requirements,
@@ -326,8 +326,8 @@ private function getSubresourceRoute(string $path, string $controller, string $r
326326
'_controller' => $controller,
327327
'_format' => null,
328328
'_api_resource_class' => $resourceClass,
329-
'_api_input_resource_class' => $resourceClass,
330-
'_api_output_resource_class' => $resourceClass,
329+
'_api_input_class' => $resourceClass,
330+
'_api_output_class' => $resourceClass,
331331
'_api_subresource_operation_name' => $operationName,
332332
'_api_subresource_context' => $context,
333333
],

tests/EventListener/AddFormatListenerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ public function testResourceClassSupportedRequestFormat()
224224
$event = $eventProphecy->reveal();
225225

226226
$formatsProviderProphecy = $this->prophesize(FormatsProviderInterface::class);
227-
$formatsProviderProphecy->getFormatsFromAttributes(['resource_class' => 'Foo', 'input_resource_class' => 'Foo', 'output_resource_class' => 'Foo', 'collection_operation_name' => 'get', 'receive' => true, 'persist' => true])->willReturn(['csv' => ['text/csv']])->shouldBeCalled();
227+
$formatsProviderProphecy->getFormatsFromAttributes(['resource_class' => 'Foo', 'input_class' => 'Foo', 'output_class' => 'Foo', 'collection_operation_name' => 'get', 'receive' => true, 'persist' => true])->willReturn(['csv' => ['text/csv']])->shouldBeCalled();
228228

229229
$listener = new AddFormatListener(new Negotiator(), $formatsProviderProphecy->reveal());
230230
$listener->onKernelRequest($event);

tests/EventListener/DeserializeListenerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ public function testDeserializeResourceClassSupportedFormat(string $method, bool
172172
$serializerContextBuilderProphecy->createFromRequest(Argument::type(Request::class), false, Argument::type('array'))->willReturn([])->shouldBeCalled();
173173

174174
$formatsProviderProphecy = $this->prophesize(FormatsProviderInterface::class);
175-
$formatsProviderProphecy->getFormatsFromAttributes(['resource_class' => 'Foo', 'input_resource_class' => 'Foo', 'output_resource_class' => 'Foo', 'collection_operation_name' => 'post', 'receive' => true, 'persist' => true])->willReturn(self::FORMATS)->shouldBeCalled();
175+
$formatsProviderProphecy->getFormatsFromAttributes(['resource_class' => 'Foo', 'input_class' => 'Foo', 'output_class' => 'Foo', 'collection_operation_name' => 'post', 'receive' => true, 'persist' => true])->willReturn(self::FORMATS)->shouldBeCalled();
176176

177177
$listener = new DeserializeListener($serializerProphecy->reveal(), $serializerContextBuilderProphecy->reveal(), $formatsProviderProphecy->reveal());
178178

tests/Serializer/SerializerContextBuilderTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,32 +55,32 @@ public function testCreateFromRequest()
5555
{
5656
$request = Request::create('/foos/1');
5757
$request->attributes->replace(['_api_resource_class' => 'Foo', '_api_item_operation_name' => 'get', '_api_format' => 'xml', '_api_mime_type' => 'text/xml']);
58-
$expected = ['foo' => 'bar', 'item_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/foos/1', 'operation_type' => 'item', 'uri' => 'http://localhost/foos/1', 'denormalize_resource_class' => 'Foo', 'normalize_resource_class' => 'Foo'];
58+
$expected = ['foo' => 'bar', 'item_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/foos/1', 'operation_type' => 'item', 'uri' => 'http://localhost/foos/1', 'output_class' => 'Foo', 'input_class' => 'Foo'];
5959
$this->assertEquals($expected, $this->builder->createFromRequest($request, true));
6060

6161
$request = Request::create('/foos');
6262
$request->attributes->replace(['_api_resource_class' => 'Foo', '_api_collection_operation_name' => 'pot', '_api_format' => 'xml', '_api_mime_type' => 'text/xml']);
63-
$expected = ['foo' => 'bar', 'collection_operation_name' => 'pot', 'resource_class' => 'Foo', 'request_uri' => '/foos', 'operation_type' => 'collection', 'uri' => 'http://localhost/foos', 'denormalize_resource_class' => 'Foo', 'normalize_resource_class' => 'Foo'];
63+
$expected = ['foo' => 'bar', 'collection_operation_name' => 'pot', 'resource_class' => 'Foo', 'request_uri' => '/foos', 'operation_type' => 'collection', 'uri' => 'http://localhost/foos', 'output_class' => 'Foo', 'input_class' => 'Foo'];
6464
$this->assertEquals($expected, $this->builder->createFromRequest($request, true));
6565

6666
$request = Request::create('/foos/1');
6767
$request->attributes->replace(['_api_resource_class' => 'Foo', '_api_item_operation_name' => 'get', '_api_format' => 'xml', '_api_mime_type' => 'text/xml']);
68-
$expected = ['bar' => 'baz', 'item_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/foos/1', 'api_allow_update' => false, 'operation_type' => 'item', 'uri' => 'http://localhost/foos/1', 'denormalize_resource_class' => 'Foo', 'normalize_resource_class' => 'Foo'];
68+
$expected = ['bar' => 'baz', 'item_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/foos/1', 'api_allow_update' => false, 'operation_type' => 'item', 'uri' => 'http://localhost/foos/1', 'output_class' => 'Foo', 'input_class' => 'Foo'];
6969
$this->assertEquals($expected, $this->builder->createFromRequest($request, false));
7070

7171
$request = Request::create('/foos', 'POST');
7272
$request->attributes->replace(['_api_resource_class' => 'Foo', '_api_collection_operation_name' => 'post', '_api_format' => 'xml', '_api_mime_type' => 'text/xml']);
73-
$expected = ['bar' => 'baz', 'collection_operation_name' => 'post', 'resource_class' => 'Foo', 'request_uri' => '/foos', 'api_allow_update' => false, 'operation_type' => 'collection', 'uri' => 'http://localhost/foos', 'denormalize_resource_class' => 'Foo', 'normalize_resource_class' => 'Foo'];
73+
$expected = ['bar' => 'baz', 'collection_operation_name' => 'post', 'resource_class' => 'Foo', 'request_uri' => '/foos', 'api_allow_update' => false, 'operation_type' => 'collection', 'uri' => 'http://localhost/foos', 'output_class' => 'Foo', 'input_class' => 'Foo'];
7474
$this->assertEquals($expected, $this->builder->createFromRequest($request, false));
7575

7676
$request = Request::create('/foos', 'PUT');
7777
$request->attributes->replace(['_api_resource_class' => 'Foo', '_api_collection_operation_name' => 'put', '_api_format' => 'xml', '_api_mime_type' => 'text/xml']);
78-
$expected = ['bar' => 'baz', 'collection_operation_name' => 'put', 'resource_class' => 'Foo', 'request_uri' => '/foos', 'api_allow_update' => true, 'operation_type' => 'collection', 'uri' => 'http://localhost/foos', 'denormalize_resource_class' => 'Foo', 'normalize_resource_class' => 'Foo'];
78+
$expected = ['bar' => 'baz', 'collection_operation_name' => 'put', 'resource_class' => 'Foo', 'request_uri' => '/foos', 'api_allow_update' => true, 'operation_type' => 'collection', 'uri' => 'http://localhost/foos', 'output_class' => 'Foo', 'input_class' => 'Foo'];
7979
$this->assertEquals($expected, $this->builder->createFromRequest($request, false));
8080

8181
$request = Request::create('/bars/1/foos');
8282
$request->attributes->replace(['_api_resource_class' => 'Foo', '_api_subresource_operation_name' => 'get', '_api_format' => 'xml', '_api_mime_type' => 'text/xml']);
83-
$expected = ['bar' => 'baz', 'subresource_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/bars/1/foos', 'operation_type' => 'subresource', 'api_allow_update' => false, 'uri' => 'http://localhost/bars/1/foos', 'denormalize_resource_class' => 'Foo', 'normalize_resource_class' => 'Foo'];
83+
$expected = ['bar' => 'baz', 'subresource_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/bars/1/foos', 'operation_type' => 'subresource', 'api_allow_update' => false, 'uri' => 'http://localhost/bars/1/foos', 'output_class' => 'Foo', 'input_class' => 'Foo'];
8484
$this->assertEquals($expected, $this->builder->createFromRequest($request, false));
8585
}
8686

@@ -93,7 +93,7 @@ public function testThrowExceptionOnInvalidRequest()
9393

9494
public function testReuseExistingAttributes()
9595
{
96-
$expected = ['bar' => 'baz', 'item_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/foos/1', 'api_allow_update' => false, 'operation_type' => 'item', 'uri' => 'http://localhost/foos/1', 'denormalize_resource_class' => 'Foo', 'normalize_resource_class' => 'Foo'];
96+
$expected = ['bar' => 'baz', 'item_operation_name' => 'get', 'resource_class' => 'Foo', 'request_uri' => '/foos/1', 'api_allow_update' => false, 'operation_type' => 'item', 'uri' => 'http://localhost/foos/1', 'output_class' => 'Foo', 'input_class' => 'Foo'];
9797
$this->assertEquals($expected, $this->builder->createFromRequest(Request::create('/foos/1'), false, ['resource_class' => 'Foo', 'item_operation_name' => 'get']));
9898
}
9999
}

tests/Serializer/SerializerFilterContextBuilderTest.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public function testCreateFromRequestWithCollectionOperation()
3636

3737
$attributes = [
3838
'resource_class' => DummyGroup::class,
39-
'input_resource_class' => DummyGroup::class,
40-
'output_resource_class' => DummyGroup::class,
39+
'input_class' => DummyGroup::class,
40+
'output_class' => DummyGroup::class,
4141
'collection_operation_name' => 'get',
4242
];
4343

@@ -79,8 +79,8 @@ public function testCreateFromRequestWithItemOperation()
7979

8080
$attributes = [
8181
'resource_class' => DummyGroup::class,
82-
'input_resource_class' => DummyGroup::class,
83-
'output_resource_class' => DummyGroup::class,
82+
'input_class' => DummyGroup::class,
83+
'output_class' => DummyGroup::class,
8484
'item_operation_name' => 'put',
8585
];
8686

@@ -122,8 +122,8 @@ public function testCreateFromRequestWithoutFilters()
122122

123123
$attributes = [
124124
'resource_class' => DummyGroup::class,
125-
'input_resource_class' => DummyGroup::class,
126-
'output_resource_class' => DummyGroup::class,
125+
'input_class' => DummyGroup::class,
126+
'output_class' => DummyGroup::class,
127127
'collection_operation_name' => 'get',
128128
];
129129

@@ -158,8 +158,8 @@ public function testCreateFromRequestWithoutAttributes()
158158

159159
$attributes = [
160160
'resource_class' => DummyGroup::class,
161-
'input_resource_class' => DummyGroup::class,
162-
'output_resource_class' => DummyGroup::class,
161+
'input_class' => DummyGroup::class,
162+
'output_class' => DummyGroup::class,
163163
'collection_operation_name' => 'get',
164164
'receive' => true,
165165
'persist' => true,

0 commit comments

Comments
 (0)