You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2019/06/10 17:00:12 UTC

svn commit: r1860965 [1/2] - in /pdfbox/trunk/preflight/src: main/java/org/apache/pdfbox/preflight/ main/java/org/apache/pdfbox/preflight/action/ main/java/org/apache/pdfbox/preflight/annotation/ main/java/org/apache/pdfbox/preflight/content/ main/java...

Author: lehmi
Date: Mon Jun 10 17:00:11 2019
New Revision: 1860965

URL: http://svn.apache.org/viewvc?rev=1860965&view=rev
Log:
PDFBOX-4566: remove utility class org.apache.pdfbox.preflight.utils.COSUtils

Removed:
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/utils/COSUtils.java
    pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/
Modified:
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/DestinationValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ExtGStateValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShadingPatternValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjImageValidator.java

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java Mon Jun 10 17:00:11 2019
@@ -46,36 +46,14 @@ public interface PreflightConstants
     float MAX_POSITIVE_FLOAT = 32767f;
     float MAX_NEGATIVE_FLOAT = -32767f;
 
-    String TRAILER_DICTIONARY_KEY_ID = "ID";
-    String TRAILER_DICTIONARY_KEY_SIZE = "Size";
-    String TRAILER_DICTIONARY_KEY_PREV = "Prev";
-    String TRAILER_DICTIONARY_KEY_ROOT = "Root";
-    String TRAILER_DICTIONARY_KEY_INFO = "Info";
-    String TRAILER_DICTIONARY_KEY_ENCRYPT = "Encrypt";
-
-    String DICTIONARY_KEY_ADDITIONAL_ACTION = "AA";
-    String DICTIONARY_KEY_OPEN_ACTION = "OpenAction";
-
-    String DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS = "OutputIntents";
-    String DOCUMENT_DICTIONARY_KEY_OPTIONAL_CONTENTS = "OCProperties";
-
     String OUTPUT_INTENT_DICTIONARY_KEY_S = "S";
     String OUTPUT_INTENT_DICTIONARY_KEY_INFO = "Info";
     String OUTPUT_INTENT_DICTIONARY_VALUE_GTS_PDFA1 = "GTS_PDFA1";
-    String OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE = "DestOutputProfile";
     String OUTPUT_INTENT_DICTIONARY_KEY_OUTPUT_CONDITION_IDENTIFIER = "OutputConditionIdentifier";
     String OUTPUT_INTENT_DICTIONARY_VALUE_OUTPUT_CONDITION_IDENTIFIER_CUSTOM = "Custom";
 
-    String TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE = "ExtGState";
     String TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE_ENTRY_REGEX = "(GS|gs)([0-9])+";
 
-    String TRANSPARENCY_DICTIONARY_KEY_BLEND_MODE = "BM";
-    String TRANSPARENCY_DICTIONARY_KEY_UPPER_CA = "CA";
-    String TRANSPARENCY_DICTIONARY_KEY_LOWER_CA = "ca";
-    String TRANSPARENCY_DICTIONARY_VALUE_SOFT_MASK_NONE = "None";
-    String TRANSPARENCY_DICTIONARY_VALUE_BM_NORMAL = "Normal";
-    String TRANSPARENCY_DICTIONARY_VALUE_BM_COMPATIBLE = "Compatible";
-
     String DICTIONARY_KEY_LINEARIZED = "Linearized";
     String DICTIONARY_KEY_LINEARIZED_L = "L";
     String DICTIONARY_KEY_LINEARIZED_H = "H";
@@ -84,21 +62,10 @@ public interface PreflightConstants
     String DICTIONARY_KEY_LINEARIZED_N = "N";
     String DICTIONARY_KEY_LINEARIZED_T = "T";
 
-    String DICTIONARY_KEY_XOBJECT = "XObject";
-    String DICTIONARY_KEY_PATTERN = "Pattern";
-
     String DICTIONARY_KEY_PATTERN_TYPE = "PatternType";
     int DICTIONARY_PATTERN_TILING = 1;
     int DICTIONARY_PATTERN_SHADING = 2;
 
-    String PATTERN_KEY_PAINT_TYPE = "PaintType";
-    String PATTERN_KEY_TILING_TYPE = "TilingType";
-    String PATTERN_KEY_BBOX = "BBox";
-    String PATTERN_KEY_XSTEP = "XStep";
-    String PATTERN_KEY_YSTEP = "YStep";
-    String PATTERN_KEY_SHADING = "Shading";
-    String PATTERN_KEY_SHADING_TYPE = "ShadingType";
-
     String XOBJECT_DICTIONARY_VALUE_SUBTYPE_IMG = "Image";
     String XOBJECT_DICTIONARY_VALUE_SUBTYPE_FORM = "Form";
     String XOBJECT_DICTIONARY_VALUE_SUBTYPE_POSTSCRIPT = "PS";
@@ -123,11 +90,8 @@ public interface PreflightConstants
     String FONT_DICTIONARY_VALUE_ENCODING_STD = "StandardEncoding";
     String FONT_DICTIONARY_VALUE_ENCODING_PDFDOC = "PDFDocEncoding";
 
-    String FONT_DICTIONARY_VALUE_ENCODING = "Encoding";
     String FONT_DICTIONARY_VALUE_CMAP_IDENTITY_H = "Identity-H";
     String FONT_DICTIONARY_VALUE_CMAP_IDENTITY_V = "Identity-V";
-    String FONT_DICTIONARY_VALUE_CMAP_IDENTITY = "Identity";
-    String FONT_DICTIONARY_VALUE_TYPE_CMAP = "CMap";
 
     String FONT_DICTIONARY_KEY_NAME = "Name";
     String FONT_DICTIONARY_KEY_BASEFONT = "BaseFont";

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java Mon Jun 10 17:00:11 2019
@@ -29,12 +29,12 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.pdfparser.XrefTrailerResolver;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.FontContainer;
 import org.apache.pdfbox.preflight.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.DataSource;
 import org.apache.xmpbox.XMPMetadata;
 
