From cbfbf9b47d46fa036777768e6f99bd6db279ae93 Mon Sep 17 00:00:00 2001
From: fliespl <a.rzadkowolski@gmail.com>
Date: Wed, 16 Oct 2019 10:32:23 +0200
Subject: [PATCH] Fallback to jms_serializer if avaialable and notify user
 about error

jms_serializer in v2 dropped usage of "serializer" alias. It means it might not be available if you don't use default symfony serializer.
Also added exception to show so that user it immediately aware that it will not log user info inside rollbar.
---
 Factories/RollbarHandlerFactory.php | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/Factories/RollbarHandlerFactory.php b/Factories/RollbarHandlerFactory.php
index b31c548..9705db2 100755
--- a/Factories/RollbarHandlerFactory.php
+++ b/Factories/RollbarHandlerFactory.php
@@ -35,15 +35,24 @@ public function __construct(ContainerInterface $container)
                 $config['person_fn'] = function () use ($container) {
                     try {
                         $token = $container->get('security.token_storage')->getToken();
-
+                        
                         if ($token) {
                             $user = $token->getUser();
-                            $serializer = $container->get('serializer');
+                            if($container->has('serializer')) {
+                                $serializer = $container->get('serializer');
+                            } elseif($container->has('jms_serializer')) {
+                                $serializer = $container->get('jms_serializer');
+                            } else {
+                                throw new ServiceNotFoundException('serializer');
+                            }
                             $person = \json_decode($serializer->serialize($user, 'json'), true);
                             return $person;
                         }
                     } catch (\Exception $exception) {
-                        // Ignore
+                        // Ignore all except serializer
+                        if($exception instanceof ServiceNotFoundException) {
+                            throw $exception;
+                        }
                     }
                 };
             }