You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/08/16 23:18:19 UTC

svn commit: r1880909 - in /poi/trunk/src: java/org/apache/poi/extractor/ java/org/apache/poi/sl/draw/ java/org/apache/poi/sl/usermodel/ java/org/apache/poi/ss/usermodel/ multimodule/ooxml/java9/ multimodule/ooxml/test9/ multimodule/poi/java9/ multimodu...

Author: kiwiwings
Date: Sun Aug 16 23:18:19 2020
New Revision: 1880909

URL: http://svn.apache.org/viewvc?rev=1880909&view=rev
Log:
#64036 - Replace reflection calls in factories for Java 9+
ImageRenderer implementation are now loaded via ServiceLoader
fixed the ServiceLoader.load invocations to pass a sensible ClassLoader as OSGi preparation

Added:
    poi/trunk/src/resources/main/META-INF/services/org.apache.poi.sl.draw.ImageRenderer
    poi/trunk/src/resources/ooxml/META-INF/services/org.apache.poi.sl.draw.ImageRenderer
    poi/trunk/src/resources/scratchpad/META-INF/services/org.apache.poi.sl.draw.ImageRenderer
Modified:
    poi/trunk/src/java/org/apache/poi/extractor/ExtractorFactory.java
    poi/trunk/src/java/org/apache/poi/sl/draw/ImageRenderer.java
    poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java
    poi/trunk/src/java/org/apache/poi/ss/usermodel/WorkbookFactory.java
    poi/trunk/src/multimodule/ooxml/java9/module-info.class
    poi/trunk/src/multimodule/ooxml/java9/module-info.java
    poi/trunk/src/multimodule/ooxml/test9/module-info.class
    poi/trunk/src/multimodule/ooxml/test9/module-info.java
    poi/trunk/src/multimodule/poi/java9/module-info.class
    poi/trunk/src/multimodule/poi/java9/module-info.java
    poi/trunk/src/multimodule/poi/test9/module-info.class
    poi/trunk/src/multimodule/poi/test9/module-info.java
    poi/trunk/src/multimodule/scratchpad/java9/module-info.class
    poi/trunk/src/multimodule/scratchpad/java9/module-info.java
    poi/trunk/src/multimodule/scratchpad/test9/module-info.class
    poi/trunk/src/multimodule/scratchpad/test9/module-info.java
    poi/trunk/src/resources/devtools/forbidden-signatures.txt