@@ -216,7 +216,7 @@ public class PreflightContext implements
     @Override
     public void close()
     {
-        COSUtils.closeDocumentQuietly(document);
+        IOUtils.closeQuietly(document);
     }
 
     /**

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java Mon Jun 10 17:00:11 2019
@@ -28,7 +28,6 @@ import java.util.Map;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSObjectKey;
@@ -36,10 +35,8 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 
-import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_KEY_NEXT;
 import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_GOTO;
 import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_GOTOR;
 import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_HIDE;
@@ -56,8 +53,6 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_THREAD;
 import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_URI;
 import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_TYPE;
-import static org.apache.pdfbox.preflight.PreflightConstants.DICTIONARY_KEY_ADDITIONAL_ACTION;
-import static org.apache.pdfbox.preflight.PreflightConstants.DICTIONARY_KEY_OPEN_ACTION;
 
 public class ActionManagerFactory
 {
@@ -88,25 +83,20 @@ public class ActionManagerFactory
             callCreateAction(aDict, ctx, result, alreadyCreated);
         }
 
-        COSDocument cosDocument = ctx.getDocument().getDocument();
-        COSBase oaDict = dictionary.getDictionaryObject(DICTIONARY_KEY_OPEN_ACTION);
-        if (oaDict != null && !COSUtils.isArray(oaDict, cosDocument))
+        COSBase oaDict = dictionary.getDictionaryObject(COSName.OPEN_ACTION);
+        if (oaDict != null && !(oaDict instanceof COSArray))
         {
             callCreateAction(oaDict, ctx, result, alreadyCreated);
         }
         // else nothing to do because an array contains a Destination and not an Action.
 
-        COSBase aa = dictionary.getDictionaryObject(DICTIONARY_KEY_ADDITIONAL_ACTION);
-        if (aa != null)
+        COSDictionary aaDict = dictionary.getCOSDictionary(COSName.AA);
+        if (aaDict != null)
         {
-            COSDictionary aaDict = COSUtils.getAsDictionary(aa, cosDocument);
-            if (aaDict != null)
+            for (COSName name : aaDict.keySet())
             {
-                for (Object key : aaDict.keySet())
-                {
-                    COSName name = (COSName) key;
-                    callCreateAction(aaDict.getItem(name), ctx, result, name.getName(), alreadyCreated);
-                }
+                callCreateAction(aaDict.getDictionaryObject(name), ctx, result, name.getName(),
+                        alreadyCreated);
             }
         }
         return result;
@@ -155,21 +145,23 @@ public class ActionManagerFactory
     private void callCreateAction(COSBase aDict, PreflightContext ctx, List<AbstractActionManager> result,
             String additionActionKey, Map<COSObjectKey, Boolean> alreadyCreated) throws ValidationException
     {
-        COSDocument cosDocument = ctx.getDocument().getDocument();
-        if (COSUtils.isDictionary(aDict, cosDocument))
+        if (aDict instanceof COSDictionary || aDict instanceof COSObject
+                && ((COSObject) aDict).getObject() instanceof COSDictionary)
         {
             if (aDict instanceof COSObject)
             {
                 COSObjectKey cok = new COSObjectKey((COSObject) aDict);
+                COSDictionary indirectDict = (COSDictionary) ((COSObject) aDict).getObject();
                 if (!alreadyCreated.containsKey(cok))
                 {
-                    result.add(createActionManager(ctx, COSUtils.getAsDictionary(aDict, cosDocument), additionActionKey));
+                    result.add(createActionManager(ctx, indirectDict, additionActionKey));
                     alreadyCreated.put(cok, true);
                 }
             }
             else
             {
-                result.add(createActionManager(ctx, COSUtils.getAsDictionary(aDict, cosDocument), additionActionKey));
+                result.add(createActionManager(ctx, (COSDictionary) aDict,
+                        additionActionKey));
             }
         }
         else
@@ -193,17 +185,16 @@ public class ActionManagerFactory
         List<AbstractActionManager> result = new ArrayList<>(0);
         Map<COSObjectKey, Boolean> alreadyCreated = new HashMap<>();
 
-        COSBase nextDict = actionDictionary.getDictionaryObject(ACTION_DICTIONARY_KEY_NEXT);
+        COSBase nextDict = actionDictionary.getDictionaryObject(COSName.NEXT);
         if (nextDict != null)
         {
-            COSDocument cosDocument = ctx.getDocument().getDocument();
-            if (COSUtils.isArray(nextDict, cosDocument))
+            if (nextDict instanceof COSArray)
             {
-                COSArray array = COSUtils.getAsArray(nextDict, cosDocument);
+                COSArray array = (COSArray) nextDict;
                 // ---- Next may contains an array of Action dictionary
                 for (int i = 0; i < array.size(); ++i)
                 {
-                    callCreateAction(array.get(i), ctx, result, alreadyCreated);
+                    callCreateAction(array.getObject(i), ctx, result, alreadyCreated);
                 }
             }
             else

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java Mon Jun 10 17:00:11 2019
@@ -25,9 +25,9 @@ import java.io.IOException;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
+import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination;
 import org.apache.pdfbox.preflight.PreflightConstants;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ACTION_INVALID_TYPE;
@@ -37,7 +37,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 /**
  * ActionManager for the GoToRemote action. GoToRemoteAction is valid if the F entry is present.
@@ -75,8 +74,7 @@ public class GoToRemoteAction extends Go
             return false;
         }
 
-        COSDocument cosDocument = this.context.getDocument().getDocument();
-        if (!(dest instanceof COSName || COSUtils.isString(dest, cosDocument) || COSUtils.isArray(dest, cosDocument)))
+        if (!(dest instanceof COSName || dest instanceof COSString || dest instanceof COSArray))
         {
             context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE, 
                     "Type " + dest.getClass().getSimpleName() + " of /D entry is invalid"));

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java Mon Jun 10 17:00:11 2019
@@ -25,13 +25,13 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ACTION_INVALID_TYPE;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ACTION_MISING_KEY;
 
+import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 /**
  * ActionManager for the Hide action. The Hide action isn't specifically prohibited by PDF/A-1, but should have been. So
@@ -63,7 +63,7 @@ public class HideAction extends Abstract
     @Override
     protected boolean innerValid()
     {
-        COSBase t = this.actionDictionnary.getItem(COSName.T);
+        COSBase t = this.actionDictionnary.getDictionaryObject(COSName.T);
         // ---- T entry is mandatory
         if (t == null)
         {
@@ -72,9 +72,8 @@ public class HideAction extends Abstract
             return false;
         }
 
-        COSDocument cosDocument = this.context.getDocument().getDocument();
-        if (!(COSUtils.isDictionary(t, cosDocument) || COSUtils.isArray(t, cosDocument) || COSUtils.isString(t,
-                cosDocument)))
+        if (!(t instanceof COSDictionary || t instanceof COSArray || t instanceof COSString
+                || t instanceof COSName))
         {
             context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE, "T entry type is invalid"));
             return false;

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java Mon Jun 10 17:00:11 2019
@@ -26,11 +26,11 @@ import static org.apache.pdfbox.prefligh
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 /**
  * ActionManager for the Thread action ThreadAction is valid if the D entry is present.
@@ -57,7 +57,7 @@ public class ThreadAction extends Abstra
     @Override
     protected boolean innerValid()
     {
-        COSBase d = this.actionDictionnary.getItem(COSName.D);
+        COSBase d = this.actionDictionnary.getDictionaryObject(COSName.D);
 
         // ---- D entry is mandatory
         if (d == null)
@@ -67,9 +67,8 @@ public class ThreadAction extends Abstra
             return false;
         }
 
-        COSDocument cosDocument = this.context.getDocument().getDocument();
-        if (!(COSUtils.isInteger(d, cosDocument) || COSUtils.isString(d, cosDocument) || COSUtils.isDictionary(d,
-                cosDocument)))
+        if (!(d instanceof COSInteger || d instanceof COSName || d instanceof COSString
+                || d instanceof COSDictionary))
         {
             context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE, "D entry type is invalid"));
             return false;

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java Mon Jun 10 17:00:11 2019
@@ -26,11 +26,10 @@ import static org.apache.pdfbox.prefligh
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 /**
  * ActionManager for the URI action URI action is valid if the URI entry is present as a String.
@@ -57,7 +56,7 @@ public class UriAction extends AbstractA
     @Override
     protected boolean innerValid()
     {
-        COSBase uri = this.actionDictionnary.getItem(COSName.URI);
+        COSBase uri = this.actionDictionnary.getDictionaryObject(COSName.URI);
         if (uri == null)
         {
             context.addValidationError(new ValidationError(ERROR_ACTION_MISING_KEY,
@@ -65,8 +64,7 @@ public class UriAction extends AbstractA
             return false;
         }
 
-        COSDocument cosDocument = this.context.getDocument().getDocument();
-        if (!COSUtils.isString(uri, cosDocument))
+        if (!(uri instanceof COSString))
         {
             context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE, "URI entry should be a string"));
             return false;

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java Mon Jun 10 17:00:11 2019
@@ -23,8 +23,10 @@ package org.apache.pdfbox.preflight.anno
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSFloat;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSObject;
+import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
@@ -32,7 +34,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 
@@ -53,7 +54,6 @@ public abstract class AnnotationValidato
     private AnnotationValidatorFactory annotFact = null;
 
     protected PreflightContext ctx = null;
-    private COSDocument cosDocument = null;
     /**
      * COSDictionary of the annotation
      */
