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;