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