Annotation Interface Element


@Retention(RUNTIME) @Target({FIELD,METHOD}) public @interface Element
Indicates that this property or the field value must be injected from an XML element in a configuration file.
Author:
Kohsuke Kawaguchi
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    boolean
    Indicates that this property becomes the name of the component.
    boolean
    Indicates that this property is a reference to another configured inhabitant.
    boolean
    Indicates that this element is required.
    Element name.
    boolean
    Indicates that the variable expansion should be performed on this proeprty.
  • Element Details

    • value

      String value
      Element name. See Attribute.value() for how the default value is inferred.
      Default:
      ""
    • key

      boolean key
      Indicates that this property becomes the name of the component. There can be only one key on a class.
      Default:
      false
    • required

      boolean required
      Indicates that this element is required.

      To specify the default value, simply use the field initializer to set it to a certain value. The field/method values are only set when the value is present.

      Default:
      false
    • reference

      boolean reference
      Indicates that this property is a reference to another configured inhabitant.

      On XML, this is represented as a string value that points to the value of the key property of the target inhabitant. See the following example:

       @Configured
       class VirtualHost {
         @Attribute(key=true)
         String name;
       }
      
       @Configured
       class HttpListener {
         @Attribute(reference=true)
         VirtualHost host;
       }
       
      
       <virtual-host name="foo" />
       <http-listener host="foo" />
       
      Default:
      false
    • variableExpansion

      boolean variableExpansion
      Indicates that the variable expansion should be performed on this proeprty.

      The configuration mechanism supports the Ant/Maven like variable expansion in the configuration XML out of the box. Normally this happens transparently to objects in modules, hence this property is set to true by default.

      However, in a rare circumstance you might want to get values injected before the variables are expanded, in which case you can set this property to false to indicate so. Note that such property must be of type String (or its collection/array.)

      Also note the inhabitants can always access the XML infoset by talking to Dom directly.

      Default:
      true