Skip to content

Commit

Permalink
drop Serializer in favor of SerializerBundle
Browse files Browse the repository at this point in the history
  • Loading branch information
lsmith77 committed May 28, 2011
1 parent c860137 commit 3991dde
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 278 deletions.
8 changes: 1 addition & 7 deletions DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ public function getConfigTreeBuilder()
$rootNode
->fixXmlConfig('format', 'formats')
->fixXmlConfig('normalizer', 'normalizers')
->fixXmlConfig('default_normalizer', 'default_normalizers')
->fixXmlConfig('class', 'classes')
->fixXmlConfig('service', 'services')
->children()
Expand All @@ -50,12 +49,7 @@ public function getConfigTreeBuilder()
->useAttributeAsKey('name')
->prototype('scalar')->end()
->end()
->arrayNode('default_normalizers')
->prototype('scalar')->end()
->end()
->scalarNode('fallback_normalizer')->defaultNull()->end()
->arrayNode('normalizers')
->useAttributeAsKey('name')
->prototype('scalar')->end()
->end()
->arrayNode('exception')
Expand Down Expand Up @@ -98,7 +92,7 @@ public function getConfigTreeBuilder()
->addDefaultsIfNotSet()
->children()
->scalarNode('view')->defaultValue('FOS\RestBundle\View\View')->end()
->scalarNode('serializer')->defaultValue('FOS\RestBundle\Serializer\Serializer')->end()
->scalarNode('serializer')->defaultValue('Symfony\Component\Serializer\Serializer')->end()
->scalarNode('json')->defaultValue('Symfony\Component\Serializer\Encoder\JsonEncoder')->end()
->scalarNode('xml')->defaultValue('Symfony\Component\Serializer\Encoder\XmlEncoder')->end()
->scalarNode('html')->defaultValue('FOS\RestBundle\Serializer\Encoder\HtmlEncoder')->end()
Expand Down
43 changes: 11 additions & 32 deletions DependencyInjection/FOSRestExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@
namespace FOS\RestBundle\DependencyInjection;

use Symfony\Component\Config\Definition\Processor,
Symfony\Component\Config\FileLocator,
Symfony\Component\HttpKernel\DependencyInjection\Extension,
Symfony\Component\DependencyInjection\Reference,
Symfony\Component\DependencyInjection\ContainerInterface,
Symfony\Component\DependencyInjection\Loader\XmlFileLoader,
Symfony\Component\DependencyInjection\ContainerBuilder,
Symfony\Component\Config\FileLocator,
Symfony\Component\DependencyInjection\DefinitionDecorator;
Symfony\Component\DependencyInjection\Loader\XmlFileLoader;

/*
* This file is part of the FOSRestBundle
Expand Down Expand Up @@ -39,10 +38,6 @@ public function load(array $configs, ContainerBuilder $container)
'xml' => 'fos_rest.xml',
'html' => 'fos_rest.html',
),
'default_normalizers' => array(
'fos_rest.constraint_violation_normalizer',
'fos_rest.constraint_violation_list_normalizer',
),
));

$processor = new Processor();
Expand All @@ -66,39 +61,23 @@ public function load(array $configs, ContainerBuilder $container)
$encoder->addTag('jms_serializer.encoder', array('format' => $format));
}

foreach ($config['default_normalizers'] as $normalizer) {
if ($normalizer) {
$normalizer = $container->getDefinition($normalizer);
$normalizer->addTag('jms_serializer.normalizer');
}
}

if ($config['fallback_normalizer']) {
$container->setAlias('jms_serializer.default_normalizer', $config['fallback_normalizer']);
$priority = count($config['normalizers']);
foreach ($config['normalizers'] as $normalizer) {
$normalizer = $container->getDefinition($normalizer);
$normalizer->addTag('jms_serializer.normalizer', array('priority' => $priority--));
}

$container->setAlias('fos_rest.serializer', 'serializer');
} else {
$loader->load('serializer.xml');

$container->setParameter($this->getAlias().'.normalizers', $config['normalizers']);
foreach ($config['default_normalizers'] as $key => $normalizer) {
if (!$normalizer) {
unset($config['default_normalizers'][$key]);
}
}
$container->setParameter($this->getAlias().'.default_normalizers', $config['default_normalizers']);
$serializer = $container->getDefinition('fos_rest.serializer');

if (null === $config['fallback_normalizer']) {
$config['fallback_normalizer'] = 'fos_rest.noop_normalizer';
foreach ($config['formats'] as $format => $encoder) {
$serializer->addMethodCall('setEncoder', array($format, new Reference($encoder)));
}

if ($config['fallback_normalizer']) {
$definition = $container->getDefinition('fos_rest.serializer');
$reference = new Reference($config['fallback_normalizer'], ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false);
$definition->replaceArgument(3, $reference);
foreach ($config['normalizers'] as $normalizer) {
$serializer->addMethodCall('addNormalizer', array(new Reference($normalizer)));
}
$container->setParameter($this->getAlias().'.fallback_normalizer', $config['fallback_normalizer']);
}

foreach ($config['exception']['codes'] as $exception => $code) {
Expand Down
8 changes: 1 addition & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,7 @@ support for xml.
Also the default JSON encoder class is modified and a custom serializer service
is configured.

The a normalizer is registered for the class ``Acme\HelloBundle\Document\Article``
and the ``fos_rest.get_set_method_normalizer`` normalizer will be loazy loaded as
soon as normalization is triggered. If no matching normalizer is found a last
attempt is made with the ``fos_rest.pass_thru_normalizer``.
The a default normalizer is registered with the ``fos_rest.get_set_method_normalizer`.

Also a default key for any form instances inside view parameters is set to ``form``.

Expand All @@ -102,10 +99,7 @@ Finally the HTTP response status code for failed validation is set to ``400``:
rss: my.encoder.rss
xml: false
normalizers:
"Acme\HelloBundle\Document\Article": "my.article_normalizer"
default_normalizers:
- "fos_rest.get_set_method_normalizer"
fallback_normalizer: 'fos_rest.pass_thru_normalizer'
default_form_key: form
failed_validation: HTTP_BAD_REQUEST

Expand Down
20 changes: 0 additions & 20 deletions Resources/config/serializer.xml

This file was deleted.

2 changes: 2 additions & 0 deletions Resources/config/view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
</call>
</service>

<service id="fos_rest.serializer" class="%fos_rest.serializer.class%" />

<service id="fos_rest.view" class="%fos_rest.view.class%">
<argument>%fos_rest.formats%</argument>
<argument>%fos_rest.failed_validation%</argument>
Expand Down
212 changes: 0 additions & 212 deletions Serializer/Serializer.php

This file was deleted.

0 comments on commit 3991dde

Please sign in to comment.