All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.api.MetricDescriptor Maven / Gradle / Ivy

There is a newer version: 1.45.6
Show newest version
/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/api/metric.proto

package com.google.api;

/**
 *
 *
 * 
 * Defines a metric type and its schema. Once a metric descriptor is created,
 * deleting or altering it stops data collection and makes the metric type's
 * existing data unusable.
 * The following are specific rules for service defined Monitoring metric
 * descriptors:
 * * `type`, `metric_kind`, `value_type`, `description`, `display_name`,
 *   `launch_stage` fields are all required. The `unit` field must be specified
 *   if the `value_type` is any of DOUBLE, INT64, DISTRIBUTION.
 * * Maximum of default 500 metric descriptors per service is allowed.
 * * Maximum of default 10 labels per metric descriptor is allowed.
 * The default maximum limit can be overridden. Please follow
 * https://cloud.google.com/monitoring/quotas
 * 
* * Protobuf type {@code google.api.MetricDescriptor} */ public final class MetricDescriptor extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:google.api.MetricDescriptor) MetricDescriptorOrBuilder { private static final long serialVersionUID = 0L; // Use MetricDescriptor.newBuilder() to construct. private MetricDescriptor(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } private MetricDescriptor() { name_ = ""; type_ = ""; labels_ = java.util.Collections.emptyList(); metricKind_ = 0; valueType_ = 0; unit_ = ""; description_ = ""; displayName_ = ""; launchStage_ = 0; monitoredResourceTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new MetricDescriptor(); } @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { return this.unknownFields; } private MetricDescriptor( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { this(); if (extensionRegistry == null) { throw new java.lang.NullPointerException(); } int mutable_bitField0_ = 0; com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); try { boolean done = false; while (!done) { int tag = input.readTag(); switch (tag) { case 0: done = true; break; case 10: { java.lang.String s = input.readStringRequireUtf8(); name_ = s; break; } case 18: { if (!((mutable_bitField0_ & 0x00000001) != 0)) { labels_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } labels_.add( input.readMessage(com.google.api.LabelDescriptor.parser(), extensionRegistry)); break; } case 24: { int rawValue = input.readEnum(); metricKind_ = rawValue; break; } case 32: { int rawValue = input.readEnum(); valueType_ = rawValue; break; } case 42: { java.lang.String s = input.readStringRequireUtf8(); unit_ = s; break; } case 50: { java.lang.String s = input.readStringRequireUtf8(); description_ = s; break; } case 58: { java.lang.String s = input.readStringRequireUtf8(); displayName_ = s; break; } case 66: { java.lang.String s = input.readStringRequireUtf8(); type_ = s; break; } case 82: { com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder subBuilder = null; if (metadata_ != null) { subBuilder = metadata_.toBuilder(); } metadata_ = input.readMessage( com.google.api.MetricDescriptor.MetricDescriptorMetadata.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(metadata_); metadata_ = subBuilder.buildPartial(); } break; } case 96: { int rawValue = input.readEnum(); launchStage_ = rawValue; break; } case 106: { java.lang.String s = input.readStringRequireUtf8(); if (!((mutable_bitField0_ & 0x00000002) != 0)) { monitoredResourceTypes_ = new com.google.protobuf.LazyStringArrayList(); mutable_bitField0_ |= 0x00000002; } monitoredResourceTypes_.add(s); break; } default: { if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { done = true; } break; } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw e.setUnfinishedMessage(this); } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { if (((mutable_bitField0_ & 0x00000001) != 0)) { labels_ = java.util.Collections.unmodifiableList(labels_); } if (((mutable_bitField0_ & 0x00000002) != 0)) { monitoredResourceTypes_ = monitoredResourceTypes_.getUnmodifiableView(); } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.api.MetricProto.internal_static_google_api_MetricDescriptor_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.api.MetricProto.internal_static_google_api_MetricDescriptor_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.api.MetricDescriptor.class, com.google.api.MetricDescriptor.Builder.class); } /** * * *
   * The kind of measurement. It describes how the data is reported.
   * 
* * Protobuf enum {@code google.api.MetricDescriptor.MetricKind} */ public enum MetricKind implements com.google.protobuf.ProtocolMessageEnum { /** * * *
     * Do not use this default value.
     * 
* * METRIC_KIND_UNSPECIFIED = 0; */ METRIC_KIND_UNSPECIFIED(0), /** * * *
     * An instantaneous measurement of a value.
     * 
* * GAUGE = 1; */ GAUGE(1), /** * * *
     * The change in a value during a time interval.
     * 
* * DELTA = 2; */ DELTA(2), /** * * *
     * A value accumulated over a time interval.  Cumulative
     * measurements in a time series should have the same start time
     * and increasing end times, until an event resets the cumulative
     * value to zero and sets a new start time for the following
     * points.
     * 
* * CUMULATIVE = 3; */ CUMULATIVE(3), UNRECOGNIZED(-1), ; /** * * *
     * Do not use this default value.
     * 
* * METRIC_KIND_UNSPECIFIED = 0; */ public static final int METRIC_KIND_UNSPECIFIED_VALUE = 0; /** * * *
     * An instantaneous measurement of a value.
     * 
* * GAUGE = 1; */ public static final int GAUGE_VALUE = 1; /** * * *
     * The change in a value during a time interval.
     * 
* * DELTA = 2; */ public static final int DELTA_VALUE = 2; /** * * *
     * A value accumulated over a time interval.  Cumulative
     * measurements in a time series should have the same start time
     * and increasing end times, until an event resets the cumulative
     * value to zero and sets a new start time for the following
     * points.
     * 
* * CUMULATIVE = 3; */ public static final int CUMULATIVE_VALUE = 3; public final int getNumber() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalArgumentException( "Can't get the number of an unknown enum value."); } return value; } /** * @param value The numeric wire value of the corresponding enum entry. * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated public static MetricKind valueOf(int value) { return forNumber(value); } /** * @param value The numeric wire value of the corresponding enum entry. * @return The enum associated with the given numeric wire value. */ public static MetricKind forNumber(int value) { switch (value) { case 0: return METRIC_KIND_UNSPECIFIED; case 1: return GAUGE; case 2: return DELTA; case 3: return CUMULATIVE; default: return null; } } public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; } private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public MetricKind findValueByNumber(int number) { return MetricKind.forNumber(number); } }; public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalStateException( "Can't get the descriptor of an unrecognized enum value."); } return getDescriptor().getValues().get(ordinal()); } public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { return getDescriptor(); } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { return com.google.api.MetricDescriptor.getDescriptor().getEnumTypes().get(0); } private static final MetricKind[] VALUES = values(); public static MetricKind valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); } if (desc.getIndex() == -1) { return UNRECOGNIZED; } return VALUES[desc.getIndex()]; } private final int value; private MetricKind(int value) { this.value = value; } // @@protoc_insertion_point(enum_scope:google.api.MetricDescriptor.MetricKind) } /** * * *
   * The value type of a metric.
   * 
