Skip to content

Commit

Permalink
update to latest serializer changes
Browse files Browse the repository at this point in the history
  • Loading branch information
goetas committed May 30, 2018
1 parent a52712c commit a1c9657
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 30 deletions.
4 changes: 2 additions & 2 deletions ContextFactory/ConfiguredContextFactory.php
Expand Up @@ -88,15 +88,15 @@ public function setGroups(array $groups)
/**
* @inheritDoc
*/
public function createDeserializationContext()
public function createDeserializationContext(): DeserializationContext
{
return $this->configureContext(new DeserializationContext());
}

/**
* @inheritDoc
*/
public function createSerializationContext()
public function createSerializationContext(): SerializationContext
{
return $this->configureContext(new SerializationContext());
}
Expand Down
Expand Up @@ -56,12 +56,13 @@ public function process(ContainerBuilder $container)
$format = isset($eventData['format']) ? $eventData['format'] : null;
$method = isset($eventData['method']) ? $eventData['method'] : EventDispatcher::getDefaultMethodName($eventData['event']);
$priority = isset($eventData['priority']) ? (integer)$eventData['priority'] : 0;
$interface = isset($eventData['interface']) ? $eventData['interface'] : null;

if (class_exists(ServiceLocatorTagPass::class) || $container->getDefinition($id)->isPublic()) {
$listenerServices[$id] = new Reference($id);
$listeners[$eventData['event']][$priority][] = array(array($id, $method), $class, $format);
$listeners[$eventData['event']][$priority][] = array(array($id, $method), $class, $format, $interface);
} else {
$listeners[$eventData['event']][$priority][] = array(array(new Reference($id), $method), $class, $format);
$listeners[$eventData['event']][$priority][] = array(array(new Reference($id), $method), $class, $format, $interface);
}
}
}
Expand Down
12 changes: 8 additions & 4 deletions DependencyInjection/JMSSerializerExtension.php
Expand Up @@ -75,15 +75,19 @@ public function loadInternal(array $config, ContainerBuilder $container)

if (!empty($config['expression_evaluator']['id'])) {
$container
->getDefinition('jms_serializer.serializer')
->replaceArgument(8, new Reference($config['expression_evaluator']['id']));
->getDefinition('jms_serializer.deserialization_graph_navigator_factory')
->replaceArgument(5, new Reference($config['expression_evaluator']['id']));

$container
->setAlias('jms_serializer.accessor_strategy', 'jms_serializer.accessor_strategy.expression');
->getDefinition('jms_serializer.serialization_graph_navigator_factory')
->replaceArgument(4, new Reference($config['expression_evaluator']['id']));

$container
->getDefinition('jms_serializer.accessor_strategy.default')
->setArgument(0, new Reference($config['expression_evaluator']['id']));

} else {
$container->removeDefinition('jms_serializer.expression_evaluator');
$container->removeDefinition('jms_serializer.accessor_strategy.expression');
}

