Author: fanningpj
Date: Sat Feb 11 12:07:34 2023
New Revision: 1907581

URL: http://svn.apache.org/viewvc?rev=1907581&view=rev
Log:
provide way to clear the state on the ThreadLocal used byby ExtractorFactory

Modified:
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLExtractorFactory.java
    poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLExtractorFactory.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLExtractorFactory.java?rev=1907581&r1=1907580&r2=1907581&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLExtractorFactory.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/extractor/POIXMLExtractorFactory.java
 Sat Feb 11 12:07:34 2023
@@ -102,12 +102,30 @@ public final class POIXMLExtractorFactor
     /**
      * Should this thread prefer event based over usermodel based extractors?
      * Will only be used if the All Threads setting is null.
+     *
+     * <p>
+     *     This uses ThreadLocals and these can leak resources when you have a 
lot of threads.
+     * </p>
+     *
+     * You should always try to call {@link 
#removeThreadPrefersEventExtractorsSetting()}.
+     *
+     * @see #setAllThreadsPreferEventExtractors
      */
     public static void setThreadPrefersEventExtractors(boolean 
preferEventExtractors) {
          
ExtractorFactory.setThreadPrefersEventExtractors(preferEventExtractors);
     }
 
     /**
+     * Clears the setting for this thread made by {@link 
#setThreadPrefersEventExtractors(boolean) }
+     *
+     * @see #setThreadPrefersEventExtractors(boolean)
+     * @since POI 5.2.4
+     */
+    public static void removeThreadPrefersEventExtractorsSetting() {
+        ExtractorFactory.removeThreadPrefersEventExtractorsSetting();
+    }
+
+    /**
      * Should all threads prefer event based over usermodel based extractors?
      * If set, will take preference over the Thread level setting.
      */

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java?rev=1907581&r1=1907580&r2=1907581&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/extractor/ExtractorFactory.java 
Sat Feb 11 12:07:34 2023
@@ -111,6 +111,12 @@ public final class ExtractorFactory {
      * Should this thread prefer event based over usermodel based extractors?
      * Will only be used if the All Threads setting is null.
      *
+     * <p>
+     *     This uses ThreadLocals and these can leak resources when you have a 
lot of threads.
+     * </p>
+     *
+     * You should always try to call {@link 
#removeThreadPrefersEventExtractorsSetting()}.
+     *
      * @param preferEventExtractors If this threads should prefer event based 
extractors.
      */
     public static void setThreadPrefersEventExtractors(boolean 
preferEventExtractors) {
@@ -118,6 +124,16 @@ public final class ExtractorFactory {
     }
 
     /**
+     * Clears the setting for this thread made by {@link 
#setThreadPrefersEventExtractors(boolean) }
+     *
+     * @see #setThreadPrefersEventExtractors(boolean)
+     * @since POI 5.2.4
+     */
+    public static void removeThreadPrefersEventExtractorsSetting() {
+        threadPreferEventExtractors.remove();
+    }
+
+    /**
      * Should all threads prefer event based over usermodel based extractors?
      * If set, will take preference over the Thread level setting.
      *



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to