* * Protobuf enum {@code google.api.MetricDescriptor.ValueType} */ public enum ValueType implements com.google.protobuf.ProtocolMessageEnum { /** * * *
     * Do not use this default value.
     * 
* * VALUE_TYPE_UNSPECIFIED = 0; */ VALUE_TYPE_UNSPECIFIED(0), /** * * *
     * The value is a boolean.
     * This value type can be used only if the metric kind is `GAUGE`.
     * 
* * BOOL = 1; */ BOOL(1), /** * * *
     * The value is a signed 64-bit integer.
     * 
* * INT64 = 2; */ INT64(2), /** * * *
     * The value is a double precision floating point number.
     * 
* * DOUBLE = 3; */ DOUBLE(3), /** * * *
     * The value is a text string.
     * This value type can be used only if the metric kind is `GAUGE`.
     * 
* * STRING = 4; */ STRING(4), /** * * *
     * The value is a [`Distribution`][google.api.Distribution].
     * 
* * DISTRIBUTION = 5; */ DISTRIBUTION(5), /** * * *
     * The value is money.
     * 
* * MONEY = 6; */ MONEY(6), UNRECOGNIZED(-1), ; /** * * *
     * Do not use this default value.
     * 
* * VALUE_TYPE_UNSPECIFIED = 0; */ public static final int VALUE_TYPE_UNSPECIFIED_VALUE = 0; /** * * *
     * The value is a boolean.
     * This value type can be used only if the metric kind is `GAUGE`.
     * 
* * BOOL = 1; */ public static final int BOOL_VALUE = 1; /** * * *
     * The value is a signed 64-bit integer.
     * 
* * INT64 = 2; */ public static final int INT64_VALUE = 2; /** * * *
     * The value is a double precision floating point number.
     * 
* * DOUBLE = 3; */ public static final int DOUBLE_VALUE = 3; /** * * *
     * The value is a text string.
     * This value type can be used only if the metric kind is `GAUGE`.
     * 
* * STRING = 4; */ public static final int STRING_VALUE = 4; /** * * *
     * The value is a [`Distribution`][google.api.Distribution].
     * 
* * DISTRIBUTION = 5; */ public static final int DISTRIBUTION_VALUE = 5; /** * * *
     * The value is money.
     * 
* * MONEY = 6; */ public static final int MONEY_VALUE = 6; public final int getNumber() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalArgumentException( "Can't get the number of an unknown enum value."); } return value; } /** * @param value The numeric wire value of the corresponding enum entry. * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated public static ValueType valueOf(int value) { return forNumber(value); } /** * @param value The numeric wire value of the corresponding enum entry. * @return The enum associated with the given numeric wire value. */ public static ValueType forNumber(int value) { switch (value) { case 0: return VALUE_TYPE_UNSPECIFIED; case 1: return BOOL; case 2: return INT64; case 3: return DOUBLE; case 4: return STRING; case 5: return DISTRIBUTION; case 6: return MONEY; default: return null; } } public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; } private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = new com.google.protobuf.Internal.EnumLiteMap() { public ValueType findValueByNumber(int number) { return ValueType.forNumber(number); } }; public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { if (this == UNRECOGNIZED) { throw new java.lang.IllegalStateException( "Can't get the descriptor of an unrecognized enum value."); } return getDescriptor().getValues().get(ordinal()); } public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { return getDescriptor(); } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { return com.google.api.MetricDescriptor.getDescriptor().getEnumTypes().get(1); } private static final ValueType[] VALUES = values(); public static ValueType valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); } if (desc.getIndex() == -1) { return UNRECOGNIZED; } return VALUES[desc.getIndex()]; } private final int value; private ValueType(int value) { this.value = value; } // @@protoc_insertion_point(enum_scope:google.api.MetricDescriptor.ValueType) } public interface MetricDescriptorMetadataOrBuilder extends // @@protoc_insertion_point(interface_extends:google.api.MetricDescriptor.MetricDescriptorMetadata) com.google.protobuf.MessageOrBuilder { /** * * *
     * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
     * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @return The enum numeric value on the wire for launchStage. */ @java.lang.Deprecated int getLaunchStageValue(); /** * * *
     * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
     * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @return The launchStage. */ @java.lang.Deprecated com.google.api.LaunchStage getLaunchStage(); /** * * *
     * The sampling period of metric data points. For metrics which are written
     * periodically, consecutive data points are stored at this time interval,
     * excluding data loss due to errors. Metrics with a higher granularity have
     * a smaller sampling period.
     * 
* * .google.protobuf.Duration sample_period = 2; * * @return Whether the samplePeriod field is set. */ boolean hasSamplePeriod(); /** * * *
     * The sampling period of metric data points. For metrics which are written
     * periodically, consecutive data points are stored at this time interval,
     * excluding data loss due to errors. Metrics with a higher granularity have
     * a smaller sampling period.
     * 
* * .google.protobuf.Duration sample_period = 2; * * @return The samplePeriod. */ com.google.protobuf.Duration getSamplePeriod(); /** * * *
     * The sampling period of metric data points. For metrics which are written
     * periodically, consecutive data points are stored at this time interval,
     * excluding data loss due to errors. Metrics with a higher granularity have
     * a smaller sampling period.
     * 
* * .google.protobuf.Duration sample_period = 2; */ com.google.protobuf.DurationOrBuilder getSamplePeriodOrBuilder(); /** * * *
     * The delay of data points caused by ingestion. Data points older than this
     * age are guaranteed to be ingested and available to be read, excluding
     * data loss due to errors.
     * 
* * .google.protobuf.Duration ingest_delay = 3; * * @return Whether the ingestDelay field is set. */ boolean hasIngestDelay(); /** * * *
     * The delay of data points caused by ingestion. Data points older than this
     * age are guaranteed to be ingested and available to be read, excluding
     * data loss due to errors.
     * 
* * .google.protobuf.Duration ingest_delay = 3; * * @return The ingestDelay. */ com.google.protobuf.Duration getIngestDelay(); /** * * *
     * The delay of data points caused by ingestion. Data points older than this
     * age are guaranteed to be ingested and available to be read, excluding
     * data loss due to errors.
     * 
* * .google.protobuf.Duration ingest_delay = 3; */ com.google.protobuf.DurationOrBuilder getIngestDelayOrBuilder(); } /** * * *
   * Additional annotations that can be used to guide the usage of a metric.
   * 
* * Protobuf type {@code google.api.MetricDescriptor.MetricDescriptorMetadata} */ public static final class MetricDescriptorMetadata extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:google.api.MetricDescriptor.MetricDescriptorMetadata) MetricDescriptorMetadataOrBuilder { private static final long serialVersionUID = 0L; // Use MetricDescriptorMetadata.newBuilder() to construct. private MetricDescriptorMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } private MetricDescriptorMetadata() { launchStage_ = 0; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance(UnusedPrivateParameter unused) { return new MetricDescriptorMetadata(); } @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { return this.unknownFields; } private MetricDescriptorMetadata( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { this(); if (extensionRegistry == null) { throw new java.lang.NullPointerException(); } com.google.protobuf.UnknownFieldSet.Builder unknownFields = com.google.protobuf.UnknownFieldSet.newBuilder(); try { boolean done = false; while (!done) { int tag = input.readTag(); switch (tag) { case 0: done = true; break; case 8: { int rawValue = input.readEnum(); launchStage_ = rawValue; break; } case 18: { com.google.protobuf.Duration.Builder subBuilder = null; if (samplePeriod_ != null) { subBuilder = samplePeriod_.toBuilder(); } samplePeriod_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(samplePeriod_); samplePeriod_ = subBuilder.buildPartial(); } break; } case 26: { com.google.protobuf.Duration.Builder subBuilder = null; if (ingestDelay_ != null) { subBuilder = ingestDelay_.toBuilder(); } ingestDelay_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry); if (subBuilder != null) { subBuilder.mergeFrom(ingestDelay_); ingestDelay_ = subBuilder.buildPartial(); } break; } default: { if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) { done = true; } break; } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw e.setUnfinishedMessage(this); } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.api.MetricProto .internal_static_google_api_MetricDescriptor_MetricDescriptorMetadata_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.api.MetricProto .internal_static_google_api_MetricDescriptor_MetricDescriptorMetadata_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.api.MetricDescriptor.MetricDescriptorMetadata.class, com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder.class); } public static final int LAUNCH_STAGE_FIELD_NUMBER = 1; private int launchStage_; /** * * *
     * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
     * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @return The enum numeric value on the wire for launchStage. */ @java.lang.Override @java.lang.Deprecated public int getLaunchStageValue() { return launchStage_; } /** * * *
     * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
     * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @return The launchStage. */ @java.lang.Override @java.lang.Deprecated public com.google.api.LaunchStage getLaunchStage() { @SuppressWarnings("deprecation") com.google.api.LaunchStage result = com.google.api.LaunchStage.valueOf(launchStage_); return result == null ? com.google.api.LaunchStage.UNRECOGNIZED : result; } public static final int SAMPLE_PERIOD_FIELD_NUMBER = 2; private com.google.protobuf.Duration samplePeriod_; /** * * *
     * The sampling period of metric data points. For metrics which are written
     * periodically, consecutive data points are stored at this time interval,
     * excluding data loss due to errors. Metrics with a higher granularity have
     * a smaller sampling period.
     * 
* * .google.protobuf.Duration sample_period = 2; * * @return Whether the samplePeriod field is set. */ @java.lang.Override public boolean hasSamplePeriod() { return samplePeriod_ != null; } /** * * *
     * The sampling period of metric data points. For metrics which are written
     * periodically, consecutive data points are stored at this time interval,
     * excluding data loss due to errors. Metrics with a higher granularity have
     * a smaller sampling period.
     * 
* * .google.protobuf.Duration sample_period = 2; * * @return The samplePeriod. */ @java.lang.Override public com.google.protobuf.Duration getSamplePeriod() { return samplePeriod_ == null ? com.google.protobuf.Duration.getDefaultInstance() : samplePeriod_; } /** * * *
     * The sampling period of metric data points. For metrics which are written
     * periodically, consecutive data points are stored at this time interval,
     * excluding data loss due to errors. Metrics with a higher granularity have
     * a smaller sampling period.
     * 
* * .google.protobuf.Duration sample_period = 2; */ @java.lang.Override public com.google.protobuf.DurationOrBuilder getSamplePeriodOrBuilder() { return getSamplePeriod(); } public static final int INGEST_DELAY_FIELD_NUMBER = 3; private com.google.protobuf.Duration ingestDelay_; /** * * *
     * The delay of data points caused by ingestion. Data points older than this
     * age are guaranteed to be ingested and available to be read, excluding
     * data loss due to errors.
     * 
* * .google.protobuf.Duration ingest_delay = 3; * * @return Whether the ingestDelay field is set. */ @java.lang.Override public boolean hasIngestDelay() { return ingestDelay_ != null; } /** * * *
     * The delay of data points caused by ingestion. Data points older than this
     * age are guaranteed to be ingested and available to be read, excluding
     * data loss due to errors.
     * 
* * .google.protobuf.Duration ingest_delay = 3; * * @return The ingestDelay. */ @java.lang.Override public com.google.protobuf.Duration getIngestDelay() { return ingestDelay_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ingestDelay_; } /** * * *
     * The delay of data points caused by ingestion. Data points older than this
     * age are guaranteed to be ingested and available to be read, excluding
     * data loss due to errors.
     * 
* * .google.protobuf.Duration ingest_delay = 3; */ @java.lang.Override public com.google.protobuf.DurationOrBuilder getIngestDelayOrBuilder() { return getIngestDelay(); } private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; if (isInitialized == 0) return false; memoizedIsInitialized = 1; return true; } @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (launchStage_ != com.google.api.LaunchStage.LAUNCH_STAGE_UNSPECIFIED.getNumber()) { output.writeEnum(1, launchStage_); } if (samplePeriod_ != null) { output.writeMessage(2, getSamplePeriod()); } if (ingestDelay_ != null) { output.writeMessage(3, getIngestDelay()); } unknownFields.writeTo(output); } @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (launchStage_ != com.google.api.LaunchStage.LAUNCH_STAGE_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, launchStage_); } if (samplePeriod_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSamplePeriod()); } if (ingestDelay_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getIngestDelay()); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; } @java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof com.google.api.MetricDescriptor.MetricDescriptorMetadata)) { return super.equals(obj); } com.google.api.MetricDescriptor.MetricDescriptorMetadata other = (com.google.api.MetricDescriptor.MetricDescriptorMetadata) obj; if (launchStage_ != other.launchStage_) return false; if (hasSamplePeriod() != other.hasSamplePeriod()) return false; if (hasSamplePeriod()) { if (!getSamplePeriod().equals(other.getSamplePeriod())) return false; } if (hasIngestDelay() != other.hasIngestDelay()) return false; if (hasIngestDelay()) { if (!getIngestDelay().equals(other.getIngestDelay())) return false; } if (!unknownFields.equals(other.unknownFields)) return false; return true; } @java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + LAUNCH_STAGE_FIELD_NUMBER; hash = (53 * hash) + launchStage_; if (hasSamplePeriod()) { hash = (37 * hash) + SAMPLE_PERIOD_FIELD_NUMBER; hash = (53 * hash) + getSamplePeriod().hashCode(); } if (hasIngestDelay()) { hash = (37 * hash) + INGEST_DELAY_FIELD_NUMBER; hash = (53 * hash) + getIngestDelay().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseDelimitedFrom( java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } public static Builder newBuilder( com.google.api.MetricDescriptor.MetricDescriptorMetadata prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @java.lang.Override protected Builder newBuilderForType( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { Builder builder = new Builder(parent); return builder; } /** * * *
     * Additional annotations that can be used to guide the usage of a metric.
     * 
* * Protobuf type {@code google.api.MetricDescriptor.MetricDescriptorMetadata} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:google.api.MetricDescriptor.MetricDescriptorMetadata) com.google.api.MetricDescriptor.MetricDescriptorMetadataOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.api.MetricProto .internal_static_google_api_MetricDescriptor_MetricDescriptorMetadata_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.api.MetricProto .internal_static_google_api_MetricDescriptor_MetricDescriptorMetadata_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.api.MetricDescriptor.MetricDescriptorMetadata.class, com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder.class); } // Construct using com.google.api.MetricDescriptor.MetricDescriptorMetadata.newBuilder() private Builder() { maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} } @java.lang.Override public Builder clear() { super.clear(); launchStage_ = 0; if (samplePeriodBuilder_ == null) { samplePeriod_ = null; } else { samplePeriod_ = null; samplePeriodBuilder_ = null; } if (ingestDelayBuilder_ == null) { ingestDelay_ = null; } else { ingestDelay_ = null; ingestDelayBuilder_ = null; } return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return com.google.api.MetricProto .internal_static_google_api_MetricDescriptor_MetricDescriptorMetadata_descriptor; } @java.lang.Override public com.google.api.MetricDescriptor.MetricDescriptorMetadata getDefaultInstanceForType() { return com.google.api.MetricDescriptor.MetricDescriptorMetadata.getDefaultInstance(); } @java.lang.Override public com.google.api.MetricDescriptor.MetricDescriptorMetadata build() { com.google.api.MetricDescriptor.MetricDescriptorMetadata result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } @java.lang.Override public com.google.api.MetricDescriptor.MetricDescriptorMetadata buildPartial() { com.google.api.MetricDescriptor.MetricDescriptorMetadata result = new com.google.api.MetricDescriptor.MetricDescriptorMetadata(this); result.launchStage_ = launchStage_; if (samplePeriodBuilder_ == null) { result.samplePeriod_ = samplePeriod_; } else { result.samplePeriod_ = samplePeriodBuilder_.build(); } if (ingestDelayBuilder_ == null) { result.ingestDelay_ = ingestDelay_; } else { result.ingestDelay_ = ingestDelayBuilder_.build(); } onBuilt(); return result; } @java.lang.Override public Builder clone() { return super.clone(); } @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { return super.setField(field, value); } @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { return super.clearField(field); } @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { return super.clearOneof(oneof); } @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { return super.setRepeatedField(field, index, value); } @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { return super.addRepeatedField(field, value); } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof com.google.api.MetricDescriptor.MetricDescriptorMetadata) { return mergeFrom((com.google.api.MetricDescriptor.MetricDescriptorMetadata) other); } else { super.mergeFrom(other); return this; } } public Builder mergeFrom(com.google.api.MetricDescriptor.MetricDescriptorMetadata other) { if (other == com.google.api.MetricDescriptor.MetricDescriptorMetadata.getDefaultInstance()) return this; if (other.launchStage_ != 0) { setLaunchStageValue(other.getLaunchStageValue()); } if (other.hasSamplePeriod()) { mergeSamplePeriod(other.getSamplePeriod()); } if (other.hasIngestDelay()) { mergeIngestDelay(other.getIngestDelay()); } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; } @java.lang.Override public final boolean isInitialized() { return true; } @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { com.google.api.MetricDescriptor.MetricDescriptorMetadata parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = (com.google.api.MetricDescriptor.MetricDescriptorMetadata) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { mergeFrom(parsedMessage); } } return this; } private int launchStage_ = 0; /** * * *
       * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
       * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @return The enum numeric value on the wire for launchStage. */ @java.lang.Override @java.lang.Deprecated public int getLaunchStageValue() { return launchStage_; } /** * * *
       * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
       * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @param value The enum numeric value on the wire for launchStage to set. * @return This builder for chaining. */ @java.lang.Deprecated public Builder setLaunchStageValue(int value) { launchStage_ = value; onChanged(); return this; } /** * * *
       * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
       * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @return The launchStage. */ @java.lang.Override @java.lang.Deprecated public com.google.api.LaunchStage getLaunchStage() { @SuppressWarnings("deprecation") com.google.api.LaunchStage result = com.google.api.LaunchStage.valueOf(launchStage_); return result == null ? com.google.api.LaunchStage.UNRECOGNIZED : result; } /** * * *
       * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
       * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @param value The launchStage to set. * @return This builder for chaining. */ @java.lang.Deprecated public Builder setLaunchStage(com.google.api.LaunchStage value) { if (value == null) { throw new NullPointerException(); } launchStage_ = value.getNumber(); onChanged(); return this; } /** * * *
       * Deprecated. Must use the [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage] instead.
       * 
* * .google.api.LaunchStage launch_stage = 1 [deprecated = true]; * * @return This builder for chaining. */ @java.lang.Deprecated public Builder clearLaunchStage() { launchStage_ = 0; onChanged(); return this; } private com.google.protobuf.Duration samplePeriod_; private com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> samplePeriodBuilder_; /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; * * @return Whether the samplePeriod field is set. */ public boolean hasSamplePeriod() { return samplePeriodBuilder_ != null || samplePeriod_ != null; } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; * * @return The samplePeriod. */ public com.google.protobuf.Duration getSamplePeriod() { if (samplePeriodBuilder_ == null) { return samplePeriod_ == null ? com.google.protobuf.Duration.getDefaultInstance() : samplePeriod_; } else { return samplePeriodBuilder_.getMessage(); } } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; */ public Builder setSamplePeriod(com.google.protobuf.Duration value) { if (samplePeriodBuilder_ == null) { if (value == null) { throw new NullPointerException(); } samplePeriod_ = value; onChanged(); } else { samplePeriodBuilder_.setMessage(value); } return this; } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; */ public Builder setSamplePeriod(com.google.protobuf.Duration.Builder builderForValue) { if (samplePeriodBuilder_ == null) { samplePeriod_ = builderForValue.build(); onChanged(); } else { samplePeriodBuilder_.setMessage(builderForValue.build()); } return this; } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; */ public Builder mergeSamplePeriod(com.google.protobuf.Duration value) { if (samplePeriodBuilder_ == null) { if (samplePeriod_ != null) { samplePeriod_ = com.google.protobuf.Duration.newBuilder(samplePeriod_) .mergeFrom(value) .buildPartial(); } else { samplePeriod_ = value; } onChanged(); } else { samplePeriodBuilder_.mergeFrom(value); } return this; } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; */ public Builder clearSamplePeriod() { if (samplePeriodBuilder_ == null) { samplePeriod_ = null; onChanged(); } else { samplePeriod_ = null; samplePeriodBuilder_ = null; } return this; } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; */ public com.google.protobuf.Duration.Builder getSamplePeriodBuilder() { onChanged(); return getSamplePeriodFieldBuilder().getBuilder(); } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; */ public com.google.protobuf.DurationOrBuilder getSamplePeriodOrBuilder() { if (samplePeriodBuilder_ != null) { return samplePeriodBuilder_.getMessageOrBuilder(); } else { return samplePeriod_ == null ? com.google.protobuf.Duration.getDefaultInstance() : samplePeriod_; } } /** * * *
       * The sampling period of metric data points. For metrics which are written
       * periodically, consecutive data points are stored at this time interval,
       * excluding data loss due to errors. Metrics with a higher granularity have
       * a smaller sampling period.
       * 
* * .google.protobuf.Duration sample_period = 2; */ private com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> getSamplePeriodFieldBuilder() { if (samplePeriodBuilder_ == null) { samplePeriodBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>( getSamplePeriod(), getParentForChildren(), isClean()); samplePeriod_ = null; } return samplePeriodBuilder_; } private com.google.protobuf.Duration ingestDelay_; private com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> ingestDelayBuilder_; /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; * * @return Whether the ingestDelay field is set. */ public boolean hasIngestDelay() { return ingestDelayBuilder_ != null || ingestDelay_ != null; } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; * * @return The ingestDelay. */ public com.google.protobuf.Duration getIngestDelay() { if (ingestDelayBuilder_ == null) { return ingestDelay_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ingestDelay_; } else { return ingestDelayBuilder_.getMessage(); } } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; */ public Builder setIngestDelay(com.google.protobuf.Duration value) { if (ingestDelayBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ingestDelay_ = value; onChanged(); } else { ingestDelayBuilder_.setMessage(value); } return this; } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; */ public Builder setIngestDelay(com.google.protobuf.Duration.Builder builderForValue) { if (ingestDelayBuilder_ == null) { ingestDelay_ = builderForValue.build(); onChanged(); } else { ingestDelayBuilder_.setMessage(builderForValue.build()); } return this; } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; */ public Builder mergeIngestDelay(com.google.protobuf.Duration value) { if (ingestDelayBuilder_ == null) { if (ingestDelay_ != null) { ingestDelay_ = com.google.protobuf.Duration.newBuilder(ingestDelay_) .mergeFrom(value) .buildPartial(); } else { ingestDelay_ = value; } onChanged(); } else { ingestDelayBuilder_.mergeFrom(value); } return this; } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; */ public Builder clearIngestDelay() { if (ingestDelayBuilder_ == null) { ingestDelay_ = null; onChanged(); } else { ingestDelay_ = null; ingestDelayBuilder_ = null; } return this; } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; */ public com.google.protobuf.Duration.Builder getIngestDelayBuilder() { onChanged(); return getIngestDelayFieldBuilder().getBuilder(); } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; */ public com.google.protobuf.DurationOrBuilder getIngestDelayOrBuilder() { if (ingestDelayBuilder_ != null) { return ingestDelayBuilder_.getMessageOrBuilder(); } else { return ingestDelay_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ingestDelay_; } } /** * * *
       * The delay of data points caused by ingestion. Data points older than this
       * age are guaranteed to be ingested and available to be read, excluding
       * data loss due to errors.
       * 
* * .google.protobuf.Duration ingest_delay = 3; */ private com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> getIngestDelayFieldBuilder() { if (ingestDelayBuilder_ == null) { ingestDelayBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>( getIngestDelay(), getParentForChildren(), isClean()); ingestDelay_ = null; } return ingestDelayBuilder_; } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); } @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } // @@protoc_insertion_point(builder_scope:google.api.MetricDescriptor.MetricDescriptorMetadata) } // @@protoc_insertion_point(class_scope:google.api.MetricDescriptor.MetricDescriptorMetadata) private static final com.google.api.MetricDescriptor.MetricDescriptorMetadata DEFAULT_INSTANCE; static { DEFAULT_INSTANCE = new com.google.api.MetricDescriptor.MetricDescriptorMetadata(); } public static com.google.api.MetricDescriptor.MetricDescriptorMetadata getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override public MetricDescriptorMetadata parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return new MetricDescriptorMetadata(input, extensionRegistry); } }; public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override public com.google.api.MetricDescriptor.MetricDescriptorMetadata getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } public static final int NAME_FIELD_NUMBER = 1; private volatile java.lang.Object name_; /** * * *
   * The resource name of the metric descriptor.
   * 
