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/21 02:13:39 UTC

svn commit: r1633258 [2/2] - in /pdfbox/trunk: examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ examples/src/main/java/org/apache/pdfbox/examples/util/ pdfbox/src/main/java/org/apache/pdfbox/contentstream/ pdfbox/src/main/java/org/apache/pdfb...

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImage.java Tue Oct 21 00:13:37 2014
@@ -22,7 +22,6 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
@@ -31,6 +30,7 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.filter.DecodeResult;
 import org.apache.pdfbox.filter.Filter;
 import org.apache.pdfbox.filter.FilterFactory;
+import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.common.COSArrayList;
 import org.apache.pdfbox.pdmodel.common.PDMemoryStream;
 import org.apache.pdfbox.pdmodel.common.PDStream;
@@ -49,8 +49,8 @@ public final class PDInlineImage impleme
     // image parameters
     private final COSDictionary parameters;
 
-    // color spaces in current resource dictionary
-    private final Map<String, PDColorSpace> colorSpaces;
+    // the current resources, contains named color spaces
+    private final PDResources resources;
 
     // image data
     private final PDStream stream;
@@ -60,13 +60,13 @@ public final class PDInlineImage impleme
      *
      * @param parameters the image parameters
      * @param data the image data
-     * @param colorSpaces the color spaces in the current resources parameters
+     * @param resources the current resources
      */
