Author: kiwiwings
Date: Sun Mar  1 22:20:38 2020
New Revision: 1874671

URL: http://svn.apache.org/viewvc?rev=1874671&view=rev
Log:
#64186 - Decrease usage of ThreadLocals in XML Signature API

Added:
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureMarshalDefaultListener.java
   (with props)
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/SignatureFacetHelper.java
   (with props)
Modified:
    poi/site/src/documentation/content/xdocs/changes.xml
    poi/site/src/documentation/content/xdocs/encryption.xml
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/OOXMLURIDereferencer.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
    poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureMarshalListener.java
    poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignaturePart.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/EnvelopedSignatureFacet.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/KeyInfoSignatureFacet.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/OOXMLSignatureFacet.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/Office2010SignatureFacet.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/SignatureFacet.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESXLSignatureFacet.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java
    
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/TimeStampService.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java

Modified: poi/site/src/documentation/content/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1874671&r1=1874670&r2=1874671&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/changes.xml (original)
+++ poi/site/src/documentation/content/xdocs/changes.xml Sun Mar  1 22:20:38 
2020
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
+<?xml version="1.0" encoding="UTF-8"?><!--
    ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -47,7 +46,6 @@
         <context id="POIFS" title="Poor Obfuscation Implementation 
FileSystem"/>
     </contexts>
 
-
     <!--
       ACTION ATTRIBUTES:
 
@@ -64,270 +62,276 @@
           when referring to both H??F and X??F formats.
     -->
 
-  <section id="previous_releases">
-    <title>Previous releases</title>
-    <p>The change log for <a href="site:changes3x">POI 3.x</a> and <a 
href="site:changespre3x">older releases</a>
-    can be found in the history section.</p>
-  </section>
-
-  <!-- release version="4.1.3" date="2020-05-??">
-    </release -->
+    <section id="previous_releases">
+        <title>Previous releases</title>
+        <p>The change log for <a href="site:changes3x">POI 3.x</a> and
+            <a href="site:changespre3x">older releases</a>
+            can be found in the history section.
+        </p>
+    </section>
+
+    <release version="4.1.3" date="2020-05-??">
+        <actions>
+            <action type="fix" fixes-bug="64186" context="OPC">Decrease usage 
of ThreadLocals in XML Signature API</action>
+        </actions>
+    </release>
 
     <release version="4.1.2" date="2020-02-17">
-      <summary>
-        <summary-item>Removed a lot of internal uses of 
StringBuffers</summary-item>
-        <summary-item>XDDF - some work on better chart support</summary-item>
-        <summary-item>Common SL / EMF - ongoing rendering fixes</summary-item>
-        <summary-item>XSLF - OOM fixes when parsing arbitrary shape ids + a 
new dependency to SparseBitSet 1.2</summary-item>
-      </summary>
-      <actions>
-        <action type="fix" fixes-bug="64015" context="POI_Overall">Swap 
zaxxer.com:SparseBitSet for java.util.BitSet</action>
-        <action type="fix" fixes-bug="63788" context="XWPF">When removing 
AbstractNum match by abstractNumId, not list index</action>
-        <action type="fix" fixes-bug="63940" context="POI_Overall">Avoid 
endless loop/out of memory on string-replace with empty search string</action>
-        <action type="fix" fixes-bug="63700" context="POI_Overall">Make D* 
functions work with numeric result column</action>
-        <action type="fix" fixes-bug="63960" context="SXSSF">Write 
pre-evaluated string-values in formula cells with the correct type</action>
-        <action type="fix" fixes-bug="63984" context="POI_Overall">Function 
AND / OR should treat missing parameters as FALSE</action>
-        <action type="fix" fixes-bug="63749" context="POI_Overall">Make 
getFirstRowNum() and getFirstCellNum() return -1 consistently with empty 
data</action>
-        <action type="fix" fixes-bug="63569" context="POI_Overall">Make 
IOUtils.setByteArrayMaxOverride() work correctly</action>
-        <action type="add" context="XSLF">Add, insert and remove columns on 
XSLFTable</action>
-        <action type="fix" fixes-bug="63842" context="POI_Overall">Fix issue 
with fractions where the whole number part is too large to store as an 
int</action>
-        <action type="fix" fixes-bug="63889" context="XDDF">Produce valid PPTX 
file with several chart series</action>
-        <action type="fix" fixes-bug="63918" context="SL_Common XSLF">Fix 
texture fill - scale stretched images correctly</action>
-        <action type="add" context="XDDF">Add Doughnut chart data series 
support</action>
-        <action type="fix" fixes-bug="63955" 
context="HMEF">HMEFContentsExtractor fails to extract content from 
winmail.dat</action>
-        <action type="fix" fixes-bug="63927" 
context="POI_Overall">Inconsistent mapping of Norwegian locales for date 
formats</action>
-        <action type="fix" fixes-bug="github-163" context="XSSF">Add set level 
numbering on XWPFParagraph</action>
-        <action type="fix" fixes-bug="github-164" context="XSSF">Fix Bug in 
XSSFTable.setCellReferences when table is single cell</action>
-        <action type="fix" fixes-bug="64004" context="POI_Overall">Replace 
Cloneable / clone() with copy constructor</action>
-        <action type="fix" fixes-bug="64036" context="POI_Overall">Replace 
reflection calls in factories for Java 9+</action>
-        <action type="fix" fixes-bug="64044" context="POI_Overall">Fix issue 
with setCellValue(LocalDate) not supporting nulls properly</action>
-        <action type="fix" fixes-bug="64088" context="SL_Common 
XSLF">SlideShow rendering fixes</action>
-        <action type="fix" fixes-bug="64098" context="XWPF">XWPFRun: 
Whitespace in text not preserved if starting with tab character.</action>
-        <action type="fix" fixes-bug="64108" context="POI_Overall">unsafe pipe 
character ("|") in Relationship target attribute is not being encoded into a 
'%7C'.</action>
-        <action type="fix" fixes-bug="github-166" context="XDDF">Expose invert 
if negative on bar charts</action>
-        <action type="fix" fixes-bug="63998" context="HSSF">Support commas, 
exclamation marks correctly in AreaReference</action>
-        <action type="fix" fixes-bug="64045" context="XSSF">XSSFWorkbook 
constructor doesn't close ZipFile if an exception occurs</action>
-        <action type="fix" fixes-bug="64130" context="HSSF">Regression in 
OldSheetRecord</action>
-      </actions>
+        <summary>
+            <summary-item>Removed a lot of internal uses of 
StringBuffers</summary-item>
+            <summary-item>XDDF - some work on better chart 
support</summary-item>
+            <summary-item>Common SL / EMF - ongoing rendering 
fixes</summary-item>
+            <summary-item>XSLF - OOM fixes when parsing arbitrary shape ids + 
a new dependency to SparseBitSet 1.2</summary-item>
+        </summary>
+        <actions>
+            <action type="fix" fixes-bug="64015" context="POI_Overall">Swap 
zaxxer.com:SparseBitSet for java.util.BitSet</action>
+            <action type="fix" fixes-bug="63788" context="XWPF">When removing 
AbstractNum match by abstractNumId, not list index</action>
+            <action type="fix" fixes-bug="63940" context="POI_Overall">Avoid 
endless loop/out of memory on string-replace with empty search string</action>
+            <action type="fix" fixes-bug="63700" context="POI_Overall">Make D* 
functions work with numeric result column</action>
+            <action type="fix" fixes-bug="63960" context="SXSSF">Write 
pre-evaluated string-values in formula cells with the correct type</action>
+            <action type="fix" fixes-bug="63984" 
context="POI_Overall">Function AND / OR should treat missing parameters as 
FALSE</action>
+            <action type="fix" fixes-bug="63749" context="POI_Overall">Make 
getFirstRowNum() and getFirstCellNum() return -1 consistently with empty 
data</action>
+            <action type="fix" fixes-bug="63569" context="POI_Overall">Make 
IOUtils.setByteArrayMaxOverride() work correctly</action>
+            <action type="add" context="XSLF">Add, insert and remove columns 
on XSLFTable</action>
+            <action type="fix" fixes-bug="63842" context="POI_Overall">Fix 
issue with fractions where the whole number part is too large to store as an 
int</action>
+            <action type="fix" fixes-bug="63889" context="XDDF">Produce valid 
PPTX file with several chart series</action>
+            <action type="fix" fixes-bug="63918" context="SL_Common XSLF">Fix 
texture fill - scale stretched images correctly</action>
+            <action type="add" context="XDDF">Add Doughnut chart data series 
support</action>
+            <action type="fix" fixes-bug="63955" 
context="HMEF">HMEFContentsExtractor fails to extract content from 
winmail.dat</action>
+            <action type="fix" fixes-bug="63927" 
context="POI_Overall">Inconsistent mapping of Norwegian locales for date 
formats</action>
+            <action type="fix" fixes-bug="github-163" context="XSSF">Add set 
level numbering on XWPFParagraph</action>
+            <action type="fix" fixes-bug="github-164" context="XSSF">Fix Bug 
in XSSFTable.setCellReferences when table is single cell</action>
+            <action type="fix" fixes-bug="64004" context="POI_Overall">Replace 
Cloneable / clone() with copy constructor</action>
+            <action type="fix" fixes-bug="64036" context="POI_Overall">Replace 
reflection calls in factories for Java 9+</action>
+            <action type="fix" fixes-bug="64044" context="POI_Overall">Fix 
issue with setCellValue(LocalDate) not supporting nulls properly</action>
+            <action type="fix" fixes-bug="64088" context="SL_Common 
XSLF">SlideShow rendering fixes</action>
+            <action type="fix" fixes-bug="64098" context="XWPF">XWPFRun: 
Whitespace in text not preserved if starting with tab character.</action>
+            <action type="fix" fixes-bug="64108" context="POI_Overall">unsafe 
pipe character ("|") in Relationship target attribute is not being encoded into 
a '%7C'.</action>
+            <action type="fix" fixes-bug="github-166" context="XDDF">Expose 
invert if negative on bar charts</action>
+            <action type="fix" fixes-bug="63998" context="HSSF">Support 
commas, exclamation marks correctly in AreaReference</action>
+            <action type="fix" fixes-bug="64045" context="XSSF">XSSFWorkbook 
constructor doesn't close ZipFile if an exception occurs</action>
+            <action type="fix" fixes-bug="64130" context="HSSF">Regression in 
OldSheetRecord</action>
+        </actions>
     </release>
 
     <release version="4.1.1" date="2019-10-20">
