001package io.prometheus.metrics.model.snapshots; 002 003import io.prometheus.metrics.annotations.StableApi; 004import java.util.Objects; 005 006/** Utility for iterating over {@link Labels}. */ 007@StableApi 008public final class Label implements Comparable<Label> { 009 010 private final String name; 011 private final String value; 012 013 public Label(String name, String value) { 014 this.name = name; 015 this.value = value; 016 } 017 018 public String getName() { 019 return name; 020 } 021 022 public String getValue() { 023 return value; 024 } 025 026 @Override 027 public int compareTo(Label other) { 028 int nameCompare = name.compareTo(other.name); 029 return nameCompare != 0 ? nameCompare : value.compareTo(other.value); 030 } 031 032 @Override 033 public String toString() { 034 return "Label{" + "name='" + name + '\'' + ", value='" + value + '\'' + '}'; 035 } 036 037 @Override 038 public boolean equals(Object o) { 039 if (this == o) { 040 return true; 041 } 042 if (o == null || getClass() != o.getClass()) { 043 return false; 044 } 045 Label label = (Label) o; 046 return Objects.equals(name, label.name) && Objects.equals(value, label.value); 047 } 048 049 @Override 050 public int hashCode() { 051 return Objects.hash(name, value); 052 } 053}