-    public PDInlineImage(COSDictionary parameters, byte[] data,
-            Map<String, PDColorSpace> colorSpaces) throws IOException
+    public PDInlineImage(COSDictionary parameters, byte[] data, PDResources resources)
+            throws IOException
     {
         this.parameters = parameters;
-        this.colorSpaces = colorSpaces;
+        this.resources = resources;
 
         DecodeResult decodeResult = null;
         List<String> filters = getFilters();
@@ -134,7 +134,7 @@ public final class PDInlineImage impleme
         if (cs != null)
         {
             // TODO: handling of abbreviated color space names belongs here, not in the factory
-            return PDColorSpace.create(cs, colorSpaces, null);
+            return PDColorSpace.create(cs, resources);
         }
         else if (isStencil())
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentGroup.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentGroup.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentGroup.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/PDOptionalContentGroup.java Tue Oct 21 00:13:37 2014
@@ -16,30 +16,22 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.optionalcontent;
 
-import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.common.COSObjectable;
+import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList;
 
 /**
- * This class represents an optional content group (OCG).
- *
- * @since PDF 1.5
- * @version $Revision$
+ * An optional content group (OCG).
  */
-public class PDOptionalContentGroup implements COSObjectable
+public class PDOptionalContentGroup extends PDPropertyList
 {
-
-    private COSDictionary ocg;
-
     /**
      * Creates a new optional content group (OCG).
      * @param name the name of the content group
      */
     public PDOptionalContentGroup(String name)
     {
-        this.ocg = new COSDictionary();
-        this.ocg.setItem(COSName.TYPE, COSName.OCG);
+        this.dict.setItem(COSName.TYPE, COSName.OCG);
         setName(name);
     }
 
@@ -49,18 +41,12 @@ public class PDOptionalContentGroup impl
      */
     public PDOptionalContentGroup(COSDictionary dict)
     {
+        super(dict);
         if (!dict.getItem(COSName.TYPE).equals(COSName.OCG))
         {
             throw new IllegalArgumentException(
                     "Provided dictionary is not of type '" + COSName.OCG + "'");
         }
-        this.ocg = dict;
-    }
-
-    /** {@inheritDoc} */
-    public COSBase getCOSObject()
-    {
-        return this.ocg;
     }
 
     /**
@@ -69,7 +55,7 @@ public class PDOptionalContentGroup impl
      */
     public String getName()
     {
-        return this.ocg.getString(COSName.NAME);
+        return dict.getString(COSName.NAME);
     }
 
     /**
@@ -78,16 +64,14 @@ public class PDOptionalContentGroup impl
      */
     public void setName(String name)
     {
-        this.ocg.setString(COSName.NAME, name);
+        dict.setString(COSName.NAME, name);
     }
 
     //TODO Add support for "Intent" and "Usage"
 
-    /** {@inheritDoc} */
     @Override
     public String toString()
     {
         return super.toString() + " (" + getName() + ")";
     }
-
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAppearanceStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAppearanceStream.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAppearanceStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAppearanceStream.java Tue Oct 21 00:13:37 2014
@@ -130,7 +130,7 @@ public class PDAppearanceStream implemen
         COSDictionary dict = null;
         if( resources != null )
         {
-            dict = resources.getCOSDictionary();
+            dict = resources.getCOSObject();
         }
         stream.setItem( COSName.RESOURCES, dict );
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateBuilder.java Tue Oct 21 00:13:37 2014
@@ -21,6 +21,7 @@ import java.awt.image.BufferedImage;
 import java.io.IOException;
 
 import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDResources;
@@ -225,8 +226,8 @@ public interface PDFTemplateBuilder
 	 * @throws IOException
 	 */
 	public void injectAppearanceStreams(PDStream holderFormStream, PDStream innterFormStream,
-                                        PDStream imageFormStream, String imageObjectName,
-                                        String imageName, String innerFormName,
+                                        PDStream imageFormStream, COSName imageObjectName,
+                                        COSName imageName, COSName innerFormName,
                                         PDVisibleSignDesigner properties) throws IOException;
 	
 	/**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateCreator.java Tue Oct 21 00:13:37 2014
@@ -23,6 +23,7 @@ import java.io.InputStream;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDResources;
@@ -139,9 +140,9 @@ public class PDFTemplateCreator
         pdfBuilder.injectProcSetArray(innerForm, page, innerFormResource, imageFormResources,
                 holderFormResources, pdfStructure.getProcSet());
 
-        String imgFormName = pdfStructure.getImageFormName();
-        String imgName = pdfStructure.getImageName();
-        String innerFormName = pdfStructure.getInnerFormName();
+        COSName imgFormName = pdfStructure.getImageFormName();
+        COSName imgName = pdfStructure.getImageName();
+        COSName innerFormName = pdfStructure.getInnerFormName();
 
         // now create Streams of AP
         pdfBuilder.injectAppearanceStreams(holderFormStream, imageFormStream, imageFormStream,

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateStructure.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateStructure.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateStructure.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDFTemplateStructure.java Tue Oct 21 00:13:37 2014
@@ -25,6 +25,7 @@ import java.util.List;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdfwriter.COSWriter;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
@@ -67,9 +68,9 @@ public class PDFTemplateStructure
     private PDStream imageFormStream;
     private PDResources imageFormResources;
     private List<PDFieldTreeNode> acroFormFields;
-    private String innerFormName;
-    private String imageFormName;
-    private String imageName;
+    private COSName innerFormName;
+    private COSName imageFormName;
+    private COSName imageName;
     private COSDocument visualSignature;
     private PDFormXObject imageForm;
     private COSDictionary widgetDictionary;
@@ -418,7 +419,7 @@ public class PDFTemplateStructure
      * Gets name of inner form
      * @return the inner forms's name
      */
-    public String getInnerFormName()
+    public COSName getInnerFormName()
     {
         return innerFormName;
     }
@@ -427,7 +428,7 @@ public class PDFTemplateStructure
      * Sets inner form name
      * @param innerFormName
      */
-    public void setInnerFormName(String innerFormName)
+    public void setInnerFormName(COSName innerFormName)
     {
         this.innerFormName = innerFormName;
     }
@@ -497,7 +498,7 @@ public class PDFTemplateStructure
      * Gets image form name
      * @return the image form's name
      */
-    public String getImageFormName()
+    public COSName getImageFormName()
     {
         return imageFormName;
     }
@@ -506,7 +507,7 @@ public class PDFTemplateStructure
      * Sets image form name
      * @param imageFormName
      */
-    public void setImageFormName(String imageFormName)
+    public void setImageFormName(COSName imageFormName)
     {
         this.imageFormName = imageFormName;
     }
@@ -515,7 +516,7 @@ public class PDFTemplateStructure
      * Gets visible signature image name
      * @return the visible signature's image name
      */
-    public String getImageName()
+    public COSName getImageName()
     {
         return imageName;
     }
@@ -524,7 +525,7 @@ public class PDFTemplateStructure
      * Sets visible signature image name
      * @param imageName
      */
-    public void setImageName(String imageName)
+    public void setImageName(COSName imageName)
     {
         this.imageName = imageName;
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSigBuilder.java Tue Oct 21 00:13:37 2014
@@ -268,7 +268,7 @@ public class PDVisibleSigBuilder impleme
     public void insertInnerFormToHolerResources(PDFormXObject innerForm,
                                                 PDResources holderFormResources)
     {
-        String name = holderFormResources.addXObject(innerForm, "FRM");
+        COSName name = holderFormResources.add(innerForm, "FRM");
         pdfStructure.setInnerFormName(name);
         log.info("Alerady inserted inner form  inside holder form");
     }
@@ -312,8 +312,8 @@ public class PDVisibleSigBuilder impleme
         // imageForm.getResources().setFonts(fonts);
 
         imageFormResources.getCOSObject().setDirect(true);
-        String imageFormName = innerFormResource.addXObject(imageForm, "n");
-        String imageName = imageFormResources.addXObject(img, "img");
+        COSName imageFormName = innerFormResource.add(imageForm, "n");
+        COSName imageName = imageFormResources.add(img, "img");
         pdfStructure.setImageForm(imageForm);
         pdfStructure.setImageFormName(imageFormName);
         pdfStructure.setImageName(imageName);
@@ -325,27 +325,27 @@ public class PDVisibleSigBuilder impleme
                                    PDResources innerFormResources,  PDResources imageFormResources,
                                    PDResources holderFormResources, COSArray procSet)
     {
-        innerForm.getResources().getCOSDictionary().setItem(COSName.PROC_SET, procSet);
+        innerForm.getResources().getCOSObject().setItem(COSName.PROC_SET, procSet);
         page.getCOSDictionary().setItem(COSName.PROC_SET, procSet);
-        innerFormResources.getCOSDictionary().setItem(COSName.PROC_SET, procSet);
-        imageFormResources.getCOSDictionary().setItem(COSName.PROC_SET, procSet);
-        holderFormResources.getCOSDictionary().setItem(COSName.PROC_SET, procSet);
+        innerFormResources.getCOSObject().setItem(COSName.PROC_SET, procSet);
+        imageFormResources.getCOSObject().setItem(COSName.PROC_SET, procSet);
+        holderFormResources.getCOSObject().setItem(COSName.PROC_SET, procSet);
         log.info("inserted ProcSet to PDF");
     }
 
     @Override
     public void injectAppearanceStreams(PDStream holderFormStream, PDStream innterFormStream,
-                                        PDStream imageFormStream, String imageObjectName,
-                                        String imageName, String innerFormName,
+                                        PDStream imageFormStream, COSName imageObjectName,
+                                        COSName imageName, COSName innerFormName,
                                         PDVisibleSignDesigner properties) throws IOException
     {
         // 100 means that document width is 100% via the rectangle. if rectangle
         // is 500px, images 100% is 500px.
         // String imgFormComment = "q "+imageWidthSize+ " 0 0 50 0 0 cm /" +
         // imageName + " Do Q\n" + builder.toString();
-        String imgFormComment = "q " + 100 + " 0 0 50 0 0 cm /" + imageName + " Do Q\n";
-        String holderFormComment = "q 1 0 0 1 0 0 cm /" + innerFormName + " Do Q \n";
-        String innerFormComment = "q 1 0 0 1 0 0 cm /" + imageObjectName + " Do Q\n";
+        String imgFormComment = "q " + 100 + " 0 0 50 0 0 cm /" + imageName.getName() + " Do Q\n";
+        String holderFormComment = "q 1 0 0 1 0 0 cm /" + innerFormName.getName() + " Do Q \n";
+        String innerFormComment = "q 1 0 0 1 0 0 cm /" + imageObjectName.getName() + " Do Q\n";
 
         appendRawCommands(pdfStructure.getHolderFormStream().createOutputStream(),
                 holderFormComment);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java Tue Oct 21 00:13:37 2014
@@ -402,7 +402,7 @@ public final class PDAcroForm implements
         COSDictionary drDict = null;
         if( dr != null )
         {
-            drDict = dr.getCOSDictionary();
+            drDict = dr.getCOSObject();
         }
         acroForm.setItem( COSName.DR, drDict );
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java Tue Oct 21 00:13:37 2014
@@ -431,12 +431,11 @@ public final class PDAppearanceString
 
             int setFontIndex = tokens.indexOf( Operator.getOperator("Tf"));
             COSName cosFontName = (COSName)tokens.get( setFontIndex-2 );
-            String fontName = cosFontName.getName();
-            retval = (PDFont)streamResources.getFonts().get( fontName );
+            retval = streamResources.getFont( cosFontName );
             if( retval == null )
             {
-                retval = (PDFont)formResources.getFonts().get( fontName );
-                streamResources.addFont(retval, fontName);
+                retval = formResources.getFont( cosFontName );
+                streamResources.put(cosFontName, retval);
             }
         }
         return retval;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java Tue Oct 21 00:13:37 2014
@@ -37,26 +37,13 @@ public class PDFRenderer
     protected final PDDocument document;
     // TODO keep rendering state such as caches here
 
-    private boolean clearResourcesAutomatically;
-
     /**
      * Creates a new PDFRenderer.
      * @param document the document to render
      */
     public PDFRenderer(PDDocument document)
     {
-        this(document, true);
-    }
-
-    /**
-     * Creates a new PDFRenderer.
-     * @param document the document to render
-     * @param clearResourcesAutomatically true to clear cached page resources after rendering
-     */
-    public PDFRenderer(PDDocument document, boolean clearResourcesAutomatically)
-    {
         this.document = document;
-        this.clearResourcesAutomatically = clearResourcesAutomatically;
     }
 
     /**
@@ -226,10 +213,5 @@ public class PDFRenderer
         // TODO: need to make it easy to use a custom PageDrawer and TilingPatternDrawer
         PageDrawer drawer = new PageDrawer(this, page);
         drawer.drawPage(graphics, adjustedCropBox);
-
-        if (clearResourcesAutomatically)
-        {
-            page.clearCache();
-        }
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Tue Oct 21 00:13:37 2014
@@ -881,7 +881,7 @@ public class PageDrawer extends PDFGraph
     @Override
     public void shadingFill(COSName shadingName) throws IOException
     {
-        PDShading shading = getResources().getShadings().get(shadingName.getName());
+        PDShading shading = getResources().getShading(shadingName);
         Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
         Paint paint = shading.toPaint(ctm);
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/LayerUtility.java Tue Oct 21 00:13:37 2014
@@ -39,7 +39,6 @@ import org.apache.pdfbox.pdmodel.edit.PD
 import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
 import org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentGroup;
 import org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentProperties;
-import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList;
 
 /**
  * This class allows to import pages as Form XObjects into a PDF file and use them to create
@@ -242,12 +241,12 @@ public class LayerUtility
         ocprops.addGroup(layer);
 
         PDResources resources = targetPage.findResources();
-        PDPropertyList props = resources.getProperties();
+        /*PDPropertyList props = resources.getProperties();
         if (props == null)
         {
             props = new PDPropertyList();
             resources.setProperties(props);
-        }
+        }*/
 
         //Find first free resource name with the pattern "MC<index>"
         int index = 0;
@@ -256,11 +255,10 @@ public class LayerUtility
         do
         {
             resourceName = COSName.getPDFName("MC" + index);
-            ocg = props.getOptionalContentGroup(resourceName);
             index++;
-        } while (ocg != null);
+        } while (resources.getProperties(resourceName) != null);
         //Put mapping for our new layer/OCG
-        props.putMapping(resourceName, layer);
+        resources.put(resourceName, layer);
 
         PDPageContentStream contentStream = new PDPageContentStream(
                 targetDoc, targetPage, true, !DEBUG);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Overlay.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Overlay.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Overlay.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Overlay.java Tue Oct 21 00:13:37 2014
@@ -56,8 +56,6 @@ public class Overlay
         FOREGROUND, BACKGROUND
     };
 