* * string name = 1; * * @return The name. */ @java.lang.Override public java.lang.String getName() { java.lang.Object ref = name_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); name_ = s; return s; } } /** * * *
   * The resource name of the metric descriptor.
   * 
* * string name = 1; * * @return The bytes for name. */ @java.lang.Override public com.google.protobuf.ByteString getNameBytes() { java.lang.Object ref = name_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); name_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int TYPE_FIELD_NUMBER = 8; private volatile java.lang.Object type_; /** * * *
   * The metric type, including its DNS name prefix. The type is not
   * URL-encoded.
   * All service defined metrics must be prefixed with the service name, in the
   * format of `{service name}/{relative metric name}`, such as
   * `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
   * name must follow:
   * * Only upper and lower-case letters, digits, '/' and underscores '_' are
   *   allowed.
   * * The maximum number of characters allowed for the relative_metric_name is
   *   100.
   * All user-defined metric types have the DNS name
   * `custom.googleapis.com`, `external.googleapis.com`, or
   * `logging.googleapis.com/user/`.
   * Metric types should use a natural hierarchical grouping. For example:
   *     "custom.googleapis.com/invoice/paid/amount"
   *     "external.googleapis.com/prometheus/up"
   *     "appengine.googleapis.com/http/server/response_latencies"
   * 
* * string type = 8; * * @return The type. */ @java.lang.Override public java.lang.String getType() { java.lang.Object ref = type_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); type_ = s; return s; } } /** * * *
   * The metric type, including its DNS name prefix. The type is not
   * URL-encoded.
   * All service defined metrics must be prefixed with the service name, in the
   * format of `{service name}/{relative metric name}`, such as
   * `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
   * name must follow:
   * * Only upper and lower-case letters, digits, '/' and underscores '_' are
   *   allowed.
   * * The maximum number of characters allowed for the relative_metric_name is
   *   100.
   * All user-defined metric types have the DNS name
   * `custom.googleapis.com`, `external.googleapis.com`, or
   * `logging.googleapis.com/user/`.
   * Metric types should use a natural hierarchical grouping. For example:
   *     "custom.googleapis.com/invoice/paid/amount"
   *     "external.googleapis.com/prometheus/up"
   *     "appengine.googleapis.com/http/server/response_latencies"
   * 
* * string type = 8; * * @return The bytes for type. */ @java.lang.Override public com.google.protobuf.ByteString getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); type_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int LABELS_FIELD_NUMBER = 2; private java.util.List labels_; /** * * *
   * The set of labels that can be used to describe a specific
   * instance of this metric type.
   * The label key name must follow:
   * * Only upper and lower-case letters, digits and underscores (_) are
   *   allowed.
   * * Label name must start with a letter or digit.
   * * The maximum length of a label name is 100 characters.
   * For example, the
   * `appengine.googleapis.com/http/server/response_latencies` metric
   * type has a label for the HTTP response code, `response_code`, so
   * you can look at latencies for successful responses or just
   * for responses that failed.
   * 
* * repeated .google.api.LabelDescriptor labels = 2; */ @java.lang.Override public java.util.List getLabelsList() { return labels_; } /** * * *
   * The set of labels that can be used to describe a specific
   * instance of this metric type.
   * The label key name must follow:
   * * Only upper and lower-case letters, digits and underscores (_) are
   *   allowed.
   * * Label name must start with a letter or digit.
   * * The maximum length of a label name is 100 characters.
   * For example, the
   * `appengine.googleapis.com/http/server/response_latencies` metric
   * type has a label for the HTTP response code, `response_code`, so
   * you can look at latencies for successful responses or just
   * for responses that failed.
   * 
* * repeated .google.api.LabelDescriptor labels = 2; */ @java.lang.Override public java.util.List getLabelsOrBuilderList() { return labels_; } /** * * *
   * The set of labels that can be used to describe a specific
   * instance of this metric type.
   * The label key name must follow:
   * * Only upper and lower-case letters, digits and underscores (_) are
   *   allowed.
   * * Label name must start with a letter or digit.
   * * The maximum length of a label name is 100 characters.
   * For example, the
   * `appengine.googleapis.com/http/server/response_latencies` metric
   * type has a label for the HTTP response code, `response_code`, so
   * you can look at latencies for successful responses or just
   * for responses that failed.
   * 
* * repeated .google.api.LabelDescriptor labels = 2; */ @java.lang.Override public int getLabelsCount() { return labels_.size(); } /** * * *
   * The set of labels that can be used to describe a specific
   * instance of this metric type.
   * The label key name must follow:
   * * Only upper and lower-case letters, digits and underscores (_) are
   *   allowed.
   * * Label name must start with a letter or digit.
   * * The maximum length of a label name is 100 characters.
   * For example, the
   * `appengine.googleapis.com/http/server/response_latencies` metric
   * type has a label for the HTTP response code, `response_code`, so
   * you can look at latencies for successful responses or just
   * for responses that failed.
   * 
* * repeated .google.api.LabelDescriptor labels = 2; */ @java.lang.Override public com.google.api.LabelDescriptor getLabels(int index) { return labels_.get(index); } /** * * *
   * The set of labels that can be used to describe a specific
   * instance of this metric type.
   * The label key name must follow:
   * * Only upper and lower-case letters, digits and underscores (_) are
   *   allowed.
   * * Label name must start with a letter or digit.
   * * The maximum length of a label name is 100 characters.
   * For example, the
   * `appengine.googleapis.com/http/server/response_latencies` metric
   * type has a label for the HTTP response code, `response_code`, so
   * you can look at latencies for successful responses or just
   * for responses that failed.
   * 
* * repeated .google.api.LabelDescriptor labels = 2; */ @java.lang.Override public com.google.api.LabelDescriptorOrBuilder getLabelsOrBuilder(int index) { return labels_.get(index); } public static final int METRIC_KIND_FIELD_NUMBER = 3; private int metricKind_; /** * * *
   * Whether the metric records instantaneous values, changes to a value, etc.
   * Some combinations of `metric_kind` and `value_type` might not be supported.
   * 
* * .google.api.MetricDescriptor.MetricKind metric_kind = 3; * * @return The enum numeric value on the wire for metricKind. */ @java.lang.Override public int getMetricKindValue() { return metricKind_; } /** * * *
   * Whether the metric records instantaneous values, changes to a value, etc.
   * Some combinations of `metric_kind` and `value_type` might not be supported.
   * 
* * .google.api.MetricDescriptor.MetricKind metric_kind = 3; * * @return The metricKind. */ @java.lang.Override public com.google.api.MetricDescriptor.MetricKind getMetricKind() { @SuppressWarnings("deprecation") com.google.api.MetricDescriptor.MetricKind result = com.google.api.MetricDescriptor.MetricKind.valueOf(metricKind_); return result == null ? com.google.api.MetricDescriptor.MetricKind.UNRECOGNIZED : result; } public static final int VALUE_TYPE_FIELD_NUMBER = 4; private int valueType_; /** * * *
   * Whether the measurement is an integer, a floating-point number, etc.
   * Some combinations of `metric_kind` and `value_type` might not be supported.
   * 
* * .google.api.MetricDescriptor.ValueType value_type = 4; * * @return The enum numeric value on the wire for valueType. */ @java.lang.Override public int getValueTypeValue() { return valueType_; } /** * * *
   * Whether the measurement is an integer, a floating-point number, etc.
   * Some combinations of `metric_kind` and `value_type` might not be supported.
   * 
* * .google.api.MetricDescriptor.ValueType value_type = 4; * * @return The valueType. */ @java.lang.Override public com.google.api.MetricDescriptor.ValueType getValueType() { @SuppressWarnings("deprecation") com.google.api.MetricDescriptor.ValueType result = com.google.api.MetricDescriptor.ValueType.valueOf(valueType_); return result == null ? com.google.api.MetricDescriptor.ValueType.UNRECOGNIZED : result; } public static final int UNIT_FIELD_NUMBER = 5; private volatile java.lang.Object unit_; /** * * *
   * The units in which the metric value is reported. It is only applicable
   * if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
   * defines the representation of the stored metric values.
   * Different systems may scale the values to be more easily displayed (so a
   * value of `0.02KBy` _might_ be displayed as `20By`, and a value of
   * `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
   * `KBy`, then the value of the metric is always in thousands of bytes, no
   * matter how it may be displayed..
   * If you want a custom metric to record the exact number of CPU-seconds used
   * by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
   * `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
   * CPU-seconds, then the value is written as `12005`.
   * Alternatively, if you want a custom metric to record data in a more
   * granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
   * `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
   * or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
   * The supported units are a subset of [The Unified Code for Units of
   * Measure](http://unitsofmeasure.org/ucum.html) standard:
   * **Basic units (UNIT)**
   * * `bit`   bit
   * * `By`    byte
   * * `s`     second
   * * `min`   minute
   * * `h`     hour
   * * `d`     day
   * * `1`     dimensionless
   * **Prefixes (PREFIX)**
   * * `k`     kilo    (10^3)
   * * `M`     mega    (10^6)
   * * `G`     giga    (10^9)
   * * `T`     tera    (10^12)
   * * `P`     peta    (10^15)
   * * `E`     exa     (10^18)
   * * `Z`     zetta   (10^21)
   * * `Y`     yotta   (10^24)
   * * `m`     milli   (10^-3)
   * * `u`     micro   (10^-6)
   * * `n`     nano    (10^-9)
   * * `p`     pico    (10^-12)
   * * `f`     femto   (10^-15)
   * * `a`     atto    (10^-18)
   * * `z`     zepto   (10^-21)
   * * `y`     yocto   (10^-24)
   * * `Ki`    kibi    (2^10)
   * * `Mi`    mebi    (2^20)
   * * `Gi`    gibi    (2^30)
   * * `Ti`    tebi    (2^40)
   * * `Pi`    pebi    (2^50)
   * **Grammar**
   * The grammar also includes these connectors:
   * * `/`    division or ratio (as an infix operator). For examples,
   *          `kBy/{email}` or `MiBy/10ms` (although you should almost never
   *          have `/s` in a metric `unit`; rates should always be computed at
   *          query time from the underlying cumulative or delta value).
   * * `.`    multiplication or composition (as an infix operator). For
   *          examples, `GBy.d` or `k{watt}.h`.
   * The grammar for a unit is as follows:
   *     Expression = Component { "." Component } { "/" Component } ;
   *     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
   *               | Annotation
   *               | "1"
   *               ;
   *     Annotation = "{" NAME "}" ;
   * Notes:
   * * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
   *    is used alone, then the unit is equivalent to `1`. For examples,
   *    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
   * * `NAME` is a sequence of non-blank printable ASCII characters not
   *    containing `{` or `}`.
   * * `1` represents a unitary [dimensionless
   *    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
   *    as in `1/s`. It is typically used when none of the basic units are
   *    appropriate. For example, "new users per day" can be represented as
   *    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
   *    users). Alternatively, "thousands of page views per day" would be
   *    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
   *    value of `5.3` would mean "5300 page views per day").
   * * `%` represents dimensionless value of 1/100, and annotates values giving
   *    a percentage (so the metric values are typically in the range of 0..100,
   *    and a metric value `3` means "3 percent").
   * * `10^2.%` indicates a metric contains a ratio, typically in the range
   *    0..1, that will be multiplied by 100 and displayed as a percentage
   *    (so a metric value `0.03` means "3 percent").
   * 
* * string unit = 5; * * @return The unit. */ @java.lang.Override public java.lang.String getUnit() { java.lang.Object ref = unit_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); unit_ = s; return s; } } /** * * *
   * The units in which the metric value is reported. It is only applicable
   * if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
   * defines the representation of the stored metric values.
   * Different systems may scale the values to be more easily displayed (so a
   * value of `0.02KBy` _might_ be displayed as `20By`, and a value of
   * `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
   * `KBy`, then the value of the metric is always in thousands of bytes, no
   * matter how it may be displayed..
   * If you want a custom metric to record the exact number of CPU-seconds used
   * by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
   * `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
   * CPU-seconds, then the value is written as `12005`.
   * Alternatively, if you want a custom metric to record data in a more
   * granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
   * `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
   * or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
   * The supported units are a subset of [The Unified Code for Units of
   * Measure](http://unitsofmeasure.org/ucum.html) standard:
   * **Basic units (UNIT)**
   * * `bit`   bit
   * * `By`    byte
   * * `s`     second
   * * `min`   minute
   * * `h`     hour
   * * `d`     day
   * * `1`     dimensionless
   * **Prefixes (PREFIX)**
   * * `k`     kilo    (10^3)
   * * `M`     mega    (10^6)
   * * `G`     giga    (10^9)
   * * `T`     tera    (10^12)
   * * `P`     peta    (10^15)
   * * `E`     exa     (10^18)
   * * `Z`     zetta   (10^21)
   * * `Y`     yotta   (10^24)
   * * `m`     milli   (10^-3)
   * * `u`     micro   (10^-6)
   * * `n`     nano    (10^-9)
   * * `p`     pico    (10^-12)
   * * `f`     femto   (10^-15)
   * * `a`     atto    (10^-18)
   * * `z`     zepto   (10^-21)
   * * `y`     yocto   (10^-24)
   * * `Ki`    kibi    (2^10)
   * * `Mi`    mebi    (2^20)
   * * `Gi`    gibi    (2^30)
   * * `Ti`    tebi    (2^40)
   * * `Pi`    pebi    (2^50)
   * **Grammar**
   * The grammar also includes these connectors:
   * * `/`    division or ratio (as an infix operator). For examples,
   *          `kBy/{email}` or `MiBy/10ms` (although you should almost never
   *          have `/s` in a metric `unit`; rates should always be computed at
   *          query time from the underlying cumulative or delta value).
   * * `.`    multiplication or composition (as an infix operator). For
   *          examples, `GBy.d` or `k{watt}.h`.
   * The grammar for a unit is as follows:
   *     Expression = Component { "." Component } { "/" Component } ;
   *     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
   *               | Annotation
   *               | "1"
   *               ;
   *     Annotation = "{" NAME "}" ;
   * Notes:
   * * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
   *    is used alone, then the unit is equivalent to `1`. For examples,
   *    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
   * * `NAME` is a sequence of non-blank printable ASCII characters not
   *    containing `{` or `}`.
   * * `1` represents a unitary [dimensionless
   *    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
   *    as in `1/s`. It is typically used when none of the basic units are
   *    appropriate. For example, "new users per day" can be represented as
   *    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
   *    users). Alternatively, "thousands of page views per day" would be
   *    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
   *    value of `5.3` would mean "5300 page views per day").
   * * `%` represents dimensionless value of 1/100, and annotates values giving
   *    a percentage (so the metric values are typically in the range of 0..100,
   *    and a metric value `3` means "3 percent").
   * * `10^2.%` indicates a metric contains a ratio, typically in the range
   *    0..1, that will be multiplied by 100 and displayed as a percentage
   *    (so a metric value `0.03` means "3 percent").
   * 
* * string unit = 5; * * @return The bytes for unit. */ @java.lang.Override public com.google.protobuf.ByteString getUnitBytes() { java.lang.Object ref = unit_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); unit_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int DESCRIPTION_FIELD_NUMBER = 6; private volatile java.lang.Object description_; /** * * *
   * A detailed description of the metric, which can be used in documentation.
   * 
* * string description = 6; * * @return The description. */ @java.lang.Override public java.lang.String getDescription() { java.lang.Object ref = description_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); description_ = s; return s; } } /** * * *
   * A detailed description of the metric, which can be used in documentation.
   * 
* * string description = 6; * * @return The bytes for description. */ @java.lang.Override public com.google.protobuf.ByteString getDescriptionBytes() { java.lang.Object ref = description_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); description_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int DISPLAY_NAME_FIELD_NUMBER = 7; private volatile java.lang.Object displayName_; /** * * *
   * A concise name for the metric, which can be displayed in user interfaces.
   * Use sentence case without an ending period, for example "Request count".
   * This field is optional but it is recommended to be set for any metrics
   * associated with user-visible concepts, such as Quota.
   * 
* * string display_name = 7; * * @return The displayName. */ @java.lang.Override public java.lang.String getDisplayName() { java.lang.Object ref = displayName_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); displayName_ = s; return s; } } /** * * *
   * A concise name for the metric, which can be displayed in user interfaces.
   * Use sentence case without an ending period, for example "Request count".
   * This field is optional but it is recommended to be set for any metrics
   * associated with user-visible concepts, such as Quota.
   * 
* * string display_name = 7; * * @return The bytes for displayName. */ @java.lang.Override public com.google.protobuf.ByteString getDisplayNameBytes() { java.lang.Object ref = displayName_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); displayName_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int METADATA_FIELD_NUMBER = 10; private com.google.api.MetricDescriptor.MetricDescriptorMetadata metadata_; /** * * *
   * Optional. Metadata which can be used to guide usage of the metric.
   * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; * * @return Whether the metadata field is set. */ @java.lang.Override public boolean hasMetadata() { return metadata_ != null; } /** * * *
   * Optional. Metadata which can be used to guide usage of the metric.
   * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; * * @return The metadata. */ @java.lang.Override public com.google.api.MetricDescriptor.MetricDescriptorMetadata getMetadata() { return metadata_ == null ? com.google.api.MetricDescriptor.MetricDescriptorMetadata.getDefaultInstance() : metadata_; } /** * * *
   * Optional. Metadata which can be used to guide usage of the metric.
   * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ @java.lang.Override public com.google.api.MetricDescriptor.MetricDescriptorMetadataOrBuilder getMetadataOrBuilder() { return getMetadata(); } public static final int LAUNCH_STAGE_FIELD_NUMBER = 12; private int launchStage_; /** * * *
   * Optional. The launch stage of the metric definition.
   * 
* * .google.api.LaunchStage launch_stage = 12; * * @return The enum numeric value on the wire for launchStage. */ @java.lang.Override public int getLaunchStageValue() { return launchStage_; } /** * * *
   * Optional. The launch stage of the metric definition.
   * 
* * .google.api.LaunchStage launch_stage = 12; * * @return The launchStage. */ @java.lang.Override public com.google.api.LaunchStage getLaunchStage() { @SuppressWarnings("deprecation") com.google.api.LaunchStage result = com.google.api.LaunchStage.valueOf(launchStage_); return result == null ? com.google.api.LaunchStage.UNRECOGNIZED : result; } public static final int MONITORED_RESOURCE_TYPES_FIELD_NUMBER = 13; private com.google.protobuf.LazyStringList monitoredResourceTypes_; /** * * *
   * Read-only. If present, then a [time
   * series][google.monitoring.v3.TimeSeries], which is identified partially by
   * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
   * with this metric type can only be associated with one of the monitored
   * resource types listed here.
   * 
* * repeated string monitored_resource_types = 13; * * @return A list containing the monitoredResourceTypes. */ public com.google.protobuf.ProtocolStringList getMonitoredResourceTypesList() { return monitoredResourceTypes_; } /** * * *
   * Read-only. If present, then a [time
   * series][google.monitoring.v3.TimeSeries], which is identified partially by
   * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
   * with this metric type can only be associated with one of the monitored
   * resource types listed here.
   * 
* * repeated string monitored_resource_types = 13; * * @return The count of monitoredResourceTypes. */ public int getMonitoredResourceTypesCount() { return monitoredResourceTypes_.size(); } /** * * *
   * Read-only. If present, then a [time
   * series][google.monitoring.v3.TimeSeries], which is identified partially by
   * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
   * with this metric type can only be associated with one of the monitored
   * resource types listed here.
   * 
* * repeated string monitored_resource_types = 13; * * @param index The index of the element to return. * @return The monitoredResourceTypes at the given index. */ public java.lang.String getMonitoredResourceTypes(int index) { return monitoredResourceTypes_.get(index); } /** * * *
   * Read-only. If present, then a [time
   * series][google.monitoring.v3.TimeSeries], which is identified partially by
   * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
   * with this metric type can only be associated with one of the monitored
   * resource types listed here.
   * 
* * repeated string monitored_resource_types = 13; * * @param index The index of the value to return. * @return The bytes of the monitoredResourceTypes at the given index. */ public com.google.protobuf.ByteString getMonitoredResourceTypesBytes(int index) { return monitoredResourceTypes_.getByteString(index); } private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; if (isInitialized == 0) return false; memoizedIsInitialized = 1; return true; } @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (!getNameBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); } for (int i = 0; i < labels_.size(); i++) { output.writeMessage(2, labels_.get(i)); } if (metricKind_ != com.google.api.MetricDescriptor.MetricKind.METRIC_KIND_UNSPECIFIED.getNumber()) { output.writeEnum(3, metricKind_); } if (valueType_ != com.google.api.MetricDescriptor.ValueType.VALUE_TYPE_UNSPECIFIED.getNumber()) { output.writeEnum(4, valueType_); } if (!getUnitBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 5, unit_); } if (!getDescriptionBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 6, description_); } if (!getDisplayNameBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 7, displayName_); } if (!getTypeBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 8, type_); } if (metadata_ != null) { output.writeMessage(10, getMetadata()); } if (launchStage_ != com.google.api.LaunchStage.LAUNCH_STAGE_UNSPECIFIED.getNumber()) { output.writeEnum(12, launchStage_); } for (int i = 0; i < monitoredResourceTypes_.size(); i++) { com.google.protobuf.GeneratedMessageV3.writeString( output, 13, monitoredResourceTypes_.getRaw(i)); } unknownFields.writeTo(output); } @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (!getNameBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); } for (int i = 0; i < labels_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, labels_.get(i)); } if (metricKind_ != com.google.api.MetricDescriptor.MetricKind.METRIC_KIND_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, metricKind_); } if (valueType_ != com.google.api.MetricDescriptor.ValueType.VALUE_TYPE_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(4, valueType_); } if (!getUnitBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, unit_); } if (!getDescriptionBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, description_); } if (!getDisplayNameBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, displayName_); } if (!getTypeBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, type_); } if (metadata_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getMetadata()); } if (launchStage_ != com.google.api.LaunchStage.LAUNCH_STAGE_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(12, launchStage_); } { int dataSize = 0; for (int i = 0; i < monitoredResourceTypes_.size(); i++) { dataSize += computeStringSizeNoTag(monitoredResourceTypes_.getRaw(i)); } size += dataSize; size += 1 * getMonitoredResourceTypesList().size(); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; } @java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof com.google.api.MetricDescriptor)) { return super.equals(obj); } com.google.api.MetricDescriptor other = (com.google.api.MetricDescriptor) obj; if (!getName().equals(other.getName())) return false; if (!getType().equals(other.getType())) return false; if (!getLabelsList().equals(other.getLabelsList())) return false; if (metricKind_ != other.metricKind_) return false; if (valueType_ != other.valueType_) return false; if (!getUnit().equals(other.getUnit())) return false; if (!getDescription().equals(other.getDescription())) return false; if (!getDisplayName().equals(other.getDisplayName())) return false; if (hasMetadata() != other.hasMetadata()) return false; if (hasMetadata()) { if (!getMetadata().equals(other.getMetadata())) return false; } if (launchStage_ != other.launchStage_) return false; if (!getMonitoredResourceTypesList().equals(other.getMonitoredResourceTypesList())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + NAME_FIELD_NUMBER; hash = (53 * hash) + getName().hashCode(); hash = (37 * hash) + TYPE_FIELD_NUMBER; hash = (53 * hash) + getType().hashCode(); if (getLabelsCount() > 0) { hash = (37 * hash) + LABELS_FIELD_NUMBER; hash = (53 * hash) + getLabelsList().hashCode(); } hash = (37 * hash) + METRIC_KIND_FIELD_NUMBER; hash = (53 * hash) + metricKind_; hash = (37 * hash) + VALUE_TYPE_FIELD_NUMBER; hash = (53 * hash) + valueType_; hash = (37 * hash) + UNIT_FIELD_NUMBER; hash = (53 * hash) + getUnit().hashCode(); hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER; hash = (53 * hash) + getDescription().hashCode(); hash = (37 * hash) + DISPLAY_NAME_FIELD_NUMBER; hash = (53 * hash) + getDisplayName().hashCode(); if (hasMetadata()) { hash = (37 * hash) + METADATA_FIELD_NUMBER; hash = (53 * hash) + getMetadata().hashCode(); } hash = (37 * hash) + LAUNCH_STAGE_FIELD_NUMBER; hash = (53 * hash) + launchStage_; if (getMonitoredResourceTypesCount() > 0) { hash = (37 * hash) + MONITORED_RESOURCE_TYPES_FIELD_NUMBER; hash = (53 * hash) + getMonitoredResourceTypesList().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; } public static com.google.api.MetricDescriptor parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.api.MetricDescriptor parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.api.MetricDescriptor parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.api.MetricDescriptor parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.api.MetricDescriptor parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static com.google.api.MetricDescriptor parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static com.google.api.MetricDescriptor parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } public static com.google.api.MetricDescriptor parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } public static com.google.api.MetricDescriptor parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); } public static com.google.api.MetricDescriptor parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( PARSER, input, extensionRegistry); } public static com.google.api.MetricDescriptor parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); } public static com.google.api.MetricDescriptor parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3.parseWithIOException( PARSER, input, extensionRegistry); } @java.lang.Override public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } public static Builder newBuilder(com.google.api.MetricDescriptor prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } @java.lang.Override protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { Builder builder = new Builder(parent); return builder; } /** * * *
   * Defines a metric type and its schema. Once a metric descriptor is created,
   * deleting or altering it stops data collection and makes the metric type's
   * existing data unusable.
   * The following are specific rules for service defined Monitoring metric
   * descriptors:
   * * `type`, `metric_kind`, `value_type`, `description`, `display_name`,
   *   `launch_stage` fields are all required. The `unit` field must be specified
   *   if the `value_type` is any of DOUBLE, INT64, DISTRIBUTION.
   * * Maximum of default 500 metric descriptors per service is allowed.
   * * Maximum of default 10 labels per metric descriptor is allowed.
   * The default maximum limit can be overridden. Please follow
   * https://cloud.google.com/monitoring/quotas
   * 
* * Protobuf type {@code google.api.MetricDescriptor} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:google.api.MetricDescriptor) com.google.api.MetricDescriptorOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return com.google.api.MetricProto.internal_static_google_api_MetricDescriptor_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return com.google.api.MetricProto .internal_static_google_api_MetricDescriptor_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.api.MetricDescriptor.class, com.google.api.MetricDescriptor.Builder.class); } // Construct using com.google.api.MetricDescriptor.newBuilder() private Builder() { maybeForceBuilderInitialization(); } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getLabelsFieldBuilder(); } } @java.lang.Override public Builder clear() { super.clear(); name_ = ""; type_ = ""; if (labelsBuilder_ == null) { labels_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); } else { labelsBuilder_.clear(); } metricKind_ = 0; valueType_ = 0; unit_ = ""; description_ = ""; displayName_ = ""; if (metadataBuilder_ == null) { metadata_ = null; } else { metadata_ = null; metadataBuilder_ = null; } launchStage_ = 0; monitoredResourceTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000002); return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return com.google.api.MetricProto.internal_static_google_api_MetricDescriptor_descriptor; } @java.lang.Override public com.google.api.MetricDescriptor getDefaultInstanceForType() { return com.google.api.MetricDescriptor.getDefaultInstance(); } @java.lang.Override public com.google.api.MetricDescriptor build() { com.google.api.MetricDescriptor result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } @java.lang.Override public com.google.api.MetricDescriptor buildPartial() { com.google.api.MetricDescriptor result = new com.google.api.MetricDescriptor(this); int from_bitField0_ = bitField0_; result.name_ = name_; result.type_ = type_; if (labelsBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { labels_ = java.util.Collections.unmodifiableList(labels_); bitField0_ = (bitField0_ & ~0x00000001); } result.labels_ = labels_; } else { result.labels_ = labelsBuilder_.build(); } result.metricKind_ = metricKind_; result.valueType_ = valueType_; result.unit_ = unit_; result.description_ = description_; result.displayName_ = displayName_; if (metadataBuilder_ == null) { result.metadata_ = metadata_; } else { result.metadata_ = metadataBuilder_.build(); } result.launchStage_ = launchStage_; if (((bitField0_ & 0x00000002) != 0)) { monitoredResourceTypes_ = monitoredResourceTypes_.getUnmodifiableView(); bitField0_ = (bitField0_ & ~0x00000002); } result.monitoredResourceTypes_ = monitoredResourceTypes_; onBuilt(); return result; } @java.lang.Override public Builder clone() { return super.clone(); } @java.lang.Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { return super.setField(field, value); } @java.lang.Override public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { return super.clearField(field); } @java.lang.Override public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { return super.clearOneof(oneof); } @java.lang.Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { return super.setRepeatedField(field, index, value); } @java.lang.Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { return super.addRepeatedField(field, value); } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof com.google.api.MetricDescriptor) { return mergeFrom((com.google.api.MetricDescriptor) other); } else { super.mergeFrom(other); return this; } } public Builder mergeFrom(com.google.api.MetricDescriptor other) { if (other == com.google.api.MetricDescriptor.getDefaultInstance()) return this; if (!other.getName().isEmpty()) { name_ = other.name_; onChanged(); } if (!other.getType().isEmpty()) { type_ = other.type_; onChanged(); } if (labelsBuilder_ == null) { if (!other.labels_.isEmpty()) { if (labels_.isEmpty()) { labels_ = other.labels_; bitField0_ = (bitField0_ & ~0x00000001); } else { ensureLabelsIsMutable(); labels_.addAll(other.labels_); } onChanged(); } } else { if (!other.labels_.isEmpty()) { if (labelsBuilder_.isEmpty()) { labelsBuilder_.dispose(); labelsBuilder_ = null; labels_ = other.labels_; bitField0_ = (bitField0_ & ~0x00000001); labelsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLabelsFieldBuilder() : null; } else { labelsBuilder_.addAllMessages(other.labels_); } } } if (other.metricKind_ != 0) { setMetricKindValue(other.getMetricKindValue()); } if (other.valueType_ != 0) { setValueTypeValue(other.getValueTypeValue()); } if (!other.getUnit().isEmpty()) { unit_ = other.unit_; onChanged(); } if (!other.getDescription().isEmpty()) { description_ = other.description_; onChanged(); } if (!other.getDisplayName().isEmpty()) { displayName_ = other.displayName_; onChanged(); } if (other.hasMetadata()) { mergeMetadata(other.getMetadata()); } if (other.launchStage_ != 0) { setLaunchStageValue(other.getLaunchStageValue()); } if (!other.monitoredResourceTypes_.isEmpty()) { if (monitoredResourceTypes_.isEmpty()) { monitoredResourceTypes_ = other.monitoredResourceTypes_; bitField0_ = (bitField0_ & ~0x00000002); } else { ensureMonitoredResourceTypesIsMutable(); monitoredResourceTypes_.addAll(other.monitoredResourceTypes_); } onChanged(); } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; } @java.lang.Override public final boolean isInitialized() { return true; } @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { com.google.api.MetricDescriptor parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { parsedMessage = (com.google.api.MetricDescriptor) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { mergeFrom(parsedMessage); } } return this; } private int bitField0_; private java.lang.Object name_ = ""; /** * * *
     * The resource name of the metric descriptor.
     * 
* * string name = 1; * * @return The name. */ public java.lang.String getName() { java.lang.Object ref = name_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); name_ = s; return s; } else { return (java.lang.String) ref; } } /** * * *
     * The resource name of the metric descriptor.
     * 
* * string name = 1; * * @return The bytes for name. */ public com.google.protobuf.ByteString getNameBytes() { java.lang.Object ref = name_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); name_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * * *
     * The resource name of the metric descriptor.
     * 
