Class HttpKeyBuilder.Builder

  • All Implemented Interfaces:
    com.google.protobuf.Message.Builder, com.google.protobuf.MessageLite.Builder, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, HttpKeyBuilderOrBuilder, java.lang.Cloneable
    Enclosing class:
    HttpKeyBuilder

    public static final class HttpKeyBuilder.Builder
    extends com.google.protobuf.GeneratedMessage.Builder<HttpKeyBuilder.Builder>
    implements HttpKeyBuilderOrBuilder
     An HttpKeyBuilder applies to a given HTTP URL and headers.
    
     Path and host patterns use the matching syntax from gRPC transcoding to
     extract named key/value pairs from the path and host components of the URL:
     https://github.com/googleapis/googleapis/blob/master/google/api/http.proto
    
     It is invalid to specify the same key name in multiple places in a pattern.
    
     For a service where the project id can be expressed either as a subdomain or
     in the path, separate HttpKeyBuilders must be used:
     host_pattern: 'example.com' path_pattern: '/{id}/{object}/**'
     host_pattern: '{id}.example.com' path_pattern: '/{object}/**'
     If the host is exactly 'example.com', the first path segment will be used as
     the id and the second segment as the object. If the host has a subdomain, the
     subdomain will be used as the id and the first segment as the object. If
     neither pattern matches, no keys will be extracted.
     
    Protobuf type grpc.lookup.v1.HttpKeyBuilder
    • Field Detail

      • bitField0_

        private int bitField0_
      • hostPatterns_

        private com.google.protobuf.LazyStringArrayList hostPatterns_
      • pathPatterns_

        private com.google.protobuf.LazyStringArrayList pathPatterns_
      • queryParameters_

        private java.util.List<NameMatcher> queryParameters_
      • headers_

        private java.util.List<NameMatcher> headers_
      • constantKeys_

        private com.google.protobuf.MapField<java.lang.String,​java.lang.String> constantKeys_
    • Constructor Detail

      • Builder

        private Builder()
      • Builder

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

      • 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<HttpKeyBuilder.Builder>
      • internalGetMutableMapFieldReflection

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

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

        public HttpKeyBuilder.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<HttpKeyBuilder.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<HttpKeyBuilder.Builder>
      • getDefaultInstanceForType

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

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

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

        private void buildPartialRepeatedFields​(HttpKeyBuilder result)
      • buildPartial0

        private void buildPartial0​(HttpKeyBuilder result)
      • mergeFrom

        public HttpKeyBuilder.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<HttpKeyBuilder.Builder>
      • isInitialized

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

        public HttpKeyBuilder.Builder mergeFrom​(com.google.protobuf.CodedInputStream input,
                                                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                         throws java.io.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<HttpKeyBuilder.Builder>
        Throws:
        java.io.IOException
      • ensureHostPatternsIsMutable

        private void ensureHostPatternsIsMutable()
      • getHostPatternsList

        public com.google.protobuf.ProtocolStringList getHostPatternsList()
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Specified by:
        getHostPatternsList in interface HttpKeyBuilderOrBuilder
        Returns:
        A list containing the hostPatterns.
      • getHostPatternsCount

        public int getHostPatternsCount()
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Specified by:
        getHostPatternsCount in interface HttpKeyBuilderOrBuilder
        Returns:
        The count of hostPatterns.
      • getHostPatterns

        public java.lang.String getHostPatterns​(int index)
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Specified by:
        getHostPatterns in interface HttpKeyBuilderOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The hostPatterns at the given index.
      • getHostPatternsBytes

        public com.google.protobuf.ByteString getHostPatternsBytes​(int index)
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Specified by:
        getHostPatternsBytes in interface HttpKeyBuilderOrBuilder
        Parameters:
        index - The index of the value to return.
        Returns:
        The bytes of the hostPatterns at the given index.
      • setHostPatterns

        public HttpKeyBuilder.Builder setHostPatterns​(int index,
                                                      java.lang.String value)
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Parameters:
        index - The index to set the value at.
        value - The hostPatterns to set.
        Returns:
        This builder for chaining.
      • addHostPatterns

        public HttpKeyBuilder.Builder addHostPatterns​(java.lang.String value)
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Parameters:
        value - The hostPatterns to add.
        Returns:
        This builder for chaining.
      • addAllHostPatterns

        public HttpKeyBuilder.Builder addAllHostPatterns​(java.lang.Iterable<java.lang.String> values)
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Parameters:
        values - The hostPatterns to add.
        Returns:
        This builder for chaining.
      • clearHostPatterns

        public HttpKeyBuilder.Builder clearHostPatterns()
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Returns:
        This builder for chaining.
      • addHostPatternsBytes

        public HttpKeyBuilder.Builder addHostPatternsBytes​(com.google.protobuf.ByteString value)
         host_pattern is an ordered list of host template patterns for the desired
         value.  If any host_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A host
         consists of labels separated by dots. Each label is matched against the
         label in the pattern as follows:
         - "*": Matches any single label.
         - "**": Matches zero or more labels (first or last part of host only).
         - "{<name>=...}": One or more label capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single label capture. Identical to {<name>=*}.
        
         Examples:
         - "example.com": Only applies to the exact host example.com.
         - "*.example.com": Matches subdomains of example.com.
         - "**.example.com": matches example.com, and all levels of subdomains.
         - "{project}.example.com": Extracts the third level subdomain.
         - "{project=**}.example.com": Extracts the third level+ subdomains.
         - "{project=**}": Extracts the entire host.
         
        repeated string host_patterns = 1;
        Parameters:
        value - The bytes of the hostPatterns to add.
        Returns:
        This builder for chaining.
      • ensurePathPatternsIsMutable

        private void ensurePathPatternsIsMutable()
      • getPathPatternsList

        public com.google.protobuf.ProtocolStringList getPathPatternsList()
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Specified by:
        getPathPatternsList in interface HttpKeyBuilderOrBuilder
        Returns:
        A list containing the pathPatterns.
      • getPathPatternsCount

        public int getPathPatternsCount()
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Specified by:
        getPathPatternsCount in interface HttpKeyBuilderOrBuilder
        Returns:
        The count of pathPatterns.
      • getPathPatterns

        public java.lang.String getPathPatterns​(int index)
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Specified by:
        getPathPatterns in interface HttpKeyBuilderOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The pathPatterns at the given index.
      • getPathPatternsBytes

        public com.google.protobuf.ByteString getPathPatternsBytes​(int index)
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Specified by:
        getPathPatternsBytes in interface HttpKeyBuilderOrBuilder
        Parameters:
        index - The index of the value to return.
        Returns:
        The bytes of the pathPatterns at the given index.
      • setPathPatterns

        public HttpKeyBuilder.Builder setPathPatterns​(int index,
                                                      java.lang.String value)
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Parameters:
        index - The index to set the value at.
        value - The pathPatterns to set.
        Returns:
        This builder for chaining.
      • addPathPatterns

        public HttpKeyBuilder.Builder addPathPatterns​(java.lang.String value)
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Parameters:
        value - The pathPatterns to add.
        Returns:
        This builder for chaining.
      • addAllPathPatterns

        public HttpKeyBuilder.Builder addAllPathPatterns​(java.lang.Iterable<java.lang.String> values)
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Parameters:
        values - The pathPatterns to add.
        Returns:
        This builder for chaining.
      • clearPathPatterns

        public HttpKeyBuilder.Builder clearPathPatterns()
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Returns:
        This builder for chaining.
      • addPathPatternsBytes

        public HttpKeyBuilder.Builder addPathPatternsBytes​(com.google.protobuf.ByteString value)
         path_pattern is an ordered list of path template patterns for the desired
         value.  If any path_pattern values are specified, then at least one must
         match, and the last one wins and sets any specified variables.  A path
         consists of segments separated by slashes. Each segment is matched against
         the segment in the pattern as follows:
         - "*": Matches any single segment.
         - "**": Matches zero or more segments (first or last part of path only).
         - "{<name>=...}": One or more segment capture, where "..." can be any
         template that does not include a capture.
         - "{<name>}": A single segment capture. Identical to {<name>=*}.
         A custom method may also be specified by appending ":" and the custom
         method name or "*" to indicate any custom method (including no custom
         method).  For example, "/*/projects/{project_id}/**:*" extracts
         `{project_id}` for any version, resource and custom method that includes
         it.  By default, any custom method will be matched.
        
         Examples:
         - "/v1/{name=messages/*}": extracts a name like "messages/12345".
         - "/v1/messages/{message_id}": extracts a message_id like "12345".
         - "/v1/users/{user_id}/messages/{message_id}": extracts two key values.
         
        repeated string path_patterns = 2;
        Parameters:
        value - The bytes of the pathPatterns to add.
        Returns:
        This builder for chaining.
      • ensureQueryParametersIsMutable

        private void ensureQueryParametersIsMutable()
      • getQueryParametersList

        public java.util.List<NameMatcher> getQueryParametersList()
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
        Specified by:
        getQueryParametersList in interface HttpKeyBuilderOrBuilder
      • getQueryParametersCount

        public int getQueryParametersCount()
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
        Specified by:
        getQueryParametersCount in interface HttpKeyBuilderOrBuilder
      • getQueryParameters

        public NameMatcher getQueryParameters​(int index)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
        Specified by:
        getQueryParameters in interface HttpKeyBuilderOrBuilder
      • setQueryParameters

        public HttpKeyBuilder.Builder setQueryParameters​(int index,
                                                         NameMatcher value)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • setQueryParameters

        public HttpKeyBuilder.Builder setQueryParameters​(int index,
                                                         NameMatcher.Builder builderForValue)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • addQueryParameters

        public HttpKeyBuilder.Builder addQueryParameters​(NameMatcher value)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • addQueryParameters

        public HttpKeyBuilder.Builder addQueryParameters​(int index,
                                                         NameMatcher value)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • addQueryParameters

        public HttpKeyBuilder.Builder addQueryParameters​(NameMatcher.Builder builderForValue)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • addQueryParameters

        public HttpKeyBuilder.Builder addQueryParameters​(int index,
                                                         NameMatcher.Builder builderForValue)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • addAllQueryParameters

        public HttpKeyBuilder.Builder addAllQueryParameters​(java.lang.Iterable<? extends NameMatcher> values)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • clearQueryParameters

        public HttpKeyBuilder.Builder clearQueryParameters()
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • removeQueryParameters

        public HttpKeyBuilder.Builder removeQueryParameters​(int index)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • getQueryParametersBuilder

        public NameMatcher.Builder getQueryParametersBuilder​(int index)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • getQueryParametersOrBuilder

        public NameMatcherOrBuilder getQueryParametersOrBuilder​(int index)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
        Specified by:
        getQueryParametersOrBuilder in interface HttpKeyBuilderOrBuilder
      • getQueryParametersOrBuilderList

        public java.util.List<? extends NameMatcherOrBuilder> getQueryParametersOrBuilderList()
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
        Specified by:
        getQueryParametersOrBuilderList in interface HttpKeyBuilderOrBuilder
      • addQueryParametersBuilder

        public NameMatcher.Builder addQueryParametersBuilder()
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • addQueryParametersBuilder

        public NameMatcher.Builder addQueryParametersBuilder​(int index)
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • getQueryParametersBuilderList

        public java.util.List<NameMatcher.Builder> getQueryParametersBuilderList()
         List of query parameter names to try to match.
         For example: ["parent", "name", "resource.name"]
         We extract all the specified query_parameters (case-sensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given parameter appears multiple times (?foo=a&foo=b) we
         will report it as a comma-separated string (foo=a,b).
         
        repeated .grpc.lookup.v1.NameMatcher query_parameters = 3;
      • ensureHeadersIsMutable

        private void ensureHeadersIsMutable()
      • getHeadersList

        public java.util.List<NameMatcher> getHeadersList()
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
        Specified by:
        getHeadersList in interface HttpKeyBuilderOrBuilder
      • getHeadersCount

        public int getHeadersCount()
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
        Specified by:
        getHeadersCount in interface HttpKeyBuilderOrBuilder
      • getHeaders

        public NameMatcher getHeaders​(int index)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
        Specified by:
        getHeaders in interface HttpKeyBuilderOrBuilder
      • setHeaders

        public HttpKeyBuilder.Builder setHeaders​(int index,
                                                 NameMatcher value)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • setHeaders

        public HttpKeyBuilder.Builder setHeaders​(int index,
                                                 NameMatcher.Builder builderForValue)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • addHeaders

        public HttpKeyBuilder.Builder addHeaders​(NameMatcher value)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • addHeaders

        public HttpKeyBuilder.Builder addHeaders​(int index,
                                                 NameMatcher value)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • addHeaders

        public HttpKeyBuilder.Builder addHeaders​(NameMatcher.Builder builderForValue)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • addHeaders

        public HttpKeyBuilder.Builder addHeaders​(int index,
                                                 NameMatcher.Builder builderForValue)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • addAllHeaders

        public HttpKeyBuilder.Builder addAllHeaders​(java.lang.Iterable<? extends NameMatcher> values)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • clearHeaders

        public HttpKeyBuilder.Builder clearHeaders()
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • removeHeaders

        public HttpKeyBuilder.Builder removeHeaders​(int index)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • getHeadersBuilder

        public NameMatcher.Builder getHeadersBuilder​(int index)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • getHeadersOrBuilder

        public NameMatcherOrBuilder getHeadersOrBuilder​(int index)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
        Specified by:
        getHeadersOrBuilder in interface HttpKeyBuilderOrBuilder
      • getHeadersOrBuilderList

        public java.util.List<? extends NameMatcherOrBuilder> getHeadersOrBuilderList()
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
        Specified by:
        getHeadersOrBuilderList in interface HttpKeyBuilderOrBuilder
      • addHeadersBuilder

        public NameMatcher.Builder addHeadersBuilder()
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • addHeadersBuilder

        public NameMatcher.Builder addHeadersBuilder​(int index)
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • getHeadersBuilderList

        public java.util.List<NameMatcher.Builder> getHeadersBuilderList()
         List of headers to try to match.
         We extract all the specified header values (case-insensitively).  If any
         are marked as "required_match" and are not present, this keybuilder fails
         to match.  If a given header appears multiple times in the request we will
         report it as a comma-separated string, in standard HTTP fashion.
         
        repeated .grpc.lookup.v1.NameMatcher headers = 4;
      • internalGetConstantKeys

        private com.google.protobuf.MapField<java.lang.String,​java.lang.String> internalGetConstantKeys()
      • internalGetMutableConstantKeys

        private com.google.protobuf.MapField<java.lang.String,​java.lang.String> internalGetMutableConstantKeys()
      • getConstantKeysCount

        public int getConstantKeysCount()
        Description copied from interface: HttpKeyBuilderOrBuilder
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;
        Specified by:
        getConstantKeysCount in interface HttpKeyBuilderOrBuilder
      • containsConstantKeys

        public boolean containsConstantKeys​(java.lang.String key)
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;
        Specified by:
        containsConstantKeys in interface HttpKeyBuilderOrBuilder
      • getConstantKeysMap

        public java.util.Map<java.lang.String,​java.lang.String> getConstantKeysMap()
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;
        Specified by:
        getConstantKeysMap in interface HttpKeyBuilderOrBuilder
      • getConstantKeysOrDefault

        public java.lang.String getConstantKeysOrDefault​(java.lang.String key,
                                                         java.lang.String defaultValue)
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;
        Specified by:
        getConstantKeysOrDefault in interface HttpKeyBuilderOrBuilder
      • getConstantKeysOrThrow

        public java.lang.String getConstantKeysOrThrow​(java.lang.String key)
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;
        Specified by:
        getConstantKeysOrThrow in interface HttpKeyBuilderOrBuilder
      • removeConstantKeys

        public HttpKeyBuilder.Builder removeConstantKeys​(java.lang.String key)
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;
      • getMutableConstantKeys

        @Deprecated
        public java.util.Map<java.lang.String,​java.lang.String> getMutableConstantKeys()
        Deprecated.
        Use alternate mutation accessors instead.
      • putConstantKeys

        public HttpKeyBuilder.Builder putConstantKeys​(java.lang.String key,
                                                      java.lang.String value)
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;
      • putAllConstantKeys

        public HttpKeyBuilder.Builder putAllConstantKeys​(java.util.Map<java.lang.String,​java.lang.String> values)
         You can optionally set one or more specific key/value pairs to be added to
         the key_map.  This can be useful to identify which builder built the key,
         for example if you are suppressing a lot of information from the URL, but
         need to separately cache and request URLs with that content.
         
        map<string, string> constant_keys = 5;