Interface AttributesBuilder

All Superinterfaces:
AttributesSetters

@UnstableApi public interface AttributesBuilder extends AttributesSetters
A builder for Attributes.
  • Method Details

    • set

      <T> AttributesBuilder set(AttributeKey<T> key, @Nullable T value)
      Description copied from interface: AttributesSetters
      Sets the specified value with the given AttributeKey. The old value associated with the AttributeKey is replaced by the specified value. If a null value is specified, the value in the AttributesGetters.parent() is hidden as well.
      
       static final AttributeKey<String> USER_ID = AttributeKey.valueOf("USER_ID");
       static final AttributeKey<String> SECRET_TOKEN = AttributeKey.valueOf("SECRET_TOKEN");
       static final AttributeKey<String> TRACE_ID = AttributeKey.valueOf("TRACE_ID");
      
       Attributes attributes = Attributes.of(USER_ID, "Meri Kim",
                                             SECRET_TOKEN, "secret-1",
                                             TRACE_ID, "trace-1");
      
       Attributes child = Attributes.builder(attributes)
                                    .set(SECRET_TOKEN, null)
                                    .set(TRACE_ID, "trace-2")
                                    .build();
      
       // Any mutations in the child do not modify the value in the parent.
       assert attributes.attr(USER_ID).equals("Meri Kim");
       assert attributes.attr(SECRET_TOKEN).equals("secret-1");
       assert attributes.attr(TRACE_ID).equals("trace-1");
      
       // Inherits the value of USER_ID from the parent.
       assert child.attr(USER_ID).equals("Meri Kim");
       // Hides the value of SECRET_TOKEN that the parent has.
       assert child.attr(SECRET_TOKEN) == null;
       // Overrides the parent's TRACE_ID.
       assert child.attr(TRACE_ID).equals("trace-2");
       
      Specified by:
      set in interface AttributesSetters
    • removeAndThen

      default <T> AttributesBuilder removeAndThen(AttributeKey<T> key)
      Description copied from interface: AttributesSetters
      Removes the value associated with the specified AttributeKey in the AttributesGetters.ownAttrs(). Unlike AttributesSetters.remove(AttributeKey) this method returns itself so that the caller can chain the invocations.

      Note that this method won't remove the value in AttributesGetters.parent().

      Specified by:
      removeAndThen in interface AttributesSetters
    • build

      Attributes build()
      Returns a newly created Attributes with the entries in this builder.