-    private static final String XOBJECT_PREFIX = "OL";
-
     private LayoutPage defaultOverlayPage;
     private LayoutPage firstPageOverlayPage;
     private LayoutPage lastPageOverlayPage;
@@ -225,7 +223,7 @@ public class Overlay
             resources = new PDResources();
         }
         return new LayoutPage(page.getMediaBox(), createContentStream(contents),
-                resources.getCOSDictionary());
+                resources.getCOSObject());
     }
     
     private HashMap<Integer,LayoutPage> getLayoutPages(PDDocument doc) throws IOException
@@ -242,7 +240,7 @@ public class Overlay
             {
                 resources = new PDResources();
             }
-            layoutPages.put(i,new LayoutPage(page.getMediaBox(), createContentStream(contents), resources.getCOSDictionary()));
+            layoutPages.put(i,new LayoutPage(page.getMediaBox(), createContentStream(contents), resources.getCOSObject()));
         }
         return layoutPages;
     }
@@ -391,13 +389,13 @@ public class Overlay
                 resources = new PDResources();
                 page.setResources(resources);
             }
-            String xObjectId = createOverlayXObject(page, layoutPage,
+            COSName xObjectId = createOverlayXObject(page, layoutPage,
                     layoutPage.overlayContentStream);
             array.add(createOverlayStream(page, layoutPage, xObjectId));
         }
     }
 