* * string name = 1; * * @param value The name to set. * @return This builder for chaining. */ public Builder setName(java.lang.String value) { if (value == null) { throw new NullPointerException(); } name_ = value; onChanged(); return this; } /** * * *
     * The resource name of the metric descriptor.
     * 
* * string name = 1; * * @return This builder for chaining. */ public Builder clearName() { name_ = getDefaultInstance().getName(); onChanged(); return this; } /** * * *
     * The resource name of the metric descriptor.
     * 
* * string name = 1; * * @param value The bytes for name to set. * @return This builder for chaining. */ public Builder setNameBytes(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); name_ = value; onChanged(); return this; } private java.lang.Object type_ = ""; /** * * *
     * The metric type, including its DNS name prefix. The type is not
     * URL-encoded.
     * All service defined metrics must be prefixed with the service name, in the
     * format of `{service name}/{relative metric name}`, such as
     * `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
     * name must follow:
     * * Only upper and lower-case letters, digits, '/' and underscores '_' are
     *   allowed.
     * * The maximum number of characters allowed for the relative_metric_name is
     *   100.
     * All user-defined metric types have the DNS name
     * `custom.googleapis.com`, `external.googleapis.com`, or
     * `logging.googleapis.com/user/`.
     * Metric types should use a natural hierarchical grouping. For example:
     *     "custom.googleapis.com/invoice/paid/amount"
     *     "external.googleapis.com/prometheus/up"
     *     "appengine.googleapis.com/http/server/response_latencies"
     * 
* * string type = 8; * * @return The type. */ public java.lang.String getType() { java.lang.Object ref = type_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); type_ = s; return s; } else { return (java.lang.String) ref; } } /** * * *
     * The metric type, including its DNS name prefix. The type is not
     * URL-encoded.
     * All service defined metrics must be prefixed with the service name, in the
     * format of `{service name}/{relative metric name}`, such as
     * `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
     * name must follow:
     * * Only upper and lower-case letters, digits, '/' and underscores '_' are
     *   allowed.
     * * The maximum number of characters allowed for the relative_metric_name is
     *   100.
     * All user-defined metric types have the DNS name
     * `custom.googleapis.com`, `external.googleapis.com`, or
     * `logging.googleapis.com/user/`.
     * Metric types should use a natural hierarchical grouping. For example:
     *     "custom.googleapis.com/invoice/paid/amount"
     *     "external.googleapis.com/prometheus/up"
     *     "appengine.googleapis.com/http/server/response_latencies"
     * 
* * string type = 8; * * @return The bytes for type. */ public com.google.protobuf.ByteString getTypeBytes() { java.lang.Object ref = type_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); type_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * * *
     * The metric type, including its DNS name prefix. The type is not
     * URL-encoded.
     * All service defined metrics must be prefixed with the service name, in the
     * format of `{service name}/{relative metric name}`, such as
     * `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
     * name must follow:
     * * Only upper and lower-case letters, digits, '/' and underscores '_' are
     *   allowed.
     * * The maximum number of characters allowed for the relative_metric_name is
     *   100.
     * All user-defined metric types have the DNS name
     * `custom.googleapis.com`, `external.googleapis.com`, or
     * `logging.googleapis.com/user/`.
     * Metric types should use a natural hierarchical grouping. For example:
     *     "custom.googleapis.com/invoice/paid/amount"
     *     "external.googleapis.com/prometheus/up"
     *     "appengine.googleapis.com/http/server/response_latencies"
     * 
* * string type = 8; * * @param value The type to set. * @return This builder for chaining. */ public Builder setType(java.lang.String value) { if (value == null) { throw new NullPointerException(); } type_ = value; onChanged(); return this; } /** * * *
     * The metric type, including its DNS name prefix. The type is not
     * URL-encoded.
     * All service defined metrics must be prefixed with the service name, in the
     * format of `{service name}/{relative metric name}`, such as
     * `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
     * name must follow:
     * * Only upper and lower-case letters, digits, '/' and underscores '_' are
     *   allowed.
     * * The maximum number of characters allowed for the relative_metric_name is
     *   100.
     * All user-defined metric types have the DNS name
     * `custom.googleapis.com`, `external.googleapis.com`, or
     * `logging.googleapis.com/user/`.
     * Metric types should use a natural hierarchical grouping. For example:
     *     "custom.googleapis.com/invoice/paid/amount"
     *     "external.googleapis.com/prometheus/up"
     *     "appengine.googleapis.com/http/server/response_latencies"
     * 