@@ -67,7 +67,6 @@ public abstract class AnnotationValidato
     {
         this.ctx = context;
         this.annotDictionary = annotDictionary;
-        this.cosDocument = this.ctx.getDocument().getDocument();
     }
 
     /**
@@ -106,10 +105,10 @@ public abstract class AnnotationValidato
      */
     protected boolean checkCA()
     {
-        COSBase ca = this.pdAnnot.getCOSObject().getItem(COSName.CA);
-        if (ca != null)
+        COSBase ca = this.pdAnnot.getCOSObject().getDictionaryObject(COSName.CA);
+        if (ca instanceof COSFloat)
         {
-            float caf = COSUtils.getAsFloat(ca, cosDocument);
+            float caf = ((COSFloat) ca).floatValue();
             if (Float.compare(caf, 1.0f) != 0)
             { // ---- Only 1.0 is authorized as value
                 ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_CA,
@@ -187,53 +186,59 @@ public abstract class AnnotationValidato
             }
             else
             {
-                COSBase apn = apDict.getItem(COSName.N);
-                COSBase subtype = annotDictionary.getItem(COSName.SUBTYPE);
+                COSBase apn = apDict.getDictionaryObject(COSName.N);
+                COSName subtype = annotDictionary.getCOSName(COSName.SUBTYPE);
                 COSBase ft = getFieldType();
                 if (COSName.WIDGET.equals(subtype) && COSName.BTN.equals(ft))
                 {
                     // TECHNICAL CORRIGENDUM 2 for ISO 19005-1:2005 (PDF/A-1) 
                     // added a clause for Widget Annotations:
                     // the value of the N key shall be an appearance subdictionary
-                    if (COSUtils.isStream(apn, cosDocument))
+                    if (apn instanceof COSStream)
                     {
                         ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_AP_CONTENT,
                                 "The N Appearance of a Btn widget must not be a stream, but an appearance subdictionary"));
                         // But validate it anyway, for isartor-6-3-4-t01-fail-f.pdf
                         // Appearance stream is a XObjectForm, check it.
-                        ContextHelper.validateElement(ctx, new PDFormXObject(
-                                COSUtils.getAsStream(apn, cosDocument)),
+                        ContextHelper.validateElement(ctx, new PDFormXObject((COSStream) apn),
                                 GRAPHIC_PROCESS);
                         return false;
                     }
-                    if (!COSUtils.isDictionary(apn, cosDocument))
+                    if (apn instanceof COSDictionary)
+                    {
+                        for (COSBase val : ((COSDictionary) apn).getValues())
+                        {
+                            // Appearance stream is a XObjectForm, check it.
+                            if (val instanceof COSObject)
+                            {
+                                val = ((COSObject) val).getObject();
+                            }
+                            ContextHelper.validateElement(ctx,
+                                    new PDFormXObject((COSStream) val), GRAPHIC_PROCESS);
+                        }
+                    }
+                    else
                     {
                         ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_AP_CONTENT,
                                 "The N Appearance must be an appearance subdictionary"));
                         return false;
                     }
-                    COSDictionary apnDict = COSUtils.getAsDictionary(apn, cosDocument);
-                    for (COSBase val : apnDict.getValues())
-                    {
-                        // Appearance stream is a XObjectForm, check it.
-                        ContextHelper.validateElement(ctx, new PDFormXObject(
-                                COSUtils.getAsStream(val, cosDocument)),
-                                GRAPHIC_PROCESS);
-                    }
                 }
                 else
                 {
                     // the N entry must be a stream (Dictionaries are forbidden)
-                    if (!COSUtils.isStream(apn, cosDocument))
+                    if (apn instanceof COSStream)
+                    {
+                        // Appearance stream is a XObjectForm, check it.
+                        ContextHelper.validateElement(ctx,
+                                new PDFormXObject((COSStream) apn), GRAPHIC_PROCESS);
+                    }
+                    else
                     {
                         ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_AP_CONTENT,
                                 "The N Appearance must be a Stream"));
                         return false;
                     }
-                    // Appearance stream is a XObjectForm, check it.
-                    ContextHelper.validateElement(ctx, new PDFormXObject(
-                            COSUtils.getAsStream(apn, cosDocument)),
-                            GRAPHIC_PROCESS);
                 }
             }
         }
@@ -264,17 +269,18 @@ public abstract class AnnotationValidato
      */
     protected boolean checkPopup() throws ValidationException
     {
-        COSBase cosPopup = this.annotDictionary.getItem(ANNOT_DICTIONARY_VALUE_SUBTYPE_POPUP);
+        COSBase cosPopup = this.annotDictionary
+                .getDictionaryObject(COSName.getPDFName(ANNOT_DICTIONARY_VALUE_SUBTYPE_POPUP));
         if (cosPopup != null)
         {
-            COSDictionary popupDict = COSUtils.getAsDictionary(cosPopup, cosDocument);
-            if (popupDict == null)
+            if (!(cosPopup instanceof COSDictionary))
             {
                 ctx.addValidationError(new ValidationError(ERROR_SYNTAX_DICT_INVALID,
                         "An Annotation has a Popup entry, but the value is missing or isn't a dictionary"));
                 return false;
             }
-            AnnotationValidator popupVal = this.annotFact.getAnnotationValidator(ctx, popupDict);
+            AnnotationValidator popupVal = this.annotFact.getAnnotationValidator(ctx,
+                    (COSDictionary) cosPopup);
             return popupVal.validate();
         }
         return true;

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=1860965&r1=1860964&r2=1860965&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 Mon Jun 10 17:00:11 2019
@@ -34,7 +34,6 @@ import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.pdmodel.PDPage;
@@ -51,7 +50,6 @@ import org.apache.pdfbox.preflight.graph
 import org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory.ColorSpaceRestriction;
 import org.apache.pdfbox.preflight.graphic.ColorSpaces;
 import org.apache.pdfbox.preflight.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.FilterHelper;
 import org.apache.pdfbox.preflight.utils.RenderingIntents;
 import org.apache.pdfbox.contentstream.operator.DrawObject;
@@ -107,13 +105,11 @@ public abstract class PreflightStreamEng
     }
 
     protected PreflightContext context = null;
