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 2017/11/16 17:23:34 UTC

svn commit: r1815490 - /pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java

Author: tilman
Date: Thu Nov 16 17:23:34 2017
New Revision: 1815490

URL: http://svn.apache.org/viewvc?rev=1815490&view=rev
Log:
PDFBOX-4013: disable Mac OS X file open/quit handler for jdk9 and higher

Modified:
    pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java

Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java?rev=1815490&r1=1815489&r2=1815490&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java Thu Nov 16 17:23:34 2017
@@ -44,6 +44,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
+import java.util.StringTokenizer;
 import javax.print.attribute.HashPrintRequestAttributeSet;
 import javax.print.attribute.PrintRequestAttributeSet;
 import javax.print.attribute.standard.Sides;
@@ -416,8 +417,9 @@ public class PDFDebugger extends JFrame
         });
 
         // Mac OS X file open/quit handler
-        if (IS_MAC_OS)
+        if (IS_MAC_OS && !isMinJdk9())
         {
+            //TODO this needs to be rewritten for JDK9, see PDFBOX-4013
             try
             {
                 Method osxOpenFiles = getClass().getDeclaredMethod("osxOpenFiles", String.class);
@@ -1481,4 +1483,26 @@ public class PDFDebugger extends JFrame
         }
         return null;
     }
+    
+    private static boolean isMinJdk9()
+    {
+        // strategy from lucene-solr/lucene/core/src/java/org/apache/lucene/util/Constants.java
+        String version = System.getProperty("java.specification.version");
+        final StringTokenizer st = new StringTokenizer(version, ".");
+        try
+        {
+            int major = Integer.parseInt(st.nextToken());
+            int minor = 0;
+            if (st.hasMoreTokens())
+            {
+                minor = Integer.parseInt(st.nextToken());
+            }
+            return major > 1 || (major == 1 && minor >= 9);
+        }
+        catch (NumberFormatException nfe)
+        {
+            // maybe some new numbering scheme in the 22nd century
+            return true;
+        }
+    }
 }