* * string type = 8; * * @return This builder for chaining. */ public Builder clearType() { type_ = getDefaultInstance().getType(); onChanged(); return this; } /** * * *
     * The metric type, including its DNS name prefix. The type is not
     * URL-encoded.
     * All service defined metrics must be prefixed with the service name, in the
     * format of `{service name}/{relative metric name}`, such as
     * `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
     * name must follow:
     * * Only upper and lower-case letters, digits, '/' and underscores '_' are
     *   allowed.
     * * The maximum number of characters allowed for the relative_metric_name is
     *   100.
     * All user-defined metric types have the DNS name
     * `custom.googleapis.com`, `external.googleapis.com`, or
     * `logging.googleapis.com/user/`.
     * Metric types should use a natural hierarchical grouping. For example:
     *     "custom.googleapis.com/invoice/paid/amount"
     *     "external.googleapis.com/prometheus/up"
     *     "appengine.googleapis.com/http/server/response_latencies"
     * 
* * string type = 8; * * @param value The bytes for type to set. * @return This builder for chaining. */ public Builder setTypeBytes(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); type_ = value; onChanged(); return this; } private java.util.List labels_ = java.util.Collections.emptyList(); private void ensureLabelsIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { labels_ = new java.util.ArrayList(labels_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< com.google.api.LabelDescriptor, com.google.api.LabelDescriptor.Builder, com.google.api.LabelDescriptorOrBuilder> labelsBuilder_; /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public java.util.List getLabelsList() { if (labelsBuilder_ == null) { return java.util.Collections.unmodifiableList(labels_); } else { return labelsBuilder_.getMessageList(); } } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public int getLabelsCount() { if (labelsBuilder_ == null) { return labels_.size(); } else { return labelsBuilder_.getCount(); } } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public com.google.api.LabelDescriptor getLabels(int index) { if (labelsBuilder_ == null) { return labels_.get(index); } else { return labelsBuilder_.getMessage(index); } } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder setLabels(int index, com.google.api.LabelDescriptor value) { if (labelsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureLabelsIsMutable(); labels_.set(index, value); onChanged(); } else { labelsBuilder_.setMessage(index, value); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder setLabels(int index, com.google.api.LabelDescriptor.Builder builderForValue) { if (labelsBuilder_ == null) { ensureLabelsIsMutable(); labels_.set(index, builderForValue.build()); onChanged(); } else { labelsBuilder_.setMessage(index, builderForValue.build()); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder addLabels(com.google.api.LabelDescriptor value) { if (labelsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureLabelsIsMutable(); labels_.add(value); onChanged(); } else { labelsBuilder_.addMessage(value); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder addLabels(int index, com.google.api.LabelDescriptor value) { if (labelsBuilder_ == null) { if (value == null) { throw new NullPointerException(); } ensureLabelsIsMutable(); labels_.add(index, value); onChanged(); } else { labelsBuilder_.addMessage(index, value); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder addLabels(com.google.api.LabelDescriptor.Builder builderForValue) { if (labelsBuilder_ == null) { ensureLabelsIsMutable(); labels_.add(builderForValue.build()); onChanged(); } else { labelsBuilder_.addMessage(builderForValue.build()); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder addLabels(int index, com.google.api.LabelDescriptor.Builder builderForValue) { if (labelsBuilder_ == null) { ensureLabelsIsMutable(); labels_.add(index, builderForValue.build()); onChanged(); } else { labelsBuilder_.addMessage(index, builderForValue.build()); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder addAllLabels( java.lang.Iterable values) { if (labelsBuilder_ == null) { ensureLabelsIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, labels_); onChanged(); } else { labelsBuilder_.addAllMessages(values); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder clearLabels() { if (labelsBuilder_ == null) { labels_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); onChanged(); } else { labelsBuilder_.clear(); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public Builder removeLabels(int index) { if (labelsBuilder_ == null) { ensureLabelsIsMutable(); labels_.remove(index); onChanged(); } else { labelsBuilder_.remove(index); } return this; } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public com.google.api.LabelDescriptor.Builder getLabelsBuilder(int index) { return getLabelsFieldBuilder().getBuilder(index); } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public com.google.api.LabelDescriptorOrBuilder getLabelsOrBuilder(int index) { if (labelsBuilder_ == null) { return labels_.get(index); } else { return labelsBuilder_.getMessageOrBuilder(index); } } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public java.util.List getLabelsOrBuilderList() { if (labelsBuilder_ != null) { return labelsBuilder_.getMessageOrBuilderList(); } else { return java.util.Collections.unmodifiableList(labels_); } } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public com.google.api.LabelDescriptor.Builder addLabelsBuilder() { return getLabelsFieldBuilder() .addBuilder(com.google.api.LabelDescriptor.getDefaultInstance()); } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public com.google.api.LabelDescriptor.Builder addLabelsBuilder(int index) { return getLabelsFieldBuilder() .addBuilder(index, com.google.api.LabelDescriptor.getDefaultInstance()); } /** * * *
     * The set of labels that can be used to describe a specific
     * instance of this metric type.
     * The label key name must follow:
     * * Only upper and lower-case letters, digits and underscores (_) are
     *   allowed.
     * * Label name must start with a letter or digit.
     * * The maximum length of a label name is 100 characters.
     * For example, the
     * `appengine.googleapis.com/http/server/response_latencies` metric
     * type has a label for the HTTP response code, `response_code`, so
     * you can look at latencies for successful responses or just
     * for responses that failed.
     * 
* * repeated .google.api.LabelDescriptor labels = 2; */ public java.util.List getLabelsBuilderList() { return getLabelsFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< com.google.api.LabelDescriptor, com.google.api.LabelDescriptor.Builder, com.google.api.LabelDescriptorOrBuilder> getLabelsFieldBuilder() { if (labelsBuilder_ == null) { labelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< com.google.api.LabelDescriptor, com.google.api.LabelDescriptor.Builder, com.google.api.LabelDescriptorOrBuilder>( labels_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean()); labels_ = null; } return labelsBuilder_; } private int metricKind_ = 0; /** * * *
     * Whether the metric records instantaneous values, changes to a value, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.MetricKind metric_kind = 3; * * @return The enum numeric value on the wire for metricKind. */ @java.lang.Override public int getMetricKindValue() { return metricKind_; } /** * * *
     * Whether the metric records instantaneous values, changes to a value, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.MetricKind metric_kind = 3; * * @param value The enum numeric value on the wire for metricKind to set. * @return This builder for chaining. */ public Builder setMetricKindValue(int value) { metricKind_ = value; onChanged(); return this; } /** * * *
     * Whether the metric records instantaneous values, changes to a value, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.MetricKind metric_kind = 3; * * @return The metricKind. */ @java.lang.Override public com.google.api.MetricDescriptor.MetricKind getMetricKind() { @SuppressWarnings("deprecation") com.google.api.MetricDescriptor.MetricKind result = com.google.api.MetricDescriptor.MetricKind.valueOf(metricKind_); return result == null ? com.google.api.MetricDescriptor.MetricKind.UNRECOGNIZED : result; } /** * * *
     * Whether the metric records instantaneous values, changes to a value, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.MetricKind metric_kind = 3; * * @param value The metricKind to set. * @return This builder for chaining. */ public Builder setMetricKind(com.google.api.MetricDescriptor.MetricKind value) { if (value == null) { throw new NullPointerException(); } metricKind_ = value.getNumber(); onChanged(); return this; } /** * * *
     * Whether the metric records instantaneous values, changes to a value, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.MetricKind metric_kind = 3; * * @return This builder for chaining. */ public Builder clearMetricKind() { metricKind_ = 0; onChanged(); return this; } private int valueType_ = 0; /** * * *
     * Whether the measurement is an integer, a floating-point number, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.ValueType value_type = 4; * * @return The enum numeric value on the wire for valueType. */ @java.lang.Override public int getValueTypeValue() { return valueType_; } /** * * *
     * Whether the measurement is an integer, a floating-point number, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.ValueType value_type = 4; * * @param value The enum numeric value on the wire for valueType to set. * @return This builder for chaining. */ public Builder setValueTypeValue(int value) { valueType_ = value; onChanged(); return this; } /** * * *
     * Whether the measurement is an integer, a floating-point number, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.ValueType value_type = 4; * * @return The valueType. */ @java.lang.Override public com.google.api.MetricDescriptor.ValueType getValueType() { @SuppressWarnings("deprecation") com.google.api.MetricDescriptor.ValueType result = com.google.api.MetricDescriptor.ValueType.valueOf(valueType_); return result == null ? com.google.api.MetricDescriptor.ValueType.UNRECOGNIZED : result; } /** * * *
     * Whether the measurement is an integer, a floating-point number, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.ValueType value_type = 4; * * @param value The valueType to set. * @return This builder for chaining. */ public Builder setValueType(com.google.api.MetricDescriptor.ValueType value) { if (value == null) { throw new NullPointerException(); } valueType_ = value.getNumber(); onChanged(); return this; } /** * * *
     * Whether the measurement is an integer, a floating-point number, etc.
     * Some combinations of `metric_kind` and `value_type` might not be supported.
     * 
* * .google.api.MetricDescriptor.ValueType value_type = 4; * * @return This builder for chaining. */ public Builder clearValueType() { valueType_ = 0; onChanged(); return this; } private java.lang.Object unit_ = ""; /** * * *
     * The units in which the metric value is reported. It is only applicable
     * if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
     * defines the representation of the stored metric values.
     * Different systems may scale the values to be more easily displayed (so a
     * value of `0.02KBy` _might_ be displayed as `20By`, and a value of
     * `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
     * `KBy`, then the value of the metric is always in thousands of bytes, no
     * matter how it may be displayed..
     * If you want a custom metric to record the exact number of CPU-seconds used
     * by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
     * `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
     * CPU-seconds, then the value is written as `12005`.
     * Alternatively, if you want a custom metric to record data in a more
     * granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
     * `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
     * or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
     * The supported units are a subset of [The Unified Code for Units of
     * Measure](http://unitsofmeasure.org/ucum.html) standard:
     * **Basic units (UNIT)**
     * * `bit`   bit
     * * `By`    byte
     * * `s`     second
     * * `min`   minute
     * * `h`     hour
     * * `d`     day
     * * `1`     dimensionless
     * **Prefixes (PREFIX)**
     * * `k`     kilo    (10^3)
     * * `M`     mega    (10^6)
     * * `G`     giga    (10^9)
     * * `T`     tera    (10^12)
     * * `P`     peta    (10^15)
     * * `E`     exa     (10^18)
     * * `Z`     zetta   (10^21)
     * * `Y`     yotta   (10^24)
     * * `m`     milli   (10^-3)
     * * `u`     micro   (10^-6)
     * * `n`     nano    (10^-9)
     * * `p`     pico    (10^-12)
     * * `f`     femto   (10^-15)
     * * `a`     atto    (10^-18)
     * * `z`     zepto   (10^-21)
     * * `y`     yocto   (10^-24)
     * * `Ki`    kibi    (2^10)
     * * `Mi`    mebi    (2^20)
     * * `Gi`    gibi    (2^30)
     * * `Ti`    tebi    (2^40)
     * * `Pi`    pebi    (2^50)
     * **Grammar**
     * The grammar also includes these connectors:
     * * `/`    division or ratio (as an infix operator). For examples,
     *          `kBy/{email}` or `MiBy/10ms` (although you should almost never
     *          have `/s` in a metric `unit`; rates should always be computed at
     *          query time from the underlying cumulative or delta value).
     * * `.`    multiplication or composition (as an infix operator). For
     *          examples, `GBy.d` or `k{watt}.h`.
     * The grammar for a unit is as follows:
     *     Expression = Component { "." Component } { "/" Component } ;
     *     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
     *               | Annotation
     *               | "1"
     *               ;
     *     Annotation = "{" NAME "}" ;
     * Notes:
     * * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
     *    is used alone, then the unit is equivalent to `1`. For examples,
     *    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
     * * `NAME` is a sequence of non-blank printable ASCII characters not
     *    containing `{` or `}`.
     * * `1` represents a unitary [dimensionless
     *    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
     *    as in `1/s`. It is typically used when none of the basic units are
     *    appropriate. For example, "new users per day" can be represented as
     *    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
     *    users). Alternatively, "thousands of page views per day" would be
     *    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
     *    value of `5.3` would mean "5300 page views per day").
     * * `%` represents dimensionless value of 1/100, and annotates values giving
     *    a percentage (so the metric values are typically in the range of 0..100,
     *    and a metric value `3` means "3 percent").
     * * `10^2.%` indicates a metric contains a ratio, typically in the range
     *    0..1, that will be multiplied by 100 and displayed as a percentage
     *    (so a metric value `0.03` means "3 percent").
     * 
* * string unit = 5; * * @return The unit. */ public java.lang.String getUnit() { java.lang.Object ref = unit_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); unit_ = s; return s; } else { return (java.lang.String) ref; } } /** * * *
     * The units in which the metric value is reported. It is only applicable
     * if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
     * defines the representation of the stored metric values.
     * Different systems may scale the values to be more easily displayed (so a
     * value of `0.02KBy` _might_ be displayed as `20By`, and a value of
     * `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
     * `KBy`, then the value of the metric is always in thousands of bytes, no
     * matter how it may be displayed..
     * If you want a custom metric to record the exact number of CPU-seconds used
     * by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
     * `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
     * CPU-seconds, then the value is written as `12005`.
     * Alternatively, if you want a custom metric to record data in a more
     * granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
     * `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
     * or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
     * The supported units are a subset of [The Unified Code for Units of
     * Measure](http://unitsofmeasure.org/ucum.html) standard:
     * **Basic units (UNIT)**
     * * `bit`   bit
     * * `By`    byte
     * * `s`     second
     * * `min`   minute
     * * `h`     hour
     * * `d`     day
     * * `1`     dimensionless
     * **Prefixes (PREFIX)**
     * * `k`     kilo    (10^3)
     * * `M`     mega    (10^6)
     * * `G`     giga    (10^9)
     * * `T`     tera    (10^12)
     * * `P`     peta    (10^15)
     * * `E`     exa     (10^18)
     * * `Z`     zetta   (10^21)
     * * `Y`     yotta   (10^24)
     * * `m`     milli   (10^-3)
     * * `u`     micro   (10^-6)
     * * `n`     nano    (10^-9)
     * * `p`     pico    (10^-12)
     * * `f`     femto   (10^-15)
     * * `a`     atto    (10^-18)
     * * `z`     zepto   (10^-21)
     * * `y`     yocto   (10^-24)
     * * `Ki`    kibi    (2^10)
     * * `Mi`    mebi    (2^20)
     * * `Gi`    gibi    (2^30)
     * * `Ti`    tebi    (2^40)
     * * `Pi`    pebi    (2^50)
     * **Grammar**
     * The grammar also includes these connectors:
     * * `/`    division or ratio (as an infix operator). For examples,
     *          `kBy/{email}` or `MiBy/10ms` (although you should almost never
     *          have `/s` in a metric `unit`; rates should always be computed at
     *          query time from the underlying cumulative or delta value).
     * * `.`    multiplication or composition (as an infix operator). For
     *          examples, `GBy.d` or `k{watt}.h`.
     * The grammar for a unit is as follows:
     *     Expression = Component { "." Component } { "/" Component } ;
     *     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
     *               | Annotation
     *               | "1"
     *               ;
     *     Annotation = "{" NAME "}" ;
     * Notes:
     * * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
     *    is used alone, then the unit is equivalent to `1`. For examples,
     *    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
     * * `NAME` is a sequence of non-blank printable ASCII characters not
     *    containing `{` or `}`.
     * * `1` represents a unitary [dimensionless
     *    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
     *    as in `1/s`. It is typically used when none of the basic units are
     *    appropriate. For example, "new users per day" can be represented as
     *    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
     *    users). Alternatively, "thousands of page views per day" would be
     *    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
     *    value of `5.3` would mean "5300 page views per day").
     * * `%` represents dimensionless value of 1/100, and annotates values giving
     *    a percentage (so the metric values are typically in the range of 0..100,
     *    and a metric value `3` means "3 percent").
     * * `10^2.%` indicates a metric contains a ratio, typically in the range
     *    0..1, that will be multiplied by 100 and displayed as a percentage
     *    (so a metric value `0.03` means "3 percent").
     * 
* * string unit = 5; * * @return The bytes for unit. */ public com.google.protobuf.ByteString getUnitBytes() { java.lang.Object ref = unit_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); unit_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * * *
     * The units in which the metric value is reported. It is only applicable
     * if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
     * defines the representation of the stored metric values.
     * Different systems may scale the values to be more easily displayed (so a
     * value of `0.02KBy` _might_ be displayed as `20By`, and a value of
     * `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
     * `KBy`, then the value of the metric is always in thousands of bytes, no
     * matter how it may be displayed..
     * If you want a custom metric to record the exact number of CPU-seconds used
     * by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
     * `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
     * CPU-seconds, then the value is written as `12005`.
     * Alternatively, if you want a custom metric to record data in a more
     * granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
     * `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
     * or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
     * The supported units are a subset of [The Unified Code for Units of
     * Measure](http://unitsofmeasure.org/ucum.html) standard:
     * **Basic units (UNIT)**
     * * `bit`   bit
     * * `By`    byte
     * * `s`     second
     * * `min`   minute
     * * `h`     hour
     * * `d`     day
     * * `1`     dimensionless
     * **Prefixes (PREFIX)**
     * * `k`     kilo    (10^3)
     * * `M`     mega    (10^6)
     * * `G`     giga    (10^9)
     * * `T`     tera    (10^12)
     * * `P`     peta    (10^15)
     * * `E`     exa     (10^18)
     * * `Z`     zetta   (10^21)
     * * `Y`     yotta   (10^24)
     * * `m`     milli   (10^-3)
     * * `u`     micro   (10^-6)
     * * `n`     nano    (10^-9)
     * * `p`     pico    (10^-12)
     * * `f`     femto   (10^-15)
     * * `a`     atto    (10^-18)
     * * `z`     zepto   (10^-21)
     * * `y`     yocto   (10^-24)
     * * `Ki`    kibi    (2^10)
     * * `Mi`    mebi    (2^20)
     * * `Gi`    gibi    (2^30)
     * * `Ti`    tebi    (2^40)
     * * `Pi`    pebi    (2^50)
     * **Grammar**
     * The grammar also includes these connectors:
     * * `/`    division or ratio (as an infix operator). For examples,
     *          `kBy/{email}` or `MiBy/10ms` (although you should almost never
     *          have `/s` in a metric `unit`; rates should always be computed at
     *          query time from the underlying cumulative or delta value).
     * * `.`    multiplication or composition (as an infix operator). For
     *          examples, `GBy.d` or `k{watt}.h`.
     * The grammar for a unit is as follows:
     *     Expression = Component { "." Component } { "/" Component } ;
     *     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
     *               | Annotation
     *               | "1"
     *               ;
     *     Annotation = "{" NAME "}" ;
     * Notes:
     * * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
     *    is used alone, then the unit is equivalent to `1`. For examples,
     *    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
     * * `NAME` is a sequence of non-blank printable ASCII characters not
     *    containing `{` or `}`.
     * * `1` represents a unitary [dimensionless
     *    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
     *    as in `1/s`. It is typically used when none of the basic units are
     *    appropriate. For example, "new users per day" can be represented as
     *    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
     *    users). Alternatively, "thousands of page views per day" would be
     *    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
     *    value of `5.3` would mean "5300 page views per day").
     * * `%` represents dimensionless value of 1/100, and annotates values giving
     *    a percentage (so the metric values are typically in the range of 0..100,
     *    and a metric value `3` means "3 percent").
     * * `10^2.%` indicates a metric contains a ratio, typically in the range
     *    0..1, that will be multiplied by 100 and displayed as a percentage
     *    (so a metric value `0.03` means "3 percent").
     * 
* * string unit = 5; * * @param value The unit to set. * @return This builder for chaining. */ public Builder setUnit(java.lang.String value) { if (value == null) { throw new NullPointerException(); } unit_ = value; onChanged(); return this; } /** * * *
     * The units in which the metric value is reported. It is only applicable
     * if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
     * defines the representation of the stored metric values.
     * Different systems may scale the values to be more easily displayed (so a
     * value of `0.02KBy` _might_ be displayed as `20By`, and a value of
     * `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
     * `KBy`, then the value of the metric is always in thousands of bytes, no
     * matter how it may be displayed..
     * If you want a custom metric to record the exact number of CPU-seconds used
     * by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
     * `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
     * CPU-seconds, then the value is written as `12005`.
     * Alternatively, if you want a custom metric to record data in a more
     * granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
     * `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
     * or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
     * The supported units are a subset of [The Unified Code for Units of
     * Measure](http://unitsofmeasure.org/ucum.html) standard:
     * **Basic units (UNIT)**
     * * `bit`   bit
     * * `By`    byte
     * * `s`     second
     * * `min`   minute
     * * `h`     hour
     * * `d`     day
     * * `1`     dimensionless
     * **Prefixes (PREFIX)**
     * * `k`     kilo    (10^3)
     * * `M`     mega    (10^6)
     * * `G`     giga    (10^9)
     * * `T`     tera    (10^12)
     * * `P`     peta    (10^15)
     * * `E`     exa     (10^18)
     * * `Z`     zetta   (10^21)
     * * `Y`     yotta   (10^24)
     * * `m`     milli   (10^-3)
     * * `u`     micro   (10^-6)
     * * `n`     nano    (10^-9)
     * * `p`     pico    (10^-12)
     * * `f`     femto   (10^-15)
     * * `a`     atto    (10^-18)
     * * `z`     zepto   (10^-21)
     * * `y`     yocto   (10^-24)
     * * `Ki`    kibi    (2^10)
     * * `Mi`    mebi    (2^20)
     * * `Gi`    gibi    (2^30)
     * * `Ti`    tebi    (2^40)
     * * `Pi`    pebi    (2^50)
     * **Grammar**
     * The grammar also includes these connectors:
     * * `/`    division or ratio (as an infix operator). For examples,
     *          `kBy/{email}` or `MiBy/10ms` (although you should almost never
     *          have `/s` in a metric `unit`; rates should always be computed at
     *          query time from the underlying cumulative or delta value).
     * * `.`    multiplication or composition (as an infix operator). For
     *          examples, `GBy.d` or `k{watt}.h`.
     * The grammar for a unit is as follows:
     *     Expression = Component { "." Component } { "/" Component } ;
     *     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
     *               | Annotation
     *               | "1"
     *               ;
     *     Annotation = "{" NAME "}" ;
     * Notes:
     * * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
     *    is used alone, then the unit is equivalent to `1`. For examples,
     *    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
     * * `NAME` is a sequence of non-blank printable ASCII characters not
     *    containing `{` or `}`.
     * * `1` represents a unitary [dimensionless
     *    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
     *    as in `1/s`. It is typically used when none of the basic units are
     *    appropriate. For example, "new users per day" can be represented as
     *    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
     *    users). Alternatively, "thousands of page views per day" would be
     *    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
     *    value of `5.3` would mean "5300 page views per day").
     * * `%` represents dimensionless value of 1/100, and annotates values giving
     *    a percentage (so the metric values are typically in the range of 0..100,
     *    and a metric value `3` means "3 percent").
     * * `10^2.%` indicates a metric contains a ratio, typically in the range
     *    0..1, that will be multiplied by 100 and displayed as a percentage
     *    (so a metric value `0.03` means "3 percent").
     * 
* * string unit = 5; * * @return This builder for chaining. */ public Builder clearUnit() { unit_ = getDefaultInstance().getUnit(); onChanged(); return this; } /** * * *
     * The units in which the metric value is reported. It is only applicable
     * if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
     * defines the representation of the stored metric values.
     * Different systems may scale the values to be more easily displayed (so a
     * value of `0.02KBy` _might_ be displayed as `20By`, and a value of
     * `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
     * `KBy`, then the value of the metric is always in thousands of bytes, no
     * matter how it may be displayed..
     * If you want a custom metric to record the exact number of CPU-seconds used
     * by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
     * `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
     * CPU-seconds, then the value is written as `12005`.
     * Alternatively, if you want a custom metric to record data in a more
     * granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
     * `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
     * or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
     * The supported units are a subset of [The Unified Code for Units of
     * Measure](http://unitsofmeasure.org/ucum.html) standard:
     * **Basic units (UNIT)**
     * * `bit`   bit
     * * `By`    byte
     * * `s`     second
     * * `min`   minute
     * * `h`     hour
     * * `d`     day
     * * `1`     dimensionless
     * **Prefixes (PREFIX)**
     * * `k`     kilo    (10^3)
     * * `M`     mega    (10^6)
     * * `G`     giga    (10^9)
     * * `T`     tera    (10^12)
     * * `P`     peta    (10^15)
     * * `E`     exa     (10^18)
     * * `Z`     zetta   (10^21)
     * * `Y`     yotta   (10^24)
     * * `m`     milli   (10^-3)
     * * `u`     micro   (10^-6)
     * * `n`     nano    (10^-9)
     * * `p`     pico    (10^-12)
     * * `f`     femto   (10^-15)
     * * `a`     atto    (10^-18)
     * * `z`     zepto   (10^-21)
     * * `y`     yocto   (10^-24)
     * * `Ki`    kibi    (2^10)
     * * `Mi`    mebi    (2^20)
     * * `Gi`    gibi    (2^30)
     * * `Ti`    tebi    (2^40)
     * * `Pi`    pebi    (2^50)
     * **Grammar**
     * The grammar also includes these connectors:
     * * `/`    division or ratio (as an infix operator). For examples,
     *          `kBy/{email}` or `MiBy/10ms` (although you should almost never
     *          have `/s` in a metric `unit`; rates should always be computed at
     *          query time from the underlying cumulative or delta value).
     * * `.`    multiplication or composition (as an infix operator). For
     *          examples, `GBy.d` or `k{watt}.h`.
     * The grammar for a unit is as follows:
     *     Expression = Component { "." Component } { "/" Component } ;
     *     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
     *               | Annotation
     *               | "1"
     *               ;
     *     Annotation = "{" NAME "}" ;
     * Notes:
     * * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
     *    is used alone, then the unit is equivalent to `1`. For examples,
     *    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
     * * `NAME` is a sequence of non-blank printable ASCII characters not
     *    containing `{` or `}`.
     * * `1` represents a unitary [dimensionless
     *    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
     *    as in `1/s`. It is typically used when none of the basic units are
     *    appropriate. For example, "new users per day" can be represented as
     *    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
     *    users). Alternatively, "thousands of page views per day" would be
     *    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
     *    value of `5.3` would mean "5300 page views per day").
     * * `%` represents dimensionless value of 1/100, and annotates values giving
     *    a percentage (so the metric values are typically in the range of 0..100,
     *    and a metric value `3` means "3 percent").
     * * `10^2.%` indicates a metric contains a ratio, typically in the range
     *    0..1, that will be multiplied by 100 and displayed as a percentage
     *    (so a metric value `0.03` means "3 percent").
     * 
* * string unit = 5; * * @param value The bytes for unit to set. * @return This builder for chaining. */ public Builder setUnitBytes(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); unit_ = value; onChanged(); return this; } private java.lang.Object description_ = ""; /** * * *
     * A detailed description of the metric, which can be used in documentation.
     * 
* * string description = 6; * * @return The description. */ public java.lang.String getDescription() { java.lang.Object ref = description_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); description_ = s; return s; } else { return (java.lang.String) ref; } } /** * * *
     * A detailed description of the metric, which can be used in documentation.
     * 
* * string description = 6; * * @return The bytes for description. */ public com.google.protobuf.ByteString getDescriptionBytes() { java.lang.Object ref = description_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); description_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * * *
     * A detailed description of the metric, which can be used in documentation.
     * 
* * string description = 6; * * @param value The description to set. * @return This builder for chaining. */ public Builder setDescription(java.lang.String value) { if (value == null) { throw new NullPointerException(); } description_ = value; onChanged(); return this; } /** * * *
     * A detailed description of the metric, which can be used in documentation.
     * 
* * string description = 6; * * @return This builder for chaining. */ public Builder clearDescription() { description_ = getDefaultInstance().getDescription(); onChanged(); return this; } /** * * *
     * A detailed description of the metric, which can be used in documentation.
     * 
* * string description = 6; * * @param value The bytes for description to set. * @return This builder for chaining. */ public Builder setDescriptionBytes(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); description_ = value; onChanged(); return this; } private java.lang.Object displayName_ = ""; /** * * *
     * A concise name for the metric, which can be displayed in user interfaces.
     * Use sentence case without an ending period, for example "Request count".
     * This field is optional but it is recommended to be set for any metrics
     * associated with user-visible concepts, such as Quota.
     * 
* * string display_name = 7; * * @return The displayName. */ public java.lang.String getDisplayName() { java.lang.Object ref = displayName_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); displayName_ = s; return s; } else { return (java.lang.String) ref; } } /** * * *
     * A concise name for the metric, which can be displayed in user interfaces.
     * Use sentence case without an ending period, for example "Request count".
     * This field is optional but it is recommended to be set for any metrics
     * associated with user-visible concepts, such as Quota.
     * 
* * string display_name = 7; * * @return The bytes for displayName. */ public com.google.protobuf.ByteString getDisplayNameBytes() { java.lang.Object ref = displayName_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); displayName_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * * *
     * A concise name for the metric, which can be displayed in user interfaces.
     * Use sentence case without an ending period, for example "Request count".
     * This field is optional but it is recommended to be set for any metrics
     * associated with user-visible concepts, such as Quota.
     * 
* * string display_name = 7; * * @param value The displayName to set. * @return This builder for chaining. */ public Builder setDisplayName(java.lang.String value) { if (value == null) { throw new NullPointerException(); } displayName_ = value; onChanged(); return this; } /** * * *
     * A concise name for the metric, which can be displayed in user interfaces.
     * Use sentence case without an ending period, for example "Request count".
     * This field is optional but it is recommended to be set for any metrics
     * associated with user-visible concepts, such as Quota.
     * 
* * string display_name = 7; * * @return This builder for chaining. */ public Builder clearDisplayName() { displayName_ = getDefaultInstance().getDisplayName(); onChanged(); return this; } /** * * *
     * A concise name for the metric, which can be displayed in user interfaces.
     * Use sentence case without an ending period, for example "Request count".
     * This field is optional but it is recommended to be set for any metrics
     * associated with user-visible concepts, such as Quota.
     * 
* * string display_name = 7; * * @param value The bytes for displayName to set. * @return This builder for chaining. */ public Builder setDisplayNameBytes(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); displayName_ = value; onChanged(); return this; } private com.google.api.MetricDescriptor.MetricDescriptorMetadata metadata_; private com.google.protobuf.SingleFieldBuilderV3< com.google.api.MetricDescriptor.MetricDescriptorMetadata, com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder, com.google.api.MetricDescriptor.MetricDescriptorMetadataOrBuilder> metadataBuilder_; /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; * * @return Whether the metadata field is set. */ public boolean hasMetadata() { return metadataBuilder_ != null || metadata_ != null; } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; * * @return The metadata. */ public com.google.api.MetricDescriptor.MetricDescriptorMetadata getMetadata() { if (metadataBuilder_ == null) { return metadata_ == null ? com.google.api.MetricDescriptor.MetricDescriptorMetadata.getDefaultInstance() : metadata_; } else { return metadataBuilder_.getMessage(); } } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ public Builder setMetadata(com.google.api.MetricDescriptor.MetricDescriptorMetadata value) { if (metadataBuilder_ == null) { if (value == null) { throw new NullPointerException(); } metadata_ = value; onChanged(); } else { metadataBuilder_.setMessage(value); } return this; } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ public Builder setMetadata( com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder builderForValue) { if (metadataBuilder_ == null) { metadata_ = builderForValue.build(); onChanged(); } else { metadataBuilder_.setMessage(builderForValue.build()); } return this; } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ public Builder mergeMetadata(com.google.api.MetricDescriptor.MetricDescriptorMetadata value) { if (metadataBuilder_ == null) { if (metadata_ != null) { metadata_ = com.google.api.MetricDescriptor.MetricDescriptorMetadata.newBuilder(metadata_) .mergeFrom(value) .buildPartial(); } else { metadata_ = value; } onChanged(); } else { metadataBuilder_.mergeFrom(value); } return this; } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ public Builder clearMetadata() { if (metadataBuilder_ == null) { metadata_ = null; onChanged(); } else { metadata_ = null; metadataBuilder_ = null; } return this; } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ public com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder getMetadataBuilder() { onChanged(); return getMetadataFieldBuilder().getBuilder(); } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ public com.google.api.MetricDescriptor.MetricDescriptorMetadataOrBuilder getMetadataOrBuilder() { if (metadataBuilder_ != null) { return metadataBuilder_.getMessageOrBuilder(); } else { return metadata_ == null ? com.google.api.MetricDescriptor.MetricDescriptorMetadata.getDefaultInstance() : metadata_; } } /** * * *
     * Optional. Metadata which can be used to guide usage of the metric.
     * 
* * .google.api.MetricDescriptor.MetricDescriptorMetadata metadata = 10; */ private com.google.protobuf.SingleFieldBuilderV3< com.google.api.MetricDescriptor.MetricDescriptorMetadata, com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder, com.google.api.MetricDescriptor.MetricDescriptorMetadataOrBuilder> getMetadataFieldBuilder() { if (metadataBuilder_ == null) { metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< com.google.api.MetricDescriptor.MetricDescriptorMetadata, com.google.api.MetricDescriptor.MetricDescriptorMetadata.Builder, com.google.api.MetricDescriptor.MetricDescriptorMetadataOrBuilder>( getMetadata(), getParentForChildren(), isClean()); metadata_ = null; } return metadataBuilder_; } private int launchStage_ = 0; /** * * *
     * Optional. The launch stage of the metric definition.
     * 
* * .google.api.LaunchStage launch_stage = 12; * * @return The enum numeric value on the wire for launchStage. */ @java.lang.Override public int getLaunchStageValue() { return launchStage_; } /** * * *
     * Optional. The launch stage of the metric definition.
     * 
* * .google.api.LaunchStage launch_stage = 12; * * @param value The enum numeric value on the wire for launchStage to set. * @return This builder for chaining. */ public Builder setLaunchStageValue(int value) { launchStage_ = value; onChanged(); return this; } /** * * *
     * Optional. The launch stage of the metric definition.
     * 
* * .google.api.LaunchStage launch_stage = 12; * * @return The launchStage. */ @java.lang.Override public com.google.api.LaunchStage getLaunchStage() { @SuppressWarnings("deprecation") com.google.api.LaunchStage result = com.google.api.LaunchStage.valueOf(launchStage_); return result == null ? com.google.api.LaunchStage.UNRECOGNIZED : result; } /** * * *
     * Optional. The launch stage of the metric definition.
     * 
* * .google.api.LaunchStage launch_stage = 12; * * @param value The launchStage to set. * @return This builder for chaining. */ public Builder setLaunchStage(com.google.api.LaunchStage value) { if (value == null) { throw new NullPointerException(); } launchStage_ = value.getNumber(); onChanged(); return this; } /** * * *
     * Optional. The launch stage of the metric definition.
     * 
* * .google.api.LaunchStage launch_stage = 12; * * @return This builder for chaining. */ public Builder clearLaunchStage() { launchStage_ = 0; onChanged(); return this; } private com.google.protobuf.LazyStringList monitoredResourceTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY; private void ensureMonitoredResourceTypesIsMutable() { if (!((bitField0_ & 0x00000002) != 0)) { monitoredResourceTypes_ = new com.google.protobuf.LazyStringArrayList(monitoredResourceTypes_); bitField0_ |= 0x00000002; } } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @return A list containing the monitoredResourceTypes. */ public com.google.protobuf.ProtocolStringList getMonitoredResourceTypesList() { return monitoredResourceTypes_.getUnmodifiableView(); } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @return The count of monitoredResourceTypes. */ public int getMonitoredResourceTypesCount() { return monitoredResourceTypes_.size(); } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @param index The index of the element to return. * @return The monitoredResourceTypes at the given index. */ public java.lang.String getMonitoredResourceTypes(int index) { return monitoredResourceTypes_.get(index); } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @param index The index of the value to return. * @return The bytes of the monitoredResourceTypes at the given index. */ public com.google.protobuf.ByteString getMonitoredResourceTypesBytes(int index) { return monitoredResourceTypes_.getByteString(index); } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @param index The index to set the value at. * @param value The monitoredResourceTypes to set. * @return This builder for chaining. */ public Builder setMonitoredResourceTypes(int index, java.lang.String value) { if (value == null) { throw new NullPointerException(); } ensureMonitoredResourceTypesIsMutable(); monitoredResourceTypes_.set(index, value); onChanged(); return this; } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @param value The monitoredResourceTypes to add. * @return This builder for chaining. */ public Builder addMonitoredResourceTypes(java.lang.String value) { if (value == null) { throw new NullPointerException(); } ensureMonitoredResourceTypesIsMutable(); monitoredResourceTypes_.add(value); onChanged(); return this; } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @param values The monitoredResourceTypes to add. * @return This builder for chaining. */ public Builder addAllMonitoredResourceTypes(java.lang.Iterable values) { ensureMonitoredResourceTypesIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll(values, monitoredResourceTypes_); onChanged(); return this; } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @return This builder for chaining. */ public Builder clearMonitoredResourceTypes() { monitoredResourceTypes_ = com.google.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000002); onChanged(); return this; } /** * * *
     * Read-only. If present, then a [time
     * series][google.monitoring.v3.TimeSeries], which is identified partially by
     * a metric type and a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that is associated
     * with this metric type can only be associated with one of the monitored
     * resource types listed here.
     * 
* * repeated string monitored_resource_types = 13; * * @param value The bytes of the monitoredResourceTypes to add. * @return This builder for chaining. */ public Builder addMonitoredResourceTypesBytes(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); ensureMonitoredResourceTypesIsMutable(); monitoredResourceTypes_.add(value); onChanged(); return this; } @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); } @java.lang.Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.mergeUnknownFields(unknownFields); } // @@protoc_insertion_point(builder_scope:google.api.MetricDescriptor) } // @@protoc_insertion_point(class_scope:google.api.MetricDescriptor) private static final com.google.api.MetricDescriptor DEFAULT_INSTANCE; static { DEFAULT_INSTANCE = new com.google.api.MetricDescriptor(); } public static com.google.api.MetricDescriptor getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override public MetricDescriptor parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return new MetricDescriptor(input, extensionRegistry); } }; public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override public com.google.api.MetricDescriptor getDefaultInstanceForType() { return DEFAULT_INSTANCE; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy