Fix bug with non serializing recursive departure
This commit is contained in:
		
							parent
							
								
									cde6507197
								
							
						
					
					
						commit
						7279f2096e
					
				| @ -1,4 +1,8 @@ | ||||
| jms_serializer: | ||||
|     default_context: | ||||
|         serialization: | ||||
|             serialize_null: true | ||||
| 
 | ||||
|     visitors: | ||||
|         xml_serialization: | ||||
|             format_output: '%kernel.debug%' | ||||
|  | ||||
| @ -42,7 +42,7 @@ export class PickerStopComponent extends Vue { | ||||
|             [lines => lines.length > 2,   ([first]) => `${first.symbol}…`], | ||||
|         ); | ||||
| 
 | ||||
|         return unique(this.stop.destinations || [], destination => destination.stop.name).map(compactLines); | ||||
|         return unique(this.stop.destinations || [], destination => destination.stop && destination.stop.name).map(compactLines); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -7,6 +7,7 @@ use App\Event\PostProcessEvent; | ||||
| use App\Handler\PostProcessingHandler; | ||||
| use App\Model\Destination; | ||||
| use App\Model\Stop; | ||||
| use App\Service\CacheableConverter; | ||||
| use App\Service\Converter; | ||||
| use App\Service\IdUtils; | ||||
| use Doctrine\ORM\EntityManagerInterface; | ||||
| @ -25,6 +26,11 @@ class WithDestinationsDatabaseHandler implements PostProcessingHandler | ||||
|         $this->em = $entityManager; | ||||
|         $this->converter = $converter; | ||||
|         $this->id = $id; | ||||
| 
 | ||||
|         if ($this->converter instanceof CacheableConverter) { | ||||
|             $this->converter = clone $this->converter; | ||||
|             $this->converter->flushCache(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public function postProcess(PostProcessEvent $event) | ||||
|  | ||||
| @ -3,8 +3,9 @@ | ||||
| namespace App\Service; | ||||
| 
 | ||||
| use Tightenco\Collect\Support\Collection; | ||||
| use function Kadet\Functional\Predicates\instance; | ||||
| 
 | ||||
| class AggregateConverter implements Converter | ||||
| class AggregateConverter implements Converter, CacheableConverter | ||||
| { | ||||
|     private $converters; | ||||
| 
 | ||||
| @ -42,4 +43,22 @@ class AggregateConverter implements Converter | ||||
|     { | ||||
|         return clone $this->converters; | ||||
|     } | ||||
| 
 | ||||
|     public function flushCache() | ||||
|     { | ||||
|         $this | ||||
|             ->converters | ||||
|             ->filter(instance(CacheableConverter::class)) | ||||
|             ->each(function (CacheableConverter $converter) { | ||||
|                 $converter->flushCache(); | ||||
|             }) | ||||
|         ; | ||||
|     } | ||||
| 
 | ||||
|     public function __clone() | ||||
|     { | ||||
|         $this->converters = $this->converters->map(function ($object) { | ||||
|             return clone $object; | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -23,7 +23,7 @@ final class SerializerContextFactory | ||||
| 
 | ||||
|     public function create($subject, array $groups = ['Default']) | ||||
|     { | ||||
|         return SerializationContext::create()->setGroups($this->groups($subject, $groups)); | ||||
|         return SerializationContext::create()->setSerializeNull(true)->setGroups($this->groups($subject, $groups)); | ||||
|     } | ||||
| 
 | ||||
|     private function groups($subject, array $groups) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user