Modified: poi/trunk/src/java/org/apache/poi/extractor/ExtractorFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/extractor/ExtractorFactory.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/extractor/ExtractorFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/extractor/ExtractorFactory.java Sun Aug 16 23:18:19 2020
@@ -81,7 +81,8 @@ public final class ExtractorFactory {
 
 
     private ExtractorFactory() {
-        ServiceLoader.load(ExtractorProvider.class).forEach(provider::add);
+        ClassLoader cl = ExtractorFactory.class.getClassLoader();
+        ServiceLoader.load(ExtractorProvider.class, cl).forEach(provider::add);
     }
 
     /**

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/ImageRenderer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/ImageRenderer.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/ImageRenderer.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/ImageRenderer.java Sun Aug 16 23:18:19 2020
@@ -31,7 +31,8 @@ import org.apache.poi.util.Dimension2DDo
 
 /**
  * Classes can implement this interfaces to support other formats, for
- * example, use Apache Batik to render WMF, PICT can be rendered using Apple QuickTime API for Java:
+ * example, use Apache Batik to render WMF (since POI 4.0, there's an internal WMF/EMF/EMF+ renderer in POI),
+ * PICT can be rendered using Apple QuickTime API for Java:
  *
  * <pre>
  * <code>
@@ -132,11 +133,11 @@ public interface ImageRenderer {
     /**
      * @param dim the dimension in pixels of the returned image
      * @return the image as buffered image or null if image could not be loaded
-     * 
+     *
      * @since POI 3.15-beta2
      */
     BufferedImage getImage(Dimension2D dim);
-    
+
     /**
      * Render picture data into the supplied graphics
      *

Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java Sun Aug 16 23:18:19 2020
@@ -48,7 +48,8 @@ public final class SlideShowFactory {
     private final List<SlideShowProvider<?,?>> provider = new ArrayList<>();
 
     private SlideShowFactory() {
-        ServiceLoader.load(SlideShowProvider.class).forEach(provider::add);
+        ClassLoader cl = SlideShowFactory.class.getClassLoader();
+        ServiceLoader.load(SlideShowProvider.class, cl).forEach(provider::add);
     }
 
     /**

Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/WorkbookFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/WorkbookFactory.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/WorkbookFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/WorkbookFactory.java Sun Aug 16 23:18:19 2020
@@ -54,7 +54,8 @@ public final class WorkbookFactory {
     private final List<WorkbookProvider> provider = new ArrayList<>();
 
     private WorkbookFactory() {
-        ServiceLoader.load(WorkbookProvider.class).forEach(provider::add);
+        ClassLoader cl = WorkbookFactory.class.getClassLoader();
+        ServiceLoader.load(WorkbookProvider.class, cl).forEach(provider::add);
     }
 
 

Modified: poi/trunk/src/multimodule/ooxml/java9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/ooxml/java9/module-info.class?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/multimodule/ooxml/java9/module-info.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/ooxml/java9/module-info.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/multimodule/ooxml/java9/module-info.java (original)
+++ poi/trunk/src/multimodule/ooxml/java9/module-info.java Sun Aug 16 23:18:19 2020
@@ -31,6 +31,7 @@ module org.apache.poi.ooxml {
     provides org.apache.poi.extractor.ExtractorProvider with org.apache.poi.ooxml.extractor.POIXMLExtractorFactory;
     provides org.apache.poi.ss.usermodel.WorkbookProvider with org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;
     provides org.apache.poi.sl.usermodel.SlideShowProvider with org.apache.poi.xslf.usermodel.XSLFSlideShowFactory;
+    provides org.apache.poi.sl.draw.ImageRenderer with org.apache.poi.xslf.draw.SVGImageRenderer;
 
     exports org.apache.poi.xwpf.extractor;
     exports org.apache.poi.xwpf.usermodel;

Modified: poi/trunk/src/multimodule/ooxml/test9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/ooxml/test9/module-info.class?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/multimodule/ooxml/test9/module-info.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/ooxml/test9/module-info.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/multimodule/ooxml/test9/module-info.java (original)
+++ poi/trunk/src/multimodule/ooxml/test9/module-info.java Sun Aug 16 23:18:19 2020
@@ -31,6 +31,7 @@ module org.apache.poi.ooxml {
     provides org.apache.poi.extractor.ExtractorProvider with org.apache.poi.ooxml.extractor.POIXMLExtractorFactory;
     provides org.apache.poi.ss.usermodel.WorkbookProvider with org.apache.poi.xssf.usermodel.XSSFWorkbookFactory;
     provides org.apache.poi.sl.usermodel.SlideShowProvider with org.apache.poi.xslf.usermodel.XSLFSlideShowFactory;
+    provides org.apache.poi.sl.draw.ImageRenderer with org.apache.poi.xslf.draw.SVGImageRenderer;
 
     exports org.apache.poi.xwpf.extractor;
     exports org.apache.poi.xwpf.usermodel;

Modified: poi/trunk/src/multimodule/poi/java9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/poi/java9/module-info.class?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/multimodule/poi/java9/module-info.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/poi/java9/module-info.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/multimodule/poi/java9/module-info.java (original)
+++ poi/trunk/src/multimodule/poi/java9/module-info.java Sun Aug 16 23:18:19 2020
@@ -27,14 +27,15 @@ module org.apache.poi.poi {
     /* needed for CleanerUtil */
     requires jdk.unsupported;
 
+    /* for JPMS / OSGi interaction see https://blog.osgi.org/2013/02/javautilserviceloader-in-osgi.html */
     uses org.apache.poi.extractor.ExtractorProvider;
     uses org.apache.poi.ss.usermodel.WorkbookProvider;
     uses org.apache.poi.sl.usermodel.SlideShowProvider;
+    uses org.apache.poi.sl.draw.ImageRenderer;
 
-
-    provides org.apache.poi.ss.usermodel.WorkbookProvider with org.apache.poi.hssf.usermodel.HSSFWorkbookFactory;
     provides org.apache.poi.extractor.ExtractorProvider with org.apache.poi.extractor.MainExtractorFactory;
-
+    provides org.apache.poi.ss.usermodel.WorkbookProvider with org.apache.poi.hssf.usermodel.HSSFWorkbookFactory;
+    provides org.apache.poi.sl.draw.ImageRenderer with org.apache.poi.sl.draw.BitmapImageRenderer;
 
     exports org.apache.poi;
     exports org.apache.poi.common;

Modified: poi/trunk/src/multimodule/poi/test9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/poi/test9/module-info.class?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/multimodule/poi/test9/module-info.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/poi/test9/module-info.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/multimodule/poi/test9/module-info.java (original)
+++ poi/trunk/src/multimodule/poi/test9/module-info.java Sun Aug 16 23:18:19 2020
@@ -27,12 +27,15 @@ module org.apache.poi.poi {
     /* needed for CleanerUtil */
     requires jdk.unsupported;
 
+    /* for JPMS / OSGi interaction see https://blog.osgi.org/2013/02/javautilserviceloader-in-osgi.html */
     uses org.apache.poi.extractor.ExtractorProvider;
     uses org.apache.poi.ss.usermodel.WorkbookProvider;
     uses org.apache.poi.sl.usermodel.SlideShowProvider;
+    uses org.apache.poi.sl.draw.ImageRenderer;
 
-    provides org.apache.poi.ss.usermodel.WorkbookProvider with org.apache.poi.hssf.usermodel.HSSFWorkbookFactory;
     provides org.apache.poi.extractor.ExtractorProvider with org.apache.poi.extractor.MainExtractorFactory;
+    provides org.apache.poi.ss.usermodel.WorkbookProvider with org.apache.poi.hssf.usermodel.HSSFWorkbookFactory;
+    provides org.apache.poi.sl.draw.ImageRenderer with org.apache.poi.sl.draw.BitmapImageRenderer;
 
     exports org.apache.poi;
     exports org.apache.poi.common;

Modified: poi/trunk/src/multimodule/scratchpad/java9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/scratchpad/java9/module-info.class?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/multimodule/scratchpad/java9/module-info.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/scratchpad/java9/module-info.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/multimodule/scratchpad/java9/module-info.java (original)
+++ poi/trunk/src/multimodule/scratchpad/java9/module-info.java Sun Aug 16 23:18:19 2020
@@ -22,6 +22,7 @@ module org.apache.poi.scratchpad {
 
     provides org.apache.poi.extractor.ExtractorProvider with org.apache.poi.extractor.ole2.OLE2ScratchpadExtractorFactory;
     provides org.apache.poi.sl.usermodel.SlideShowProvider with org.apache.poi.hslf.usermodel.HSLFSlideShowFactory;
+    provides org.apache.poi.sl.draw.ImageRenderer with org.apache.poi.hwmf.draw.HwmfImageRenderer, org.apache.poi.hemf.draw.HemfImageRenderer;
 
     exports org.apache.poi.hmef;
     exports org.apache.poi.hmef.dev;

Modified: poi/trunk/src/multimodule/scratchpad/test9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/scratchpad/test9/module-info.class?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/multimodule/scratchpad/test9/module-info.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/scratchpad/test9/module-info.java?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/multimodule/scratchpad/test9/module-info.java (original)
+++ poi/trunk/src/multimodule/scratchpad/test9/module-info.java Sun Aug 16 23:18:19 2020
@@ -22,6 +22,7 @@ module org.apache.poi.scratchpad {
 
     provides org.apache.poi.extractor.ExtractorProvider with org.apache.poi.extractor.ole2.OLE2ScratchpadExtractorFactory;
     provides org.apache.poi.sl.usermodel.SlideShowProvider with org.apache.poi.hslf.usermodel.HSLFSlideShowFactory;
+    provides org.apache.poi.sl.draw.ImageRenderer with org.apache.poi.hwmf.draw.HwmfImageRenderer, org.apache.poi.hemf.draw.HemfImageRenderer;
 
     exports org.apache.poi.hmef;
     exports org.apache.poi.hmef.dev;

Modified: poi/trunk/src/resources/devtools/forbidden-signatures.txt
URL: http://svn.apache.org/viewvc/poi/trunk/src/resources/devtools/forbidden-signatures.txt?rev=1880909&r1=1880908&r2=1880909&view=diff
==============================================================================
--- poi/trunk/src/resources/devtools/forbidden-signatures.txt (original)
+++ poi/trunk/src/resources/devtools/forbidden-signatures.txt Sun Aug 16 23:18:19 2020
@@ -136,4 +136,7 @@ java.lang.String#toString()
 #java.util.Hashtable
 
 @defaultMessage DatatypeConverter is not available in Java 9+ without adding add-opens - use java.util.Base64
-javax.xml.bind.DatatypeConverter
\ No newline at end of file
+javax.xml.bind.DatatypeConverter
+
+@defaultMessage don't rely on the threads ContextClassLoader - provide the classloader via load(Class, Classloader)
+java.util.ServiceLoader#load(java.lang.Class)
\ No newline at end of file

Added: poi/trunk/src/resources/main/META-INF/services/org.apache.poi.sl.draw.ImageRenderer
URL: http://svn.apache.org/viewvc/poi/trunk/src/resources/main/META-INF/services/org.apache.poi.sl.draw.ImageRenderer?rev=1880909&view=auto
==============================================================================
--- poi/trunk/src/resources/main/META-INF/services/org.apache.poi.sl.draw.ImageRenderer (added)
+++ poi/trunk/src/resources/main/META-INF/services/org.apache.poi.sl.draw.ImageRenderer Sun Aug 16 23:18:19 2020
@@ -0,0 +1,18 @@
+# ====================================================================
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ====================================================================
+
+org.apache.poi.sl.draw.BitmapImageRenderer
\ No newline at end of file

Added: poi/trunk/src/resources/ooxml/META-INF/services/org.apache.poi.sl.draw.ImageRenderer
URL: http://svn.apache.org/viewvc/poi/trunk/src/resources/ooxml/META-INF/services/org.apache.poi.sl.draw.ImageRenderer?rev=1880909&view=auto
==============================================================================
--- poi/trunk/src/resources/ooxml/META-INF/services/org.apache.poi.sl.draw.ImageRenderer (added)
+++ poi/trunk/src/resources/ooxml/META-INF/services/org.apache.poi.sl.draw.ImageRenderer Sun Aug 16 23:18:19 2020
@@ -0,0 +1,18 @@
+# ====================================================================
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ====================================================================
+
+org.apache.poi.xslf.draw.SVGImageRenderer
\ No newline at end of file

Added: poi/trunk/src/resources/scratchpad/META-INF/services/org.apache.poi.sl.draw.ImageRenderer
URL: http://svn.apache.org/viewvc/poi/trunk/src/resources/scratchpad/META-INF/services/org.apache.poi.sl.draw.ImageRenderer?rev=1880909&view=auto
==============================================================================
--- poi/trunk/src/resources/scratchpad/META-INF/services/org.apache.poi.sl.draw.ImageRenderer (added)
+++ poi/trunk/src/resources/scratchpad/META-INF/services/org.apache.poi.sl.draw.ImageRenderer Sun Aug 16 23:18:19 2020
@@ -0,0 +1,19 @@
+# ====================================================================
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# ====================================================================
+
+org.apache.poi.hwmf.draw.HwmfImageRenderer
+org.apache.poi.hemf.draw.HemfImageRenderer



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org