This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch WW-5539
in repository https://gitbox.apache.org/repos/asf/struts.git

commit f64a19006a3603f0c4c474f2a7b1127e660d3674
Author: Lukasz Lenart <[email protected]>
AuthorDate: Tue Jul 21 17:34:45 2026 +0200

    WW-5539 Document that addNoMapping may replace a cached mapping
    
    The behaviour was documented only on the Struts implementation, but
    addNoMapping stays a non-deprecated SPI primitive that third parties both
    call and implement, so the contract belongs on the interface.
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
---
 .../main/java/org/apache/struts2/conversion/TypeConverterHolder.java  | 4 +++-
 .../org/apache/struts2/conversion/StrutsTypeConverterHolderTest.java  | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/struts2/conversion/TypeConverterHolder.java 
b/core/src/main/java/org/apache/struts2/conversion/TypeConverterHolder.java
index 1adfe8a3c..ccfa7d1e1 100644
--- a/core/src/main/java/org/apache/struts2/conversion/TypeConverterHolder.java
+++ b/core/src/main/java/org/apache/struts2/conversion/TypeConverterHolder.java
@@ -85,7 +85,9 @@ public interface TypeConverterHolder {
     boolean containsNoMapping(Class clazz);
 
     /**
-     * Adds no mapping flag for give class
+     * Adds no mapping flag for give class. Flagging a class as having no 
mapping may replace
+     * any mapping previously cached for it; callers should treat this flag as 
authoritative
+     * over a previously cached mapping.
      *
      * @param clazz class to register missing converter
      */
diff --git 
a/core/src/test/java/org/apache/struts2/conversion/StrutsTypeConverterHolderTest.java
 
b/core/src/test/java/org/apache/struts2/conversion/StrutsTypeConverterHolderTest.java
index 686ab5f4d..b31ff4f93 100644
--- 
a/core/src/test/java/org/apache/struts2/conversion/StrutsTypeConverterHolderTest.java
+++ 
b/core/src/test/java/org/apache/struts2/conversion/StrutsTypeConverterHolderTest.java
@@ -185,7 +185,9 @@ public class StrutsTypeConverterHolderTest extends 
XWorkTestCase {
 
         assertThat(holder.containsNoMapping(String.class)).isTrue();
         assertThat(holder.getMapping(String.class)).isNull();
-        assertThat(holder.computeMappingIfAbsent(String.class, clazz -> 
real)).isEmpty();
+        assertThat(holder.computeMappingIfAbsent(String.class, clazz -> {
+            throw new AssertionError("builder must not run when no mapping is 
set");
+        })).isNotNull().isEmpty();
     }
 
     public void testComputeMappingIfAbsentNegativeCachesNullResult() {

Reply via email to