Skip to content

Commit eb8eb4f

Browse files
authored
Merge pull request #16 from swisnl/feature-art4-json-api-client-update
Update art4/json-api-client to latest version, this changes some of the returned classes. The following classes are changed in some arguments and some method returns, if you extended or directly use `\Swis\JsonApi\Client\JsonApi\Hydrator` or `\Swis\JsonApi\Client\JsonApi\Parser` please check your code. ``` \Art4\JsonApiClient\Resource\CollectionInterface -> \Art4\JsonApiClient\ResourceCollectionInterface \Art4\JsonApiClient\Resource\ItemInterface -> \Art4\JsonApiClient\ResourceItemInterface \Art4\JsonApiClient\Resource\IdentifierCollection -> \Art4\JsonApiClient\ResourceIdentifierCollection \Art4\JsonApiClient\Resource\Identifier -> \Art4\JsonApiClient\ResourceIdentifier \Art4\JsonApiClient\Resource\Collection -> \Art4\JsonApiClient\ResourceCollection ```
2 parents 5a1ed1f + 64d31e7 commit eb8eb4f

File tree

4 files changed

+37
-34
lines changed

4 files changed

+37
-34
lines changed

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "A PHP package for mapping remote {json:api} resources to Eloquent like models and collections.",
55
"require": {
66
"php": ">=7.0",
7-
"art4/json-api-client": "^0.6.3",
7+
"art4/json-api-client": "^0.9.1",
88
"illuminate/support": "5.3.*|5.4.*|5.5.*",
99
"jenssegers/model": "^1.1",
1010
"php-http/client-implementation": "^1.0",
@@ -55,7 +55,7 @@
5555
"extra": {
5656
"laravel": {
5757
"providers": [
58-
"Swis\\JsonApi\\Client\\Providers"
58+
"Swis\\JsonApi\\Client\\Providers\\ServiceProvider"
5959
]
6060
}
6161
}

src/JsonApi/Hydrator.php

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
namespace Swis\JsonApi\Client\JsonApi;
44

55
use Art4\JsonApiClient\AccessInterface;
6-
use Art4\JsonApiClient\Resource\CollectionInterface as JsonApiCollection;
7-
use Art4\JsonApiClient\Resource\IdentifierCollection;
8-
use Art4\JsonApiClient\Resource\ItemInterface as JsonApItem;
6+
use Art4\JsonApiClient\ResourceCollectionInterface;
7+
use Art4\JsonApiClient\ResourceCollectionInterface as JsonApiCollection;
8+
use Art4\JsonApiClient\ResourceIdentifierCollection as IdentifierCollection;
9+
use Art4\JsonApiClient\ResourceIdentifierCollectionInterface;
10+
use Art4\JsonApiClient\ResourceIdentifierInterface;
11+
use Art4\JsonApiClient\ResourceItemInterface as JsonApItem;
912
use Swis\JsonApi\Client\Collection;
1013
use Swis\JsonApi\Client\Interfaces\ItemInterface;
1114
use Swis\JsonApi\Client\Interfaces\TypeMapperInterface;
@@ -28,7 +31,7 @@ public function __construct(TypeMapperInterface $typeMapper)
2831
}
2932

3033
/**
31-
* @param \Art4\JsonApiClient\Resource\CollectionInterface $jsonApiCollection
34+
* @param \Art4\JsonApiClient\ResourceCollectionInterface $jsonApiCollection
3235
*
3336
* @return \Swis\JsonApi\Client\Collection
3437
*/
@@ -43,7 +46,7 @@ public function hydrateCollection(JsonApiCollection $jsonApiCollection)
4346
}
4447

4548
/**
46-
* @param \Art4\JsonApiClient\Resource\ItemInterface $jsonApiItem
49+
* @param \Art4\JsonApiClient\ResourceItemInterface $jsonApiItem
4750
*
4851
* @return \Swis\JsonApi\Client\Interfaces\ItemInterface
4952
*/
@@ -60,7 +63,7 @@ public function hydrateItem(JsonApItem $jsonApiItem)
6063
}
6164

6265
/**
63-
* @param \Art4\JsonApiClient\Resource\ItemInterface $jsonApiItem
66+
* @param \Art4\JsonApiClient\ResourceItemInterface $jsonApiItem
6467
*
6568
* @return \Swis\JsonApi\Client\Interfaces\ItemInterface
6669
*/
@@ -75,7 +78,7 @@ protected function getItemClass(JsonApItem $jsonApiItem): ItemInterface
7578
}
7679

