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 2015/05/14 02:53:47 UTC

svn commit: r1679300 - in /pdfbox/trunk: examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/do...

Author: jahewson
Date: Thu May 14 00:53:46 2015
New Revision: 1679300

URL: http://svn.apache.org/r1679300
Log:
PDFBOX-2798: Replace PDTextStream with String (deleted files)

Modified:
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDestinationNameTreeNode.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDEmbeddedFilesNameTreeNode.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDJavascriptNameTreeNode.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureTreeRoot.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestEmbeddedFiles.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java Thu May 14 00:53:46 2015
@@ -23,12 +23,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import org.apache.pdfbox.io.IOUtils;
-
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
 import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
 import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
 import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
 import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
@@ -74,15 +72,15 @@ public class ExtractEmbeddedFiles
                 PDEmbeddedFilesNameTreeNode efTree = namesDictionary.getEmbeddedFiles();
                 if (efTree != null)
                 {
-                    Map<String,COSObjectable> names = efTree.getNames();
+                    Map<String, PDComplexFileSpecification> names = efTree.getNames();
                     if (names != null)
                     {
                         extractFiles(names, filePath);
                     }
                     else
                     {
-                        List<PDNameTreeNode> kids = efTree.getKids();
-                        for (PDNameTreeNode node : kids)
+                        List<PDNameTreeNode<PDComplexFileSpecification>> kids = efTree.getKids();
+                        for (PDNameTreeNode<PDComplexFileSpecification> node : kids)
                         {
                             names = node.getNames();
                             extractFiles(names, filePath);
@@ -116,13 +114,13 @@ public class ExtractEmbeddedFiles
         }
     }
 
-    private static void extractFiles(Map<String,COSObjectable> names, String filePath) 
+    private static void extractFiles(Map<String, PDComplexFileSpecification> names, String filePath) 
             throws IOException
     {
-        for (Entry<String,COSObjectable> entry : names.entrySet())
+        for (Entry<String, PDComplexFileSpecification> entry : names.entrySet())
         {
             String filename = entry.getKey();
-            PDComplexFileSpecification fileSpec = (PDComplexFileSpecification) entry.getValue();
+            PDComplexFileSpecification fileSpec = entry.getValue();
             PDEmbeddedFile embeddedFile = getEmbeddedFile(fileSpec);
             extractFile(filePath, filename, embeddedFile);
         }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDestinationNameTreeNode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDestinationNameTreeNode.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDestinationNameTreeNode.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDestinationNameTreeNode.java Thu May 14 00:53:46 2015
@@ -17,11 +17,9 @@
 package org.apache.pdfbox.pdmodel;
 
 import java.io.IOException;
-
 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.common.PDNameTreeNode;
 import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination;
 import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageDestination;
@@ -31,15 +29,14 @@ import org.apache.pdfbox.pdmodel.interac
  *
  * @author Ben Litchfield
  */
-public class PDDestinationNameTreeNode extends PDNameTreeNode
+public class PDDestinationNameTreeNode extends PDNameTreeNode<PDPageDestination>
 {
-
     /**
      * Constructor.
      */
     public PDDestinationNameTreeNode()
     {
-        super( PDPageDestination.class );
+        super();
     }
 
     /**
@@ -49,13 +46,11 @@ public class PDDestinationNameTreeNode e
      */
     public PDDestinationNameTreeNode( COSDictionary dic )
     {
-        super( dic, PDPageDestination.class );
+        super(dic);
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    protected COSObjectable convertCOSToPD( COSBase base ) throws IOException
+    @Override
+    protected PDPageDestination convertCOSToPD( COSBase base ) throws IOException
     {
         COSBase destination = base;
         if( base instanceof COSDictionary )
@@ -65,12 +60,10 @@ public class PDDestinationNameTreeNode e
             //it for now
             destination = ((COSDictionary)base).getDictionaryObject( COSName.D );
         }
-        return PDDestination.create( destination );
+        return (PDPageDestination)PDDestination.create( destination );
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     protected PDNameTreeNode createChildNode( COSDictionary dic )
     {
         return new PDDestinationNameTreeNode(dic);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDEmbeddedFilesNameTreeNode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDEmbeddedFilesNameTreeNode.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDEmbeddedFilesNameTreeNode.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDEmbeddedFilesNameTreeNode.java Thu May 14 00:53:46 2015
@@ -17,10 +17,8 @@
 package org.apache.pdfbox.pdmodel;
 
 import java.io.IOException;
-
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
 import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
 
@@ -29,14 +27,14 @@ import org.apache.pdfbox.pdmodel.common.
  *
  * @author Ben Litchfield
  */
-public class PDEmbeddedFilesNameTreeNode extends PDNameTreeNode
+public class PDEmbeddedFilesNameTreeNode extends PDNameTreeNode<PDComplexFileSpecification>
 {
     /**
      * Constructor.
      */
     public PDEmbeddedFilesNameTreeNode()
     {
-        super( PDComplexFileSpecification.class );
+        super();
     }
 
     /**
@@ -46,20 +44,16 @@ public class PDEmbeddedFilesNameTreeNode
      */
     public PDEmbeddedFilesNameTreeNode( COSDictionary dic )
     {
-        super( dic, PDComplexFileSpecification.class );
+        super(dic);
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    protected COSObjectable convertCOSToPD( COSBase base ) throws IOException
+    @Override
+    protected PDComplexFileSpecification convertCOSToPD( COSBase base ) throws IOException
     {
         return new PDComplexFileSpecification( (COSDictionary)base );
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     protected PDNameTreeNode createChildNode( COSDictionary dic )
     {
         return new PDEmbeddedFilesNameTreeNode(dic);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDJavascriptNameTreeNode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDJavascriptNameTreeNode.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDJavascriptNameTreeNode.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDJavascriptNameTreeNode.java Thu May 14 00:53:46 2015
@@ -19,7 +19,6 @@ package org.apache.pdfbox.pdmodel;
 import java.io.IOException;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
 import org.apache.pdfbox.pdmodel.interactive.action.PDActionFactory;
 import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;
@@ -29,14 +28,14 @@ import org.apache.pdfbox.pdmodel.interac
  *
  * @author Ben Litchfield
  */
-public class PDJavascriptNameTreeNode extends PDNameTreeNode
+public class PDJavascriptNameTreeNode extends PDNameTreeNode<PDActionJavaScript>
 {
     /**
      * Constructor.
      */
     public PDJavascriptNameTreeNode()
     {
-        super( PDActionJavaScript.class );
+        super();
     }
 
     /**
@@ -46,24 +45,20 @@ public class PDJavascriptNameTreeNode ex
      */
     public PDJavascriptNameTreeNode( COSDictionary dic )
     {
-        super( dic, PDActionJavaScript.class );
+        super(dic);
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    protected COSObjectable convertCOSToPD( COSBase base ) throws IOException
+    @Override
+    protected PDActionJavaScript convertCOSToPD( COSBase base ) throws IOException
     {
         if (!(base instanceof COSDictionary))
         {
             throw new IOException( "Error creating Javascript object, expected a COSDictionary and not " + base);
         }
-        return PDActionFactory.createAction((COSDictionary) base);
+        return (PDActionJavaScript)PDActionFactory.createAction((COSDictionary) base);
     }
 
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     protected PDNameTreeNode createChildNode( COSDictionary dic )
     {
         return new PDJavascriptNameTreeNode(dic);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java Thu May 14 00:53:46 2015
@@ -23,6 +23,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import java.util.Set;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSArray;
@@ -32,39 +33,33 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSString;
 
 /**
- * This class represents a PDF Name tree.  See the PDF Reference 1.5 section 3.8.5
- * for more details.
+ * This class represents a node in a name tree.
  *
  * @author Ben Litchfield
  */
-public class PDNameTreeNode implements COSObjectable
+public abstract class PDNameTreeNode<T extends COSObjectable> implements COSObjectable
 {
     private static final Log LOG = LogFactory.getLog(PDNameTreeNode.class);
+    
     private final COSDictionary node;
-    private Class<? extends COSObjectable> valueType = null;
-    private PDNameTreeNode parent = null;
+    private PDNameTreeNode parent;
 
     /**
      * Constructor.
-     *
-     * @param valueClass The PD Model type of object that is the value.
      */
-    public PDNameTreeNode( Class<? extends COSObjectable> valueClass )
+    protected PDNameTreeNode()
     {
         node = new COSDictionary();
-        valueType = valueClass;
     }
 
     /**
      * Constructor.
      *
      * @param dict The dictionary that holds the name information.
-     * @param valueClass The PD Model type of object that is the value.
      */
-    public PDNameTreeNode( COSDictionary dict, Class<? extends COSObjectable> valueClass )
+    protected PDNameTreeNode( COSDictionary dict )
     {
         node = dict;
-        valueType = valueClass;
     }
 
     /**
@@ -108,24 +103,24 @@ public class PDNameTreeNode implements C
     {
         return parent == null;
     }
+    
     /**
      * Return the children of this node.  This list will contain PDNameTreeNode objects.
      *
      * @return The list of children or null if there are no children.
      */
-    public List<PDNameTreeNode> getKids()
+    public List<PDNameTreeNode<T>> getKids()
     {
-
-        List<PDNameTreeNode> retval = null;
+        List<PDNameTreeNode<T>> retval = null;
         COSArray kids = (COSArray)node.getDictionaryObject( COSName.KIDS );
         if( kids != null )
         {
-            List<PDNameTreeNode> pdObjects = new ArrayList<PDNameTreeNode>();
+            List<PDNameTreeNode<T>> pdObjects = new ArrayList<PDNameTreeNode<T>>();
             for( int i=0; i<kids.size(); i++ )
             {
                 pdObjects.add( createChildNode( (COSDictionary)kids.getObject(i) ) );
             }
-            retval = new COSArrayList<PDNameTreeNode>(pdObjects,kids);
+            retval = new COSArrayList<PDNameTreeNode<T>>(pdObjects, kids);
         }
 
         return retval;
@@ -136,7 +131,7 @@ public class PDNameTreeNode implements C
      *
      * @param kids The children of this named tree.
      */
-    public void setKids( List<? extends PDNameTreeNode> kids )
+    public void setKids( List<? extends PDNameTreeNode<T>> kids )
     {
         if (kids != null && kids.size() > 0)
         {
@@ -169,7 +164,7 @@ public class PDNameTreeNode implements C
         }
         else
         {
-            List<PDNameTreeNode> kids = getKids();
+            List<PDNameTreeNode<T>> kids = getKids();
             if (kids != null && kids.size() > 0)
             {
                 PDNameTreeNode firstKid = kids.get(0);
@@ -183,13 +178,14 @@ public class PDNameTreeNode implements C
             {
                 try 
                 {
-                    Map<String, COSObjectable> names = getNames();
+                    Map<String, T> names = getNames();
                     if (names != null && names.size() > 0)
                     {
-                        Object[] keys = names.keySet().toArray();
-                        String lowerLimit = (String)keys[0];
+                        Set<String> strings = names.keySet();
+                        String[] keys = strings.toArray(new String[strings.size()]);
+                        String lowerLimit = keys[0];
                         setLowerLimit(lowerLimit);
-                        String upperLimit = (String)keys[keys.length-1];
+                        String upperLimit = keys[keys.length-1];
                         setUpperLimit(upperLimit);
                     }
                     else
@@ -205,31 +201,30 @@ public class PDNameTreeNode implements C
             }
         }
     }
+    
     /**
      * The name to retrieve.
      *
      * @param name The name in the tree.
-     *
      * @return The value of the name in the tree.
-     *
      * @throws IOException If an there is a problem creating the destinations.
      */
-    public Object getValue( String name ) throws IOException
+    public T getValue( String name ) throws IOException
     {
-        Object retval = null;
-        Map<String, COSObjectable> names = getNames();
+        T retval = null;
+        Map<String, T> names = getNames();
         if( names != null )
         {
             retval = names.get( name );
         }
         else
         {
-            List<PDNameTreeNode> kids = getKids();
+            List<PDNameTreeNode<T>> kids = getKids();
             if (kids != null)
             {
                 for( int i=0; i<kids.size() && retval == null; i++ )
                 {
-                    PDNameTreeNode childNode = kids.get( i );
+                    PDNameTreeNode<T> childNode = kids.get( i );
                     if( childNode.getLowerLimit().compareTo( name ) <= 0 &&
                         childNode.getUpperLimit().compareTo( name ) >= 0 )
                     {
@@ -245,7 +240,6 @@ public class PDNameTreeNode implements C
         return retval;
     }
 
-
     /**
      * This will return a map of names. The key will be a string, and the
      * value will depend on where this class is being used.
@@ -254,12 +248,12 @@ public class PDNameTreeNode implements C
      *         contains no 'Names' entry
      * @throws IOException If there is an error while creating the sub types.
      */
-    public Map<String, COSObjectable> getNames() throws IOException
+    public Map<String, T> getNames() throws IOException
     {
         COSArray namesArray = (COSArray)node.getDictionaryObject( COSName.NAMES );
         if( namesArray != null )
         {
-            Map<String, COSObjectable> names = new LinkedHashMap<String, COSObjectable>();
+            Map<String, T> names = new LinkedHashMap<String, T>();
             for( int i=0; i<namesArray.size(); i+=2 )
             {
                 COSString key = (COSString)namesArray.getObject(i);
@@ -283,10 +277,7 @@ public class PDNameTreeNode implements C
      * @return The converted PD Model object.
      * @throws IOException If there is an error during creation.
      */
-    protected COSObjectable convertCOSToPD( COSBase base ) throws IOException
-    {
-        return base;
-    }
+    protected abstract T convertCOSToPD( COSBase base ) throws IOException;
 
     /**
      * Create a child node object.
@@ -294,10 +285,7 @@ public class PDNameTreeNode implements C
      * @param dic The dictionary for the child node object to refer to.
      * @return The new child node object.
      */
-    protected PDNameTreeNode createChildNode( COSDictionary dic )
-    {
-        return new PDNameTreeNode(dic,valueType);
-    }
+    protected abstract PDNameTreeNode<T> createChildNode( COSDictionary dic );
 
     /**
      * Set the names of for this node.  The keys should be java.lang.String and the
@@ -306,7 +294,7 @@ public class PDNameTreeNode implements C
      *
      * @param names map of names to objects, or <code>null</code>
      */
-    public void setNames( Map<String, ? extends COSObjectable> names )
+    public void setNames( Map<String, T> names )
     {
         if( names == null )
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureTreeRoot.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureTreeRoot.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureTreeRoot.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/logicalstructure/PDStructureTreeRoot.java Thu May 14 00:53:46 2015
@@ -21,11 +21,11 @@ import java.util.Hashtable;
 import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.PDStructureElementNameTreeNode;
 import org.apache.pdfbox.pdmodel.common.COSDictionaryMap;
 import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
 import org.apache.pdfbox.pdmodel.common.PDNumberTreeNode;
@@ -123,7 +123,7 @@ public class PDStructureTreeRoot extends
         COSDictionary idTreeDic = (COSDictionary) this.getCOSObject().getDictionaryObject(COSName.ID_TREE);
         if (idTreeDic != null)
         {
-            return new PDNameTreeNode(idTreeDic, PDStructureElement.class);
+            return new PDStructureElementNameTreeNode(idTreeDic);
         }
         return null;
     }

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java Thu May 14 00:53:46 2015
@@ -27,18 +27,15 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Map;
 import javax.crypto.Cipher;
-
 import junit.framework.TestCase;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
 import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
-import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
 import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
 import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
@@ -330,11 +327,11 @@ public class TestSymmetricKeyEncryption
         PDDocumentCatalog catalog = docWithEmbeddedFile.getDocumentCatalog();
         PDDocumentNameDictionary names = catalog.getNames();
         PDEmbeddedFilesNameTreeNode embeddedFiles = names.getEmbeddedFiles();
-        Map<String, COSObjectable> embeddedFileNames = embeddedFiles.getNames();
+        Map<String, PDComplexFileSpecification> embeddedFileNames = embeddedFiles.getNames();
         Assert.assertEquals(1, embeddedFileNames.size());
-        Map.Entry<String, COSObjectable> entry = embeddedFileNames.entrySet().iterator().next();
+        Map.Entry<String, PDComplexFileSpecification> entry = embeddedFileNames.entrySet().iterator().next();
         LOG.info("Processing embedded file " + entry.getKey() + ":");
-        PDComplexFileSpecification complexFileSpec = (PDComplexFileSpecification) entry.getValue();
+        PDComplexFileSpecification complexFileSpec = entry.getValue();
         PDEmbeddedFile embeddedFile = complexFileSpec.getEmbeddedFile();
 
         File resultFile = new File(testResultsDir, name);

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestEmbeddedFiles.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestEmbeddedFiles.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestEmbeddedFiles.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestEmbeddedFiles.java Thu May 14 00:53:46 2015
@@ -85,19 +85,17 @@ public class TestEmbeddedFiles extends T
         PDDocumentCatalog catalog = doc.getDocumentCatalog();
         PDDocumentNameDictionary names = catalog.getNames();
         PDEmbeddedFilesNameTreeNode treeNode = names.getEmbeddedFiles();
-        List<PDNameTreeNode> kids = treeNode.getKids();
+        List<PDNameTreeNode<PDComplexFileSpecification>> kids = treeNode.getKids();
         for (PDNameTreeNode kid : kids)
         {
-            Map<String, COSObjectable> tmpNames = kid.getNames();
+            Map<String, PDComplexFileSpecification> tmpNames = kid.getNames();
             COSObjectable obj = tmpNames.get("My first attachment");
-            if (obj instanceof PDComplexFileSpecification)
-            {
-                PDComplexFileSpecification spec = (PDComplexFileSpecification) obj;
-                nonOSFile = spec.getEmbeddedFile();
-                macFile = spec.getEmbeddedFileMac();
-                dosFile = spec.getEmbeddedFileDos();
-                unixFile = spec.getEmbeddedFileUnix();
-            }
+            
+            PDComplexFileSpecification spec = (PDComplexFileSpecification) obj;
+            nonOSFile = spec.getEmbeddedFile();
+            macFile = spec.getEmbeddedFileMac();
+            dosFile = spec.getEmbeddedFileDos();
+            unixFile = spec.getEmbeddedFileUnix();
         }
 
         assertTrue("non os specific",

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java Thu May 14 00:53:46 2015
@@ -41,7 +41,7 @@ public class TestPDNameTreeNode extends
     @Override
     protected void setUp() throws Exception
     {
-        this.node5 = new PDNameTreeNode(COSInteger.class);
+        this.node5 = new PDIntegerNameTreeNode();
         SortedMap<String, COSObjectable> names = new TreeMap<String, COSObjectable>();
         names.put("Actinium", COSInteger.get(89));
         names.put("Aluminum", COSInteger.get(13));
@@ -52,7 +52,7 @@ public class TestPDNameTreeNode extends
         names.put("Astatine", COSInteger.get(85));
         this.node5.setNames(names);
 
-        this.node24 = new PDNameTreeNode(COSInteger.class);
+        this.node24 = new PDIntegerNameTreeNode();
         names = new TreeMap<String, COSObjectable>();
         names.put("Xenon", COSInteger.get(54));
         names.put("Ytterbium", COSInteger.get(70));
@@ -61,7 +61,7 @@ public class TestPDNameTreeNode extends
         names.put("Zirconium", COSInteger.get(40));
         this.node24.setNames(names);
 
-        this.node2 = new PDNameTreeNode(COSInteger.class);
+        this.node2 = new PDIntegerNameTreeNode();
         List<PDNameTreeNode> kids = this.node2.getKids();
         if (kids == null)
         {
@@ -70,7 +70,7 @@ public class TestPDNameTreeNode extends
         kids.add(this.node5);
         this.node2.setKids(kids);
 
-        this.node4 = new PDNameTreeNode(COSInteger.class);
+        this.node4 = new PDIntegerNameTreeNode();
         kids = this.node4.getKids();
         if (kids == null)
         {
@@ -79,7 +79,7 @@ public class TestPDNameTreeNode extends
         kids.add(this.node24);
         this.node4.setKids(kids);
 
-        this.node1 = new PDNameTreeNode(COSInteger.class);
+        this.node1 = new PDIntegerNameTreeNode();
         kids = this.node1.getKids();
         if (kids == null)
         {

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java?rev=1679300&r1=1679299&r2=1679300&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java Thu May 14 00:53:46 2015
@@ -24,12 +24,10 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.util.Map;
 import org.apache.pdfbox.io.IOUtils;
-
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
 import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
-import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
 import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
 import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
@@ -241,10 +239,10 @@ public class ExtractText
                     PDEmbeddedFilesNameTreeNode embeddedFiles = names.getEmbeddedFiles();
                     if (embeddedFiles != null)
                     {
-                        Map<String,COSObjectable> embeddedFileNames = embeddedFiles.getNames();
+                        Map<String, PDComplexFileSpecification> embeddedFileNames = embeddedFiles.getNames();
                         if (embeddedFileNames != null)
                         {
-                            for (Map.Entry<String,COSObjectable> ent : embeddedFileNames.entrySet()) 
+                            for (Map.Entry<String, PDComplexFileSpecification> ent : embeddedFileNames.entrySet()) 
                             {
                                 if (debug)
                                 {