-      <summary>
-        <summary-item>XSSF: Memory improvements which use much less memory 
while writing large xlsx files</summary-item>
-        <summary-item>XDDF: Improved chart support: more types and some API 
changes around angles and width units</summary-item>
-        <summary-item>updated dependencies to Bouncycastle 1.62, Commons-Codec 
1.13, Commons-Collections4 4.4, Commons-Compress 1.19</summary-item>
-        <summary-item>XWPF: Additional API methods</summary-item>
-        <summary-item>XSSF: Fixes to XSSFSheet.addMergedRegion() and 
XSSFRow.shiftRows()</summary-item>
-        <summary-item>EMF/HSLF: Rendering fixes</summary-item>
-        <summary-item>CVE-2019-12415 - XML External Entity (XXE) Processing in 
Apache POI</summary-item>
-      </summary>
-      <actions>
-        <action type="add" fixes-bug="63774" context="POI_Overall">Cache pids 
to speed up custom properties "add" method</action>
-        <action type="add" fixes-bug="63779" context="SS_Common">Add support 
for the new Java date/time API added in Java 8</action>
-        <action type="fix" fixes-bug="59322" context="HWPF">Avoid 
NullPointerException when reading Word Document with tables and a cell with a 
null descriptor</action>
-        <action type="fix" fixes-bug="61490" context="HWPF">Read cells of 
tables correctly in cases where the last cell is not 'fake'</action>
-        <action type="fix" context="HWPF">Do not use WeakReference for parents 
in Ranges to avoid spurious failures in tests</action>
-        <action type="fix" fixes-bug="63657" context="XSSF">Fix regression 
with memory usage in XSSFRow.onDocumentWrite and some other temporary memory 
leaks</action>
-        <action type="fix" fixes-bug="63842" 
context="SS_Common">FractionFormat casts whole part of the value into 
'int'</action>
-        <action type="fix" fixes-bug="63818" context="HSLF">Allow multiple 
charsets for same font typeface</action>
-        <action type="fix" fixes-bug="63768" context="XSSF">XSSFExportToXml 
adjust settings on SchemaFactory</action>
-        <action type="fix" fixes-bug="63541" 
context="XSLF">NullPointerException from XSLFSimpleShape.getAnchor for empty 
xfrm tags</action>
-        <action type="add" fixes-bug="63745" context="POI_Overall">Add 
traversing and debugging interface</action>
-        <action type="fix" fixes-bug="57423,62711" context="XSSF">Fix 
regression when XSSFRow.shiftRows() is used</action>
-        <action type="fix" fixes-bug="63580" context="SL_Common HSLF XSLF">Fix 
texture paint handling</action>
-        <action type="fix" fixes-bug="59004" context="HSLF">HSLF rendering - 
adjust values for presetShapeDefinition differs in HSLF/XSLF</action>
-        <action type="fix" context="HSLF">Don't fallback to master shape 
properties, if master shape is not assigned</action>
-        <action type="add" context="POI_Overall">Add a 
ThreadLocalUtil.clearAllThreadLocals which can be used to clear 
thread-locals</action>
-        <action type="fix" fixes-bug="63371" 
context="XSSF">XSSFSheet.addMergedRegion should adjust count of merged 
cells</action>
-        <action type="fix" fixes-bug="63073" context="XSSF">Return value of 
XSSFSheet.addMergedRegion is off by one</action>
-        <action type="fix" fixes-bug="54803" context="OPC">Error opening XLSX 
after saving with a Drawing using POI</action>
-        <action type="add" fixes-bug="github-135" context="XDDF">Support to 
create new chart without reading template</action>
-        <action type="add" fixes-bug="github-143" 
context="HPSF">MAPIType.isFixedLength: not true in case of length > 8</action>
-        <action type="add" fixes-bug="github-144" context="XDDF">Support for 
seven new chart types</action>
-        <action type="add" fixes-bug="github-149" context="HSMF">improve 
MAPIMessage.getHtmlBody</action>
-        <action type="add" fixes-bug="github-150" context="XWPF">Add 
XWPFPicture getWidth and getDepth methods</action>
-        <action type="add" fixes-bug="github-151" context="XWPF">Add XWPFRun 
getStyle method</action>
-        <action type="add" fixes-bug="github-152" context="XWPF">Add 
XWPFParagraph setKeepNext method</action>
-        <action type="add" fixes-bug="github-153" context="XWPF">Add 
XWPFParagraph createHyperlinkRun method</action>
-        <action type="add" fixes-bug="github-154" context="SXSSF">Improved 
support for writing large files</action>
-        <action type="add" fixes-bug="github-157" context="OOXML">Add setters 
to POIXMLProperties</action>
-        <action type="fix" fixes-bug="63153" context="XDDF">Enable safe 
removal of data series from charts</action>
-        <action type="fix" fixes-bug="59623" context="XDDF">Provide example of 
threshold line in bar chart</action>
-      </actions>
+        <summary>
+            <summary-item>XSSF: Memory improvements which use much less memory 
while writing large xlsx files</summary-item>
+            <summary-item>XDDF: Improved chart support: more types and some 
API changes around angles and width units</summary-item>
+            <summary-item>updated dependencies to Bouncycastle 1.62, 
Commons-Codec 1.13, Commons-Collections4 4.4, Commons-Compress 
1.19</summary-item>
+            <summary-item>XWPF: Additional API methods</summary-item>
+            <summary-item>XSSF: Fixes to XSSFSheet.addMergedRegion() and 
XSSFRow.shiftRows()</summary-item>
+            <summary-item>EMF/HSLF: Rendering fixes</summary-item>
+            <summary-item>CVE-2019-12415 - XML External Entity (XXE) 
Processing in Apache POI</summary-item>
+        </summary>
+        <actions>
+            <action type="add" fixes-bug="63774" context="POI_Overall">Cache 
pids to speed up custom properties "add" method</action>
+            <action type="add" fixes-bug="63779" context="SS_Common">Add 
support for the new Java date/time API added in Java 8</action>
+            <action type="fix" fixes-bug="59322" context="HWPF">Avoid 
NullPointerException when reading Word Document with tables and a cell with a 
null descriptor</action>
+            <action type="fix" fixes-bug="61490" context="HWPF">Read cells of 
tables correctly in cases where the last cell is not 'fake'</action>
+            <action type="fix" context="HWPF">Do not use WeakReference for 
parents in Ranges to avoid spurious failures in tests</action>
+            <action type="fix" fixes-bug="63657" context="XSSF">Fix regression 
with memory usage in XSSFRow.onDocumentWrite and some other temporary memory 
leaks</action>
+            <action type="fix" fixes-bug="63842" 
context="SS_Common">FractionFormat casts whole part of the value into 
'int'</action>
+            <action type="fix" fixes-bug="63818" context="HSLF">Allow multiple 
charsets for same font typeface</action>
+            <action type="fix" fixes-bug="63768" 
context="XSSF">XSSFExportToXml adjust settings on SchemaFactory</action>
+            <action type="fix" fixes-bug="63541" 
context="XSLF">NullPointerException from XSLFSimpleShape.getAnchor for empty 
xfrm tags</action>
+            <action type="add" fixes-bug="63745" context="POI_Overall">Add 
traversing and debugging interface</action>
+            <action type="fix" fixes-bug="57423,62711" context="XSSF">Fix 
regression when XSSFRow.shiftRows() is used</action>
+            <action type="fix" fixes-bug="63580" context="SL_Common HSLF 
XSLF">Fix texture paint handling</action>
+            <action type="fix" fixes-bug="59004" context="HSLF">HSLF rendering 
- adjust values for presetShapeDefinition differs in HSLF/XSLF</action>
+            <action type="fix" context="HSLF">Don't fallback to master shape 
properties, if master shape is not assigned</action>
+            <action type="add" context="POI_Overall">Add a 
ThreadLocalUtil.clearAllThreadLocals which can be used to clear 
thread-locals</action>
+            <action type="fix" fixes-bug="63371" 
context="XSSF">XSSFSheet.addMergedRegion should adjust count of merged 
cells</action>
+            <action type="fix" fixes-bug="63073" context="XSSF">Return value 
of XSSFSheet.addMergedRegion is off by one</action>
+            <action type="fix" fixes-bug="54803" context="OPC">Error opening 
XLSX after saving with a Drawing using POI</action>
+            <action type="add" fixes-bug="github-135" context="XDDF">Support 
to create new chart without reading template</action>
+            <action type="add" fixes-bug="github-143" 
context="HPSF">MAPIType.isFixedLength: not true in case of length > 8</action>
+            <action type="add" fixes-bug="github-144" context="XDDF">Support 
for seven new chart types</action>
+            <action type="add" fixes-bug="github-149" context="HSMF">improve 
MAPIMessage.getHtmlBody</action>
+            <action type="add" fixes-bug="github-150" context="XWPF">Add 
XWPFPicture getWidth and getDepth methods</action>
+            <action type="add" fixes-bug="github-151" context="XWPF">Add 
XWPFRun getStyle method</action>
+            <action type="add" fixes-bug="github-152" context="XWPF">Add 
XWPFParagraph setKeepNext method</action>
+            <action type="add" fixes-bug="github-153" context="XWPF">Add 
XWPFParagraph createHyperlinkRun method</action>
+            <action type="add" fixes-bug="github-154" context="SXSSF">Improved 
support for writing large files</action>
+            <action type="add" fixes-bug="github-157" context="OOXML">Add 
setters to POIXMLProperties</action>
+            <action type="fix" fixes-bug="63153" context="XDDF">Enable safe 
removal of data series from charts</action>
+            <action type="fix" fixes-bug="59623" context="XDDF">Provide 
example of threshold line in bar chart</action>
+        </actions>
     </release>
 
     <release version="4.1.0" date="2019-04-09">
