Annotation Type XmlIsSet


@Retention(RUNTIME) @Target({FIELD,METHOD}) public @interface XmlIsSet
Deprecated.
this hasn't been implemented in the RI, and this hasn't been speced yet. I believe Joe asked for this feature. I'd like to drop this.
Designates a boolean field/property as a flag to indicate whether another property is present or not.

Sometimes you'd want to map a Java primitive type to an optional element/attribute. Doing this makes it impossible to represent the absence of the property, thus you always end up producing the value when you marshal to XML. For example,

 XmlElement
 class Foo {
      XmlElement
      int x;
 }

 marshaller.marshal(new Foo());
 
and you get:

 <foo><x>0</x></foo>
 

By creating a side boolean field/property that has this annotation, you can indicate the absence of the property by setting this boolean to false.

 XmlElement
 class Foo {
      XmlElement
      int x;
      XmlIsSet("x")
      boolean xIsPresent;
 }

 Foo f = new Foo();
 f.x = 5;
 f.xIsPresent = false;

 marshaller.marshal(f);

 
 <foo/>
 

 f.xIsPresent = true;
 
 <foo><x>5</x></foo>
 
 

A property/field annotated with XmlIsSet itself will not show up in XML. It is an error to use this annotation on the same property/field as XmlElement, XmlAttribute, XmlValue, or XmlElementRef, ...TBD.

Author:
Kohsuke Kawaguchi
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Deprecated.
    Specifies the name of the property to attach to.
  • Element Details

    • value

      String value
      Deprecated.
      Specifies the name of the property to attach to.