private function processUrlConfigs(array $configs, ContainerBuilder $container)
 {
     foreach ($configs as $config) {
         $data = Decoder::decode($config['url']);
         $service = $this->resolver->createServiceDefinitions($data, $container, $config['prefix']);
         if (!is_string($service) || !$container->hasDefinition($service)) {
             throw new UrlResolveException("No service name returned or a non-existant service was returned");
         }
         $data['service'] = $service;
         foreach ($config['encoders'] as $encoder) {
             if (!$this->encoderRegistry->hasEncoder($encoder)) {
                 throw new EncodeException("No encoder with the name '{$encoder}' found");
             }
             $this->encoderRegistry->getEncoder($encoder)->encode($data, $container, $config['prefix']);
         }
     }
 }
 public function testFullWithWeirdPath()
 {
     $res = Decoder::matchUrl('ftp://user@example:p/w@example.com:21/some/path/to/some?example=true@example.com');
     $this->assertSame(['scheme' => 'ftp', 'user' => 'user@example', 'pass' => 'p/w', 'host' => 'example.com', 'port' => 21, 'path' => '/some/path/to/some', 'query' => 'example=true@example.com', 'fragment' => null], $res);
 }