You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/11/14 09:03:28 UTC

svn commit: r1895012 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java

Author: tilman
Date: Sun Nov 14 09:03:28 2021
New Revision: 1895012

URL: http://svn.apache.org/viewvc?rev=1895012&view=rev
Log:
PDFBOX-5308: try TimSort first, use QuickSort as fallback

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java?rev=1895012&r1=1895011&r2=1895012&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java Sun Nov 14 09:03:28 2021
@@ -63,7 +63,6 @@ public class PDFTextStripper extends Leg
 {
     private static float defaultIndentThreshold = 2.0f;
     private static float defaultDropThreshold = 2.5f;
-    private static final boolean useCustomQuickSort;
 
     private static final Log LOG = LogFactory.getLog(PDFTextStripper.class);
 
@@ -110,36 +109,6 @@ public class PDFTextStripper extends Leg
             }
         }
     }
-    
-    static
-    {
-        // check if we need to use the custom quicksort algorithm as a
-        // workaround to the PDFBOX-1512 transitivity issue of TextPositionComparator:
-        boolean is16orLess = false;
-        try
-        {
-            String version = System.getProperty("java.specification.version");
-            StringTokenizer st = new StringTokenizer(version, ".");
-            int majorVersion = Integer.parseInt(st.nextToken());
-            int minorVersion = 0;
-            if (st.hasMoreTokens())
-            {
-                minorVersion = Integer.parseInt(st.nextToken());
-            }
-            is16orLess = majorVersion == 1 && minorVersion <= 6;
-        }
-        catch (SecurityException x)
-        {
-            // when run in an applet ignore and use default
-            // assume 1.7 or higher so that quicksort is used
-        }
-        catch (NumberFormatException nfe)
-        {
-            // should never happen, but if it does,
-            // assume 1.7 or higher so that quicksort is used
-        }
-        useCustomQuickSort = !is16orLess;
-    }
 
     /**
      * The platform's line separator.
@@ -532,13 +501,13 @@ public class PDFTextStripper extends Leg
                 // because the TextPositionComparator is not transitive, but
                 // JDK7+ enforces transitivity on comparators, we need to use
                 // a custom quicksort implementation (which is slower, unfortunately).
-                if (useCustomQuickSort)
+                try
                 {
-                    QuickSort.sort(textList, comparator);
+                    Collections.sort(textList, comparator);
                 }
-                else
+                catch (IllegalArgumentException e)
                 {
-                    Collections.sort(textList, comparator);
+                    QuickSort.sort(textList, comparator);
                 }
             }