-    private String createOverlayXObject(PDPage page, LayoutPage layoutPage, COSStream contentStream)
+    private COSName createOverlayXObject(PDPage page, LayoutPage layoutPage, COSStream contentStream)
     {
         PDFormXObject xobjForm = new PDFormXObject(new PDStream(contentStream));
         xobjForm.setResources(new PDResources(layoutPage.overlayResources));
@@ -405,10 +403,10 @@ public class Overlay
         xobjForm.setBBox( layoutPage.overlayMediaBox.createRetranslatedRectangle());
         xobjForm.setMatrix(new AffineTransform());
         PDResources resources = page.findResources();
-        return resources.addXObject(xobjForm, XOBJECT_PREFIX);
+        return resources.add(xobjForm, "OL");
     }
 
-    private COSStream createOverlayStream(PDPage page, LayoutPage layoutPage, String xObjectId)
+    private COSStream createOverlayStream(PDPage page, LayoutPage layoutPage, COSName xObjectId)
             throws IOException
     {
         // create a new content stream that executes the XObject content
@@ -417,7 +415,7 @@ public class Overlay
         float hShift = (pageMediaBox.getWidth() - layoutPage.overlayMediaBox.getWidth()) / 2.0f;
         float vShift = (pageMediaBox.getHeight() - layoutPage.overlayMediaBox.getHeight()) / 2.0f;
         return createStream("q\nq " + scale + " 0 0 " + scale + " " + hShift + " " + vShift
-                + " cm /" + xObjectId + " Do Q\nQ\n");
+                + " cm /" + xObjectId.getName() + " Do Q\nQ\n");
     }
 
     private COSStream createStream(String content) throws IOException

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java Tue Oct 21 00:13:37 2014
@@ -25,7 +25,6 @@ import static junit.framework.TestCase.a
 import static junit.framework.TestCase.assertNotNull;
 import static junit.framework.TestCase.assertTrue;
 
