Skip to content

Commit 27cfbb4

Browse files
authored
Merge pull request #304 from Stratadox/master
Fix #303: Pass metadata dirs and expression evaluator to JMS serializer builder
2 parents 859ed30 + 84ce3a2 commit 27cfbb4

File tree

4 files changed

+66
-0
lines changed

4 files changed

+66
-0
lines changed

src/HateoasBuilder.php

+3
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ public function build(): Hateoas
192192
}
193193
});
194194

195+
$this->serializerBuilder->addMetadataDirs($this->metadataDirs);
196+
$this->serializerBuilder->setExpressionEvaluator($this->expressionEvaluator);
197+
195198
$jmsSerializer = $this->serializerBuilder->build();
196199

197200
return new Hateoas($jmsSerializer, $linkHelper);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Hateoas\Tests\Fixtures;
6+
7+
class NoAnnotations
8+
{
9+
private $id;
10+
private $number;
11+
private $unused = 'N/A';
12+
13+
public function __construct(string $id, int $number)
14+
{
15+
$this->id = $id;
16+
$this->number = $number;
17+
}
18+
19+
public function id(): string
20+
{
21+
return $this->id;
22+
}
23+
24+
public function number(): int
25+
{
26+
return $this->number;
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<serializer>
3+
<class name="Hateoas\Tests\Fixtures\NoAnnotations" xmlns:h="https://github.com/willdurand/Hateoas" xml-root-name="resource">
4+
<h:relation rel="self">
5+
<h:href uri="https://github.com/willdurand/Hateoas/issues/303" />
6+
</h:relation>
7+
<property name="unused" exclude="true" />
8+
<property name="id" exclude="true" />
9+
<virtual-property name="id" expression="'id-' ~ object.id()" />
10+
</class>
11+
</serializer>

tests/Hateoas/Tests/HateoasBuilderTest.php

+24
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Hateoas\Tests\Fixtures\AdrienBrault;
99
use Hateoas\Tests\Fixtures\CircularReference1;
1010
use Hateoas\Tests\Fixtures\CircularReference2;
11+
use Hateoas\Tests\Fixtures\NoAnnotations;
1112
use Hateoas\Tests\Fixtures\WithAlternativeRouter;
1213
use Hateoas\UrlGenerator\CallableUrlGenerator;
1314
use JMS\Serializer\SerializationContext;
@@ -160,4 +161,27 @@ public function testWithNullInEmbedded()
160161
$hateoas->serialize($reference1, 'json', SerializationContext::create()->setSerializeNull(true))
161162
);
162163
}
164+
165+
public function testWithXmlRootNameFromXmlConfiguration()
166+
{
167+
$hateoas = HateoasBuilder::create()
168+
->addMetadataDir(self::rootPath() . '/Fixtures/config')
169+
->build();
170+
171+
$resource = new NoAnnotations('#303', 303);
172+
173+
$this->assertSame(
174+
<<<XML
175+
<?xml version="1.0" encoding="UTF-8"?>
176+
<resource>
177+
<id><![CDATA[id-#303]]></id>
178+
<number>303</number>
179+
<link rel="self" href="https://github.com/willdurand/Hateoas/issues/303"/>
180+
</resource>
181+
182+
XML
183+
,
184+
$hateoas->serialize($resource, 'xml')
185+
);
186+
}
163187
}

0 commit comments

Comments
 (0)