Class Metadata.Builder

java.lang.Object
com.google.protobuf.AbstractMessageLite.Builder
com.google.protobuf.AbstractMessage.Builder<Metadata.Builder>
com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder>
io.envoyproxy.envoy.config.core.v3.Metadata.Builder
All Implemented Interfaces:
com.google.protobuf.Message.Builder, com.google.protobuf.MessageLite.Builder, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, MetadataOrBuilder, Cloneable
Enclosing class:
Metadata

public static final class Metadata.Builder extends com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder> implements MetadataOrBuilder
Metadata provides additional inputs to filters based on matched listeners,
filter chains, routes and endpoints. It is structured as a map, usually from
filter name (in reverse DNS format) to metadata specific to the filter. Metadata
key-values for a filter are merged as connection and request handling occurs,
with later values for the same key overriding earlier values.

An example use of metadata is providing additional values to
http_connection_manager in the envoy.http_connection_manager.access_log
namespace.

Another example use of metadata is to per service config info in cluster metadata, which may get
consumed by multiple filters.

For load balancing, Metadata provides a means to subset cluster endpoints.
Endpoints have a Metadata object associated and routes contain a Metadata
object to match against. There are some well defined metadata used today for
this purpose:

* ``{"envoy.lb": {"canary": <bool> }}`` This indicates the canary status of an
endpoint and is also used during header processing
(x-envoy-upstream-canary) and for stats purposes.
[#next-major-version: move to type/metadata/v2]
Protobuf type envoy.config.core.v3.Metadata
  • Field Details

    • bitField0_

      private int bitField0_
    • filterMetadataConverter

      private static final Metadata.Builder.FilterMetadataConverter filterMetadataConverter
    • filterMetadata_

      private com.google.protobuf.MapFieldBuilder<String, com.google.protobuf.StructOrBuilder, com.google.protobuf.Struct, com.google.protobuf.Struct.Builder> filterMetadata_
    • typedFilterMetadataConverter

      private static final Metadata.Builder.TypedFilterMetadataConverter typedFilterMetadataConverter
    • typedFilterMetadata_

      private com.google.protobuf.MapFieldBuilder<String, com.google.protobuf.AnyOrBuilder, com.google.protobuf.Any, com.google.protobuf.Any.Builder> typedFilterMetadata_
  • Constructor Details

    • Builder

      private Builder()
    • Builder

      private Builder(com.google.protobuf.AbstractMessage.BuilderParent parent)
  • Method Details

    • getDescriptor

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    • internalGetMapFieldReflection

      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(int number)
      Overrides:
      internalGetMapFieldReflection in class com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder>
    • internalGetMutableMapFieldReflection

      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(int number)
      Overrides:
      internalGetMutableMapFieldReflection in class com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder>
    • internalGetFieldAccessorTable

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder>
    • clear

      public Metadata.Builder clear()
      Specified by:
      clear in interface com.google.protobuf.Message.Builder
      Specified by:
      clear in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      clear in class com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder>
    • getDescriptorForType

      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
      Specified by:
      getDescriptorForType in interface com.google.protobuf.Message.Builder
      Specified by:
      getDescriptorForType in interface com.google.protobuf.MessageOrBuilder
      Overrides:
      getDescriptorForType in class com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder>
    • getDefaultInstanceForType

      public Metadata getDefaultInstanceForType()
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder
    • build

      public Metadata build()
      Specified by:
      build in interface com.google.protobuf.Message.Builder
      Specified by:
      build in interface com.google.protobuf.MessageLite.Builder
    • buildPartial

      public Metadata buildPartial()
      Specified by:
      buildPartial in interface com.google.protobuf.Message.Builder
      Specified by:
      buildPartial in interface com.google.protobuf.MessageLite.Builder
    • buildPartial0

      private void buildPartial0(Metadata result)
    • mergeFrom

      public Metadata.Builder mergeFrom(com.google.protobuf.Message other)
      Specified by:
      mergeFrom in interface com.google.protobuf.Message.Builder
      Overrides:
      mergeFrom in class com.google.protobuf.AbstractMessage.Builder<Metadata.Builder>
    • mergeFrom

      public Metadata.Builder mergeFrom(Metadata other)
    • isInitialized

      public final boolean isInitialized()
      Specified by:
      isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
      Overrides:
      isInitialized in class com.google.protobuf.GeneratedMessage.Builder<Metadata.Builder>
    • mergeFrom

      public Metadata.Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Specified by:
      mergeFrom in interface com.google.protobuf.Message.Builder
      Specified by:
      mergeFrom in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      mergeFrom in class com.google.protobuf.AbstractMessage.Builder<Metadata.Builder>
      Throws:
      IOException
    • internalGetFilterMetadata

      private com.google.protobuf.MapFieldBuilder<String, com.google.protobuf.StructOrBuilder, com.google.protobuf.Struct, com.google.protobuf.Struct.Builder> internalGetFilterMetadata()
    • internalGetMutableFilterMetadata

      private com.google.protobuf.MapFieldBuilder<String, com.google.protobuf.StructOrBuilder, com.google.protobuf.Struct, com.google.protobuf.Struct.Builder> internalGetMutableFilterMetadata()
    • getFilterMetadataCount

      public int getFilterMetadataCount()
      Description copied from interface: MetadataOrBuilder
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
      Specified by:
      getFilterMetadataCount in interface MetadataOrBuilder
    • containsFilterMetadata

      public boolean containsFilterMetadata(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
      Specified by:
      containsFilterMetadata in interface MetadataOrBuilder
    • getFilterMetadata

      @Deprecated public Map<String, com.google.protobuf.Struct> getFilterMetadata()
      Deprecated.
      Specified by:
      getFilterMetadata in interface MetadataOrBuilder
    • getFilterMetadataMap

      public Map<String, com.google.protobuf.Struct> getFilterMetadataMap()
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
      Specified by:
      getFilterMetadataMap in interface MetadataOrBuilder
    • getFilterMetadataOrDefault

      public com.google.protobuf.Struct getFilterMetadataOrDefault(String key, com.google.protobuf.Struct defaultValue)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
      Specified by:
      getFilterMetadataOrDefault in interface MetadataOrBuilder
    • getFilterMetadataOrThrow

      public com.google.protobuf.Struct getFilterMetadataOrThrow(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
      Specified by:
      getFilterMetadataOrThrow in interface MetadataOrBuilder
    • clearFilterMetadata

      public Metadata.Builder clearFilterMetadata()
    • removeFilterMetadata

      public Metadata.Builder removeFilterMetadata(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
    • getMutableFilterMetadata

      @Deprecated public Map<String, com.google.protobuf.Struct> getMutableFilterMetadata()
      Deprecated.
      Use alternate mutation accessors instead.
    • putFilterMetadata

      public Metadata.Builder putFilterMetadata(String key, com.google.protobuf.Struct value)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
    • putAllFilterMetadata

      public Metadata.Builder putAllFilterMetadata(Map<String, com.google.protobuf.Struct> values)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
    • putFilterMetadataBuilderIfAbsent

      public com.google.protobuf.Struct.Builder putFilterMetadataBuilderIfAbsent(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      If both ``filter_metadata`` and
      :ref:`typed_filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.typed_filter_metadata>`
      fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Struct> filter_metadata = 1 [(.validate.rules) = { ... }
    • internalGetTypedFilterMetadata

      private com.google.protobuf.MapFieldBuilder<String, com.google.protobuf.AnyOrBuilder, com.google.protobuf.Any, com.google.protobuf.Any.Builder> internalGetTypedFilterMetadata()
    • internalGetMutableTypedFilterMetadata

      private com.google.protobuf.MapFieldBuilder<String, com.google.protobuf.AnyOrBuilder, com.google.protobuf.Any, com.google.protobuf.Any.Builder> internalGetMutableTypedFilterMetadata()
    • getTypedFilterMetadataCount

      public int getTypedFilterMetadataCount()
      Description copied from interface: MetadataOrBuilder
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
      Specified by:
      getTypedFilterMetadataCount in interface MetadataOrBuilder
    • containsTypedFilterMetadata

      public boolean containsTypedFilterMetadata(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
      Specified by:
      containsTypedFilterMetadata in interface MetadataOrBuilder
    • getTypedFilterMetadata

      @Deprecated public Map<String, com.google.protobuf.Any> getTypedFilterMetadata()
      Deprecated.
      Specified by:
      getTypedFilterMetadata in interface MetadataOrBuilder
    • getTypedFilterMetadataMap

      public Map<String, com.google.protobuf.Any> getTypedFilterMetadataMap()
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
      Specified by:
      getTypedFilterMetadataMap in interface MetadataOrBuilder
    • getTypedFilterMetadataOrDefault

      public com.google.protobuf.Any getTypedFilterMetadataOrDefault(String key, com.google.protobuf.Any defaultValue)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
      Specified by:
      getTypedFilterMetadataOrDefault in interface MetadataOrBuilder
    • getTypedFilterMetadataOrThrow

      public com.google.protobuf.Any getTypedFilterMetadataOrThrow(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
      Specified by:
      getTypedFilterMetadataOrThrow in interface MetadataOrBuilder
    • clearTypedFilterMetadata

      public Metadata.Builder clearTypedFilterMetadata()
    • removeTypedFilterMetadata

      public Metadata.Builder removeTypedFilterMetadata(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
    • getMutableTypedFilterMetadata

      @Deprecated public Map<String, com.google.protobuf.Any> getMutableTypedFilterMetadata()
      Deprecated.
      Use alternate mutation accessors instead.
    • putTypedFilterMetadata

      public Metadata.Builder putTypedFilterMetadata(String key, com.google.protobuf.Any value)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
    • putAllTypedFilterMetadata

      public Metadata.Builder putAllTypedFilterMetadata(Map<String, com.google.protobuf.Any> values)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }
    • putTypedFilterMetadataBuilderIfAbsent

      public com.google.protobuf.Any.Builder putTypedFilterMetadataBuilderIfAbsent(String key)
      Key is the reverse DNS filter name, e.g. com.acme.widget. The ``envoy.*``
      namespace is reserved for Envoy's built-in filters.
      The value is encoded as google.protobuf.Any.
      If both :ref:`filter_metadata <envoy_v3_api_field_config.core.v3.Metadata.filter_metadata>`
      and ``typed_filter_metadata`` fields are present in the metadata with same keys,
      only ``typed_filter_metadata`` field will be parsed.
      
      map<string, .google.protobuf.Any> typed_filter_metadata = 2 [(.validate.rules) = { ... }