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

veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ee5520ff Annotate TextContent.blobObject with @Union(Blob, 
BlobProvider)
0ee5520ff is described below

commit 0ee5520ff6ce0b447d0671b395d69d01ce02ee68
Author: Andreas Veithen-Knowles <[email protected]>
AuthorDate: Mon Jun 15 09:42:05 2026 +0100

    Annotate TextContent.blobObject with @Union(Blob, BlobProvider)
    
    The field, getter and constructor parameter holding either a Blob or
    a BlobProvider now use @Union so the checker framework verifies the
    instanceof-based narrowing. The Map of pending blobs in
    XOPEncodingFilterHandler is annotated the same way since it stores
    the same union of types.
    
    Co-authored-by: Claude <[email protected]>
---
 .../src/main/java/org/apache/axiom/om/impl/intf/TextContent.java   | 7 ++++---
 .../apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java  | 4 +++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java
index b5910109c..cb8d31999 100644
--- 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java
+++ 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/TextContent.java
@@ -46,7 +46,7 @@ public final class TextContent implements 
CloneableCharacterData {
      * Contains a {@link Blob} or {@link BlobProvider} object if the text node 
represents base64
      * encoded binary data.
      */
-    private Object blobObject;
+    private @Union(types = {Blob.class, BlobProvider.class}) Object blobObject;
 
     private boolean optimize;
     private boolean binary;
@@ -55,7 +55,8 @@ public final class TextContent implements 
CloneableCharacterData {
         this.value = value;
     }
 
-    public TextContent(String contentID, Object blobObject, boolean optimize) {
+    public TextContent(
+            String contentID, @Union(types = {Blob.class, BlobProvider.class}) 
Object blobObject, boolean optimize) {
         this.value = null;
         this.contentID = contentID;
         this.blobObject = blobObject;
@@ -107,7 +108,7 @@ public final class TextContent implements 
CloneableCharacterData {
      *
      * @return a {@link Blob} or {@link BlobProvider} object for the base64 
decoded content
      */
-    public Object getBlobObject() {
+    public @Union(types = {Blob.class, BlobProvider.class}) Object 
getBlobObject() {
         if (!binary) {
             throw new IllegalStateException();
         }
diff --git 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java
 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java
index cb1579ccb..8c7bb5a03 100644
--- 
a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java
+++ 
b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/stream/xop/XOPEncodingFilterHandler.java
@@ -24,6 +24,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
 import org.apache.axiom.blob.Blob;
+import org.apache.axiom.checker.union.Union;
 import org.apache.axiom.core.stream.StreamException;
 import org.apache.axiom.core.stream.XmlHandler;
 import org.apache.axiom.core.stream.xop.AbstractXOPEncodingFilterHandler;
@@ -34,7 +35,8 @@ import org.apache.axiom.om.impl.intf.TextContent;
 
 public final class XOPEncodingFilterHandler extends 
AbstractXOPEncodingFilterHandler
         implements XOPHandler, OMAttachmentAccessor {
-    private final Map<String, Object> blobObjects = new LinkedHashMap<String, 
Object>();
+    private final Map<String, @Union(types = {Blob.class, BlobProvider.class}) 
Object> blobObjects =
+            new LinkedHashMap<String, @Union(types = {Blob.class, 
BlobProvider.class}) Object>();
     private final ContentIDGenerator contentIDGenerator;
     private final OptimizationPolicy optimizationPolicy;
 

Reply via email to