Author: fanningpj
Date: Tue Oct 15 16:39:09 2024
New Revision: 1921341
URL: http://svn.apache.org/viewvc?rev=1921341&view=rev
Log:
try to make VariantSupport thread safe
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java?rev=1921341&r1=1921340&r2=1921341&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java Tue Oct
15 16:39:09 2024
@@ -66,7 +66,7 @@ public class VariantSupport extends Vari
* Keeps a list of the variant types an "unsupported" message has already
* been issued for.
*/
- private static List<Long> unsupportedMessage;
+ private static final List<Long> unsupportedMessage = new LinkedList<>();
private static final byte[] paddingBytes = new byte[3];
@@ -102,18 +102,18 @@ public class VariantSupport extends Vari
*
* @param ex The exception to log
*/
- protected static void writeUnsupportedTypeMessage
- (final UnsupportedVariantTypeException ex) {
- if (isLogUnsupportedTypes())
- {
- if (unsupportedMessage == null) {
- unsupportedMessage = new LinkedList<>();
+ protected static void writeUnsupportedTypeMessage(final
UnsupportedVariantTypeException ex) {
+ if (isLogUnsupportedTypes()) {
+ final Long vt = ex.getVariantType();
+ boolean needsLogging = false;
+ synchronized (unsupportedMessage) {
+ if (!unsupportedMessage.contains(vt)) {
+ needsLogging = true;
+ unsupportedMessage.add(vt);
+ }
}
- Long vt = Long.valueOf(ex.getVariantType());
- if (!unsupportedMessage.contains(vt))
- {
+ if (needsLogging) {
LOG.atError().withThrowable(ex).log("Unsupported type");
- unsupportedMessage.add(vt);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]