-    protected COSDocument cosDocument = null;
     protected PDPage processedPage = null;
 
     public PreflightStreamEngine(PreflightContext context, PDPage page)
     {
         this.context = context;
-        this.cosDocument = context.getDocument().getDocument();
         this.processedPage = page;
 
         // Graphics operators
@@ -273,9 +269,8 @@ public abstract class PreflightStreamEng
         /*
          * Search a Filter declaration in the InlinedImage dictionary. The LZWDecode Filter is forbidden.
          */
-        COSBase filter = dict.getDictionaryObject(COSName.F, COSName.FILTER);
-        FilterHelper
-                .isAuthorizedFilter(context, COSUtils.getAsString(filter, this.context.getDocument().getDocument()));
+        COSName filter = dict.getCOSName(COSName.F, COSName.FILTER);
+        FilterHelper.isAuthorizedFilter(context, filter != null ? filter.getName() : null);
     }
 
     /**
@@ -293,11 +288,11 @@ public abstract class PreflightStreamEng
         ColorSpaceHelper csHelper = null;
         if (csInlinedBase != null)
         {
-            if (COSUtils.isString(csInlinedBase, cosDocument))
+            if (csInlinedBase instanceof COSName)
             {
                 // In InlinedImage only DeviceGray/RGB/CMYK and restricted Indexed
                 // color spaces are allowed.
-                String colorSpace = COSUtils.getAsString(csInlinedBase, cosDocument);
+                String colorSpace = ((COSName) csInlinedBase).getName();
                 ColorSpaces cs = null;
 
                 try

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java Mon Jun 10 17:00:11 2019
@@ -24,29 +24,25 @@ package org.apache.pdfbox.preflight.font
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_CIDTOGID;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_SYSINFO;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DICTIONARY_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_CMAP_IDENTITY;
 
 import java.io.IOException;
 import java.io.InputStream;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.font.PDCIDFont;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.FontContainer;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 public abstract class DescendantFontValidator<T extends FontContainer> extends SimpleFontValidator<T>
 {
-    protected COSDocument cosDocument = null;
 
     public DescendantFontValidator(PreflightContext context, PDCIDFont font, T fContainer)
     {
         super(context, font, font.getCOSObject(), fContainer);
-        cosDocument = context.getDocument().getDocument();
     }
 
     @Override
@@ -64,8 +60,8 @@ public abstract class DescendantFontVali
                     font.getName() + ": Required keys are missing"));
         }
 
-        checkCIDSystemInfo(fontDictionary.getItem(COSName.CIDSYSTEMINFO));
-        checkCIDToGIDMap(fontDictionary.getItem(COSName.CID_TO_GID_MAP));
+        checkCIDSystemInfo(fontDictionary.getCOSDictionary(COSName.CIDSYSTEMINFO));
+        checkCIDToGIDMap(fontDictionary.getDictionaryObject(COSName.CID_TO_GID_MAP));
     }
 
     /**
@@ -78,17 +74,15 @@ public abstract class DescendantFontVali
      * 
      * @param sysinfo
      */
-    protected void checkCIDSystemInfo(COSBase sysinfo)
+    protected void checkCIDSystemInfo(COSDictionary sysinfo)
     {
-        COSDictionary cidSysInfo = COSUtils.getAsDictionary(sysinfo, cosDocument);
-        if (cidSysInfo != null)
+        if (sysinfo != null)
         {
-            COSBase reg = cidSysInfo.getItem(COSName.REGISTRY);
-            COSBase ord = cidSysInfo.getItem(COSName.ORDERING);
-            COSBase sup = cidSysInfo.getItem(COSName.SUPPLEMENT);
+            String reg = sysinfo.getString(COSName.REGISTRY);
+            String ord = sysinfo.getString(COSName.ORDERING);
+            COSBase sup = sysinfo.getDictionaryObject(COSName.SUPPLEMENT);
 
-            if (!(COSUtils.isString(reg, cosDocument) && COSUtils.isString(ord, cosDocument) && COSUtils.isInteger(sup,
-                    cosDocument)))
+            if (!(reg != null && ord != null && sup instanceof COSInteger))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_SYSINFO));
             }
@@ -124,24 +118,21 @@ public abstract class DescendantFontVali
      */
     protected void checkCIDToGIDMap(COSBase ctog, boolean mandatory)
     {
-        if (COSUtils.isString(ctog, cosDocument))
+        if (ctog instanceof COSName)
         {
             // ---- valid only if the string is Identity
-            String ctogStr = COSUtils.getAsString(ctog, cosDocument);
-            if (!FONT_DICTIONARY_VALUE_CMAP_IDENTITY.equals(ctogStr))
+            if (!COSName.IDENTITY.equals(ctog))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_CIDTOGID,
                         font.getName() + ": The CIDToGID entry is invalid"));
             }
         }
