Skip to content

Commit

Permalink
Merge branch 'master' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
dan committed Sep 13, 2016
2 parents 3102b2e + 34bb3c8 commit c824022
Show file tree
Hide file tree
Showing 10 changed files with 205 additions and 53 deletions.
105 changes: 53 additions & 52 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,52 +1,53 @@
{
"name": "jms/serializer",
"type": "library",
"description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.",
"keywords": ["serialization", "deserialization", "json", "jaxb", "xml"],
"homepage": "http://jmsyst.com/libs/serializer",
"license": "Apache2",
"authors": [
{
"name": "Johannes M. Schmitt",
"email": "[email protected]"
}
],
"require": {
"php": ">=5.5.0",
"jms/metadata": "~1.1",
"jms/parser-lib": "1.*",
"phpoption/phpoption": "^1.1",
"phpcollection/phpcollection": "~0.1",
"doctrine/annotations": "^1.0",
"doctrine/instantiator": "^1.0.3"
},
"conflict": {
"twig/twig": "<1.12"
},
"suggest": {
"symfony/yaml": "Required if you'd like to serialize data to YAML format."
},
"require-dev": {
"twig/twig": "~1.12|~2.0",
"doctrine/orm": "~2.1",
"jackalope/jackalope-doctrine-dbal": "^1.1.5",
"doctrine/phpcr-odm": "^1.3|^2.0",
"propel/propel1": "~1.7",
"symfony/yaml": "^2.1",
"symfony/translation": "^2.1",
"symfony/validator": "^2.2",
"symfony/form": "~2.1",
"symfony/filesystem": "^2.1",
"phpunit/phpunit": "^4.8|^5.0"
},
"autoload": {
"psr-0": {
"JMS\\Serializer": "src/"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
}
}
{
"name": "jms/serializer",
"type": "library",
"description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.",
"keywords": ["serialization", "deserialization", "json", "jaxb", "xml"],
"homepage": "http://jmsyst.com/libs/serializer",
"license": "Apache2",
"authors": [
{
"name": "Johannes M. Schmitt",
"email": "[email protected]"
}
],
"require": {
"php": ">=5.5.0",
"jms/metadata": "~1.1",
"jms/parser-lib": "1.*",
"phpoption/phpoption": "^1.1",
"phpcollection/phpcollection": "~0.1",
"doctrine/annotations": "^1.0",
"doctrine/instantiator": "^1.0.3"
},
"conflict": {
"twig/twig": "<1.12"
},
"suggest": {
"symfony/yaml": "Required if you'd like to serialize data to YAML format."
},
"require-dev": {
"ext-pdo_sqlite": "*",
"twig/twig": "~1.12|~2.0",
"doctrine/orm": "~2.1",
"jackalope/jackalope-doctrine-dbal": "^1.1.5",
"doctrine/phpcr-odm": "^1.3|^2.0",
"propel/propel1": "~1.7",
"symfony/yaml": "^2.1",
"symfony/translation": "^2.1",
"symfony/validator": "^2.2",
"symfony/form": "~2.1",
"symfony/filesystem": "^2.1",
"phpunit/phpunit": "^4.8|^5.0"
},
"autoload": {
"psr-0": {
"JMS\\Serializer": "src/"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
}
}
2 changes: 1 addition & 1 deletion src/JMS/Serializer/Metadata/ClassMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ public function merge(MergeableInterface $object)
$this->discriminatorMap = $object->discriminatorMap;
$this->discriminatorBaseClass = $object->discriminatorBaseClass;
}

if ($this->discriminatorMap && ! $this->reflection->isAbstract()) {
if (false === $typeValue = array_search($this->name, $this->discriminatorMap, true)) {
throw new \LogicException(sprintf(
Expand Down
25 changes: 25 additions & 0 deletions tests/JMS/Serializer/Tests/Fixtures/DiscriminatorMiddle/Base.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

/*
* Copyright 2016 Johannes M. Schmitt <[email protected]>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

namespace JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle;


abstract class Base
{

}
23 changes: 23 additions & 0 deletions tests/JMS/Serializer/Tests/Fixtures/DiscriminatorMiddle/Chief.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

/*
* Copyright 2016 Johannes M. Schmitt <[email protected]>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

namespace JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle;

class Chief extends User
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

/*
* Copyright 2016 Johannes M. Schmitt <[email protected]>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

namespace JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle;

class Employee extends User
{
}
38 changes: 38 additions & 0 deletions tests/JMS/Serializer/Tests/Fixtures/DiscriminatorMiddle/User.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

/*
* Copyright 2016 Johannes M. Schmitt <[email protected]>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

namespace JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle;

use JMS\Serializer\Annotation as Serializer;

/**
* @Serializer\Discriminator(field = "type", map = {
* "chief": "JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle\Chief",
* "employee": "JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle\Employee",
* })
*/
abstract class User extends Base
{
/** @Serializer\Type("integer") */
public $hours;

public function __construct($hours)
{
$this->hours = (integer) $hours;
}
}
24 changes: 24 additions & 0 deletions tests/JMS/Serializer/Tests/Serializer/BaseSerializationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@
use JMS\Serializer\Exclusion\DepthExclusionStrategy;
use JMS\Serializer\Tests\Fixtures\Node;
use JMS\Serializer\Tests\Fixtures\AuthorReadOnlyPerClass;
use JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle\Chief;
use JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle\Employee;

abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase
{
Expand Down Expand Up @@ -951,6 +953,28 @@ public function testNestedPolymorphicObjects()
}
}

/**
* @group polymorphic
*/
public function testNestedMiddlePolymorphicObjects()
{
$garage = array(new Chief(3), new Employee(1));
$this->assertEquals(
$this->getContent('user_hierarchy'),
$this->serialize($garage)
);

if ($this->hasDeserializer()) {
$this->assertEquals(
$garage,
$this->deserialize(
$this->getContent('user_hierarchy'),
'array<JMS\Serializer\Tests\Fixtures\DiscriminatorMiddle\User>'
)
);
}
}

/**
* @group polymorphic
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ protected function getContent($key)
$outputs['car'] = '{"km":5,"type":"car"}';
$outputs['car_without_type'] = '{"km":5}';
$outputs['garage'] = '{"vehicles":[{"km":3,"type":"car"},{"km":1,"type":"moped"}]}';
$outputs['user_hierarchy'] = '[{"hours":3,"type":"chief"},{"hours":1,"type":"employee"}]';
$outputs['tree'] = '{"tree":{"children":[{"children":[{"children":[],"foo":"bar"}],"foo":"bar"}],"foo":"bar"}}';
$outputs['nullable_arrays'] = '{"empty_inline":[],"not_empty_inline":["not_empty_inline"],"empty_not_inline":[],"not_empty_not_inline":["not_empty_not_inline"],"empty_not_inline_skip":[],"not_empty_not_inline_skip":["not_empty_not_inline_skip"]}';
$outputs['object_with_object_property_no_array_to_author'] = '{"foo": "bar", "author": "baz"}';
Expand Down
11 changes: 11 additions & 0 deletions tests/JMS/Serializer/Tests/Serializer/xml/user_hierarchy.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<result>
<entry>
<hours>3</hours>
<type><![CDATA[chief]]></type>
</entry>
<entry>
<hours>1</hours>
<type><![CDATA[employee]]></type>
</entry>
</result>
6 changes: 6 additions & 0 deletions tests/JMS/Serializer/Tests/Serializer/yml/user_hierarchy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-
hours: 3
type: chief
-
hours: 1
type: employee

0 comments on commit c824022

Please sign in to comment.