/**
  * {@inheritdoc}
  */
 public function execute(AMQPMessage $msg)
 {
     /* @var $message Message */
     $message = $msg->getMessage();
     $serializer = $this->serializer;
     $content = $message->getValue('content');
     $xml = new \SimpleXMLElement($content);
     /** @var \Doctrine\Common\Persistence\ObjectRepository $repository */
     $repository = $this->objectManager->getRepository($this->atomEntryClass);
     try {
         /** @var \Bangpound\Bundle\PubsubBundle\CouchDocument\AtomFeed $feed */
         $feed = $serializer->deserialize($content, 'Bangpound\\Bundle\\PubsubBundle\\CouchDocument\\AtomFeed', 'xml');
         $source = new SourceType();
         $source->setAuthors($feed->getAuthors());
         $source->setBase($feed->getBase());
         $source->setCategories($feed->getCategories());
         $source->setContributors($feed->getContributors());
         $source->setGenerator($feed->getGenerator());
         $source->setIcon($feed->getIcon());
         $source->setLang($feed->getLang());
         $source->setLogo($feed->getLogo());
         $source->setLinks($feed->getLinks());
         $source->setRights($feed->getRights());
         $source->setSubtitle($feed->getSubtitle());
         $source->setTitle($feed->getTitle());
         $source->setUpdated($feed->getUpdated());
         $execute = FALSE;
         /** @var \Bangpound\Bundle\PubsubBundle\CouchDocument\AtomEntry $entry */
         foreach ($feed->getEntries() as $key => $entry) {
             $id = $entry->getId();
             $existing = $repository->findOneBy(['id' => $id]);
             if ($existing) {
                 $this->logger->info(sprintf('Duplicate notification sent for %s - %s', $id, $entry->getTitle()), ['existing' => $existing, 'new' => $entry]);
                 continue;
             }
             $execute = TRUE;
             if (!$entry->getSource()) {
                 $entry->setSource(clone $source);
             }
             $entry->setOriginalData($xml->entry[$key]->asXml(), 'text/xml');
             $this->objectManager->persist($entry);
         }
         if ($execute) {
             $this->objectManager->flush();
         }
         $this->objectManager->clear();
     } catch (RuntimeException $e) {
         throw $e;
     }
 }