From 2c7f56dd7081308e1cff46218b8d7b2f3abdfbcc Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 24 Jan 2013 13:57:43 -0500 Subject: [PATCH] Issue #1850704 by klausi, damiankloip: available serialization formats. --- core/lib/Drupal/Core/CoreBundle.php | 7 +++++-- .../Compiler/RegisterSerializationClassesPass.php | 9 +++++++++ core/modules/jsonld/lib/Drupal/jsonld/JsonldBundle.php | 8 +++++++- .../serialization_test/SerializationTestBundle.php | 3 ++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php index bc6afef4267a..624c7167c9dc 100644 --- a/core/lib/Drupal/Core/CoreBundle.php +++ b/core/lib/Drupal/Core/CoreBundle.php @@ -253,8 +253,11 @@ class CoreBundle extends Bundle { $container->register('serializer.normalizer.complex_data', 'Drupal\Core\Serialization\ComplexDataNormalizer')->addTag('normalizer'); $container->register('serializer.normalizer.list', 'Drupal\Core\Serialization\ListNormalizer')->addTag('normalizer'); $container->register('serializer.normalizer.typed_data', 'Drupal\Core\Serialization\TypedDataNormalizer')->addTag('normalizer'); - $container->register('serializer.encoder.json', 'Drupal\Core\Serialization\JsonEncoder')->addTag('encoder'); - $container->register('serializer.encoder.xml', 'Drupal\Core\Serialization\XmlEncoder')->addTag('encoder'); + + $container->register('serializer.encoder.json', 'Drupal\Core\Serialization\JsonEncoder') + ->addTag('encoder', array('format' => array('json' => 'JSON'))); + $container->register('serializer.encoder.xml', 'Drupal\Core\Serialization\XmlEncoder') + ->addTag('encoder', array('format' => array('xml' => 'XML'))); $container->register('flood', 'Drupal\Core\Flood\DatabaseBackend') ->addArgument(new Reference('database')); diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterSerializationClassesPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterSerializationClassesPass.php index 6ed101b896fc..bb5914d9e28c 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterSerializationClassesPass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterSerializationClassesPass.php @@ -42,6 +42,15 @@ class RegisterSerializationClassesPass implements CompilerPassInterface { if (!empty($encoders)) { $definition->replaceArgument(1, $this->sort($encoders)); } + + // Find all serialization formats known. + $formats = array(); + foreach ($container->findTaggedServiceIds('encoder') as $id => $attributes) { + foreach ($attributes[0]['format'] as $name => $label) { + $formats[$name] = $label; + } + } + $container->setParameter('serializer.formats', $formats); } /** diff --git a/core/modules/jsonld/lib/Drupal/jsonld/JsonldBundle.php b/core/modules/jsonld/lib/Drupal/jsonld/JsonldBundle.php index 6aa69ecb5177..30248838820d 100644 --- a/core/modules/jsonld/lib/Drupal/jsonld/JsonldBundle.php +++ b/core/modules/jsonld/lib/Drupal/jsonld/JsonldBundle.php @@ -58,7 +58,13 @@ class JsonldBundle extends Bundle { // Add the encoder to the service container. Encoders can only specify which // format they support in Encoder::supportsEncoding(). $container->register('serializer.encoder.jsonld', 'Drupal\jsonld\JsonldEncoder') - ->addTag('encoder', array('priority' => $priority)); + ->addTag('encoder', array( + 'priority' => $priority, + 'format' => array( + 'jsonld' => 'JSON-LD', + 'drupal_jsonld' => 'Drupal JSON-LD', + ), + )); $container->register('jsonld.subscriber', 'Drupal\jsonld\EventSubscriber\JsonldSubscriber') ->addTag('event_subscriber'); diff --git a/core/modules/system/tests/modules/serialization_test/lib/Drupal/serialization_test/SerializationTestBundle.php b/core/modules/system/tests/modules/serialization_test/lib/Drupal/serialization_test/SerializationTestBundle.php index 1acb3f26ad77..83be4ff27564 100644 --- a/core/modules/system/tests/modules/serialization_test/lib/Drupal/serialization_test/SerializationTestBundle.php +++ b/core/modules/system/tests/modules/serialization_test/lib/Drupal/serialization_test/SerializationTestBundle.php @@ -21,6 +21,7 @@ class SerializationTestBundle extends Bundle { */ public function build(ContainerBuilder $container) { $container->register('serializer.normalizer.serialization_test', 'Drupal\serialization_test\SerializationTestNormalizer')->addTag('normalizer'); - $container->register('serializer.encoder.serialization_test', 'Drupal\serialization_test\SerializationTestEncoder')->addTag('encoder'); + $container->register('serializer.encoder.serialization_test', 'Drupal\serialization_test\SerializationTestEncoder') + ->addTag('encoder', array('format' => array('serialization_test' => 'Serialization test'))); } }