-      <summary>
-        <summary-item>Improved support/fixes for Java 9+ and IBM 
JVM</summary-item>
-        <summary-item>New EMF renderer and support of SVG images in 
XSLF</summary-item>
-        <summary-item>Security, stability and memory/resource handling 
improvements</summary-item>
-        <summary-item>Various bug fixes across function and conditional format 
rule evaluation</summary-item>
-        <summary-item>Upgrade to XMLBeans 3.1.0</summary-item>
-        <summary-item>Upgrade to Bouncycastle 1.61</summary-item>
-        <summary-item>Upgrade to Curvesapi 1.06</summary-item>
-        <summary-item>Upgrade to Commons-Codec 1.12</summary-item>
-        <summary-item>Upgrade to Commons-Collections4 4.3</summary-item>
-        <summary-item>Upgrade to XMLSec 2.1.2</summary-item>
-      </summary>
-      <actions>
-        <action type="fix" fixes-bug="63200" context="XSLF">Avoid a possible 
NullPointerException in XSLFShape.selectPaint()</action>
-        <action type="add" fixes-bug="60724" context="SS_Common">Implement 
'ignore hidden rows' variations for existing implemented variants</action>
-        <action type="fix" fixes-bug="63264" context="SS_Common">Conditional 
Format rule evaluation calculates relative references incorrectly</action>
-        <action type="fix" fixes-bug="61652" context="SS_Common">Fix NPE in 
EDATE function when date evaluates to an invalid value</action>
-        <action type="fix" fixes-bug="62151" context="POIFS">Work around 
illegal reflective access in Java 9+ when freeing buffers</action>
-        <action type="add" fixes-bug="63029" context="OPC">OPCPackage 
Potentially clobbers files on close()</action>
-        <action type="add" fixes-bug="62980" context="SS_Common XSSF 
HSSF">Make D* functions ignore case in headings </action>
-        <action type="fix" fixes-bug="60977" context="XSSF">Adding custom 
properties creates invalid .xlsx file on second write</action>
-        <action type="fix" fixes-bug="60460" context="SL_Common">Null pointer 
exception in ExternSheetNameResolver.prependSheetName method</action>
-        <action type="fix" fixes-bug="60845" context="XSSF">Fix copying 
styles/conditional formatting</action>
-        <action type="add" fixes-bug="63054" context="SS_Common XSSF 
HSSF">Improved evaluation of array formulas with errors in arguments</action>
-        <action type="fix" fixes-bug="63047" context="POI_Overall">Make 
POILogger subclassable</action>
-        <action type="add" fixes-bug="62904" context="SS_Common XSSF 
HSSF">Support array arguments in IF and logical IS*** functions</action>
-        <action type="add" fixes-bug="63028" context="SL_Common XSLF 
HSLF">Provide font embedding for slideshows</action>
-        <action type="fix" fixes-bug="61532" context="SXSSF">Fix setting 
values/types during formula evaluation for SXSSF</action>
-        <action type="fix" fixes-bug="62629" context="OPC">Allow to handle 
files with invalid content types for pictures</action>
-        <action type="fix" fixes-bug="62839" context="SL_Common">Fix 
MathX.floor for negative n</action>
-        <action type="fix" fixes-bug="62884" context="SL_Common">Sheetnum is 
not checked in InternalWorkbook.setSheetHidden()</action>
-        <action type="fix" fixes-bug="62886" context="OPC">Regression 
extracting text from corrupted docx files</action>
-        <action type="add" fixes-bug="63017" context="SL_Common XSLF">Remove 
rows from a XSLFTable</action>
-        <action type="add" fixes-bug="60656" context="SL_Common XSLF HSLF">EMF 
image support in slideshows</action>
-        <action type="add" fixes-bug="62365" context="XSLF">SVG image support 
in XSLF</action>
-        <action type="add" fixes-bug="github-136" context="XSSF">Support 
GEOMEAN function</action>
-        <action type="fix" fixes-bug="63011" context="OPC">Multiple digital 
signature in excel file broke first signature</action>
-        <action type="fix" fixes-bug="62999" context="SL_Common">IBM JDK JIT 
causes AIOOBE in TexturePaintContext</action>
-        <action type="fix" fixes-bug="62994" context="POI_Overall">IBM JCE 
workarounds</action>
-        <action type="fix" fixes-bug="62966" context="SL_Common">init 
presetShapeDefinitions.xml fail under IBM jdk</action>
-        <action type="fix" fixes-bug="62953" context="SL_Common XSLF 
HSLF">Rendering of FreeformShapes with formula fails</action>
-        <action type="fix" fixes-bug="63005" context="POI_Overall">Remove 
support for reading files that have XML entity definitions</action>
-        <action type="fix" fixes-bug="63013" context="XWPF">add XWPFRun 
setLang method</action>
-        <action type="fix" fixes-bug="63240" context="XSSF">Remove unnecessary 
synchronization on DocumentHelper.newDocumentBuilder and 
SAXHelper.newXMLReader</action>
-        <action type="fix" fixes-bug="61652" context="SS_Common">Fix NPE in 
EDATE function when date evaluates to an invalid value</action>
-        <action type="fix" fixes-bug="63264" context="SS_Common">Conditional 
Format rule evaluation calculates relative references incorrectly</action>
-        <action type="add" fixes-bug="60724" context="SS_Common">Implement 
'ignore hidden rows' variations for existing SUBTOTAL function variants</action>
-        <action type="fix" fixes-bug="63268" context="SS_Common">Fix issue 
with CellUtil.setFont adding unnecessary styles</action>
-        <action type="fix" fixes-bug="61700" 
context="SS_Common">getForceFormulaRecalculation() returns wrong value</action>
-        <action type="fix" fixes-bug="63292" 
context="SS_Common">DataFormatter.formatCellValue() ignores use1904Windowing 
w/4-part date formats</action>
-      </actions>
+        <summary>
+            <summary-item>Improved support/fixes for Java 9+ and IBM 
JVM</summary-item>
+            <summary-item>New EMF renderer and support of SVG images in 
XSLF</summary-item>
+            <summary-item>Security, stability and memory/resource handling 
improvements</summary-item>
+            <summary-item>Various bug fixes across function and conditional 
format rule evaluation</summary-item>
+            <summary-item>Upgrade to XMLBeans 3.1.0</summary-item>
+            <summary-item>Upgrade to Bouncycastle 1.61</summary-item>
+            <summary-item>Upgrade to Curvesapi 1.06</summary-item>
+            <summary-item>Upgrade to Commons-Codec 1.12</summary-item>
+            <summary-item>Upgrade to Commons-Collections4 4.3</summary-item>
+            <summary-item>Upgrade to XMLSec 2.1.2</summary-item>
+        </summary>
+        <actions>
+            <action type="fix" fixes-bug="63200" context="XSLF">Avoid a 
possible NullPointerException in XSLFShape.selectPaint()</action>
+            <action type="add" fixes-bug="60724" context="SS_Common">Implement 
'ignore hidden rows' variations for existing implemented variants</action>
+            <action type="fix" fixes-bug="63264" 
context="SS_Common">Conditional Format rule evaluation calculates relative 
references incorrectly</action>
+            <action type="fix" fixes-bug="61652" context="SS_Common">Fix NPE 
in EDATE function when date evaluates to an invalid value</action>
+            <action type="fix" fixes-bug="62151" context="POIFS">Work around 
illegal reflective access in Java 9+ when freeing buffers</action>
+            <action type="add" fixes-bug="63029" context="OPC">OPCPackage 
Potentially clobbers files on close()</action>
+            <action type="add" fixes-bug="62980" context="SS_Common XSSF 
HSSF">Make D* functions ignore case in headings</action>
+            <action type="fix" fixes-bug="60977" context="XSSF">Adding custom 
properties creates invalid .xlsx file on second write</action>
+            <action type="fix" fixes-bug="60460" context="SL_Common">Null 
pointer exception in ExternSheetNameResolver.prependSheetName method</action>
+            <action type="fix" fixes-bug="60845" context="XSSF">Fix copying 
styles/conditional formatting</action>
+            <action type="add" fixes-bug="63054" context="SS_Common XSSF 
HSSF">Improved evaluation of array formulas with errors in arguments</action>
+            <action type="fix" fixes-bug="63047" context="POI_Overall">Make 
POILogger subclassable</action>
+            <action type="add" fixes-bug="62904" context="SS_Common XSSF 
HSSF">Support array arguments in IF and logical IS*** functions</action>
+            <action type="add" fixes-bug="63028" context="SL_Common XSLF 
HSLF">Provide font embedding for slideshows</action>
+            <action type="fix" fixes-bug="61532" context="SXSSF">Fix setting 
values/types during formula evaluation for SXSSF</action>
+            <action type="fix" fixes-bug="62629" context="OPC">Allow to handle 
files with invalid content types for pictures</action>
+            <action type="fix" fixes-bug="62839" context="SL_Common">Fix 
MathX.floor for negative n</action>
+            <action type="fix" fixes-bug="62884" context="SL_Common">Sheetnum 
is not checked in InternalWorkbook.setSheetHidden()</action>
+            <action type="fix" fixes-bug="62886" context="OPC">Regression 
extracting text from corrupted docx files</action>
+            <action type="add" fixes-bug="63017" context="SL_Common 
XSLF">Remove rows from a XSLFTable</action>
+            <action type="add" fixes-bug="60656" context="SL_Common XSLF 
HSLF">EMF image support in slideshows</action>
+            <action type="add" fixes-bug="62365" context="XSLF">SVG image 
support in XSLF</action>
+            <action type="add" fixes-bug="github-136" context="XSSF">Support 
GEOMEAN function</action>
+            <action type="fix" fixes-bug="63011" context="OPC">Multiple 
digital signature in excel file broke first signature</action>
+            <action type="fix" fixes-bug="62999" context="SL_Common">IBM JDK 
JIT causes AIOOBE in TexturePaintContext</action>
+            <action type="fix" fixes-bug="62994" context="POI_Overall">IBM JCE 
workarounds</action>
+            <action type="fix" fixes-bug="62966" context="SL_Common">init 
presetShapeDefinitions.xml fail under IBM jdk</action>
+            <action type="fix" fixes-bug="62953" context="SL_Common XSLF 
HSLF">Rendering of FreeformShapes with formula fails</action>
+            <action type="fix" fixes-bug="63005" context="POI_Overall">Remove 
support for reading files that have XML entity definitions</action>
+            <action type="fix" fixes-bug="63013" context="XWPF">add XWPFRun 
setLang method</action>
+            <action type="fix" fixes-bug="63240" context="XSSF">Remove 
unnecessary synchronization on DocumentHelper.newDocumentBuilder and 
SAXHelper.newXMLReader</action>
+            <action type="fix" fixes-bug="61652" context="SS_Common">Fix NPE 
in EDATE function when date evaluates to an invalid value</action>
+            <action type="fix" fixes-bug="63264" 
context="SS_Common">Conditional Format rule evaluation calculates relative 
references incorrectly</action>
+            <action type="add" fixes-bug="60724" context="SS_Common">Implement 
'ignore hidden rows' variations for existing SUBTOTAL function variants</action>
+            <action type="fix" fixes-bug="63268" context="SS_Common">Fix issue 
with CellUtil.setFont adding unnecessary styles</action>
+            <action type="fix" fixes-bug="61700" 
context="SS_Common">getForceFormulaRecalculation() returns wrong value</action>
+            <action type="fix" fixes-bug="63292" 
context="SS_Common">DataFormatter.formatCellValue() ignores use1904Windowing 
w/4-part date formats</action>
+        </actions>
     </release>
 
     <release version="4.0.1" date="2018-12-03">
