Browse Source

[Config] renamed FileLoaderImportException to FileLoaderLoadException and replaced some \InvalidArgumentException with this new exception class

Fabien Potencier 14 years ago
parent
commit
01ecaa4503

+ 1 - 1
src/Symfony/Component/Config/Exception/FileLoaderImportCircularReferenceException.php

@@ -16,7 +16,7 @@ namespace Symfony\Component\Config\Exception;
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class FileLoaderImportCircularReferenceException extends FileLoaderImportException
+class FileLoaderImportCircularReferenceException extends FileLoaderLoadException
 {
     public function __construct(array $resources, $code = null, $previous = null)
     {

+ 15 - 7
src/Symfony/Component/Config/Exception/FileLoaderImportException.php

@@ -12,11 +12,11 @@
 namespace Symfony\Component\Config\Exception;
 
 /**
- * Exception class for when a resource cannot be imported.
+ * Exception class for when a resource cannot be loaded or imported.
  *
  * @author Ryan Weaver <ryan@thatsquality.com>
  */
-class FileLoaderImportException extends \Exception
+class FileLoaderLoadException extends \Exception
 {
     /**
      * @param  string    $resource The resource that could not be imported
@@ -24,10 +24,10 @@ class FileLoaderImportException extends \Exception
      * @param  integer   $code     The error code
      * @param  Exception $previous A previous exception
      */
-    public function __construct($resource, $sourceResource, $code = null, $previous = null)
+    public function __construct($resource, $sourceResource = null, $code = null, $previous = null)
     {
         if (null === $sourceResource) {
-            $message = sprintf('Cannot import resource "%s".', $this->varToString($resource));
+            $message = sprintf('Cannot load resource "%s".', $this->varToString($resource));
         } else {
             $message = sprintf('Cannot import resource "%s" from "%s".', $this->varToString($resource), $this->varToString($sourceResource));
         }
@@ -38,7 +38,7 @@ class FileLoaderImportException extends \Exception
     protected function varToString($var)
     {
         if (is_object($var)) {
-            return sprintf('[object](%s)', get_class($var));
+            return sprintf('Object(%s)', get_class($var));
         }
 
         if (is_array($var)) {
@@ -47,17 +47,25 @@ class FileLoaderImportException extends \Exception
                 $a[] = sprintf('%s => %s', $k, $this->varToString($v));
             }
 
-            return sprintf("[array](%s)", implode(', ', $a));
+            return sprintf("Array(%s)", implode(', ', $a));
         }
 
         if (is_resource($var)) {
-            return '[resource]';
+            return sprintf('Resource(%s)', get_resource_type($var));
         }
 
         if (null === $var) {
             return 'null';
         }
 
+        if (false === $var) {
+            return 'false';
+        }
+
+        if (true === $var) {
+            return 'true';
+        }
+
         return (string) $var;
     }
 }

+ 4 - 4
src/Symfony/Component/Config/Loader/DelegatingLoader.php

@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Config\Loader;
 
+use Symfony\Component\Config\Exception\FileLoaderLoadException;
+
 /**
  * DelegatingLoader delegates loading to other loaders using a loader resolver.
  *
@@ -41,10 +43,8 @@ class DelegatingLoader extends Loader
      */
     public function load($resource, $type = null)
     {
-        $loader = $this->resolver->resolve($resource, $type);
-
-        if (false === $loader) {
-            throw new \InvalidArgumentException(sprintf('Unable to load the "%s" resource.', is_string($resource) ? $resource : (is_object($resource) ? get_class($resource) : 'RESOURCE')));
+        if (false === $loader = $this->resolver->resolve($resource, $type)) {
+            throw new FileLoaderLoadException($resource);
         }
 
         return $loader->load($resource, $type);

+ 3 - 3
src/Symfony/Component/Config/Loader/FileLoader.php

@@ -12,7 +12,7 @@
 namespace Symfony\Component\Config\Loader;
 
 use Symfony\Component\Config\FileLocatorInterface;
-use Symfony\Component\Config\Exception\FileLoaderImportException;
+use Symfony\Component\Config\Exception\FileLoaderLoadException;
 use Symfony\Component\Config\Exception\FileLoaderImportCircularReferenceException;
 
 /**
@@ -82,11 +82,11 @@ abstract class FileLoader extends Loader
         } catch (\Exception $e) {
             if (!$ignoreErrors) {
                 // prevent embedded imports from nesting multiple exceptions
-                if ($e instanceof FileLoaderImportException) {
+                if ($e instanceof FileLoaderLoadException) {
                     throw $e;
                 }
 
-                throw new FileLoaderImportException($resource, $sourceResource, null, $e);
+                throw new FileLoaderLoadException($resource, $sourceResource, null, $e);
             }
         }
     }

+ 3 - 3
src/Symfony/Component/Config/Loader/Loader.php

@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Config\Loader;
 
+use Symfony\Component\Config\Exception\FileLoaderLoadException;
+
 /**
  * Loader is the abstract class used by all built-in loaders.
  *
@@ -63,7 +65,6 @@ abstract class Loader implements LoaderInterface
      */
     public function resolve($resource, $type = null)
     {
-
         if ($this->supports($resource, $type)) {
             return $this;
         }
@@ -71,10 +72,9 @@ abstract class Loader implements LoaderInterface
         $loader = null === $this->resolver ? false : $this->resolver->resolve($resource, $type);
 
         if (false === $loader) {
-            throw new \InvalidArgumentException(sprintf('Unable to load the "%s" resource.', is_string($resource) ? $resource : (is_object($resource) ? get_class($resource) : 'RESOURCE')));
+            throw new FileLoaderLoadException($resource);
         }
 
         return $loader;
     }
-
 }

+ 1 - 1
tests/Symfony/Tests/Component/Config/Loader/DelegatingLoaderTest.php

@@ -73,7 +73,7 @@ class DelegatingLoaderTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @expectedException \InvalidArgumentException
+     * @expectedException Symfony\Component\Config\Exception\FileLoaderLoadException
      */
     public function testLoadThrowsAnExceptionIfTheResourceCannotBeLoaded()
     {

+ 4 - 3
tests/Symfony/Tests/Component/Config/Loader/LoaderTest.php

@@ -13,6 +13,7 @@ namespace Symfony\Tests\Component\Config\Loader;
 
 use Symfony\Component\Config\Loader\LoaderResolver;
 use Symfony\Component\Config\Loader\Loader;
+use Symfony\Component\Config\Exception\FileLoaderLoadException;
 
 class LoaderTest extends \PHPUnit_Framework_TestCase
 {
@@ -49,9 +50,9 @@ class LoaderTest extends \PHPUnit_Framework_TestCase
         $loader->setResolver($resolver);
         try {
             $loader->resolve(new \stdClass());
-            $this->fail('->resolve() throws an \InvalidArgumentException if the resource cannot be loaded');
-        } catch (\Exception $e) {
-            $this->assertInstanceOf('\InvalidArgumentException', $e, '->resolve() throws an \InvalidArgumentException if the resource cannot be loaded');
+            $this->fail('->resolve() throws a FileLoaderLoadException if the resource cannot be loaded');
+        } catch (FileLoaderLoadException $e) {
+            $this->assertInstanceOf('Symfony\Component\Config\Exception\FileLoaderLoadException', $e, '->resolve() throws a FileLoaderLoadException if the resource cannot be loaded');
         }
     }
 }