-
 import javax.imageio.ImageIO;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
@@ -104,17 +103,27 @@ public class ValidateXImage
         contentStream.close();
         
         // check that the resource map is up-to-date
-        assertEquals(1, document.getPage(0).getResources().getXObjects().size());
+        assertEquals(1, count(document.getPage(0).getResources().getXObjectNames()));
 
         document.save(pdfFile);
         document.close();
 
         document = PDDocument.loadNonSeq(pdfFile, null);
-        assertEquals(1, document.getPage(0).getResources().getXObjects().size());
+        assertEquals(1, count(document.getPage(0).getResources().getXObjectNames()));
         new PDFRenderer(document).renderImage(0);
         document.close();
     }
-    
+
+    private static int count(Iterable<COSName> iterable)
+    {
+        int count = 0;
+        for (COSName name : iterable)
+        {
+            count++;
+        }
+        return count;
+    }
+
     /**
      * Check whether the images are identical.
      *

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java Tue Oct 21 00:13:37 2014
@@ -33,19 +33,14 @@ import org.apache.pdfbox.pdmodel.edit.PD
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDType1Font;
 import org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentProperties.BaseState;
-import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList;
 
 /**
  * Tests optional content group functionality (also called layers).
- *
- * @version $Revision$
  */
 public class TestOptionalContentGroups extends TestCase
 {
-
     private File testResultsDir = new File("target/test-output");
 
-    /** {@inheritDoc} */
     @Override
     protected void setUp() throws Exception
     {
@@ -101,16 +96,13 @@ public class TestOptionalContentGroups e
             assertTrue(ocprops.setGroupEnabled("disabled", false));
             assertFalse(ocprops.isGroupEnabled("disabled"));
 
-
-            //Add mapping to page
-            PDPropertyList props = new PDPropertyList();
-            resources.setProperties(props);
+            //Add property lists to page resources
             COSName mc0 = COSName.getPDFName("MC0");
-            props.putMapping(mc0, background);
             COSName mc1 = COSName.getPDFName("MC1");
-            props.putMapping(mc1, enabled);
             COSName mc2 = COSName.getPDFName("MC2");
-            props.putMapping(mc2, disabled);
+            resources.put(mc0, background);
+            resources.put(mc1, enabled);
+            resources.put(mc2, disabled);
 
             //Setup page content stream and paint background/title
             PDPageContentStream contentStream = new PDPageContentStream(doc, page, false, false);
@@ -182,13 +174,12 @@ public class TestOptionalContentGroups e
             assertEquals("1.5", catalog.getVersion());
 
             PDPage page = (PDPage)catalog.getAllPages().get(0);
-            PDPropertyList props = page.findResources().getProperties();
-            assertNotNull(props);
-            PDOptionalContentGroup ocg = props.getOptionalContentGroup(COSName.getPDFName("MC0"));
+            PDOptionalContentGroup ocg = (PDOptionalContentGroup)page.getResources()
+                    .getProperties(COSName.getPDFName("MC0"));
             assertNotNull(ocg);
             assertEquals("background", ocg.getName());
 
-            assertNull(props.getOptionalContentGroup(COSName.getPDFName("inexistent")));
+            assertNull(page.getResources().getProperties(COSName.getPDFName("inexistent")));
 
             PDOptionalContentProperties ocgs = catalog.getOCProperties();
             assertEquals(BaseState.ON, ocgs.getBaseState());

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestLayerUtility.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestLayerUtility.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestLayerUtility.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestLayerUtility.java Tue Oct 21 00:13:37 2014
@@ -35,7 +35,6 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
 import org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentGroup;
 import org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentProperties;
-import org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList;
 
 /**
  * Tests the {@link LayerUtility} class.
@@ -100,9 +99,8 @@ public class TestLayerUtility extends Te
             //assertEquals("1.5", catalog.getVersion());
 
             PDPage page = (PDPage)catalog.getAllPages().get(0);
-            PDPropertyList props = page.findResources().getProperties();
-            assertNotNull(props);
-            PDOptionalContentGroup ocg = props.getOptionalContentGroup(COSName.getPDFName("MC0"));
+            PDOptionalContentGroup ocg = (PDOptionalContentGroup)page.findResources()
+                    .getProperties(COSName.getPDFName("MC0"));
             assertNotNull(ocg);
             assertEquals("overlay", ocg.getName());
 

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java Tue Oct 21 00:13:37 2014
@@ -307,17 +307,13 @@ public abstract class PreflightStreamEng
                 {
                     // The color space is unknown. Try to access the resources dictionary,
                     // the color space can be a reference.
-                    Map<String, PDColorSpace> colorSpaces = this.getResources().getColorSpaces();
-                    if (colorSpaces != null)
+                    PDColorSpace pdCS = this.getResources().getColorSpace(COSName.getPDFName(colorSpace));
+                    if (pdCS != null)
                     {
-                        PDColorSpace pdCS = colorSpaces.get(colorSpace);
-                        if (pdCS != null)
-                        {
-                            cs = ColorSpaces.valueOf(pdCS.getName());
-                            PreflightConfiguration cfg = context.getConfig();
-                            ColorSpaceHelperFactory csFact = cfg.getColorSpaceHelperFact();
-                            csHelper = csFact.getColorSpaceHelper(context, pdCS, ColorSpaceRestriction.ONLY_DEVICE);
-                        }
+                        cs = ColorSpaces.valueOf(pdCS.getName());
+                        PreflightConfiguration cfg = context.getConfig();
+                        ColorSpaceHelperFactory csFact = cfg.getColorSpaceHelperFact();
+                        csHelper = csFact.getColorSpaceHelper(context, pdCS, ColorSpaceRestriction.ONLY_DEVICE);
                     }
                 }
 
@@ -535,17 +531,13 @@ public abstract class PreflightStreamEng
             /*
              * The color space is unknown. Try to access the resources dictionary, the color space can be a reference.
              */
-            Map<String, PDColorSpace> colorSpaces = this.getResources().getColorSpaces();
-            if (colorSpaces != null)
+            PDColorSpace pdCS = this.getResources().getColorSpace(COSName.getPDFName(colorSpaceName));
+            if (pdCS != null)
             {
-                PDColorSpace pdCS = colorSpaces.get(colorSpaceName);
-                if (pdCS != null)
-                {
-                    cs = ColorSpaces.valueOf(pdCS.getName());
-                    PreflightConfiguration cfg = context.getConfig();
-                    ColorSpaceHelperFactory csFact = cfg.getColorSpaceHelperFact();
-                    csHelper = csFact.getColorSpaceHelper(context, pdCS, ColorSpaceRestriction.NO_RESTRICTION);
-                }
+                cs = ColorSpaces.valueOf(pdCS.getName());
+                PreflightConfiguration cfg = context.getConfig();
+                ColorSpaceHelperFactory csFact = cfg.getColorSpaceHelperFact();
+                csHelper = csFact.getColorSpaceHelper(context, pdCS, ColorSpaceRestriction.NO_RESTRICTION);
             }
         }
 

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PreflightType3Stream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PreflightType3Stream.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PreflightType3Stream.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PreflightType3Stream.java Tue Oct 21 00:13:37 2014
@@ -91,7 +91,7 @@ public class PreflightType3Stream extend
         {
             image = new PDInlineImage(operator.getImageParameters(),
                                       operator.getImageData(),
-                                      getResources().getColorSpaces());
+                                      getResources());
 
             validImageFilter(operator);
             validImageColorSpace(operator);

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/StandardColorSpaceHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/StandardColorSpaceHelper.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/StandardColorSpaceHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/StandardColorSpaceHelper.java Tue Oct 21 00:13:37 2014
@@ -40,6 +40,7 @@ import java.util.Map;
 
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceN;
@@ -416,22 +417,29 @@ public class StandardColorSpaceHelper im
         // get default color space
         PreflightPath vPath = context.getValidationPath();
         PDResources resources = vPath.getClosestPathElement(PDResources.class);
-        if (resources != null && resources.getColorSpaces() != null)
+        if (resources != null)
         {
             PDColorSpace defaultCS = null;
 
-            Map<String, PDColorSpace> colorsSpaces = resources.getColorSpaces();
-            if (pdcs.getName().equals(ColorSpaces.DeviceCMYK.getLabel()))
+            try
             {
-                defaultCS = colorsSpaces.get("DefaultCMYK");
-            }
-            else if (pdcs.getName().equals(ColorSpaces.DeviceRGB.getLabel()))
-            {
-                defaultCS = colorsSpaces.get("DefaultRGB");
+                if (pdcs.getName().equals(ColorSpaces.DeviceCMYK.getLabel()))
+                {
+                    defaultCS = resources.getColorSpace(COSName.DEFAULT_CMYK);
+                }
+                else if (pdcs.getName().equals(ColorSpaces.DeviceRGB.getLabel()))
+                {
+                    defaultCS = resources.getColorSpace(COSName.DEFAULT_RGB);
+                }
+                else if (pdcs.getName().equals(ColorSpaces.DeviceGray.getLabel()))
+                {
+                    defaultCS = resources.getColorSpace(COSName.DEFAULT_GRAY);
+                }
             }
-            else if (pdcs.getName().equals(ColorSpaces.DeviceGray.getLabel()))
+            catch (IOException e)
             {
-                defaultCS = colorsSpaces.get("DefaultGray");
+                context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID_COLOR_SPACE,
+                        "Unable to read default color space : " + e.getMessage()));
             }
 
             if (defaultCS != null)

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java Tue Oct 21 00:13:37 2014
@@ -26,10 +26,7 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConfiguration.GRAPHIC_PROCESS;
 import static org.apache.pdfbox.preflight.PreflightConfiguration.SHADDING_PATTERN_PROCESS;
 import static org.apache.pdfbox.preflight.PreflightConfiguration.TILING_PATTERN_PROCESS;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DICTIONARY_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_TRUETYPE_DAMAGED;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_INVALID_PATTERN_DEFINITION;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_PDF_PROCESSING_MISSING;
 import static org.apache.pdfbox.preflight.PreflightConstants.TRANPARENCY_DICTIONARY_KEY_EXTGSTATE;
 
 import java.io.IOException;
