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]