-      <summary>
-        <summary-item>Fixes pom.xml entries for commons-maths3 (missing), 
curvesapi and commons-codec</summary-item>
-        <summary-item>Improvements for XDDF charts and text 
manipulation</summary-item>
-        <summary-item>Upgrade to XMLBeans 3.0.2</summary-item>
-      </summary>
-      <actions>
-        <action type="fix" fixes-bug="59773" context="POI_Overall">Move loop 
invariants outside of loop for faster execution</action>
-        <action type="fix" fixes-bug="59834" context="POI_Overall">poi-ooxml 
pom.xml should include dependency on poi-scratchpad</action>
-        <action type="fix" fixes-bug="62690" context="POI_Overall">Missing 
Maven dependency to commons-math3</action>
-        <action type="fix" fixes-bug="62692" context="OPC">WildFly XML parser 
not properly supported - Property 
'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not 
recognized </action>
-        <action type="fix" fixes-bug="62699" context="POI_Overall">Download 
page must link to https://www.apache.org/dist/poi/KEYS</action>
-        <action type="fix" fixes-bug="62733" context="XSLF">XSLFBackground 
setFill() can corrupt the document</action>
-        <action type="fix" fixes-bug="62735" context="XSSF">poi-ooxml 4.0.0 
should have dependency on curvesapi 1.05</action>
-        <action type="fix" fixes-bug="62740" context="XSSF">XSSFTable 
constructor automatically assigns invalid (non-unique) column IDs</action>
-        <action type="fix" fixes-bug="62768" context="OPC">OPCPackage#close() 
method is incorrectly synchronized</action>
-        <action type="fix" fixes-bug="62796" context="POI_Overall">Remove XML 
Event parser code from PackagePropertiesMarshaller</action>
-        <action type="fix" fixes-bug="62800" context="XSLF">Fix null pointer 
exception if a picture shape has no blip id</action>
-        <action type="fix" fixes-bug="62805" context="POI_Overall">Fix 
Old-Xerces build issues</action>
-        <action type="fix" fixes-bug="62805" 
context="XSLF">XSLFTableCell#removeBorder(BorderEdge.right) removes the bottom 
edge not the right edge.</action>
-        <action type="fix" fixes-bug="62811" context="POI_Overall">POI 
Encryption didn't work with 4.0.0 but did work with 3.17 </action>
-        <action type="fix" fixes-bug="62951" context="POI_Overall">FileMagic 
not correctly identified</action>
-        <action type="fix" fixes-bug="62949" context="SL_Common">SlideShow 
rendering - keyframe fractions must be increasing</action>
-        <action type="fix" fixes-bug="62921" context="POI_Overall">Provide 
OOXMLLite alternative for Java 12+</action>
-        <action type="fix" fixes-bug="62625" context="POI_Overall">Handle 
off-spec, variant REFERENCE_NAME record structure in VBAMacroReader</action>
-        <action type="fix" fixes-bug="62624" context="POI_Overall">Handle 
module name mapping in VBAMacroReader</action>
-        <action type="fix" fixes-bug="62836" context="SS_Common">Support TREND 
function</action>
-        <action type="fix" fixes-bug="62859" context="XWPF">Rare NPE while 
creating XWPFSDTContent</action>
-        <action type="add" fixes-bug="62373" context="SS_Common">Support for 
FREQUENCY function</action>
-        <action type="fix" fixes-bug="62831" 
context="POI_Overall">WorkbookFactory.create support for subclass of File, eg 
from JFileChooser</action>
-        <action type="fix" fixes-bug="62815" context="XSSF">XLSB number 
extraction improvements</action>
-        <action type="fix" fixes-bug="62373" context="SS_Common">Support 
FREQUENCY function</action>
-        <action type="fix" fixes-bug="62742" context="POI_Overall">Add 
common-compress jar to bin zip/tgz</action>
-        <action type="fix" fixes-bug="62747" context="POI_Overall">Upgrade 
bouncycastle dependency to 1.60</action>
-        <action type="fix" fixes-bug="62736" context="XWPF">Relations on 
XSLFPictureShape were removed unconditionally</action>
-        <action type="add" fixes-bug="github-109" context="XDDF">Define XDDF 
user model for text body, its paragraphs and text runs</action>
-        <action type="add" fixes-bug="github-123" context="XSSF">Import chart 
on drawing</action>
-        <action type="fix" fixes-bug="62746" context="XDDF">Support axIds in 
XDDF</action>
-        <action type="fix" fixes-bug="60509" 
context="XSSF">XSSFWorkbook.setSheetName() does not update references in 
charts</action>
-        <action type="fix" fixes-bug="59625" context="XWPF">Localisation 
(Internationalisation in other languages) when applied in charts corrupt the MS 
Word file</action>
-      </actions>
+        <summary>
+            <summary-item>Fixes pom.xml entries for commons-maths3 (missing), 
curvesapi and commons-codec</summary-item>
+            <summary-item>Improvements for XDDF charts and text 
manipulation</summary-item>
+            <summary-item>Upgrade to XMLBeans 3.0.2</summary-item>
+        </summary>
+        <actions>
+            <action type="fix" fixes-bug="59773" context="POI_Overall">Move 
loop invariants outside of loop for faster execution</action>
+            <action type="fix" fixes-bug="59834" 
context="POI_Overall">poi-ooxml pom.xml should include dependency on 
poi-scratchpad</action>
+            <action type="fix" fixes-bug="62690" context="POI_Overall">Missing 
Maven dependency to commons-math3</action>
+            <action type="fix" fixes-bug="62692" context="OPC">WildFly XML 
parser not properly supported - Property 
'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not 
recognized</action>
+            <action type="fix" fixes-bug="62699" 
context="POI_Overall">Download page must link to 
https://www.apache.org/dist/poi/KEYS</action>
+            <action type="fix" fixes-bug="62733" context="XSLF">XSLFBackground 
setFill() can corrupt the document</action>
+            <action type="fix" fixes-bug="62735" context="XSSF">poi-ooxml 
4.0.0 should have dependency on curvesapi 1.05</action>
+            <action type="fix" fixes-bug="62740" context="XSSF">XSSFTable 
constructor automatically assigns invalid (non-unique) column IDs</action>
+            <action type="fix" fixes-bug="62768" 
context="OPC">OPCPackage#close() method is incorrectly synchronized</action>
+            <action type="fix" fixes-bug="62796" context="POI_Overall">Remove 
XML Event parser code from PackagePropertiesMarshaller</action>
+            <action type="fix" fixes-bug="62800" context="XSLF">Fix null 
pointer exception if a picture shape has no blip id</action>
+            <action type="fix" fixes-bug="62805" context="POI_Overall">Fix 
Old-Xerces build issues</action>
+            <action type="fix" fixes-bug="62805" 
context="XSLF">XSLFTableCell#removeBorder(BorderEdge.right) removes the bottom 
edge not the right edge.</action>
+            <action type="fix" fixes-bug="62811" context="POI_Overall">POI 
Encryption didn't work with 4.0.0 but did work with 3.17</action>
+            <action type="fix" fixes-bug="62951" 
context="POI_Overall">FileMagic not correctly identified</action>
+            <action type="fix" fixes-bug="62949" context="SL_Common">SlideShow 
rendering - keyframe fractions must be increasing</action>
+            <action type="fix" fixes-bug="62921" context="POI_Overall">Provide 
OOXMLLite alternative for Java 12+</action>
+            <action type="fix" fixes-bug="62625" context="POI_Overall">Handle 
off-spec, variant REFERENCE_NAME record structure in VBAMacroReader</action>
+            <action type="fix" fixes-bug="62624" context="POI_Overall">Handle 
module name mapping in VBAMacroReader</action>
+            <action type="fix" fixes-bug="62836" context="SS_Common">Support 
TREND function</action>
+            <action type="fix" fixes-bug="62859" context="XWPF">Rare NPE while 
creating XWPFSDTContent</action>
+            <action type="add" fixes-bug="62373" context="SS_Common">Support 
for FREQUENCY function</action>
+            <action type="fix" fixes-bug="62831" 
context="POI_Overall">WorkbookFactory.create support for subclass of File, eg 
from JFileChooser</action>
+            <action type="fix" fixes-bug="62815" context="XSSF">XLSB number 
extraction improvements</action>
+            <action type="fix" fixes-bug="62373" context="SS_Common">Support 
FREQUENCY function</action>
+            <action type="fix" fixes-bug="62742" context="POI_Overall">Add 
common-compress jar to bin zip/tgz</action>
+            <action type="fix" fixes-bug="62747" context="POI_Overall">Upgrade 
bouncycastle dependency to 1.60</action>
+            <action type="fix" fixes-bug="62736" context="XWPF">Relations on 
XSLFPictureShape were removed unconditionally</action>
+            <action type="add" fixes-bug="github-109" context="XDDF">Define 
XDDF user model for text body, its paragraphs and text runs</action>
+            <action type="add" fixes-bug="github-123" context="XSSF">Import 
chart on drawing</action>
+            <action type="fix" fixes-bug="62746" context="XDDF">Support axIds 
in XDDF</action>
+            <action type="fix" fixes-bug="60509" 
context="XSSF">XSSFWorkbook.setSheetName() does not update references in 
charts</action>
+            <action type="fix" fixes-bug="59625" context="XWPF">Localisation 
(Internationalisation in other languages) when applied in charts corrupt the MS 
Word file</action>
+        </actions>
     </release>
