001package io.prometheus.metrics.model.snapshots; 002 003import java.util.Objects; 004 005/** 006 * Utility for iterating over {@link Labels}. 007 */ 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{" + 035 "name='" + name + '\'' + 036 ", value='" + value + '\'' + 037 '}'; 038 } 039 040 @Override 041 public boolean equals(Object o) { 042 if (this == o) return true; 043 if (o == null || getClass() != o.getClass()) return false; 044 Label label = (Label) o; 045 return Objects.equals(name, label.name) && Objects.equals(value, label.value); 046 } 047 048 @Override 049 public int hashCode() { 050 return Objects.hash(name, value); 051 } 052}