// metadata
Expand Down
4 changes: 2 additions & 2 deletions JMSSerializerBundle.php
Expand Up @@ -36,12 +36,12 @@ public function build(ContainerBuilder $builder)
{
$builder->addCompilerPass($this->getServiceMapPass('jms_serializer.serialization_visitor', 'format',
function (ContainerBuilder $container, $def) {
$container->getDefinition('jms_serializer.serializer')->replaceArgument(3, $def);
$container->getDefinition('jms_serializer.serializer')->replaceArgument(2, $def);
}
));
$builder->addCompilerPass($this->getServiceMapPass('jms_serializer.deserialization_visitor', 'format',
function (ContainerBuilder $container, $def) {
$container->getDefinition('jms_serializer.serializer')->replaceArgument(4, $def);
$container->getDefinition('jms_serializer.serializer')->replaceArgument(3, $def);
}
));

Expand Down
39 changes: 25 additions & 14 deletions Resources/config/services.xml
Expand Up @@ -81,7 +81,7 @@
<argument>jms_serializer.metadata_driver</argument>
</service>

<service id="jms_serializer.metadata_driver" alias="jms_serializer.metadata.chain_driver" public="false"/>
<service id="jms_serializer.metadata_driver" alias="jms_serializer.metadata.chain_driver" public="true"/>

<!-- Metadata Factory -->
<service id="jms_serializer.metadata.cache.file_cache" class="Metadata\Cache\FileCache" public="false">
Expand Down Expand Up @@ -129,16 +129,31 @@
<!-- Serializer -->
<service id="jms_serializer.serializer" class="JMS\Serializer\Serializer" public="false">
<argument type="service" id="jms_serializer.metadata_factory" />
<argument type="service" id="jms_serializer.handler_registry" />
<argument type="service" id="jms_serializer.object_constructor" />
<argument type="collection">
<argument key="2" type="service" id="jms_serializer.deserialization_graph_navigator_factory" />
<argument key="1" type="service" id="jms_serializer.serialization_graph_navigator_factory" />
</argument>
<argument type="collection" /><!-- Serialization Visitors -->
<argument type="collection" /><!-- Deserialization Visitors -->
<argument type="service" id="jms_serializer.serialization_context_factory" />
<argument type="service" id="jms_serializer.deserialization_context_factory" />
<argument type="service" id="jms_serializer.type_parser" on-invalid="null" />
</service>

<service id="jms_serializer.deserialization_graph_navigator_factory" class="JMS\Serializer\GraphNavigator\Factory\DeserializationGraphNavigatorFactory" public="false">
<argument type="service" id="jms_serializer.metadata_factory" />
<argument type="service" id="jms_serializer.handler_registry" />
<argument type="service" id="jms_serializer.object_constructor" />
<argument type="service" id="jms_serializer.accessor_strategy" />
<argument type="service" id="jms_serializer.event_dispatcher" />
<argument type="constant">NULL</argument> <!-- expression evaluator -->
</service>
<service id="jms_serializer.serialization_graph_navigator_factory" class="JMS\Serializer\GraphNavigator\Factory\SerializationGraphNavigatorFactory" public="false">
<argument type="service" id="jms_serializer.metadata_factory" />
<argument type="service" id="jms_serializer.handler_registry" />
<argument type="service" id="jms_serializer.accessor_strategy" />
<argument type="service" id="jms_serializer.event_dispatcher" />
<argument type="service" id="jms_serializer.type_parser" on-invalid="null" />
<argument type="constant">NULL</argument> <!-- expression evaluator -->
<argument type="service" id="jms_serializer.serialization_context_factory" />
<argument type="service" id="jms_serializer.deserialization_context_factory" />
</service>

<service id="jms_serializer.deserialization_context_factory" alias="jms_serializer.configured_deserialization_context_factory" public="true"/>
Expand Down Expand Up @@ -184,23 +199,19 @@
<!-- accessor strategy -->
<service id="jms_serializer.accessor_strategy" public="false" alias="jms_serializer.accessor_strategy.default"/>
<service id="jms_serializer.accessor_strategy.default" public="false" class="JMS\Serializer\Accessor\DefaultAccessorStrategy"/>
<service id="jms_serializer.accessor_strategy.expression" public="false" class="JMS\Serializer\Accessor\ExpressionAccessorStrategy">
<argument type="service" id="jms_serializer.expression_evaluator"/>
<argument type="service" id="jms_serializer.accessor_strategy.default"/>
</service>

<!-- Visitors -->
<service id="jms_serializer.json_serialization_visitor" class="JMS\Serializer\VisitorFactory\JsonSerializationVisitorFactory" public="false">
<service id="jms_serializer.json_serialization_visitor" class="JMS\Serializer\Visitor\Factory\JsonSerializationVisitorFactory" public="false">
<tag name="jms_serializer.serialization_visitor" format="json" />
</service>
<service id="jms_serializer.json_deserialization_visitor" class="JMS\Serializer\VisitorFactory\JsonDeserializationVisitorFactory" public="false">
<service id="jms_serializer.json_deserialization_visitor" class="JMS\Serializer\Visitor\Factory\JsonDeserializationVisitorFactory" public="false">
<argument type="service" id="jms_serializer.naming_strategy" />
<tag name="jms_serializer.deserialization_visitor" format="json" />
</service>
<service id="jms_serializer.xml_serialization_visitor" class="JMS\Serializer\VisitorFactory\XmlSerializationVisitorFactory" public="false">
<service id="jms_serializer.xml_serialization_visitor" class="JMS\Serializer\Visitor\Factory\XmlSerializationVisitorFactory" public="false">
<tag name="jms_serializer.serialization_visitor" format="xml" />
</service>
<service id="jms_serializer.xml_deserialization_visitor" class="JMS\Serializer\VisitorFactory\XmlDeserializationVisitorFactory" public="false">
<service id="jms_serializer.xml_deserialization_visitor" class="JMS\Serializer\Visitor\Factory\XmlDeserializationVisitorFactory" public="false">
<tag name="jms_serializer.deserialization_visitor" format="xml" />
</service>

Expand Down
Expand Up @@ -213,7 +213,8 @@ public function testEventSubscriber()
[
['my_listener', 'onserializerpreserialize'],
'bar',
'json'
'json',
null
]
]], $call[1][0]);
}
Expand Down Expand Up @@ -266,7 +267,8 @@ public function testEventSubscriberCanBePrivate()
[
['my_subscriber', 'onEventName'],
'some-class',
'json'
'json',
null
]
]], $call[1][0]);
}
Expand Down
8 changes: 4 additions & 4 deletions Tests/DependencyInjection/JMSSerializerExtensionTest.php
Expand Up @@ -76,8 +76,8 @@ public function testSerializerContextFactoriesAreSet()
$container = $this->getContainerForConfig(array(array()));

$def = $container->getDefinition('jms_serializer');
$serializationFactoryArg = $def->getArgument(9);
$deSerializationFactoryArg = $def->getArgument(10);
$serializationFactoryArg = $def->getArgument(4);
$deSerializationFactoryArg = $def->getArgument(5);

$this->assertEquals('jms_serializer.serialization_context_factory', (string)$serializationFactoryArg);
$this->assertEquals('jms_serializer.deserialization_context_factory', (string)$deSerializationFactoryArg);
Expand Down Expand Up @@ -108,8 +108,8 @@ public function testSerializerContextFactoriesWithId()

$def = $container->getDefinition('jms_serializer');

$serializationFactoryArg = $def->getArgument(9);
$deSerializationFactoryArg = $def->getArgument(10);
$serializationFactoryArg = $def->getArgument(4);
$deSerializationFactoryArg = $def->getArgument(5);

$this->assertEquals('foo', (string)$serializationFactoryArg);
$this->assertEquals('bar', (string)$deSerializationFactoryArg);
Expand Down

0 comments on commit a1c9657

Please sign in to comment.