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]

Reply via email to