Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package jackson-jaxrs-providers for 
openSUSE:Factory checked in at 2024-05-21 18:35:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jackson-jaxrs-providers (Old)
 and      /work/SRC/openSUSE:Factory/.jackson-jaxrs-providers.new.1880 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "jackson-jaxrs-providers"

Tue May 21 18:35:31 2024 rev:7 rq:1175356 version:2.17.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/jackson-jaxrs-providers/jackson-jaxrs-providers.changes
  2024-03-11 15:41:55.800091086 +0100
+++ 
/work/SRC/openSUSE:Factory/.jackson-jaxrs-providers.new.1880/jackson-jaxrs-providers.changes
        2024-05-21 18:35:57.837334988 +0200
@@ -1,0 +2,11 @@
+Mon May 20 10:06:31 UTC 2024 - Gus Kenion <[email protected]>
+
+- Upgrade to 2.17.1
+  * #184: Use `ReentrantLock`s instead of synchronized blocks
+    (contributed by @pjfanning)
+  * #187: Mark variables as volatile for safe concurrent access
+    (contributed by @pjfanning)
+- Includes changes from 2.17
+  * Woodstox dependency now 6.6.1
+
+-------------------------------------------------------------------

Old:
----
  jackson-jaxrs-providers-2.16.1.tar.gz

New:
----
  jackson-jaxrs-providers-2.17.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ jackson-jaxrs-providers.spec ++++++
--- /var/tmp/diff_new_pack.tB4sLR/_old  2024-05-21 18:35:58.281351238 +0200
+++ /var/tmp/diff_new_pack.tB4sLR/_new  2024-05-21 18:35:58.285351385 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           jackson-jaxrs-providers
-Version:        2.16.1
+Version:        2.17.1
 Release:        0
 Summary:        Jackson JAX-RS providers
 License:        Apache-2.0

++++++ jackson-jaxrs-providers-2.16.1.tar.gz -> 
jackson-jaxrs-providers-2.17.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/.github/workflows/main.yml
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/.github/workflows/main.yml
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/.github/workflows/main.yml
       2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/.github/workflows/main.yml
       2024-05-05 05:01:47.000000000 +0200
@@ -4,7 +4,7 @@
     branches:
     - master
     - "3.0"
-    - "2.16"
+    - "2.17"
     paths-ignore:
     - "README.md"
     - "release-notes/*"
@@ -12,7 +12,7 @@
     branches:
     - master
     - "3.0"
-    - "2.16"
+    - "2.17"
     paths-ignore:
     - "README.md"
     - "release-notes/*"
@@ -22,7 +22,7 @@
     strategy:
       fail-fast: false
       matrix:
-        java_version: ['8', '11', '17']
+        java_version: ['8', '11', '17', '21']
         os: ['ubuntu-20.04']
     env:
       JAVA_OPTS: "-XX:+TieredCompilation -XX:TieredStopAtLevel=1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/base/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/base/pom.xml
--- old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/base/pom.xml     
2023-12-24 07:07:01.000000000 +0100
+++ new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/base/pom.xml     
2024-05-05 05:01:47.000000000 +0200
@@ -9,7 +9,7 @@
   <parent>
     <groupId>com.fasterxml.jackson.jaxrs</groupId>
     <artifactId>jackson-jaxrs-providers</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <artifactId>jackson-jaxrs-base</artifactId>
   <name>Jackson-JAXRS: base</name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java
    2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/base/src/main/java/com/fasterxml/jackson/jaxrs/base/ProviderBase.java
    2024-05-05 05:01:47.000000000 +0200
@@ -13,6 +13,7 @@
 
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.util.LRUMap;
+import com.fasterxml.jackson.databind.util.LookupCache;
 import com.fasterxml.jackson.databind.type.TypeFactory;
 
 import com.fasterxml.jackson.jaxrs.cfg.*;
@@ -158,14 +159,12 @@
     /**
      * Cache for resolved endpoint configurations when reading JSON data
      */