-        else if (COSUtils.isStream(ctog, cosDocument))
+        else if (ctog instanceof COSStream)
         {
             try
             {
-                COSStream stream = COSUtils.getAsStream(ctog, cosDocument);
-
                 // todo: check the map's content? (won't pdfbox do this?)
-                InputStream is = stream.createInputStream();
+                InputStream is = ((COSStream) ctog).createInputStream();
                 is.close();
             }
             catch (IOException e)

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java Mon Jun 10 17:00:11 2019
@@ -28,14 +28,10 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_CMAP_DAMAGED;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DICTIONARY_INVALID;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_DEFAULT_CMAP_WMODE;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CMAP_NAME;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CMAP_USECMAP;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CMAP_WMODE;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_CMAP_IDENTITY_H;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_CMAP_IDENTITY_V;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE0;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE2;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE_CMAP;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -44,9 +40,10 @@ import org.apache.fontbox.cmap.CMapParse
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
+import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.pdmodel.font.PDCIDFont;
 import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
 import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
@@ -57,17 +54,14 @@ import org.apache.pdfbox.preflight.Valid
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.font.container.FontContainer;
 import org.apache.pdfbox.preflight.font.container.Type0Container;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 public class Type0FontValidator extends FontValidator<Type0Container>
 {
     protected PDFont font;
-    protected COSDocument cosDocument = null;
 
     public Type0FontValidator(PreflightContext context, PDFont font)
     {
         super(context, font.getCOSObject(), new Type0Container(font));
-        cosDocument = this.context.getDocument().getDocument();
         this.font = font;
     }
 
@@ -113,7 +107,7 @@ public class Type0FontValidator extends
     {
         COSDictionary fontDictionary = font.getCOSObject();
         // a CIDFont is contained in the DescendantFonts array
-        COSArray array = COSUtils.getAsArray(fontDictionary.getItem(COSName.DESCENDANT_FONTS), cosDocument);
+        COSArray array = fontDictionary.getCOSArray(COSName.DESCENDANT_FONTS);
         if (array == null || array.size() != 1)
         {
             /*
@@ -125,7 +119,7 @@ public class Type0FontValidator extends
             return;
         }
 
-        COSDictionary cidFont = COSUtils.getAsDictionary(array.get(0), cosDocument);
+        COSDictionary cidFont = (COSDictionary) array.getObject(0);
         if (cidFont == null)
         {
             this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_INVALID,
@@ -143,13 +137,13 @@ public class Type0FontValidator extends
 
     protected FontValidator<? extends FontContainer<? extends PDCIDFont>> createDescendantValidator(COSDictionary cidFont)
     {
-        String subtype = cidFont.getNameAsString(COSName.SUBTYPE);
+        COSName subtype = cidFont.getCOSName(COSName.SUBTYPE);
         FontValidator<? extends FontContainer<? extends PDCIDFont>> cidFontValidator = null;
-        if (FONT_DICTIONARY_VALUE_TYPE0.equals(subtype))
+        if (COSName.CID_FONT_TYPE0.equals(subtype))
         {
             cidFontValidator = createCIDType0FontValidator(cidFont);
         }
-        else if (FONT_DICTIONARY_VALUE_TYPE2.equals(subtype))
+        else if (COSName.CID_FONT_TYPE2.equals(subtype))
         {
             cidFontValidator = createCIDType2FontValidator(cidFont);
         }
@@ -207,31 +201,31 @@ public class Type0FontValidator extends
     @Override
     protected void checkEncoding()
     {
-        COSBase encoding = (font.getCOSObject()).getItem(COSName.ENCODING);
+        COSBase encoding = (font.getCOSObject()).getDictionaryObject(COSName.ENCODING);
         checkCMapEncoding(encoding);
     }
 
     protected void checkCMapEncoding(COSBase encoding)
     {
-        if (COSUtils.isString(encoding, cosDocument))
+        if (encoding instanceof COSName || encoding instanceof COSString)
         {
             // if encoding is a string, only 2 values are allowed
-            String str = COSUtils.getAsString(encoding, cosDocument);
+            String str = encoding instanceof COSName ? ((COSName) encoding).getName()
+                    : ((COSString) encoding).getString();
             if (!(FONT_DICTIONARY_VALUE_CMAP_IDENTITY_V.equals(str) || FONT_DICTIONARY_VALUE_CMAP_IDENTITY_H
                     .equals(str)))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_INVALID,
                         font.getName() + ": The CMap is a string but it isn't an Identity-H/V"));
-                return;
             }
         }
-        else if (COSUtils.isStream(encoding, cosDocument))
+        else if (encoding instanceof COSStream)
         {
             /*
              * If the CMap is a stream, some fields are mandatory and the CIDSytemInfo must be compared with the
              * CIDSystemInfo entry of the CIDFont.
              */
-            processCMapAsStream(COSUtils.getAsStream(encoding, cosDocument));
+            processCMapAsStream((COSStream) encoding);
         }
         else
         {
@@ -252,8 +246,7 @@ public class Type0FontValidator extends
      */
     private void processCMapAsStream(COSStream aCMap)
     {
-        COSBase sysinfo = aCMap.getItem(COSName.CIDSYSTEMINFO);
-        checkCIDSystemInfo(sysinfo);
+        checkCIDSystemInfo(aCMap.getCOSDictionary(COSName.CIDSYSTEMINFO));
 
         try (InputStream cmapStream = aCMap.createInputStream())
         {
@@ -268,8 +261,8 @@ public class Type0FontValidator extends
              */
             int wmode = aCMap.getInt(COSName.getPDFName(FONT_DICTIONARY_KEY_CMAP_WMODE),
                     FONT_DICTIONARY_DEFAULT_CMAP_WMODE);
-            String type = aCMap.getNameAsString(COSName.TYPE);
-            String cmapName = aCMap.getNameAsString(COSName.getPDFName(FONT_DICTIONARY_KEY_CMAP_NAME));
+            COSName type = aCMap.getCOSName(COSName.TYPE);
+            String cmapName = aCMap.getNameAsString(COSName.CMAPNAME);
 
             if (cmapName == null || "".equals(cmapName) || wmode > 1)
             {
@@ -281,7 +274,7 @@ public class Type0FontValidator extends
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_CMAP_INVALID_OR_MISSING,
                         font.getName() + ": CMapName or WMode is inconsistent"));
             }
-            else if (!FONT_DICTIONARY_VALUE_TYPE_CMAP.equals(type))
+            else if (!COSName.CMAP.equals(type))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_CMAP_INVALID_OR_MISSING,
                         font.getName() + ": The CMap type is invalid"));
@@ -309,22 +302,19 @@ public class Type0FontValidator extends
      * <li>a Integer - Supplement
      * </UL>
      * 
-     * @param sysinfo
+     * @param cidSysInfo
      * @return the validation result.
      */
-    protected boolean checkCIDSystemInfo(COSBase sysinfo)
+    protected boolean checkCIDSystemInfo(COSDictionary cidSysInfo)
     {
         boolean result = true;
-        COSDictionary cidSysInfo = COSUtils.getAsDictionary(sysinfo, cosDocument);
-
         if (cidSysInfo != null)
         {
-            COSBase reg = cidSysInfo.getItem(COSName.REGISTRY);
-            COSBase ord = cidSysInfo.getItem(COSName.ORDERING);
-            COSBase sup = cidSysInfo.getItem(COSName.SUPPLEMENT);
+            String reg = cidSysInfo.getString(COSName.REGISTRY);
+            String ord = cidSysInfo.getString(COSName.ORDERING);
+            COSBase sup = cidSysInfo.getDictionaryObject(COSName.SUPPLEMENT);
 
-            if (!(COSUtils.isString(reg, cosDocument) && COSUtils.isString(ord, cosDocument) && COSUtils.isInteger(sup,
-                    cosDocument)))
+            if (!(reg != null && ord != null && sup instanceof COSInteger))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_SYSINFO));
                 result = false;
@@ -348,18 +338,18 @@ public class Type0FontValidator extends
     private void compareCIDSystemInfo(COSDictionary cmap)
     {
         COSDictionary fontDictionary = font.getCOSObject();
-        COSArray array = COSUtils.getAsArray(fontDictionary.getItem(COSName.DESCENDANT_FONTS), cosDocument);
+        COSArray array = fontDictionary.getCOSArray(COSName.DESCENDANT_FONTS);
 
         if (array != null && array.size() > 0)
         {
-            COSDictionary cidFont = COSUtils.getAsDictionary(array.get(0), cosDocument);
-            COSDictionary cmsi = COSUtils.getAsDictionary(cmap.getItem(COSName.CIDSYSTEMINFO), cosDocument);
-            COSDictionary cfsi = COSUtils.getAsDictionary(cidFont.getItem(COSName.CIDSYSTEMINFO), cosDocument);
-
-            String regCM = COSUtils.getAsString(cmsi.getItem(COSName.REGISTRY), cosDocument);
-            String ordCM = COSUtils.getAsString(cmsi.getItem(COSName.ORDERING), cosDocument);
-            String regCF = COSUtils.getAsString(cfsi.getItem(COSName.REGISTRY), cosDocument);
-            String ordCF = COSUtils.getAsString(cfsi.getItem(COSName.ORDERING), cosDocument);
+            COSDictionary cidFont = (COSDictionary) array.getObject(0);
+            COSDictionary cmsi = cmap.getCOSDictionary(COSName.CIDSYSTEMINFO);
+            COSDictionary cfsi = cidFont.getCOSDictionary(COSName.CIDSYSTEMINFO);
+
+            String regCM = cmsi.getString(COSName.REGISTRY);
+            String ordCM = cmsi.getString(COSName.ORDERING);
+            String regCF = cfsi.getString(COSName.REGISTRY);
+            String ordCF = cfsi.getString(COSName.ORDERING);
 
             if (!regCF.equals(regCM) || !ordCF.equals(ordCM))
             {

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java Mon Jun 10 17:00:11 2019
@@ -22,14 +22,13 @@
 package org.apache.pdfbox.preflight.font;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.Type1Container;
 import org.apache.pdfbox.preflight.font.descriptor.Type1DescriptorHelper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_ENCODING;
@@ -55,13 +54,12 @@ public class Type1FontValidator extends
     @Override
     protected void checkEncoding()
     {
-        COSBase encoding = fontDictionary.getItem(COSName.ENCODING);
+        COSBase encoding = fontDictionary.getDictionaryObject(COSName.ENCODING);
         if (encoding != null)
         {
-            COSDocument cosDocument = context.getDocument().getDocument();
-            if (COSUtils.isString(encoding, cosDocument))
+            if (encoding instanceof COSName)
             {
-                String encodingName = COSUtils.getAsString(encoding, cosDocument);
+                String encodingName = ((COSName) encoding).getName();
                 if (!(encodingName.equals(FONT_DICTIONARY_VALUE_ENCODING_MAC)
                         || encodingName.equals(FONT_DICTIONARY_VALUE_ENCODING_MAC_EXP)
                         || encodingName.equals(FONT_DICTIONARY_VALUE_ENCODING_WIN)
@@ -71,7 +69,7 @@ public class Type1FontValidator extends
                     this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
                 }
             }
-            else if (!COSUtils.isDictionary(encoding, cosDocument))
+            else if (!(encoding instanceof COSDictionary))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
             }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java Mon Jun 10 17:00:11 2019
@@ -34,7 +34,7 @@ import java.util.Set;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSFloat;
 import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.font.PDType3CharProc;
@@ -55,19 +55,16 @@ import org.apache.pdfbox.preflight.font.
 import org.apache.pdfbox.preflight.font.container.Type3Container;
 import org.apache.pdfbox.preflight.font.util.GlyphException;
 import org.apache.pdfbox.preflight.font.util.PreflightType3Stream;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 public class Type3FontValidator extends FontValidator<Type3Container>
 {
     protected PDType3Font font;
     protected COSDictionary fontDictionary;
-    protected COSDocument cosDocument;
 
     public Type3FontValidator(PreflightContext context, PDType3Font font)
     {
         super(context, font.getCOSObject(), new Type3Container(font));
-        this.cosDocument = context.getDocument().getDocument();
         this.fontDictionary = font.getCOSObject();
         this.font = font;
     }
@@ -107,9 +104,9 @@ public class Type3FontValidator extends
      */
     private void checkFontBBox()
     {
-        COSBase fontBBox = fontDictionary.getItem(COSName.FONT_BBOX);
+        COSBase fontBBox = fontDictionary.getDictionaryObject(COSName.FONT_BBOX);
 
-        if (!COSUtils.isArray(fontBBox, cosDocument))
+        if (!(fontBBox instanceof COSArray))
         {
             this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
                     font.getName() + ": The FontBBox element isn't an array"));
@@ -119,7 +116,7 @@ public class Type3FontValidator extends
         /*
          * check the content of the FontBBox. Should be an array with 4 numbers
          */
-        COSArray bbox = COSUtils.getAsArray(fontBBox, cosDocument);
+        COSArray bbox = (COSArray) fontBBox;
         if (bbox.size() != 4)
         {
             this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -130,7 +127,7 @@ public class Type3FontValidator extends
         for (int i = 0; i < 4; i++)
         {
             COSBase elt = bbox.get(i);
-            if (!(COSUtils.isFloat(elt, cosDocument) || COSUtils.isInteger(elt, cosDocument)))
+            if (!(elt instanceof COSFloat || elt instanceof COSInteger))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
                         font.getName() + ": An element of FontBBox isn't a number"));
@@ -144,9 +141,9 @@ public class Type3FontValidator extends
      */
     private void checkFontMatrix()
     {
-        COSBase fontMatrix = fontDictionary.getItem(COSName.FONT_MATRIX);
+        COSBase fontMatrix = fontDictionary.getDictionaryObject(COSName.FONT_MATRIX);
 
-        if (!COSUtils.isArray(fontMatrix, cosDocument))
+        if (!(fontMatrix instanceof COSArray))
         {
             this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
                     font.getName() + ": The FontMatrix element isn't an array"));
@@ -156,7 +153,7 @@ public class Type3FontValidator extends
         /*
          * Check the content of the FontMatrix. Should be an array with 6 numbers
          */
-        COSArray matrix = COSUtils.getAsArray(fontMatrix, cosDocument);
+        COSArray matrix = (COSArray) fontMatrix;
         if (matrix.size() != 6)
         {
             this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -167,7 +164,7 @@ public class Type3FontValidator extends
         for (int i = 0; i < 6; i++)
         {
             COSBase elt = matrix.get(i);
-            if (!(COSUtils.isFloat(elt, cosDocument) || COSUtils.isInteger(elt, cosDocument)))
+            if (!(elt instanceof COSFloat || elt instanceof COSInteger))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
                         font.getName() + ": An element of FontMatrix isn't a number"));
@@ -195,16 +192,14 @@ public class Type3FontValidator extends
     @Override
     protected void checkEncoding()
     {
-        COSBase fontEncoding = fontDictionary.getItem(COSName.ENCODING);
-        if (COSUtils.isString(fontEncoding, cosDocument))
+        COSBase fontEncoding = fontDictionary.getDictionaryObject(COSName.ENCODING);
+        if (fontEncoding instanceof COSName)
         {
-            String enc = COSUtils.getAsString(fontEncoding, cosDocument);
-            checkEncodingAsString(enc);
+            checkEncodingAsString(((COSName) fontEncoding).getName());
         }
-        else if (COSUtils.isDictionary(fontEncoding, cosDocument))
+        else if (fontEncoding instanceof COSDictionary)
         {
-            COSDictionary encodingDictionary = COSUtils.getAsDictionary(fontEncoding, cosDocument);
-            checkEncodingAsDictionary(encodingDictionary);
+            checkEncodingAsDictionary((COSDictionary) fontDictionary);
         }
         else
         {
@@ -246,10 +241,10 @@ public class Type3FontValidator extends
             checkEncodingAsString(encodingDictionary.getString(COSName.BASE_ENCODING));
         }
 
-        COSBase diff = encodingDictionary.getItem(COSName.DIFFERENCES);
+        COSBase diff = encodingDictionary.getDictionaryObject(COSName.DIFFERENCES);
         if (diff != null)
         {
-            if (!COSUtils.isArray(diff, cosDocument))
+            if (!(diff instanceof COSArray))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_TYPE3_DAMAGED,
                         "The differences element of the encoding dictionary isn't an array"));
@@ -259,7 +254,7 @@ public class Type3FontValidator extends
             // ---- The DictionaryEncoding object doesn't throw exception if the
             // Differences isn't well formed.
             // So check if the array has the right format.
-            COSArray diffArray = COSUtils.getAsArray(diff, cosDocument);
+            COSArray diffArray = (COSArray) diff;
             for (int i = 0; i < diffArray.size(); ++i)
             {
                 COSBase item = diffArray.get(i);
@@ -293,7 +288,7 @@ public class Type3FontValidator extends
             return;
         }
 
-        COSDictionary charProcs = COSUtils.getAsDictionary(fontDictionary.getItem(COSName.CHAR_PROCS), cosDocument);
+        COSDictionary charProcs = fontDictionary.getCOSDictionary(COSName.CHAR_PROCS);
         if (charProcs == null)
         {
             this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -413,34 +408,31 @@ public class Type3FontValidator extends
      */
     private void checkResources() throws ValidationException
     {
-        COSBase resources = this.fontDictionary.getItem(COSName.RESOURCES);
+        COSBase resources = this.fontDictionary.getDictionaryObject(COSName.RESOURCES);
         if (resources != null)
         {
-            COSDictionary dictionary = COSUtils.getAsDictionary(resources, cosDocument);
-            if (dictionary == null)
+            if (!(resources instanceof COSDictionary))
             {
                 this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
                         font.getName() + ": The Resources element isn't a dictionary"));
                 return;
             }
-
+            COSDictionary dictionary = (COSDictionary) resources;
             // process Fonts and XObjects
-            ContextHelper.validateElement(context, new PDResources(dictionary), RESOURCES_PROCESS);
-            COSBase cbFont = dictionary.getItem(COSName.FONT);
+            ContextHelper.validateElement(context, new PDResources(dictionary),
+                    RESOURCES_PROCESS);
+            COSDictionary dicFonts = dictionary.getCOSDictionary(COSName.FONT);
 
-            if (cbFont != null)
+            if (dicFonts != null)
             {
                 /*
                  * Check that all referenced object are present in the PDF file
                  */
-                COSDictionary dicFonts = COSUtils.getAsDictionary(cbFont, cosDocument);
                 Set<COSName> keyList = dicFonts.keySet();
-                for (Object key : keyList)
+                for (COSName key : keyList)
                 {
 
-                    COSBase item = dicFonts.getItem((COSName) key);
-                    COSDictionary xObjFont = COSUtils.getAsDictionary(item, cosDocument);
-
+                    COSDictionary xObjFont = dicFonts.getCOSDictionary(key);
                     try
                     {
                         PDFont aFont = PDFontFactory.createFont(xObjFont);

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java Mon Jun 10 17:00:11 2019
@@ -24,12 +24,10 @@ package org.apache.pdfbox.preflight.font
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_DAMAGED;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_FONT_FILEX_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CIDSET;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE0C;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE1C;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.common.PDStream;
@@ -39,7 +37,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.CIDType0Container;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 public class CIDType0DescriptorHelper extends FontDescriptorHelper<CIDType0Container>
 {
@@ -90,9 +87,8 @@ public class CIDType0DescriptorHelper ex
     {
         if (isSubSet(pfDescriptor.getFontName()))
         {
-            COSDocument cosDocument = context.getDocument().getDocument();
-            COSBase cidset = pfDescriptor.getCOSObject().getItem(COSName.getPDFName(FONT_DICTIONARY_KEY_CIDSET));
-            if (cidset == null || !COSUtils.isStream(cidset, cosDocument))
+            COSBase cidset = pfDescriptor.getCOSObject().getDictionaryObject(COSName.CID_SET);
+            if (!(cidset instanceof COSStream))
             {
                 this.fContainer.push(new ValidationResult.ValidationError(ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET,
                         pfDescriptor.getFontName() + ": The CIDSet entry is missing for the Composite Subset"));

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java Mon Jun 10 17:00:11 2019
@@ -24,10 +24,8 @@ package org.apache.pdfbox.preflight.font
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_DAMAGED;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_FONT_FILEX_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CIDSET;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.common.PDStream;
@@ -37,7 +35,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.CIDType2Container;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 public class CIDType2DescriptorHelper extends FontDescriptorHelper<CIDType2Container>
 {
@@ -57,9 +54,8 @@ public class CIDType2DescriptorHelper ex
     {
         if (isSubSet(pfDescriptor.getFontName()))
         {
-            COSDocument cosDocument = context.getDocument().getDocument();
-            COSBase cidset = pfDescriptor.getCOSObject().getItem(COSName.getPDFName(FONT_DICTIONARY_KEY_CIDSET));
-            if (cidset == null || !COSUtils.isStream(cidset, cosDocument))
+            COSBase cidset = pfDescriptor.getCOSObject().getDictionaryObject(COSName.CID_SET);
+            if (!(cidset instanceof COSStream))
             {
                 this.fContainer.push(new ValidationResult.ValidationError(ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET,
                         pfDescriptor.getFontName() + ": The CIDSet entry is missing for the Composite Subset"));

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java Mon Jun 10 17:00:11 2019
@@ -35,12 +35,9 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.PreflightDocument;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 
-import static org.apache.pdfbox.preflight.PreflightConstants.DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_OUTPUT_INTENT_ICC_PROFILE_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE;
 
 /**
  * This class embeds an instance of java.awt.color.ICC_Profile which represent the ICCProfile defined by the
@@ -125,29 +122,25 @@ public class ICCProfileWrapper
     {
         PreflightDocument document = context.getDocument();
         PDDocumentCatalog catalog = document.getDocumentCatalog();
-        COSBase cBase = catalog.getCOSObject().getItem(COSName.getPDFName(DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS));
-        COSArray outputIntents = COSUtils.getAsArray(cBase, document.getDocument());
+        COSArray outputIntents = catalog.getCOSObject().getCOSArray(COSName.OUTPUT_INTENTS);
 
         for (int i = 0; outputIntents != null && i < outputIntents.size(); ++i)
         {
-            COSDictionary outputIntentDict = COSUtils.getAsDictionary(outputIntents.get(i), document.getDocument());
-            COSBase destOutputProfile = outputIntentDict.getItem(OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE);
-            if (destOutputProfile != null)
+            COSDictionary outputIntentDict = (COSDictionary) outputIntents.getObject(i);
+            COSBase destOutputProfile = outputIntentDict
+                    .getDictionaryObject(COSName.DEST_OUTPUT_PROFILE);
+            if (destOutputProfile instanceof COSStream)
             {
                 try
                 {
-                    COSStream stream = COSUtils.getAsStream(destOutputProfile, document.getDocument());
-                    if (stream != null)
+                    InputStream is = ((COSStream) destOutputProfile).createInputStream();
+                    try
                     {
-                        InputStream is = stream.createInputStream();
-                        try
-                        {
-                            return new ICCProfileWrapper(ICC_Profile.getInstance(is));
-                        }
-                        finally
-                        {
-                            is.close();
-                        }
+                        return new ICCProfileWrapper(ICC_Profile.getInstance(is));
+                    }
+                    finally
+                    {
+                        is.close();
                     }
                 }
                 catch (IllegalArgumentException e)

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -25,23 +25,22 @@ import java.util.HashSet;
 import java.util.Set;
 
 import static org.apache.pdfbox.preflight.PreflightConfiguration.ACTIONS_PROCESS;
+import static org.apache.pdfbox.preflight.PreflightConfiguration.DESTINATION_PROCESS;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NOCATALOG;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_TRAILER_OUTLINES_INVALID;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNull;
 import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
 import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
-import static org.apache.pdfbox.preflight.PreflightConfiguration.DESTINATION_PROCESS;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 public class BookmarkValidationProcess extends AbstractProcess
@@ -109,9 +108,8 @@ public class BookmarkValidationProcess e
      */
     private boolean isCountEntryPositive(PreflightContext ctx, COSDictionary outline)
     {
-        COSBase countBase = outline.getItem(COSName.COUNT);
-        COSDocument cosDocument = ctx.getDocument().getDocument();
-        return COSUtils.isInteger(countBase, cosDocument) && (COSUtils.getAsInteger(countBase, cosDocument) > 0);
+        COSBase countBase = outline.getDictionaryObject(COSName.COUNT);
+        return countBase instanceof COSInteger && ((COSInteger) countBase).intValue() > 0;
     }
 
     /**

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -31,7 +31,6 @@ import java.util.Map;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.cos.COSObject;
@@ -48,7 +47,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 
@@ -164,7 +162,7 @@ public class CatalogValidationProcess ex
     {
         ContextHelper.validateElement(ctx, catalog.getCOSObject(), ACTIONS_PROCESS);
         // AA entry if forbidden in PDF/A-1
-        COSBase aa = catalog.getCOSObject().getItem(DICTIONARY_KEY_ADDITIONAL_ACTION);
+        COSBase aa = catalog.getCOSObject().getItem(COSName.AA);
         if (aa != null)
         {
             addValidationError(ctx, new ValidationError(ERROR_ACTION_FORBIDDEN_ADDITIONAL_ACTION,
@@ -241,14 +239,11 @@ public class CatalogValidationProcess ex
      */
     public void validateOutputIntent(PreflightContext ctx) throws ValidationException
     {
-        COSDocument cosDocument = ctx.getDocument().getDocument();
-        COSBase cBase = catalog.getCOSObject().getItem(COSName.getPDFName(DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS));
-        COSArray outputIntents = COSUtils.getAsArray(cBase, cosDocument);
-
+        COSArray outputIntents = catalog.getCOSObject().getCOSArray(COSName.OUTPUT_INTENTS);
         Map<COSObjectKey, Boolean> tmpDestOutputProfile = new HashMap<>();
         for (int i = 0; outputIntents != null && i < outputIntents.size(); ++i)
         {
-            COSDictionary outputIntentDict = COSUtils.getAsDictionary(outputIntents.get(i), cosDocument);
+            COSDictionary outputIntentDict = (COSDictionary) outputIntents.getObject(i);
 
             if (outputIntentDict == null)
             {
@@ -284,7 +279,7 @@ public class CatalogValidationProcess ex
                  * Because of PDF/A conforming file needs to specify the color characteristics, the DestOutputProfile is
                  * checked even if the OutputConditionIdentifier isn't "Custom"
                  */
-                COSBase destOutputProfile = outputIntentDict.getItem(OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE);
+                COSBase destOutputProfile = outputIntentDict.getItem(COSName.DEST_OUTPUT_PROFILE);
                 validateICCProfile(destOutputProfile, tmpDestOutputProfile, ctx);
 
                 PreflightConfiguration config = ctx.getConfig();
@@ -297,7 +292,6 @@ public class CatalogValidationProcess ex
                                 "The Info entry of a OutputIntent dictionary is missing");
                         error.setWarning(true);
                         addValidationError(ctx, error);
-                        continue;
                     }
                 }
             }
@@ -351,8 +345,12 @@ public class CatalogValidationProcess ex
 
             // keep reference to avoid multiple profile definition
             mapDestOutputProfile.put(new COSObjectKey((COSObject) destOutputProfile), true);
-            COSDocument cosDocument = ctx.getDocument().getDocument();
-            COSStream stream = COSUtils.getAsStream(destOutputProfile, cosDocument);
+            if (destOutputProfile instanceof COSObject) 
+            {
+                destOutputProfile = ((COSObject)destOutputProfile).getObject();
+            }
+            COSStream stream = destOutputProfile instanceof COSStream
+                    ? (COSStream) destOutputProfile : null;
             if (stream == null)
             {
                 addValidationError(ctx, new ValidationError(ERROR_GRAPHIC_OUTPUT_INTENT_INVALID_ENTRY,

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -29,10 +29,7 @@ import java.util.ArrayList;
 import java.util.List;
 import javax.imageio.ImageIO;
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
@@ -46,7 +43,6 @@ import org.apache.pdfbox.preflight.metad
 import org.apache.pdfbox.preflight.metadata.RDFAboutAttributeConcordanceValidation.DifferentRDFAboutException;
 import org.apache.pdfbox.preflight.metadata.SynchronizedMetaDataValidation;
 import org.apache.pdfbox.preflight.metadata.XpacketParsingException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.util.Hex;
 import org.apache.xmpbox.XMPMetadata;
 import org.apache.xmpbox.schema.XMPBasicSchema;

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -33,7 +33,6 @@ import java.util.List;
 
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSStream;
@@ -43,7 +42,6 @@ import org.apache.pdfbox.cos.COSObjectKe
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.FilterHelper;
 import org.apache.pdfbox.util.Charsets;
 
@@ -54,13 +52,10 @@ public class StreamValidationProcess ext
     public void validate(PreflightContext ctx) throws ValidationException
     {
         PDDocument pdfDoc = ctx.getDocument();
-        COSDocument cDoc = pdfDoc.getDocument();
 
-        List<?> lCOSObj = cDoc.getObjects();
-        for (Object o : lCOSObj)
+        List<COSObject> lCOSObj = pdfDoc.getDocument().getObjects();
+        for (COSObject cObj : lCOSObj)
         {
-            COSObject cObj = (COSObject) o;
-            
             // If this object represents a Stream, the Dictionary must contain the Length key
             COSBase cBase = cObj.getObject();
             if (cBase instanceof COSStream)
@@ -96,8 +91,7 @@ public class StreamValidationProcess ext
         COSBase bFilter = stream.getDictionaryObject(COSName.FILTER);
         if (bFilter != null)
         {
-            COSDocument cosDocument = context.getDocument().getDocument();
-            if (COSUtils.isArray(bFilter, cosDocument))
+            if (bFilter instanceof COSArray)
             {
                 COSArray afName = (COSArray) bFilter;
                 for (int i = 0; i < afName.size(); ++i)