+
     <release version="4.0.0" date="2018-09-07">
-      <summary>
-        <summary-item>Removed support for Java 6 and 7 making Java 8 the 
minimum version supported</summary-item>
-        <summary-item>New OOXML schema (1.4) necessary, because of 
incompatible XMLBeans loading not anymore through 
POIXMLTypeLoader</summary-item>
-      </summary>
-      <actions>
-        <action type="remove" fixes-bug="62649" breaks-compatibility="true" 
context="POIFS">Remove OPOIFS*</action>
-        <action type="fix" fixes-bug="61589" context="XSLF">Importing content 
does not copy hyperlink address</action>
-        <action type="fix" fixes-bug="62587" context="XSLF">repeated call to 
XSLFSheet.removeShape leads to java.lang.IllegalArgumentException: 
partName</action>
-        <action type="fix" fixes-bug="62513" context="OOXML">Don't try to 
parse embedded package relationships</action>
-        <action type="add" fixes-bug="59268" context="OOXML">Work on providing 
an updated version of XMLBeans</action>
-        <action type="fix" fixes-bug="62451" context="HPSF">Document last 
printed in the year 27321</action>
-        <action type="fix" fixes-bug="60713" breaks-compatibility="true" 
context="SXSSF XSSF OPC">(S)XSSFWorkbook/POIXMLDocument.write(OutputStream) 
closes the OutputStream</action>
-        <action type="add" fixes-bug="62452" context="OPC">Extract 
configuration while verifying XML signatures</action>
-        <action type="fix" fixes-bug="62187" breaks-compatibility="true" 
context="OPC">Compiling with Java 10 fails with ClassCastException / use 
commons-compress</action>
-        <action type="fix" fixes-bug="62355" breaks-compatibility="true" 
context="POI_Overall">Unsplit packages for Jigsaw / Java 9 
compatibility</action>
-        <action type="fix" fixes-bug="62041" context="SL_Common">TestFonts 
fails on Mac</action>
-        <action type="fix" fixes-bug="62051" context="XSLF">Two shapes have 
the same shapeId within the same slide</action>
-        <action type="fix" fixes-bug="61633" context="XSLF">Zero width shapes 
aren't rendered</action>
-        <action type="add" fixes-bug="62037" context="SL_Common">SlideNames 
should not be null but have a default as if accessed by VBA</action>
-        <action type="fix" fixes-bug="62381" context="SL_Common">Fix rendering 
of AutoShapes</action>
-        <action type="fix" fixes-bug="59893" context="POI_Overall">Forbid 
calls to InputStream.available</action>
-        <action type="fix" fixes-bug="61905" 
context="HSSF">HSSFWorkbook.setActiveCell() does not actually make the cell 
selected in Excel</action>
-        <action type="fix" fixes-bug="61459" 
context="HSLF">HSLFShape.getShapeName() returns name of shapeType and not the 
shape name</action>
-        <action type="add" fixes-bug="62319" breaks-compatibility="true" 
context="SL_Common">Decommission XSLF-/PowerPointExtractor</action>
-        <action type="add" fixes-bug="62092" context="SL_Common">Text not 
extracted from grouped text shapes in HSLF</action>
-        <action type="add" fixes-bug="62159" context="OPC">Support XML 
signature over windows certificate store</action>
-        <action type="add" fixes-bug="57369" context="XDDF">Add support for 
major and minor units on chart axes</action>
-        <action type="add" fixes-bug="55954" context="XWPF">Added methods to 
position table</action>
-        <action type="add" fixes-bug="61947" context="POI_Overall">Remove 
deprecated classes (POI 4.0.0)</action>
-        <action type="add" fixes-bug="55954" context="XWPF">Add functions to 
get, set, remove outer borders for tables</action>
-        <action type="add" fixes-bug="github-72" context="XDDF">Define XDDF 
user model for shape properties to be shared between XSLF, XSSF and 
XWPF</action>
-        <action type="add" fixes-bug="61543" breaks-compatibility="true" 
context="XSSF">Do not fail with "part already exists" when tables are 
created/removed</action>
-        <action type="add" fixes-bug="61550" breaks-compatibility="true" 
context="POI_Overall">Add more information to exception text and verify that it 
is thrown</action>
-        <action type="add" fixes-bug="61609" breaks-compatibility="true" 
context="POI_Overall">Add .gitattribute file and set lf for one 
sample-file</action>
-        <action type="add" fixes-bug="61797" breaks-compatibility="true" 
context="SL_Common">Embed Excel / Ole objects into powerpoint</action>
-        <action type="fix" fixes-bug="61943" context="SL_Common">narrow 
generics definition because of tighter java9 checks</action>
-        <action type="add" fixes-bug="61942" context="OPC">Refactor 
PackagePartName handling and add getUnusedPartIndex method</action>
-        <action type="fix" fixes-bug="61941" context="POIFS">Move Ole marker 
generation to Ole10Native</action>
-        <action type="fix" fixes-bug="61940" context="POI_Overall">Replace 
ClassID statics with enum</action>
-        <action type="add" fixes-bug="61939" context="OPC">Provide schema for 
AlternateContent - provide new ooxml-schemas-1.4.jar</action>
-        <action type="fix" fixes-bug="61787" context="HSSF">Change how deleted 
content is detected to not incorrectly see too much text as deleted, this was 
introduced with bug 58067</action>
-        <action type="fix" fixes-bug="61798" context="HSSF">Fix usage of 
getLastCellNum() when calculating worksheet dimension during saving</action>
-        <action type="fix" fixes-bug="61911" context="HWPF">Avoid 
IndexOutOfBounds access when reading pictures</action>
-        <action type="fix" fixes-bug="61765" context="HSSF">Support third 
party tool generated files using WorkBook as their POIFS directory name</action>
-        <action type="fix" fixes-bug="61881" context="HSLF">Regression in ppt 
parsing: typeface can't be null or empty</action>
-        <action type="add" fixes-bug="github-68" context="XDDF XSLF XSSF 
XWPF">Share chart data implementation between XSLFChart, XSSFChart and 
XWPFChart through XDDF</action>
-        <action type="fix" fixes-bug="61809" context="HPSF">Infinite loop in 
SectionIDMap.get() and .put()</action>
-        <action type="add" fixes-bug="60887" context="XSSF">Surface XSSF 
Header/Footer Attributes</action>
-        <action type="add" fixes-bug="61730" 
context="SS_Common">CellRangeAddresses support iterating over their 
CellAddresses</action>
-        <action type="fix" fixes-bug="61727" context="SS_Common">CellRangeUtil 
merge cell ranges broken for certain orders of arguments</action>
-        <action type="fix" fixes-bug="57517" context="HSSF">Fix various 
situations that were handled incorrectly in HSSFOptimiser</action>
-        <action type="add" fixes-bug="61671" context="XSLF">XSLFSlide does not 
contain isHidden and setHidden like HSLFSlide does</action>
-        <action type="update" fixes-bug="61630" context="XSSF">Performance 
improvement to XSSFExportToXML</action>
-        <action type="add" fixes-bug="58068" context="XSSF">Add a method to 
pass the actual Color to StylesTable.findFont()</action>
-        <action type="fix" fixes-bug="61096" context="POIFS">Add support for 
modules in VBAMacroReader</action>
-        <action type="fix" fixes-bug="61033" context="XSSF">Add 
XSSFWorkbook.setCellFormulaValidation() to control if formulas are validated 
during Cell.setCellFormula()</action>
-        <action type="fix" fixes-bug="61148" context="SXSSF">Fix 
calculating/setting formula value</action>
-        <action type="fix" fixes-bug="61064" context="SS_Common">Support 
behavior of function CEILING in newer versions of Microsoft Excel</action>
-        <action type="fix" fixes-bug="61516" context="SS_Common">Correctly 
handle references that end up outside the workbook when cells with formulas are 
copied</action>
-        <action type="add" fixes-bug="60737" context="XSSF">Add endSheet() to 
XSSFEventBasedExcelExtractor</action>
-        <action type="fix" fixes-bug="59747" context="OPC">Exchange order of 
writing parts into Zip to allow some tools to handle files better</action>
-        <action type="add" fixes-bug="github-69" context="SS_Common">Support 
matrix functions</action>
-        <action type="fix" fixes-bug="60499" context="OPC">Deleting a picture 
that is used twice on a slide corrupt the slide</action>
-        <action type="fix" fixes-bug="60279" context="POI_Overall">Back-off to 
brute-force search for macro content if macro offset is incorrect</action>
-        <action type="add" fixes-bug="61528" context="XSSF">Pivot table 
enhancements</action>
-        <action type="fix" fixes-bug="61906" context="XSSF">add API for 
working with RichStringText</action>
-        <action type="fix" fixes-bug="61792" context="SS_Common">Avoid 
iterating over chars (use codepoints instead)</action>
-        <action type="fix" fixes-bug="62254" context="SS_Common">Update OFFSET 
function to support optional values</action>
-        <action type="update" fixes-bug="62435" context="XSSF">Rename 
getAllEmbedds method to getAllEmbeddedParts (getAllEmbedds is retained but 
deprecated)</action>
-        <action type="update" fixes-bug="62438" breaks-compatibility="true" 
context="POI_Overall">Replace org.apache.poi.openxml4j.util.Nullable with 
java.lang.Optional</action>
-        <action type="fix" fixes-bug="github-90" context="XSSF">Change default 
DSIG signing algorithm to SHA256</action>
-        <action type="fix" fixes-bug="github-107" context="SS_Common">Support 
AREAS function</action>
-        <action type="fix" fixes-bug="github-110" breaks-compatibility="true" 
context="XWPF">Renames org.apache.poi.xwpf.usermodel.TextSegement to 
org.apache.poi.xwpf.usermodel.TextSegment</action>
-        <action type="fix" fixes-bug="github-114" context="XWPF">Better 
support for Footnotes and Endnotes</action>
-      </actions>
+        <summary>
+            <summary-item>Removed support for Java 6 and 7 making Java 8 the 
minimum version supported</summary-item>
+            <summary-item>New OOXML schema (1.4) necessary, because of 
incompatible XMLBeans loading not anymore through 
POIXMLTypeLoader</summary-item>
+        </summary>
+        <actions>
+            <action type="remove" fixes-bug="62649" 
breaks-compatibility="true" context="POIFS">Remove OPOIFS*</action>
+            <action type="fix" fixes-bug="61589" context="XSLF">Importing 
content does not copy hyperlink address</action>
+            <action type="fix" fixes-bug="62587" context="XSLF">repeated call 
to XSLFSheet.removeShape leads to java.lang.IllegalArgumentException: 
partName</action>
+            <action type="fix" fixes-bug="62513" context="OOXML">Don't try to 
parse embedded package relationships</action>
+            <action type="add" fixes-bug="59268" context="OOXML">Work on 
providing an updated version of XMLBeans</action>
+            <action type="fix" fixes-bug="62451" context="HPSF">Document last 
printed in the year 27321</action>
+            <action type="fix" fixes-bug="60713" breaks-compatibility="true" 
context="SXSSF XSSF OPC">(S)XSSFWorkbook/POIXMLDocument.write(OutputStream) 
closes the OutputStream</action>
+            <action type="add" fixes-bug="62452" context="OPC">Extract 
configuration while verifying XML signatures</action>
+            <action type="fix" fixes-bug="62187" breaks-compatibility="true" 
context="OPC">Compiling with Java 10 fails with ClassCastException / use 
commons-compress</action>
+            <action type="fix" fixes-bug="62355" breaks-compatibility="true" 
context="POI_Overall">Unsplit packages for Jigsaw / Java 9 
compatibility</action>
+            <action type="fix" fixes-bug="62041" context="SL_Common">TestFonts 
fails on Mac</action>
+            <action type="fix" fixes-bug="62051" context="XSLF">Two shapes 
have the same shapeId within the same slide</action>
+            <action type="fix" fixes-bug="61633" context="XSLF">Zero width 
shapes aren't rendered</action>
+            <action type="add" fixes-bug="62037" 
context="SL_Common">SlideNames should not be null but have a default as if 
accessed by VBA</action>
+            <action type="fix" fixes-bug="62381" context="SL_Common">Fix 
rendering of AutoShapes</action>
+            <action type="fix" fixes-bug="59893" context="POI_Overall">Forbid 
calls to InputStream.available</action>
+            <action type="fix" fixes-bug="61905" 
context="HSSF">HSSFWorkbook.setActiveCell() does not actually make the cell 
selected in Excel</action>
+            <action type="fix" fixes-bug="61459" 
context="HSLF">HSLFShape.getShapeName() returns name of shapeType and not the 
shape name</action>
+            <action type="add" fixes-bug="62319" breaks-compatibility="true" 
context="SL_Common">Decommission XSLF-/PowerPointExtractor</action>
+            <action type="add" fixes-bug="62092" context="SL_Common">Text not 
extracted from grouped text shapes in HSLF</action>
+            <action type="add" fixes-bug="62159" context="OPC">Support XML 
signature over windows certificate store</action>
+            <action type="add" fixes-bug="57369" context="XDDF">Add support 
for major and minor units on chart axes</action>
+            <action type="add" fixes-bug="55954" context="XWPF">Added methods 
to position table</action>
+            <action type="add" fixes-bug="61947" context="POI_Overall">Remove 
deprecated classes (POI 4.0.0)</action>
+            <action type="add" fixes-bug="55954" context="XWPF">Add functions 
to get, set, remove outer borders for tables</action>
+            <action type="add" fixes-bug="github-72" context="XDDF">Define 
XDDF user model for shape properties to be shared between XSLF, XSSF and 
XWPF</action>
+            <action type="add" fixes-bug="61543" breaks-compatibility="true" 
context="XSSF">Do not fail with "part already exists" when tables are 
created/removed</action>
+            <action type="add" fixes-bug="61550" breaks-compatibility="true" 
context="POI_Overall">Add more information to exception text and verify that it 
is thrown</action>
+            <action type="add" fixes-bug="61609" breaks-compatibility="true" 
context="POI_Overall">Add .gitattribute file and set lf for one 
sample-file</action>
+            <action type="add" fixes-bug="61797" breaks-compatibility="true" 
context="SL_Common">Embed Excel / Ole objects into powerpoint</action>
+            <action type="fix" fixes-bug="61943" context="SL_Common">narrow 
generics definition because of tighter java9 checks</action>
+            <action type="add" fixes-bug="61942" context="OPC">Refactor 
PackagePartName handling and add getUnusedPartIndex method</action>
+            <action type="fix" fixes-bug="61941" context="POIFS">Move Ole 
marker generation to Ole10Native</action>
+            <action type="fix" fixes-bug="61940" context="POI_Overall">Replace 
ClassID statics with enum</action>
+            <action type="add" fixes-bug="61939" context="OPC">Provide schema 
for AlternateContent - provide new ooxml-schemas-1.4.jar</action>
+            <action type="fix" fixes-bug="61787" context="HSSF">Change how 
deleted content is detected to not incorrectly see too much text as deleted, 
this was introduced with bug 58067</action>
+            <action type="fix" fixes-bug="61798" context="HSSF">Fix usage of 
getLastCellNum() when calculating worksheet dimension during saving</action>
+            <action type="fix" fixes-bug="61911" context="HWPF">Avoid 
IndexOutOfBounds access when reading pictures</action>
+            <action type="fix" fixes-bug="61765" context="HSSF">Support third 
party tool generated files using WorkBook as their POIFS directory name</action>
+            <action type="fix" fixes-bug="61881" context="HSLF">Regression in 
ppt parsing: typeface can't be null or empty</action>
+            <action type="add" fixes-bug="github-68" context="XDDF XSLF XSSF 
XWPF">Share chart data implementation between XSLFChart, XSSFChart and 
XWPFChart through XDDF</action>
+            <action type="fix" fixes-bug="61809" context="HPSF">Infinite loop 
in SectionIDMap.get() and .put()</action>
+            <action type="add" fixes-bug="60887" context="XSSF">Surface XSSF 
Header/Footer Attributes</action>
+            <action type="add" fixes-bug="61730" 
context="SS_Common">CellRangeAddresses support iterating over their 
CellAddresses</action>
+            <action type="fix" fixes-bug="61727" 
context="SS_Common">CellRangeUtil merge cell ranges broken for certain orders 
of arguments</action>
+            <action type="fix" fixes-bug="57517" context="HSSF">Fix various 
situations that were handled incorrectly in HSSFOptimiser</action>
+            <action type="add" fixes-bug="61671" context="XSLF">XSLFSlide does 
not contain isHidden and setHidden like HSLFSlide does</action>
+            <action type="update" fixes-bug="61630" context="XSSF">Performance 
improvement to XSSFExportToXML</action>
+            <action type="add" fixes-bug="58068" context="XSSF">Add a method 
to pass the actual Color to StylesTable.findFont()</action>
+            <action type="fix" fixes-bug="61096" context="POIFS">Add support 
for modules in VBAMacroReader</action>
+            <action type="fix" fixes-bug="61033" context="XSSF">Add 
XSSFWorkbook.setCellFormulaValidation() to control if formulas are validated 
during Cell.setCellFormula()</action>
+            <action type="fix" fixes-bug="61148" context="SXSSF">Fix 
calculating/setting formula value</action>
+            <action type="fix" fixes-bug="61064" context="SS_Common">Support 
behavior of function CEILING in newer versions of Microsoft Excel</action>
+            <action type="fix" fixes-bug="61516" context="SS_Common">Correctly 
handle references that end up outside the workbook when cells with formulas are 
copied</action>
+            <action type="add" fixes-bug="60737" context="XSSF">Add endSheet() 
to XSSFEventBasedExcelExtractor</action>
+            <action type="fix" fixes-bug="59747" context="OPC">Exchange order 
of writing parts into Zip to allow some tools to handle files better</action>
+            <action type="add" fixes-bug="github-69" 
context="SS_Common">Support matrix functions</action>
+            <action type="fix" fixes-bug="60499" context="OPC">Deleting a 
picture that is used twice on a slide corrupt the slide</action>
+            <action type="fix" fixes-bug="60279" 
context="POI_Overall">Back-off to brute-force search for macro content if macro 
offset is incorrect</action>
+            <action type="add" fixes-bug="61528" context="XSSF">Pivot table 
enhancements</action>
+            <action type="fix" fixes-bug="61906" context="XSSF">add API for 
working with RichStringText</action>
+            <action type="fix" fixes-bug="61792" context="SS_Common">Avoid 
iterating over chars (use codepoints instead)</action>
+            <action type="fix" fixes-bug="62254" context="SS_Common">Update 
OFFSET function to support optional values</action>
+            <action type="update" fixes-bug="62435" context="XSSF">Rename 
getAllEmbedds method to getAllEmbeddedParts (getAllEmbedds is retained but 
deprecated)</action>
+            <action type="update" fixes-bug="62438" 
breaks-compatibility="true" context="POI_Overall">Replace 
org.apache.poi.openxml4j.util.Nullable with java.lang.Optional</action>
+            <action type="fix" fixes-bug="github-90" context="XSSF">Change 
default DSIG signing algorithm to SHA256</action>
+            <action type="fix" fixes-bug="github-107" 
context="SS_Common">Support AREAS function</action>
+            <action type="fix" fixes-bug="github-110" 
breaks-compatibility="true" context="XWPF">Renames 
org.apache.poi.xwpf.usermodel.TextSegement to 
org.apache.poi.xwpf.usermodel.TextSegment</action>
+            <action type="fix" fixes-bug="github-114" context="XWPF">Better 
support for Footnotes and Endnotes</action>
+        </actions>
     </release>
 
 </changes>

