Commit dc28083a authored by webchick's avatar webchick

Revert "Issue #1894508 by linclark, damiankloip: Update symfony/serializer."

Caused a conflict with a higher-priority patch; temporary rollback for now.

This reverts commit ba6d3fb7.
parent 783caf38
......@@ -811,18 +811,18 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/Serializer",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c"
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0"
},
"dist": {
"type": "zip",
"url": "https://github.com/symfony/Serializer/archive/45fe843e3144a594f93a6a372385c6534c7df31c.zip",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c",
"url": "https://github.com/symfony/Serializer/archive/ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0.zip",
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2013-01-19 07:50:02",
"time": "2012-12-19 07:09:49",
"type": "library",
"extra": {
"branch-alias": {
......
......@@ -32,7 +32,7 @@ class ComplexDataNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
$attributes = array();
foreach ($object as $name => $field) {
$attributes[$name] = $this->serializer->normalize($field, $format);
......
......@@ -31,7 +31,7 @@ class ListNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
$attributes = array();
foreach ($object as $fieldItem) {
$attributes[] = $this->serializer->normalize($fieldItem, $format);
......
......@@ -25,7 +25,7 @@ class TypedDataNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
return $object->getValue();
}
......
......@@ -44,9 +44,9 @@ public function __construct() {
/**
* Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::encode().
*/
public function encode($data, $format, array $context = array()){
$normalized = $this->serializer->normalize($data, $format, $context);
return $this->baseEncoder->encode($normalized, $format, $context);
public function encode($data, $format){
$normalized = $this->serializer->normalize($data, $format);
return $this->baseEncoder->encode($normalized, $format);
}
/**
......@@ -59,8 +59,8 @@ public function supportsEncoding($format) {
/**
* Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::decode().
*/
public function decode($data, $format, array $context = array()){
return $this->baseEncoder->decode($data, $format, $context);
public function decode($data, $format){
return $this->baseEncoder->decode($data, $format);
}
/**
......
......@@ -27,7 +27,7 @@ class JsonldEntityNormalizer extends JsonldNormalizerBase implements Denormalize
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($entity, $format = NULL, array $context = array()) {
public function normalize($entity, $format = NULL) {
$entity_wrapper = new JsonldEntityWrapper($entity, $format, $this->serializer, $this->siteSchemaManager);
$attributes = $entity_wrapper->getProperties();
......@@ -43,7 +43,7 @@ public function normalize($entity, $format = NULL, array $context = array()) {
*
* @throws \Symfony\Component\Serializer\Exception\UnexpectedValueException
*/
public function denormalize($data, $class, $format = null, array $context = array()) {
public function denormalize($data, $class, $format = null) {
if (!isset($data['@type'])) {
throw new UnexpectedValueException('JSON-LD @type parameter must be included.');
}
......
......@@ -30,7 +30,7 @@ class JsonldEntityReferenceNormalizer extends JsonldNormalizerBase implements De
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
// @todo If an $options parameter is added to the serialize signature, as
// requested in https://github.com/symfony/symfony/pull/4938, then instead
// of creating the array of properties, we could simply call normalize and
......@@ -45,7 +45,7 @@ public function normalize($object, $format = NULL, array $context = array()) {
/**
* Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize()
*/
public function denormalize($data, $class, $format = null, array $context = array()) {
public function denormalize($data, $class, $format = null) {
// @todo Support denormalization for Entity Reference.
return array();
}
......
......@@ -27,14 +27,14 @@ class JsonldFieldItemNormalizer extends JsonldNormalizerBase implements Denormal
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
return $object->getPropertyValues();
}
/**
* Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize()
*/
public function denormalize($data, $class, $format = null, array $context = array()) {
public function denormalize($data, $class, $format = null) {
// For most fields, the field items array should simply be returned as is.
return $data;
}
......
......@@ -25,7 +25,7 @@ class JsonldRdfSchemaNormalizer extends JsonldNormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($data, $format = NULL, array $context = array()) {
public function normalize($data, $format = NULL) {
$normalized = array();
$graph = $data->getGraph();
......
......@@ -29,7 +29,7 @@ class SerializationTestEncoder implements EncoderInterface {
* @return string
* A string representation of $data in the requested format.
*/
public function encode($data, $format, array $context = array()) {
public function encode($data, $format) {
// @see Drupal\serialization_test\SerializationTestNormalizer::normalize().
return 'Normalized by ' . $data['normalized_by'] . ', Encoded by SerializationTestEncoder';
}
......
......@@ -30,7 +30,7 @@ class SerializationTestNormalizer implements NormalizerInterface {
* An array containing a normalized representation of $object, appropriate
* for encoding to the requested format.
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
$normalized = (array) $object;
// Add identifying value that can be used to verify that the expected
// normalizer was invoked.
......
......@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0::getLoader();
return ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a::getLoader();
......@@ -2,7 +2,7 @@
// autoload_real.php generated by Composer
class ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0
class ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a
{
private static $loader;
......@@ -19,9 +19,9 @@ public static function getLoader()
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0', 'loadClassLoader'));
spl_autoload_register(array('ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a', 'loadClassLoader'));
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a', 'loadClassLoader'));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
......
......@@ -575,6 +575,55 @@
"description": "Symfony Routing Component",
"homepage": "http://symfony.com"
},
{
"name": "symfony/serializer",
"version": "dev-master",
"version_normalized": "9999999-dev",
"target-dir": "Symfony/Component/Serializer",
"source": {
"type": "git",
"url": "https://github.com/symfony/Serializer",
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0"
},
"dist": {
"type": "zip",
"url": "https://github.com/symfony/Serializer/archive/ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0.zip",
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2012-12-19 07:09:49",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Serializer\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony Serializer Component",
"homepage": "http://symfony.com"
},
{
"name": "symfony/yaml",
"version": "dev-master",
......@@ -931,54 +980,5 @@
"database",
"routing"
]
},
{
"name": "symfony/serializer",
"version": "dev-master",
"version_normalized": "9999999-dev",
"target-dir": "Symfony/Component/Serializer",
"source": {
"type": "git",
"url": "https://github.com/symfony/Serializer",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c"
},
"dist": {
"type": "zip",
"url": "https://github.com/symfony/Serializer/archive/45fe843e3144a594f93a6a372385c6534c7df31c.zip",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2013-01-19 07:50:02",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Serializer\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony Serializer Component",
"homepage": "http://symfony.com"
}
]
/Tests export-ignore
phpunit.xml.dist export-ignore
CHANGELOG
=========
2.2.0
-----
* [BC BREAK] All Serializer, Normalizer and Encoder interfaces have been
modified to include an optional `$context` array parameter.
* The XML Root name can now be configured with the `xml_root_name`
parameter in the context option to the `XmlEncoder`.
* Options to `json_encode` and `json_decode` can be passed through
the context options of `JsonEncode` and `JsonDecode` encoder/decoders.
2.1.0
-----
......
......@@ -34,9 +34,9 @@ public function __construct(array $decoders = array())
/**
* {@inheritdoc}
*/
final public function decode($data, $format, array $context = array())
final public function decode($data, $format)
{
return $this->getDecoder($format)->decode($data, $format, $context);
return $this->getDecoder($format)->decode($data, $format);
}
/**
......
......@@ -35,9 +35,9 @@ public function __construct(array $encoders = array())
/**
* {@inheritdoc}
*/
final public function encode($data, $format, array $context = array())
final public function encode($data, $format)
{
return $this->getEncoder($format)->encode($data, $format, $context);
return $this->getEncoder($format)->encode($data, $format);
}
/**
......
......@@ -23,11 +23,10 @@ interface DecoderInterface
*
* @param scalar $data Data to decode
* @param string $format Format name
* @param array $context options that decoders have access to.
*
* @return mixed
*/
public function decode($data, $format, array $context = array());
public function decode($data, $format);
/**
* Checks whether the serializer can decode from given format
......
......@@ -23,11 +23,10 @@ interface EncoderInterface
*
* @param mixed $data Data to encode
* @param string $format Format name
* @param array $context options that normalizers/encoders have access to.
*
* @return scalar
*/
public function encode($data, $format, array $context = array());
public function encode($data, $format);
/**
* Checks whether the serializer can encode to given format
......
......@@ -21,7 +21,6 @@ class JsonDecode implements DecoderInterface
private $associative;
private $recursionDepth;
private $lastError = JSON_ERROR_NONE;
protected $serializer;
public function __construct($associative = false, $depth = 512)
{
......@@ -49,20 +48,9 @@ public function getLastError()
*
* @return mixed
*/
public function decode($data, $format, array $context = array())
public function decode($data, $format)
{
$context = $this->resolveContext($context);
$associative = $context['json_decode_associative'];
$recursionDepth = $context['json_decode_recursion_depth'];
$options = $context['json_decode_options'];
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
$decodedData = json_decode($data, $associative, $recursionDepth, $options);
} else {
$decodedData = json_decode($data, $associative, $recursionDepth);
}
$decodedData = json_decode($data, $this->associative, $this->recursionDepth);
$this->lastError = json_last_error();
return $decodedData;
......@@ -75,21 +63,4 @@ public function supportsDecoding($format)
{
return JsonEncoder::FORMAT === $format;
}
/**
* Merge the default options of the Json Decoder with the passed context.
*
* @param array $context
* @return array
*/
private function resolveContext(array $context)
{
$defaultOptions = array(
'json_decode_associative' => $this->associative,
'json_decode_recursion_depth' => $this->recursionDepth,
'json_decode_options' => 0
);
return array_merge($defaultOptions, $context);
}
}
......@@ -41,13 +41,14 @@ public function getLastError()
/**
* Encodes PHP data to a JSON string
*
* {@inheritdoc}
* @param mixed $data
* @param string $format
*
* @return string
*/
public function encode($data, $format, array $context = array())
public function encode($data, $format)
{
$context = $this->resolveContext($context);
$encodedJson = json_encode($data, $context['json_encode_options']);
$encodedJson = json_encode($data, $this->options);
$this->lastError = json_last_error();
return $encodedJson;
......@@ -60,15 +61,4 @@ public function supportsEncoding($format)
{
return JsonEncoder::FORMAT === $format;
}
/**
* Merge default json encode options with context.
*
* @param array $context
* @return array
*/
private function resolveContext(array $context = array())
{
return array_merge(array('json_encode_options' => $this->options), $context);
}
}
......@@ -59,17 +59,17 @@ public function getLastDecodingError()
/**
* {@inheritdoc}
*/
public function encode($data, $format, array $context = array())
public function encode($data, $format)
{
return $this->encodingImpl->encode($data, self::FORMAT, $context);
return $this->encodingImpl->encode($data, self::FORMAT);
}
/**
* {@inheritdoc}
*/
public function decode($data, $format, array $context = array())
public function decode($data, $format)
{
return $this->decodingImpl->decode($data, self::FORMAT, $context);
return $this->decodingImpl->decode($data, self::FORMAT);
}
/**
......
......@@ -26,36 +26,24 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
private $format;
private $rootNodeName = 'response';
/**
* Construct new XmlEncoder and allow to change the root node element name.
*
* @param string $rootNodeName
*/
public function __construct($rootNodeName = 'response')
{
$this->rootNodeName = $rootNodeName;
}
/**
* {@inheritdoc}
*/
public function encode($data, $format, array $context = array())
public function encode($data, $format)
{
if ($data instanceof \DOMDocument) {
return $data->saveXML();
}
$xmlRootNodeName = $this->resolveXmlRootName($context);
$this->dom = new \DOMDocument();
$this->format = $format;
if (null !== $data && !is_scalar($data)) {
$root = $this->dom->createElement($xmlRootNodeName);
$root = $this->dom->createElement($this->rootNodeName);
$this->dom->appendChild($root);
$this->buildXml($root, $data, $xmlRootNodeName);
$this->buildXml($root, $data);
} else {
$this->appendNode($this->dom, $data, $xmlRootNodeName);
$this->appendNode($this->dom, $data, $this->rootNodeName);
}
return $this->dom->saveXML();
......@@ -64,7 +52,7 @@ public function encode($data, $format, array $context = array())
/**
* {@inheritdoc}
*/
public function decode($data, $format, array $context = array())
public function decode($data, $format)
{
$internalErrors = libxml_use_internal_errors(true);
$disableEntities = libxml_disable_entity_loader(true);
......@@ -281,13 +269,12 @@ private function parseXml($node)
*
* @param DOMNode $parentNode
* @param array|object $data data
* @param string $xmlRootNodeName
*
* @return Boolean
*
* @throws UnexpectedValueException
*/
private function buildXml($parentNode, $data, $xmlRootNodeName)
private function buildXml($parentNode, $data)
{
$append = true;
......@@ -323,24 +310,21 @@ private function buildXml($parentNode, $data, $xmlRootNodeName)
return $append;
}
if (is_object($data)) {
$data = $this->serializer->normalize($data, $this->format);
if (null !== $data && !is_scalar($data)) {
return $this->buildXml($parentNode, $data, $xmlRootNodeName);
return $this->buildXml($parentNode, $data);
}
// top level data object was normalized into a scalar
if (!$parentNode->parentNode->parentNode) {
$root = $parentNode->parentNode;
$root->removeChild($parentNode);
return $this->appendNode($root, $data, $xmlRootNodeName);
return $this->appendNode($root, $data, $this->rootNodeName);
}
return $this->appendNode($parentNode, $data, 'data');
}
throw new UnexpectedValueException('An unexpected value could not be serialized: '.var_export($data, true));
}
......@@ -392,7 +376,7 @@ private function needsCdataWrapping($val)
private function selectNodeType($node, $val)
{
if (is_array($val)) {
return $this->buildXml($node, $val, null);
return $this->buildXml($node, $val);
} elseif ($val instanceof \SimpleXMLElement) {
$child = $this->dom->importNode(dom_import_simplexml($val), true);
$node->appendChild($child);
......@@ -415,15 +399,4 @@ private function selectNodeType($node, $val)
return true;
}
/**
* Get real XML root node name, taking serializer options into account.
*/
private function resolveXmlRootName(array $context = array())
{
return isset($context['xml_root_node_name'])
? $context['xml_root_node_name']
: $this->rootNodeName;
}
}
Copyright (c) 2004-2013 Fabien Potencier
Copyright (c) 2004-2012 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
......
......@@ -19,18 +19,18 @@ class CustomNormalizer extends SerializerAwareNormalizer implements NormalizerIn
/**
* {@inheritdoc}
*/
public function normalize($object, $format = null, array $context = array())
public function normalize($object, $format = null)
{
return $object->normalize($this->serializer, $format, $context);
return $object->normalize($this->serializer, $format);
}
/**
* {@inheritdoc}
*/
public function denormalize($data, $class, $format = null, array $context = array())
public function denormalize($data, $class, $format = null)
{
$object = new $class;
$object->denormalize($this->serializer, $data, $format, $context);
$object->denormalize($this->serializer, $data, $format);
return $object;
}
......
......@@ -32,7 +32,6 @@ interface DenormalizableInterface
* @param array|scalar $data The data from which to re-create the object.
* @param string|null $format The format is optionally given to be able to denormalize differently
* based on different input formats.
* @param array $context options for denormalizing
*/
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = array());
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null);
}
......@@ -24,11 +24,10 @@ interface DenormalizerInterface
* @param mixed $data data to restore
* @param string $class the expected class to instantiate
* @param string $format format the given data was extracted from
* @param array $context options available to the denormalizer
*
* @return object
*/
public function denormalize($data, $class, $format = null, array $context = array());
public function denormalize($data, $class, $format = null);
/**
* Checks whether the given class is supported for denormalization by this normalizer
......
......@@ -69,7 +69,7 @@ public function setIgnoredAttributes(array $ignoredAttributes)
/**
* {@inheritdoc}
*/
public function normalize($object, $format = null, array $context = array())
public function normalize($object, $format = null)
{
$reflectionObject = new \ReflectionObject($object);
$reflectionMethods = $reflectionObject->getMethods(\ReflectionMethod::IS_PUBLIC);
......@@ -101,7 +101,7 @@ public function normalize($object, $format = null, array $context = array())
/**
* {@inheritdoc}
*/
public function denormalize($data, $class, $format = null, array $context = array())
public function denormalize($data, $class, $format = null)
{
$reflectionClass = new \ReflectionClass($class);
$constructor = $reflectionClass->getConstructor();
......
......@@ -31,9 +31,8 @@ interface NormalizableInterface
* can use it to normalize objects contained within this object.
* @param string|null $format The format is optionally given to be able to normalize differently