7780
/**
78-
* @param \Art4\JsonApiClient\Resource\ItemInterface $jsonApiItem
81+
* @param \Art4\JsonApiClient\ResourceItemInterface $jsonApiItem
7982
* @param \Swis\JsonApi\Client\Interfaces\ItemInterface $item
8083
*/
8184
protected function hydrateAttributes(JsonApItem $jsonApiItem, ItemInterface $item)
@@ -106,19 +109,19 @@ function (JsonApItem $jsonApiItem) use ($items) {
106109
$relationships = $this->getJsonApiDocumentRelationships($jsonApiItem);
107110

108111
foreach ($relationships as $name => $relationship) {
109-
/** @var \Art4\JsonApiClient\Resource\ResourceInterface $data */
112+
/** @var \Art4\JsonApiClient\ResourceItemInterface $data */
110113
$data = $relationship->get('data');
111114
$method = camel_case($name);
112115

113-
if ($data->isIdentifier()) {
116+
if ($data instanceof ResourceIdentifierInterface) {
114117
$includedItem = $this->getIncludedItem($items, $data);
115118

116119
if ($includedItem instanceof NullItem) {
117120
continue;
118121
}
119122

120123
$item->setRelation($method, $includedItem);
121-
} elseif ($data->isCollection()) {
124+
} elseif ($data instanceof ResourceCollectionInterface || $data instanceof ResourceIdentifierCollectionInterface) {
122125
$collection = $this->getIncludedItems($items, $data);
123126

124127
$item->setRelation($method, $collection);
@@ -129,7 +132,7 @@ function (JsonApItem $jsonApiItem) use ($items) {
129132
}
130133

131134
/**
132-
* @param \Art4\JsonApiClient\Resource\ItemInterface $jsonApiItem
135+
* @param \Art4\JsonApiClient\ResourceItemInterface $jsonApiItem
133136
*
134137
* @return \Art4\JsonApiClient\Relationship[]
135138
*/
@@ -167,8 +170,8 @@ protected function accessorBelongsToItem(AccessInterface $accessor, ItemInterfac
167170
}
168171

169172
/**
170-
* @param \Swis\JsonApi\Client\Collection $included
171-
* @param \Art4\JsonApiClient\Resource\IdentifierCollection $collection
173+
* @param \Swis\JsonApi\Client\Collection $included
174+
* @param \Art4\JsonApiClient\ResourceIdentifierCollection $collection
172175
*
173176
* @return \Swis\JsonApi\Client\Collection
174177
*/
@@ -182,7 +185,7 @@ function (ItemInterface $item) use ($collection) {
182185
}
183186

184187
/**
185-
* @param \Art4\JsonApiClient\Resource\Identifier[] $relatedIdentifiers
188+
* @param \Art4\JsonApiClient\ResourceIdentifier[] $relatedIdentifiers
186189
* @param \Swis\JsonApi\Client\Interfaces\ItemInterface $item
187190
*
188191
* @return bool

src/JsonApi/Parser.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
namespace Swis\JsonApi\Client\JsonApi;
44

5-
use Art4\JsonApiClient\DocumentInterface as JsonApiDocumentInterface;
6-
use Art4\JsonApiClient\Resource\ResourceInterface as JsonApiResourceInterface;
5+
use Art4\JsonApiClient\DocumentInterface as Art4JsonApiDocumentInterface;
6+
use Art4\JsonApiClient\ResourceCollectionInterface;
7+
use Art4\JsonApiClient\ResourceItemInterface;
78
use Art4\JsonApiClient\Utils\Manager as Art4JsonApiClientManager;
89
use Swis\JsonApi\Client\Collection;
910
use Swis\JsonApi\Client\CollectionDocument;
@@ -81,12 +82,12 @@ public function deserialize(string $json): DocumentInterface
8182
*
8283
* @return \Art4\JsonApiClient\DocumentInterface
8384
*/
84-
private function getJsonApiDocument(string $json): JsonApiDocumentInterface
85+
private function getJsonApiDocument(string $json): Art4JsonApiDocumentInterface
8586
{
8687
/** @var \Art4\JsonApiClient\DocumentInterface $jsonApiDocument */
8788
$jsonApiDocument = $this->manager->parse($json);
8889

89-
if (!$jsonApiDocument instanceof JsonApiDocumentInterface) {
90+
if (!$jsonApiDocument instanceof Art4JsonApiDocumentInterface) {
9091
throw new \DomainException('Result is not a JSON API Document');
9192
}
9293

@@ -100,22 +101,22 @@ private function getJsonApiDocument(string $json): JsonApiDocumentInterface
100101
*
101102
* @return \Swis\JsonApi\Client\Interfaces\DocumentInterface
102103
*/
103-
protected function buildDataDocument(JsonApiDocumentInterface $jsonApiDocument): DocumentInterface
104+
protected function buildDataDocument(Art4JsonApiDocumentInterface $jsonApiDocument): DocumentInterface
104105
{
105106
$data = $this->getJsonApiDocumentData($jsonApiDocument);
106107
$includedInDocument = $this->getJsonApiDocumentIncluded($jsonApiDocument);
107108

108109
$allHydratedItems = new Collection();
109110
$allJsonApiItems = new Collection();
110111

111-
if ($data->isCollection()) {
112+
if ($data instanceof ResourceCollectionInterface) {
112113
$collection = $this->hydrator->hydrateCollection($jsonApiDocument->get('data'));
113114
$allHydratedItems = $allHydratedItems->concat($collection);
114115
$allJsonApiItems = $allJsonApiItems->concat($jsonApiDocument->get('data')->asArray());
115116

116117
$document = new CollectionDocument();
117118
$document->setData($collection);
118-
} elseif ($data->isItem()) {
119+
} elseif ($data instanceof ResourceItemInterface) {
119120
$item = $this->hydrator->hydrateItem($jsonApiDocument->get('data'));
120121
$allHydratedItems->push($item);
121122
$allJsonApiItems->push($jsonApiDocument->get('data'));
@@ -147,14 +148,13 @@ protected function buildDataDocument(JsonApiDocumentInterface $jsonApiDocument):
147148
*
148149
* @throws \DomainException
149150
*
150-
* @return \Art4\JsonApiClient\Resource\ResourceInterface
151+
* @return \Art4\JsonApiClient\ResourceItemInterface|\Art4\JsonApiClient\ResourceCollectionInterface
151152
*/
152-
private function getJsonApiDocumentData(JsonApiDocumentInterface $document): JsonApiResourceInterface
153+
private function getJsonApiDocumentData(Art4JsonApiDocumentInterface $document)
153154
{
154-
/** @var \Art4\JsonApiClient\Resource\ResourceInterface $resource */
155155
$resource = $document->get('data');
156156

157-
if (!$resource instanceof JsonApiResourceInterface) {
157+
if (!$resource instanceof ResourceItemInterface && !$resource instanceof ResourceCollectionInterface) {
158158
throw new \DomainException('Result is not a Json API Resource');
159159
}
160160

@@ -164,9 +164,9 @@ private function getJsonApiDocumentData(JsonApiDocumentInterface $document): Jso
164164
/**
165165
* @param \Art4\JsonApiClient\DocumentInterface $document
166166
*
167-
* @return \Art4\JsonApiClient\Resource\Collection|null
167+
* @return \Art4\JsonApiClient\ResourceCollection|null
168168
*/
169-
private function getJsonApiDocumentIncluded(JsonApiDocumentInterface $document)
169+
private function getJsonApiDocumentIncluded(Art4JsonApiDocumentInterface $document)
170170
{
171171
if ($document->has('included')) {
172172
return $document->get('included');
@@ -180,7 +180,7 @@ private function getJsonApiDocumentIncluded(JsonApiDocumentInterface $document)
180180
*
181181
* @return array
182182
*/
183-
private function parseLinks(JsonApiDocumentInterface $document): array
183+
private function parseLinks(Art4JsonApiDocumentInterface $document): array
184184
{
185185
if (!$document->has('links')) {
186186
return [];
@@ -194,7 +194,7 @@ private function parseLinks(JsonApiDocumentInterface $document): array
194194
*
195195
* @return \Swis\JsonApi\Client\Errors\ErrorCollection
196196
*/
197-
private function parseErrors(JsonApiDocumentInterface $document): ErrorCollection
197+
private function parseErrors(Art4JsonApiDocumentInterface $document): ErrorCollection
198198
{
199199
if (!$document->has('errors')) {
200200
return new ErrorCollection();
@@ -208,7 +208,7 @@ private function parseErrors(JsonApiDocumentInterface $document): ErrorCollectio
208208
*
209209
* @return array
210210
*/
211-
private function parseMeta(JsonApiDocumentInterface $document): array
211+
private function parseMeta(Art4JsonApiDocumentInterface $document): array
212212
{
213213
if (!$document->has('meta')) {
214214
return [];

tests/JsonApi/HydratorTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Swis\JsonApi\Client\Tests\JsonApi;
44

5-
use Art4\JsonApiClient\Resource\CollectionInterface;
5+
use Art4\JsonApiClient\ResourceCollectionInterface as CollectionInterface;
66
use Art4\JsonApiClient\Utils\Manager;
77
use Swis\JsonApi\Client\Collection;
88
use Swis\JsonApi\Client\Items\JenssegersItem;
@@ -233,7 +233,7 @@ public function it_hydrates_relationships()
233233
}
234234

235235
/**
236-
* @return \PHPUnit_Framework_MockObject_MockObject|\Art4\JsonApiClient\Resource\CollectionInterface
236+
* @return \PHPUnit_Framework_MockObject_MockObject|\Art4\JsonApiClient\ResourceCollectionInterface
237237
*/
238238
protected function getJsonApiItemCollectionMock()
239239
{

0 commit comments

Comments
 (0)