Modified: poi/site/src/documentation/content/xdocs/encryption.xml
URL: 
http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/encryption.xml?rev=1874671&r1=1874670&r2=1874671&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/encryption.xml (original)
+++ poi/site/src/documentation/content/xdocs/encryption.xml Sun Mar  1 22:20:38 
2020
@@ -226,6 +226,10 @@ try (POIFSFileSystem fs = new POIFSFileS
      </section>
 
      <section><title>XML-based formats - Signing (XML Signature)</title>
+
+     <note>As of <a 
href="https://bz.apache.org/bugzilla/show_bug.cgi?id=64186";>#64186</a> the 
configuration of the
+     OPCPackage has changed, the examples below have been adopted and reflect 
the POI 4.1.3 API</note>
+
      <p>An Office document can be digital signed by a <a 
href="https://en.wikipedia.org/wiki/XML_Signature";>XML Signature</a>
      to protect it from unauthorized modifications, i.e. modifications without 
having the original certificate.
      The current implementation is based on the <!--<a 
href="http://eid-applet.googlecode.com";>eID Applet</a>-->
@@ -248,7 +252,7 @@ try (POIFSFileSystem fs = new POIFSFileS
      integration (testing) with timestamp and revocation (OCSP) services.
      </p>
      <p>Further test examples can be found in the corresponding <a 
href="https://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java?view=markup";>test
 class</a>.</p>
-     
+
      <p>If you want to use a hash algorithm with 64 bytes (currently only 
applies to SHA512),
      <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=42061";>a base64 
"feature"</a> in xmlsec
      leads to line breaks in the digest values, which won't be accepted by 
Office. To workaround this, you
@@ -261,8 +265,8 @@ try (POIFSFileSystem fs = new POIFSFileS
      <source>
 OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ);
 SignatureConfig sic = new SignatureConfig();
-sic.setOpcPackage(pkg);
 SignatureInfo si = new SignatureInfo();
+si.setOpcPackage(pkg);
 si.setSignatureConfig(sic);
 boolean isValid = si.verifySignature();
 ...
@@ -292,11 +296,11 @@ X509Certificate x509 = (X509Certificate)
 SignatureConfig signatureConfig = new SignatureConfig();
 signatureConfig.setKey(keyPair.getPrivate());
 signatureConfig.setSigningCertificateChain(Collections.singletonList(x509));
-OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ_WRITE);
-signatureConfig.setOpcPackage(pkg);
 
 // adding the signature document to the package
 SignatureInfo si = new SignatureInfo();
+OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ_WRITE);
+si.setOpcPackage(pkg);
 si.setSignatureConfig(signatureConfig);
 si.confirmSignature();
 // optionally verify the generated signature
@@ -328,7 +332,7 @@ wb.close();
 // process the
 OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(bos.toByteArray()));
 
-signatureConfig.setOpcPackage(pkg);
+si.setOpcPackage(pkg);
 si.confirmSignature();
 bos.reset();
 pkg.save(bos);

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/OOXMLURIDereferencer.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/OOXMLURIDereferencer.java?rev=1874671&r1=1874670&r2=1874671&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/OOXMLURIDereferencer.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/OOXMLURIDereferencer.java
 Sun Mar  1 22:20:38 2020
@@ -18,9 +18,9 @@
 /* ====================================================================
    This product contains an ASLv2 licensed version of the OOXML signer
    package from the eID Applet project
-   http://code.google.com/p/eid-applet/source/browse/trunk/README.txt  
+   http://code.google.com/p/eid-applet/source/browse/trunk/README.txt
    Copyright (C) 2008-2014 FedICT.
-   ================================================================= */ 
+   ================================================================= */
 
 package org.apache.poi.poifs.crypt.dsig;
 
@@ -42,33 +42,29 @@ import org.apache.poi.openxml4j.exceptio
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
-import org.apache.poi.poifs.crypt.dsig.SignatureConfig.SignatureConfigurable;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
 
 /**
  * JSR105 URI dereferencer for Office Open XML documents.
  */