@@ -45,11 +42,6 @@ import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDFontFactory;
-import org.apache.pdfbox.pdmodel.font.PDMMType1Font;
-import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
-import org.apache.pdfbox.pdmodel.font.PDType0Font;
-import org.apache.pdfbox.pdmodel.font.PDType1Font;
-import org.apache.pdfbox.pdmodel.font.PDType3Font;
 import org.apache.pdfbox.pdmodel.graphics.pattern.PDAbstractPattern;
 import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShading;
@@ -98,7 +90,7 @@ public class ResourcesValidationProcess 
      */
     protected void validateFonts(PreflightContext context, PDResources resources) throws ValidationException
     {
-        Map<String, PDFont> mapOfFonts = getFonts(resources.getCOSDictionary(), context);
+        Map<String, PDFont> mapOfFonts = getFonts(resources.getCOSObject(), context);
         if (mapOfFonts != null)
         {
             for (Entry<String, PDFont> entry : mapOfFonts.entrySet())
@@ -217,7 +209,7 @@ public class ResourcesValidationProcess 
      */
     protected void validateExtGStates(PreflightContext context, PDResources resources) throws ValidationException
     {
-        COSBase egsEntry = resources.getCOSDictionary().getItem(TRANPARENCY_DICTIONARY_KEY_EXTGSTATE);
+        COSBase egsEntry = resources.getCOSObject().getItem(TRANPARENCY_DICTIONARY_KEY_EXTGSTATE);
         COSDocument cosDocument = context.getDocument().getDocument();
         COSDictionary extGState = COSUtils.getAsDictionary(egsEntry, cosDocument);
         if (egsEntry != null)
@@ -237,13 +229,10 @@ public class ResourcesValidationProcess 
     {
         try
         {
-            Map<String, PDShading> shadingResources = resources.getShadings();
-            if (shadingResources != null)
+            for (COSName name : resources.getShadingNames())
             {
-                for (Entry<String, PDShading> entry : shadingResources.entrySet())
-                {
-                    ContextHelper.validateElement(context, entry.getValue(), SHADDING_PATTERN_PROCESS);
-                }
+                PDShading shading = resources.getShading(name);
+                ContextHelper.validateElement(context, shading, SHADDING_PATTERN_PROCESS);
             }
         }
         catch (IOException e)
@@ -263,15 +252,12 @@ public class ResourcesValidationProcess 
     {
         try
         {
-            Map<String, PDAbstractPattern> patternResources = resources.getPatterns();
-            if (patternResources != null)
+            for (COSName name : resources.getPatternNames())
             {
-                for (Entry<String, PDAbstractPattern> entry : patternResources.entrySet())
+                PDAbstractPattern pattern = resources.getPattern(name);
+                if (pattern instanceof PDTilingPattern)
                 {
-                    if (entry.getValue() instanceof PDTilingPattern)
-                    {
-                        ContextHelper.validateElement(context, entry.getValue(), TILING_PATTERN_PROCESS);
-                    }
+                    ContextHelper.validateElement(context, pattern, TILING_PATTERN_PROCESS);
                 }
             }
         }
@@ -284,7 +270,7 @@ public class ResourcesValidationProcess 
     protected void validateXObjects(PreflightContext context, PDResources resources) throws ValidationException
     {
         COSDocument cosDocument = context.getDocument().getDocument();
-        COSDictionary mapOfXObj = COSUtils.getAsDictionary(resources.getCOSDictionary().getItem(COSName.XOBJECT),
+        COSDictionary mapOfXObj = COSUtils.getAsDictionary(resources.getCOSObject().getItem(COSName.XOBJECT),
                 cosDocument);
         if (mapOfXObj != null)
         {

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java Tue Oct 21 00:13:37 2014
@@ -34,7 +34,6 @@ import static org.apache.pdfbox.prefligh
 
 import java.io.IOException;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
@@ -114,17 +113,22 @@ public class SinglePageValidationProcess
         PDResources resources = page.getResources();
         if (resources != null)
         {
-            Map<String, PDColorSpace> colorSpaces = resources.getColorSpaces();
-            if (colorSpaces != null)
+            PreflightConfiguration config = context.getConfig();
+            ColorSpaceHelperFactory colorSpaceFactory = config.getColorSpaceHelperFact();
+            for (COSName name : resources.getColorSpaceNames())
             {
-                PreflightConfiguration config = context.getConfig();
-                ColorSpaceHelperFactory colorSpaceFactory = config.getColorSpaceHelperFact();
-                for (PDColorSpace pdCS : colorSpaces.values())
+                try
                 {
+                    PDColorSpace pdCS = resources.getColorSpace(name);
                     ColorSpaceHelper csHelper = colorSpaceFactory.getColorSpaceHelper(context, pdCS,
                             ColorSpaceRestriction.NO_RESTRICTION);
                     csHelper.validate();
                 }
+                catch (IOException e)
+                {
+                    // fixme: this code was previously in PDResources
+                    // LOG.error("error while creating a colorspace", exception);
+                }
             }
         }
     }

Modified: pdfbox/trunk/tools/src/test/java/org/apache/pdfbox/tools/imageio/TestImageIOUtils.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/test/java/org/apache/pdfbox/tools/imageio/TestImageIOUtils.java?rev=1633258&r1=1633257&r2=1633258&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/test/java/org/apache/pdfbox/tools/imageio/TestImageIOUtils.java (original)
+++ pdfbox/trunk/tools/src/test/java/org/apache/pdfbox/tools/imageio/TestImageIOUtils.java Tue Oct 21 00:13:37 2014
@@ -28,7 +28,6 @@ import java.io.IOException;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReader;
@@ -39,6 +38,7 @@ import junit.framework.TestCase;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDResources;
@@ -70,31 +70,27 @@ public class TestImageIOUtils extends Te
         {
             return;
         }
-        Map<String, PDXObject> xobjects = resources.getXObjects();
-        if (xobjects != null)
+        for (COSName name : resources.getXObjectNames())
         {
-            for (String key : xobjects.keySet())
+            PDXObject xobject = resources.getXObject(name);
+            if (xobject instanceof PDImageXObject)
             {
-                PDXObject xobject = xobjects.get(key);
-                if (xobject instanceof PDImageXObject)
+                PDImageXObject imageObject = (PDImageXObject) xobject;
+                String suffix = imageObject.getSuffix();
+                if (suffix != null)
                 {
-                    PDImageXObject imageObject = (PDImageXObject) xobject;
-                    String suffix = imageObject.getSuffix();
-                    if (suffix != null)
+                    if ("jpx".equals(suffix))
                     {
-                        if ("jpx".equals(suffix))
-                        {
-                            suffix = "JPEG2000";
-                        }
-                        boolean writeOK = ImageIOUtil.writeImage(imageObject.getImage(), suffix,
-                                new ByteArrayOutputStream());
-                        assertTrue(writeOK);
+                        suffix = "JPEG2000";
                     }
+                    boolean writeOK = ImageIOUtil.writeImage(imageObject.getImage(), suffix,
+                            new ByteArrayOutputStream());
+                    assertTrue(writeOK);
                 }
-                else if (xobject instanceof PDFormXObject)
-                {
-                    checkSaveResources(((PDFormXObject) xobject).getResources());
-                }
+            }
+            else if (xobject instanceof PDFormXObject)
+            {
+                checkSaveResources(((PDFormXObject) xobject).getResources());
             }
         }
     }