-    protected final LRUMap<AnnotationBundleKey, EP_CONFIG> _readers
-        = new LRUMap<AnnotationBundleKey, EP_CONFIG>(16, 120);
+    protected final LookupCache<AnnotationBundleKey, EP_CONFIG> _readers;
 
     /**
      * Cache for resolved endpoint configurations when writing JSON data
      */
-    protected final LRUMap<AnnotationBundleKey, EP_CONFIG> _writers
-        = new LRUMap<AnnotationBundleKey, EP_CONFIG>(16, 120);
+    protected final LookupCache<AnnotationBundleKey, EP_CONFIG> _writers;
 
     /*
     /**********************************************************
@@ -174,8 +173,9 @@
      */
 
     protected ProviderBase(MAPPER_CONFIG mconfig) {
-        _mapperConfig = mconfig;
-        _jaxRSFeatures = JAXRS_FEATURE_DEFAULTS;
+        this(mconfig,
+                new LRUMap<>(16, 120),
+                new LRUMap<>(16, 120));
     }
 
     /**
@@ -186,10 +186,22 @@
      */
     @Deprecated // just to denote it should NOT be directly called; will NOT 
be removed
     protected ProviderBase() {
-        _mapperConfig = null;
+        this(null);
+    }
+
+    /**
+     * @since 2.17
+     */
+    protected ProviderBase(MAPPER_CONFIG mconfig,
+            LookupCache<AnnotationBundleKey, EP_CONFIG> readerCache,
+            LookupCache<AnnotationBundleKey, EP_CONFIG> writerCache)
+    {
+        _mapperConfig = mconfig;
         _jaxRSFeatures = JAXRS_FEATURE_DEFAULTS;
+        _readers = readerCache;
+        _writers = writerCache;
     }
-    
+
     /*
     /**********************************************************
     /* Configuring
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/MapperConfiguratorBase.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/MapperConfiguratorBase.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/MapperConfiguratorBase.java
   2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/base/src/main/java/com/fasterxml/jackson/jaxrs/cfg/MapperConfiguratorBase.java
   2024-05-05 05:01:47.000000000 +0200
@@ -19,7 +19,7 @@
      * If defined (explicitly or implicitly) it will be used, instead
      * of using provider-based lookup.
      */
-    protected MAPPER _mapper;
+    protected volatile MAPPER _mapper;
 
     /**
      * If no mapper was specified when constructed, and no configuration
@@ -27,13 +27,13 @@
      * between default mapper and regular one is that default mapper
      * is only used if no mapper is found via provider lookup.
      */
-    protected MAPPER _defaultMapper;
+    protected volatile MAPPER _defaultMapper;
 
     /**
      * Annotations set to use by default; overridden by explicit call
-     * to {@link #setAnnotationsToUse}
+     * to {@link #setAnnotationsToUse}. Marked final in v2.17.1.
      */
-    protected Annotations[] _defaultAnnotationsToUse;
+    protected final Annotations[] _defaultAnnotationsToUse;
     
     /**
      * To support optional dependency to Jackson JAXB annotations module
@@ -81,27 +81,27 @@
     /***********************************************************
      */
 