-public class OOXMLURIDereferencer implements URIDereferencer, 
SignatureConfigurable {
+public class OOXMLURIDereferencer implements URIDereferencer {
 
     private static final POILogger LOG = 
POILogFactory.getLogger(OOXMLURIDereferencer.class);
 
-    private SignatureConfig signatureConfig;
+    private SignatureInfo signatureInfo;
     private URIDereferencer baseUriDereferencer;
 
-    public void setSignatureConfig(SignatureConfig signatureConfig) {
-        this.signatureConfig = signatureConfig;
+    public void setSignatureInfo(SignatureInfo signatureInfo) {
+        this.signatureInfo = signatureInfo;
+        baseUriDereferencer = 
signatureInfo.getSignatureFactory().getURIDereferencer();
     }
 
     public Data dereference(URIReference uriReference, XMLCryptoContext 
context) throws URIReferenceException {
-        if (baseUriDereferencer == null) {
-            baseUriDereferencer = 
signatureConfig.getSignatureFactory().getURIDereferencer();
+        if (uriReference == null) {
+            throw new NullPointerException("URIReference cannot be null - call 
setSignatureInfo(...) before");
         }
-        
-        if (null == uriReference) {
-            throw new NullPointerException("URIReference cannot be null");
-        }
-        if (null == context) {
+        if (context == null) {
             throw new NullPointerException("XMLCryptoContext cannot be null");
         }
 
@@ -82,7 +78,7 @@ public class OOXMLURIDereferencer implem
         PackagePart part = findPart(uri);
         if (part == null) {
             LOG.log(POILogger.DEBUG, "cannot resolve, delegating to base DOM 
URI dereferencer", uri);
-            return this.baseUriDereferencer.dereference(uriReference, context);
+            return baseUriDereferencer.dereference(uriReference, context);
         }
 
         InputStream dataStream;
@@ -116,15 +112,14 @@ public class OOXMLURIDereferencer implem
             LOG.log(POILogger.DEBUG, "illegal part name (expected)", uri);
             return null;
         }
-        
+
         PackagePartName ppn;
         try {
             ppn = PackagingURIHelper.createPartName(path);
+            return signatureInfo.getOpcPackage().getPart(ppn);
         } catch (InvalidFormatException e) {
             LOG.log(POILogger.WARN, "illegal part name (not expected)", uri);
             return null;
         }
-        
-        return signatureConfig.getOpcPackage().getPart(ppn);
     }
 }

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java?rev=1874671&r1=1874670&r2=1874671&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java 
(original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java 
Sun Mar  1 22:20:38 2020
@@ -27,12 +27,15 @@ import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.UUID;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 import javax.xml.crypto.URIDereferencer;
 import javax.xml.crypto.dsig.CanonicalizationMethod;
@@ -53,11 +56,12 @@ import org.apache.poi.poifs.crypt.dsig.s
 import org.apache.poi.poifs.crypt.dsig.services.TSPTimeStampService;
 import org.apache.poi.poifs.crypt.dsig.services.TimeStampService;
 import org.apache.poi.poifs.crypt.dsig.services.TimeStampServiceValidator;
+import org.apache.poi.util.Internal;
 import org.apache.poi.util.LocaleUtil;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
+import org.apache.poi.util.Removal;
 import org.apache.xml.security.signature.XMLSignature;
-import org.w3c.dom.events.EventListener;
 
 /**
  * This class bundles the configuration options used for the existing
@@ -73,11 +77,16 @@ public class SignatureConfig {
     private static final POILogger LOG = 
POILogFactory.getLogger(SignatureConfig.class);
     private static final String DigestMethod_SHA224 = 
"http://www.w3.org/2001/04/xmldsig-more#sha224";;
     private static final String DigestMethod_SHA384 = 
"http://www.w3.org/2001/04/xmldsig-more#sha384";;
+    private static final String XMLSEC_SANTUARIO = 
"org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI";
+    private static final String XMLSEC_JDK = 
"org.jcp.xml.dsig.internal.dom.XMLDSigRI";
 
+    private static final List<Supplier<SignatureFacet>> DEFAULT_FACETS = 
Arrays.asList(
+        OOXMLSignatureFacet::new,
+        KeyInfoSignatureFacet::new,
+        XAdESSignatureFacet::new,
+        Office2010SignatureFacet::new
+    );
 
-    public interface SignatureConfigurable {
-        void setSignatureConfig(SignatureConfig signatureConfig);
-    }
 
     private ThreadLocal<OPCPackage> opcPackage = new ThreadLocal<>();
     private ThreadLocal<XMLSignatureFactory> signatureFactory = new 
ThreadLocal<>();
@@ -94,7 +103,7 @@ public class SignatureConfig {
      * the optional signature policy service used for XAdES-EPES.
      */
     private SignaturePolicyService signaturePolicyService;
-    private URIDereferencer uriDereferencer;
+    private URIDereferencer uriDereferencer = new OOXMLURIDereferencer();
     private String canonicalizationMethod = CanonicalizationMethod.INCLUSIVE;
 
     private boolean includeEntireCertificateChain = true;
@@ -161,7 +170,7 @@ public class SignatureConfig {
      * with certain namespaces, so this EventListener is used to interfere
      * with the marshalling process.
      */
-    private EventListener signatureMarshalListener;
+    private SignatureMarshalListener signatureMarshalListener = new 
SignatureMarshalDefaultListener();
 
     /**
      * Map of namespace uris to prefix
@@ -181,61 +190,11 @@ public class SignatureConfig {
      */
     private boolean allowMultipleSignatures = false;
 
-
-    /**
-     * Inits and checks the config object.
-     * If not set previously, complex configuration properties also get
-     * created/initialized via this initialization call.
-     *
-     * @param onlyValidation if true, only a subset of the properties
-     * is initialized, which are necessary for validation. If false,
-     * also the other properties needed for signing are been taken care of
-     */
-    protected void init(boolean onlyValidation) {
-        if (opcPackage == null) {
-            throw new EncryptedDocumentException("opcPackage is null");
-        }
-        if (uriDereferencer == null) {
-            uriDereferencer = new OOXMLURIDereferencer();
-        }
-        if (uriDereferencer instanceof SignatureConfigurable) {
-            ((SignatureConfigurable)uriDereferencer).setSignatureConfig(this);
-        }
-        if (namespacePrefixes.isEmpty()) {
-            /*
-             * OOo doesn't like ds namespaces so per default prefixing is off.
-             */
-            // namespacePrefixes.put(XML_DIGSIG_NS, "");
-            namespacePrefixes.put(OO_DIGSIG_NS, "mdssi");
-            namespacePrefixes.put(XADES_132_NS, "xd");
-        }
-
-        if (onlyValidation) {
-            return;
-        }
-
-        if (signatureMarshalListener == null) {
-            signatureMarshalListener = new SignatureMarshalListener();
-        }
-
-        if (signatureMarshalListener instanceof SignatureConfigurable) {
-            
((SignatureConfigurable)signatureMarshalListener).setSignatureConfig(this);
-        }
-
-        if (tspService != null) {
-            tspService.setSignatureConfig(this);
-        }
-
-        if (signatureFacets.isEmpty()) {
-            addSignatureFacet(new OOXMLSignatureFacet());
-            addSignatureFacet(new KeyInfoSignatureFacet());
-            addSignatureFacet(new XAdESSignatureFacet());
-            addSignatureFacet(new Office2010SignatureFacet());
-        }
-
-        for (SignatureFacet sf : signatureFacets) {
-            sf.setSignatureConfig(this);
-        }
+    public SignatureConfig() {
+        // OOo doesn't like ds namespaces so per default prefixing is off.
+        // namespacePrefixes.put(XML_DIGSIG_NS, "");
+        namespacePrefixes.put(OO_DIGSIG_NS, "mdssi");
+        namespacePrefixes.put(XADES_132_NS, "xd");
     }
 
     /**
@@ -249,7 +208,11 @@ public class SignatureConfig {
      * @return the list of facets, may be empty when the config object is not 
initialized
      */
     public List<SignatureFacet> getSignatureFacets() {
-        return signatureFacets;
+        if (signatureFacets.isEmpty()) {
+            return 
DEFAULT_FACETS.stream().map(Supplier::get).collect(Collectors.toList());
+        } else {
+            return signatureFacets;
+        }
     }
 
     /**
@@ -275,14 +238,22 @@ public class SignatureConfig {
 
     /**
      * @return the opc package to be used by this thread, stored as 
thread-local
+     *
+     * @deprecated in POI 4.1.3 - use {@link 
SignatureInfo#setOpcPackage(OPCPackage)} instead
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public OPCPackage getOpcPackage() {
         return opcPackage.get();
     }
 
     /**
      * @param opcPackage the opc package to be handled by this thread, stored 
as thread-local
+     *
+     * @deprecated in POI 4.1.3 - use {@link 
SignatureInfo#setOpcPackage(OPCPackage)} instead
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public void setOpcPackage(OPCPackage opcPackage) {
         this.opcPackage.set(opcPackage);
     }
@@ -378,14 +349,22 @@ public class SignatureConfig {
 
     /**
      * @return the dereferencer used for Reference/@URI attributes, defaults 
to {@link OOXMLURIDereferencer}
+     *
+     * @deprecated in POI 4.1.3 - use {@link 
SignatureInfo#getUriDereferencer()} instead
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public URIDereferencer getUriDereferencer() {
         return uriDereferencer;
     }
 
     /**
      * @param uriDereferencer the dereferencer used for Reference/@URI 
attributes
+     *
+     * @deprecated in POI 4.1.3 - use {@link 
SignatureInfo#setUriDereferencer(URIDereferencer)} instead
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public void setUriDereferencer(URIDereferencer uriDereferencer) {
         this.uriDereferencer = uriDereferencer;
     }
@@ -753,11 +732,10 @@ public class SignatureConfig {
 
 
     /**
-     * @return the event listener which is active while xml structure for
-     * the signature is created.
+     * @return the event listener which is active while xml structure for the 
signature is created.
      * Defaults to {@link SignatureMarshalListener}
      */
-    public EventListener getSignatureMarshalListener() {
+    public SignatureMarshalListener getSignatureMarshalListener() {
         return signatureMarshalListener;
     }
 
@@ -765,7 +743,7 @@ public class SignatureConfig {
      * @param signatureMarshalListener the event listener watching the xml 
structure
      * generation for the signature
      */
-    public void setSignatureMarshalListener(EventListener 
signatureMarshalListener) {
+    public void setSignatureMarshalListener(SignatureMarshalListener 
signatureMarshalListener) {
         this.signatureMarshalListener = signatureMarshalListener;
     }
 
@@ -898,85 +876,91 @@ public class SignatureConfig {
 
     /**
      * @param signatureFactory the xml signature factory, saved as thread-local
+     *
+     * @deprecated in POI 4.1.3 - use {@link 
SignatureInfo#setSignatureFactory(XMLSignatureFactory)}
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public void setSignatureFactory(XMLSignatureFactory signatureFactory) {
         this.signatureFactory.set(signatureFactory);
     }
 
     /**
      * @return the xml signature factory (thread-local)
+     *
+     * @deprecated in POI 4.1.3 - will be handled by SignatureInfo internally
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public XMLSignatureFactory getSignatureFactory() {
-        XMLSignatureFactory sigFac = signatureFactory.get();
-        if (sigFac == null) {
-            sigFac = XMLSignatureFactory.getInstance("DOM", getProvider());
-            setSignatureFactory(sigFac);
-        }
-        return sigFac;
+        return signatureFactory.get();
     }
 
     /**
      * @param keyInfoFactory the key factory, saved as thread-local
+     *
+     * @deprecated in POI 4.1.3 - use {@link 
SignatureInfo#setKeyInfoFactory(KeyInfoFactory)}
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public void setKeyInfoFactory(KeyInfoFactory keyInfoFactory) {
         this.keyInfoFactory.set(keyInfoFactory);
     }
 
     /**
      * @return the key factory (thread-local)
+     *
+     * @deprecated in POI 4.1.3 - will be handled by SignatureInfo internally
      */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public KeyInfoFactory getKeyInfoFactory() {
-        KeyInfoFactory keyFac = keyInfoFactory.get();
-        if (keyFac == null) {
-            keyFac = KeyInfoFactory.getInstance("DOM", getProvider());
-            setKeyInfoFactory(keyFac);
-        }
-        return keyFac;
+        return keyInfoFactory.get();
     }
 
     /**
-     * This method tests the existence of xml signature provider in the 
following order:
-     * <ul>
+     * Helper method to set provider
+     * @param provider the provider
+     * @deprecated in POI 4.1.3 - use {@link 
SignatureInfo#setProvider(Provider)}
+     */
+    @Internal
+    @Deprecated
+    @Removal(version = "5.0.0")
+    public void setProvider(Provider provider) {
+        this.provider.set(provider);
+    }
+
+    /**
+     * @return the cached provider or null if not set before
+     *
+     * @deprecated in POI 4.1.3 - will be handled by SignatureInfo internally
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    public Provider getProvider() {
+        return provider.get();
+    }
+
+    /**
+     * Determine the possible classes for XMLSEC.
+     * The order is
+     * <ol>
      * <li>the class pointed to by the system property "jsr105Provider"</li>
      * <li>the Santuario xmlsec provider</li>
      * <li>the JDK xmlsec provider</li>
-     * </ul>
-     *
-     * For signing the classes are linked against the Santuario xmlsec, so 
this might
-     * only work for validation (not tested).
+     * </ol>
      *
-     * @return the xml dsig provider
+     * @return a list of possible XMLSEC provider class names
      */
-    public Provider getProvider() {
-        Provider prov = provider.get();
-        if (prov == null) {
-            String[] dsigProviderNames = {
-                    System.getProperty("jsr105Provider"),
-                    // Santuario xmlsec
-                    "org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI",
-                    // JDK xmlsec
-                    "org.jcp.xml.dsig.internal.dom.XMLDSigRI"
-            };
-            for (String pn : dsigProviderNames) {
-                if (pn == null) {
-                    continue;
-                }
-                try {
-                    prov = (Provider)Class.forName(pn).newInstance();
-                    break;
-                } catch (Exception e) {
-                    LOG.log(POILogger.DEBUG, "XMLDsig-Provider '"+pn+"' can't 
be found - trying next.");
-                }
-            }
-        }
-
-        if (prov == null) {
-            throw new RuntimeException("JRE doesn't support default xml 
signature provider - set jsr105Provider system property!");
-        }
-
-        return prov;
+    public static String[] getProviderNames() {
+        // need to check every time, as the system property might have been 
changed in the meantime
+        String sysProp = System.getProperty("jsr105Provider");
+        return (sysProp == null || "".equals(sysProp))
+            ? new String[]{XMLSEC_SANTUARIO, XMLSEC_JDK}
+            : new String[]{sysProp, XMLSEC_SANTUARIO, XMLSEC_JDK};
     }
 
+
     /**
      * @return the cannonicalization method for XAdES-XL signing.
      * Defaults to <code>EXCLUSIVE</code>



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

Reply via email to