You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/10/31 06:39:49 UTC

svn commit: r1635673 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel: PDResources.java graphics/color/PDColorSpace.java

Author: jahewson
Date: Fri Oct 31 05:39:48 2014
New Revision: 1635673

URL: http://svn.apache.org/r1635673
Log:
PDFBOX-2407: Avoid null in getColorSpace

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java?rev=1635673&r1=1635672&r2=1635673&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java Fri Oct 31 05:39:48 2014
@@ -96,7 +96,7 @@ public final class PDResources implement
      */
     public PDColorSpace getColorSpace(COSName name) throws IOException
     {
-        // check for default color spaces
+        // check for default color spaces - todo: move this into PDColorSpace.create?
         if (name.equals(COSName.DEVICECMYK) &&
             get(COSName.COLORSPACE, COSName.DEFAULT_CMYK) != null)
         {
@@ -120,23 +120,28 @@ public final class PDResources implement
             return PDColorSpace.create(name, this);
         }
 
+        // get the instance
         COSBase object = get(COSName.COLORSPACE, name);
-        if (object == null &&
-            name.equals(COSName.DEVICECMYK) ||
-            name.equals(COSName.DEVICERGB) ||
-            name.equals(COSName.DEVICEGRAY))
+        if (object != null)
         {
-            // the named color space does not exist, but it's built-in
-            return PDColorSpace.create(name, this);
+            return PDColorSpace.create(object, this);
         }
         else
         {
-            // finally handle named color spaces
-            return PDColorSpace.create(object, this);
+            return PDColorSpace.create(name, this);
         }
     }
 
     /**
+     * Returns true if the given color space name exists in these resources.
+     * @param name color space name
+     */
+    public boolean hasColorSpace(COSName name)
+    {
+        return get(COSName.COLORSPACE, name) != null;
+    }
+
+    /**
      * Returns the external graphics state resource with the given name, or null if none exists.
      */
     public PDExternalGraphicsState getExtGState(COSName name) throws IOException

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java?rev=1635673&r1=1635672&r2=1635673&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorSpace.java Fri Oct 31 05:39:48 2014
@@ -89,12 +89,11 @@ public abstract class PDColorSpace imple
             }
             else if (resources != null)
             {
-                PDColorSpace cs = resources.getColorSpace(name);
-                if (cs == null)
+                if (!resources.hasColorSpace(name))
                 {
                     throw new MissingException("Missing color space: " + name.getName());
                 }
-                return cs;
+                return resources.getColorSpace(name);
             }
             else
             {