-    public synchronized final void setMapper(MAPPER m) {
+    public final void setMapper(MAPPER m) {
         _mapper = m;
     }
 
-    public synchronized final void setAnnotationsToUse(Annotations[] 
annotationsToUse) {
+    public final void setAnnotationsToUse(Annotations[] annotationsToUse) {
         _setAnnotations(mapper(), annotationsToUse);
     }
 
-    public synchronized final void configure(DeserializationFeature f, boolean 
state) {
+    public final void configure(DeserializationFeature f, boolean state) {
         mapper().configure(f, state);
     }
 
-    public synchronized final void configure(SerializationFeature f, boolean 
state) {
+    public final void configure(SerializationFeature f, boolean state) {
         mapper().configure(f, state);
     }
 
-    public synchronized final void configure(JsonParser.Feature f, boolean 
state) {
+    public final void configure(JsonParser.Feature f, boolean state) {
         mapper().configure(f, state);
     }
 
-    public synchronized final void configure(JsonGenerator.Feature f, boolean 
state) {
+    public final void configure(JsonGenerator.Feature f, boolean state) {
         mapper().configure(f, state);
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/cbor/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/cbor/pom.xml
--- old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/cbor/pom.xml     
2023-12-24 07:07:01.000000000 +0100
+++ new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/cbor/pom.xml     
2024-05-05 05:01:47.000000000 +0200
@@ -9,7 +9,7 @@
   <parent>
     <groupId>com.fasterxml.jackson.jaxrs</groupId>
     <artifactId>jackson-jaxrs-providers</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <artifactId>jackson-jaxrs-cbor-provider</artifactId>
   <name>Jackson-JAXRS: CBOR</name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/cbor/src/main/java/com/fasterxml/jackson/jaxrs/cbor/CBORMapperConfigurator.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/cbor/src/main/java/com/fasterxml/jackson/jaxrs/cbor/CBORMapperConfigurator.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/cbor/src/main/java/com/fasterxml/jackson/jaxrs/cbor/CBORMapperConfigurator.java
  2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/cbor/src/main/java/com/fasterxml/jackson/jaxrs/cbor/CBORMapperConfigurator.java
  2024-05-05 05:01:47.000000000 +0200
@@ -1,6 +1,7 @@
 package com.fasterxml.jackson.jaxrs.cbor;
 
 import java.util.*;
+import java.util.concurrent.locks.ReentrantLock;
 
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
@@ -17,6 +18,9 @@
 public class CBORMapperConfigurator
     extends MapperConfiguratorBase<CBORMapperConfigurator, ObjectMapper>
 {
+    // @since 2.17.1
+    private final ReentrantLock _lock = new ReentrantLock();
+
     /*
     /**********************************************************
     /* Construction
@@ -32,18 +36,24 @@
      * Method that locates, configures and returns {@link ObjectMapper} to use
      */
     @Override
-    public synchronized ObjectMapper getConfiguredMapper() {
-        /* important: should NOT call mapper(); needs to return null
-         * if no instance has been passed or constructed
-         */
+    public ObjectMapper getConfiguredMapper() {
+        // important: should NOT call mapper(); needs to return null
+        // if no instance has been passed or constructed
         return _mapper;
     }
 
     @Override
-    public synchronized ObjectMapper getDefaultMapper() {
+    public ObjectMapper getDefaultMapper() {
         if (_defaultMapper == null) {
-            _defaultMapper = new ObjectMapper(new CBORFactory());
-            _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_defaultMapper == null) {
+                    _defaultMapper = new ObjectMapper(new CBORFactory());
+                    _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _defaultMapper;
     }
@@ -63,8 +73,15 @@
     protected ObjectMapper mapper()
     {
         if (_mapper == null) {
-            _mapper = new ObjectMapper(new CBORFactory());
-            _setAnnotations(_mapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_mapper == null) {
+                    _mapper = new ObjectMapper(new CBORFactory());
+                    _setAnnotations(_mapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _mapper;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/datatypes/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/datatypes/pom.xml
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/datatypes/pom.xml    
    2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/datatypes/pom.xml    
    2024-05-05 05:01:47.000000000 +0200
@@ -9,7 +9,7 @@
   <parent>
     <groupId>com.fasterxml.jackson.jaxrs</groupId>
     <artifactId>jackson-jaxrs-providers</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <!-- note: different group id, it being datatype -->
   <groupId>com.fasterxml.jackson.datatype</groupId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/json/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/json/pom.xml
--- old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/json/pom.xml     
2023-12-24 07:07:01.000000000 +0100
+++ new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/json/pom.xml     
2024-05-05 05:01:47.000000000 +0200
@@ -9,7 +9,7 @@
   <parent>
     <groupId>com.fasterxml.jackson.jaxrs</groupId>
     <artifactId>jackson-jaxrs-providers</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <artifactId>jackson-jaxrs-json-provider</artifactId>
   <name>Jackson-JAXRS: JSON</name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/json/src/main/java/com/fasterxml/jackson/jaxrs/json/JsonMapperConfigurator.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/json/src/main/java/com/fasterxml/jackson/jaxrs/json/JsonMapperConfigurator.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/json/src/main/java/com/fasterxml/jackson/jaxrs/json/JsonMapperConfigurator.java
  2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/json/src/main/java/com/fasterxml/jackson/jaxrs/json/JsonMapperConfigurator.java
  2024-05-05 05:01:47.000000000 +0200
@@ -1,6 +1,7 @@
 package com.fasterxml.jackson.jaxrs.json;
 
 import java.util.*;
+import java.util.concurrent.locks.ReentrantLock;
 
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
@@ -16,6 +17,9 @@
 public class JsonMapperConfigurator
     extends MapperConfiguratorBase<JsonMapperConfigurator, ObjectMapper>
 {
+    // @since 2.17.1
+    private final ReentrantLock _lock = new ReentrantLock();
+
     /*
     /**********************************************************
     /* Construction
@@ -31,18 +35,24 @@
      * Method that locates, configures and returns {@link ObjectMapper} to use
      */
     @Override
-    public synchronized ObjectMapper getConfiguredMapper() {
-        /* important: should NOT call mapper(); needs to return null
-         * if no instance has been passed or constructed
-         */
+    public ObjectMapper getConfiguredMapper() {
+        // important: should NOT call mapper(); needs to return null
+        // if no instance has been passed or constructed
         return _mapper;
     }
 
     @Override
-    public synchronized ObjectMapper getDefaultMapper() {
+    public ObjectMapper getDefaultMapper() {
         if (_defaultMapper == null) {
-            _defaultMapper = new ObjectMapper();
-            _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_defaultMapper == null) {
+                    _defaultMapper = new ObjectMapper();
+                    _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _defaultMapper;
     }
@@ -62,8 +72,15 @@
     protected ObjectMapper mapper()
     {
         if (_mapper == null) {
-            _mapper = new ObjectMapper();
-            _setAnnotations(_mapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_mapper == null) {
+                    _mapper = new ObjectMapper();
+                    _setAnnotations(_mapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _mapper;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/pom.xml
--- old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/pom.xml  
2023-12-24 07:07:01.000000000 +0100
+++ new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/pom.xml  
2024-05-05 05:01:47.000000000 +0200
@@ -4,12 +4,12 @@
   <parent>
     <groupId>com.fasterxml.jackson</groupId>
     <artifactId>jackson-base</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <groupId>com.fasterxml.jackson.jaxrs</groupId>
   <artifactId>jackson-jaxrs-providers</artifactId>
   <name>Jackson: JAX-RS (parent)</name>
-  <version>2.16.1</version>
+  <version>2.17.1</version>
   <packaging>pom</packaging>
   <description>Parent for Jackson JAX-RS providers
   </description>
@@ -37,7 +37,7 @@
     
<connection>scm:git:[email protected]:FasterXML/jackson-jaxrs-providers.git</connection>
     
<developerConnection>scm:git:[email protected]:FasterXML/jackson-jaxrs-providers.git</developerConnection>
     <url>https://github.com/FasterXML/jackson-jaxrs-providers</url>
-    <tag>jackson-jaxrs-providers-2.16.1</tag>
+    <tag>jackson-jaxrs-providers-2.17.1</tag>
   </scm>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/release-notes/CREDITS-2.x
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/release-notes/CREDITS-2.x
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/release-notes/CREDITS-2.x
        2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/release-notes/CREDITS-2.x
        2024-05-05 05:01:47.000000000 +0200
@@ -91,6 +91,10 @@
 * Contributed #166: `ProviderBase` class shows contention on synchronized
   block using `LRUMap` _writers instance
  (2.14.2)
+* Contributed #184: Use `ReentrantLock`s instead of synchronized blocks
+ (2.17.1)
+* Contributed #187: Mark variables as volatile for safe concurrent access
+ (2.17.1)
 
 Steven Schlansker (@stevenschlansker)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/release-notes/VERSION-2.x
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/release-notes/VERSION-2.x
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/release-notes/VERSION-2.x
        2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/release-notes/VERSION-2.x
        2024-05-05 05:01:47.000000000 +0200
@@ -10,6 +10,21 @@
 === Releases ===
 ------------------------------------------------------------------------
 
+2.17.1 (04-May-2024)
+
+#184: Use `ReentrantLock`s instead of synchronized blocks
+ (contributed by @pjfanning)
+#187: Mark variables as volatile for safe concurrent access
+ (contributed by @pjfanning)
+
+2.17.0 (12-Mar-2024)
+
+* Woodstox dependency now 6.6.1
+
+2.16.2 (09-Mar-2024)
+
+No changes since 2.16.1
+
 2.16.1 (24-Dec-2023)
 
 #178: Deprecate local `LRUMap`, use `jackson-databind` provided one instead
@@ -18,6 +33,7 @@
 
 No changes since 2.15
 
+2.15.4 (15-Feb-2024)
 2.15.3 (12-Oct-2023)
 2.15.2 (30-May-2023)
 2.15.1 (16-May-2023)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/smile/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/smile/pom.xml
--- old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/smile/pom.xml    
2023-12-24 07:07:01.000000000 +0100
+++ new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/smile/pom.xml    
2024-05-05 05:01:47.000000000 +0200
@@ -9,7 +9,7 @@
   <parent>
     <groupId>com.fasterxml.jackson.jaxrs</groupId>
     <artifactId>jackson-jaxrs-providers</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <artifactId>jackson-jaxrs-smile-provider</artifactId>
   <name>Jackson-JAXRS: Smile</name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/smile/src/main/java/com/fasterxml/jackson/jaxrs/smile/SmileMapperConfigurator.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/smile/src/main/java/com/fasterxml/jackson/jaxrs/smile/SmileMapperConfigurator.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/smile/src/main/java/com/fasterxml/jackson/jaxrs/smile/SmileMapperConfigurator.java
       2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/smile/src/main/java/com/fasterxml/jackson/jaxrs/smile/SmileMapperConfigurator.java
       2024-05-05 05:01:47.000000000 +0200
@@ -1,6 +1,7 @@
 package com.fasterxml.jackson.jaxrs.smile;
 
 import java.util.*;
+import java.util.concurrent.locks.ReentrantLock;
 
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
@@ -18,6 +19,9 @@
 public class SmileMapperConfigurator
     extends MapperConfiguratorBase<SmileMapperConfigurator, ObjectMapper>
 {
+    // @since 2.17.1
+    private final ReentrantLock _lock = new ReentrantLock();
+
     /*
     /**********************************************************
     /* Construction
@@ -33,18 +37,24 @@
      * Method that locates, configures and returns {@link ObjectMapper} to use
      */
     @Override
-    public synchronized ObjectMapper getConfiguredMapper() {
-        /* important: should NOT call mapper(); needs to return null
-         * if no instance has been passed or constructed
-         */
+    public ObjectMapper getConfiguredMapper() {
+        // important: should NOT call mapper(); needs to return null
+        // if no instance has been passed or constructed
         return _mapper;
     }
 
     @Override
-    public synchronized ObjectMapper getDefaultMapper() {
+    public ObjectMapper getDefaultMapper() {
         if (_defaultMapper == null) {
-            _defaultMapper = new ObjectMapper(new SmileFactory());
-            _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_defaultMapper == null) {
+                    _defaultMapper = new ObjectMapper(new SmileFactory());
+                    _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _defaultMapper;
     }
@@ -64,8 +74,15 @@
     protected ObjectMapper mapper()
     {
         if (_mapper == null) {
-            _mapper = new ObjectMapper(new SmileFactory());
-            _setAnnotations(_mapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_mapper == null) {
+                    _mapper = new ObjectMapper(new SmileFactory());
+                    _setAnnotations(_mapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _mapper;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/xml/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/xml/pom.xml
--- old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/xml/pom.xml      
2023-12-24 07:07:01.000000000 +0100
+++ new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/xml/pom.xml      
2024-05-05 05:01:47.000000000 +0200
@@ -9,7 +9,7 @@
   <parent>
     <groupId>com.fasterxml.jackson.jaxrs</groupId>
     <artifactId>jackson-jaxrs-providers</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <artifactId>jackson-jaxrs-xml-provider</artifactId>
   <name>Jackson-JAXRS: XML</name>
@@ -62,9 +62,7 @@
       <groupId>org.codehaus.woodstox</groupId>
       <artifactId>stax2-api</artifactId>
       <!-- Ideally we'd accept range of versions but won't really work with 
Maven... -->
-
-<!--      <version>[4.0, 5.0)</version>  -->
-      <version>4.2.1</version>
+      <version>4.2.2</version>
     </dependency>
 
     <!-- Also: While JDK-included SJSXP almost works, there are some rough 
edges;
@@ -73,7 +71,7 @@
     <dependency>
       <groupId>com.fasterxml.woodstox</groupId>
       <artifactId>woodstox-core</artifactId>
-      <version>6.5.1</version>
+      <version>6.6.1</version>
       <exclusions>
         <exclusion>
           <groupId>javax.xml.stream</groupId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/xml/src/main/java/com/fasterxml/jackson/jaxrs/xml/XMLMapperConfigurator.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/xml/src/main/java/com/fasterxml/jackson/jaxrs/xml/XMLMapperConfigurator.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/xml/src/main/java/com/fasterxml/jackson/jaxrs/xml/XMLMapperConfigurator.java
     2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/xml/src/main/java/com/fasterxml/jackson/jaxrs/xml/XMLMapperConfigurator.java
     2024-05-05 05:01:47.000000000 +0200
@@ -1,6 +1,7 @@
 package com.fasterxml.jackson.jaxrs.xml;
 
 import java.util.*;
+import java.util.concurrent.locks.ReentrantLock;
 
 import com.fasterxml.jackson.databind.*;
 
@@ -20,6 +21,9 @@
 public class XMLMapperConfigurator
     extends MapperConfiguratorBase<XMLMapperConfigurator, XmlMapper>
 {
+    // @since 2.17.1
+    private final ReentrantLock _lock = new ReentrantLock();
+
     /*
     /**********************************************************
     /* Construction
@@ -35,21 +39,27 @@
      * Method that locates, configures and returns {@link XmlMapper} to use
      */
     @Override
-    public synchronized XmlMapper getConfiguredMapper() {
-        /* important: should NOT call mapper(); needs to return null
-         * if no instance has been passed or constructed
-         */
+    public XmlMapper getConfiguredMapper() {
+        // important: should NOT call mapper(); needs to return null
+        // if no instance has been passed or constructed
         return _mapper;
     }
 
     @Override
-    public synchronized XmlMapper getDefaultMapper()
+    public XmlMapper getDefaultMapper()
     {
         if (_defaultMapper == null) {
-            // 10-Oct-2012, tatu: Better do things explicitly...
-            JacksonXmlModule module = getConfiguredModule();
-            _defaultMapper = (module == null) ? new XmlMapper() : new 
XmlMapper(module);
-            _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_defaultMapper == null) {
+                    // 10-Oct-2012, tatu: Better do things explicitly...
+                    JacksonXmlModule module = getConfiguredModule();
+                    _defaultMapper = (module == null) ? new XmlMapper() : new 
XmlMapper(module);
+                    _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _defaultMapper;
     }
@@ -74,8 +84,15 @@
     protected XmlMapper mapper()
     {
         if (_mapper == null) {
-            _mapper = new XmlMapper();
-            _setAnnotations(_mapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_mapper == null) {
+                    _mapper = new XmlMapper();
+                    _setAnnotations(_mapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _mapper;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/yaml/pom.xml 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/yaml/pom.xml
--- old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/yaml/pom.xml     
2023-12-24 07:07:01.000000000 +0100
+++ new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/yaml/pom.xml     
2024-05-05 05:01:47.000000000 +0200
@@ -9,7 +9,7 @@
   <parent>
     <groupId>com.fasterxml.jackson.jaxrs</groupId>
     <artifactId>jackson-jaxrs-providers</artifactId>
-    <version>2.16.1</version>
+    <version>2.17.1</version>
   </parent>
   <artifactId>jackson-jaxrs-yaml-provider</artifactId>
   <name>Jackson-JAXRS: YAML</name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/JacksonYAMLProvider.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/JacksonYAMLProvider.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/JacksonYAMLProvider.java
     2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/JacksonYAMLProvider.java
     2024-05-05 05:01:47.000000000 +0200
@@ -29,7 +29,7 @@
  * mapper to use can be configured in multiple ways:
  * <ul>
  * <li>By explicitly passing mapper to use in constructor
- * <li>By explcitly setting mapper to use by {@link #setMapper}
+ * <li>By explicitly setting mapper to use by {@link #setMapper}
  * <li>By defining JAX-RS <code>Provider</code> that returns {@link 
YAMLMapper}s.
  * <li>By doing none of above, in which case a default mapper instance is
  * constructed (and configured if configuration methods are called)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/YAMLMapperConfigurator.java
 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/YAMLMapperConfigurator.java
--- 
old/jackson-jaxrs-providers-jackson-jaxrs-providers-2.16.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/YAMLMapperConfigurator.java
  2023-12-24 07:07:01.000000000 +0100
+++ 
new/jackson-jaxrs-providers-jackson-jaxrs-providers-2.17.1/yaml/src/main/java/com/fasterxml/jackson/jaxrs/yaml/YAMLMapperConfigurator.java
  2024-05-05 05:01:47.000000000 +0200
@@ -8,6 +8,7 @@
 import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
 
 import java.util.ArrayList;
+import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * Helper class used to encapsulate details of configuring an
@@ -15,7 +16,11 @@
  * well as accessing it.
  */
 public class YAMLMapperConfigurator
-        extends MapperConfiguratorBase<YAMLMapperConfigurator, YAMLMapper> {
+    extends MapperConfiguratorBase<YAMLMapperConfigurator, YAMLMapper>
+{
+    // @since 2.17.1
+    private final ReentrantLock _lock = new ReentrantLock();
+
     /*
     /**********************************************************
     /* Construction
@@ -30,18 +35,24 @@
      * Method that locates, configures and returns {@link YAMLMapper} to use
      */
     @Override
-    public synchronized YAMLMapper getConfiguredMapper() {
-        /* important: should NOT call mapper(); needs to return null
-         * if no instance has been passed or constructed
-         */
+    public YAMLMapper getConfiguredMapper() {
+        // important: should NOT call mapper(); needs to return null
+        // if no instance has been passed or constructed
         return _mapper;
     }
 
     @Override
-    public synchronized YAMLMapper getDefaultMapper() {
+    public YAMLMapper getDefaultMapper() {
         if (_defaultMapper == null) {
-            _defaultMapper = new YAMLMapper(); //tarik: maybe there is better 
default config?
-            _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_defaultMapper == null) {
+                    _defaultMapper = new YAMLMapper(); //tarik: maybe there is 
better default config?
+                    _setAnnotations(_defaultMapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _defaultMapper;
     }
@@ -60,8 +71,15 @@
     @Override
     protected YAMLMapper mapper() {
         if (_mapper == null) {
-            _mapper = new YAMLMapper();
-            _setAnnotations(_mapper, _defaultAnnotationsToUse);
+            _lock.lock();
+            try {
+                if (_mapper == null) {
+                    _mapper = new YAMLMapper();
+                    _setAnnotations(_mapper, _defaultAnnotationsToUse);
+                }
+            } finally {
+                _lock.unlock();
+            }
         }
         return _mapper;
     }

Reply via email to