001package gudusoft.gsqlparser.catalog.runtime; 002 003import java.util.Objects; 004 005/** 006 * Stable identifier for a {@link CatalogProvider} implementation. 007 * 008 * <p>Plan ยง7.2. Used by {@link CatalogProviderRegistry} to look up providers registered via 009 * {@code META-INF/services/} or programmatically.</p> 010 */ 011public final class CatalogProviderId { 012 013 private final String value; 014 015 private CatalogProviderId(String value) { 016 if (value == null || value.isEmpty()) { 017 throw new IllegalArgumentException("CatalogProviderId.value must be non-empty"); 018 } 019 this.value = value; 020 } 021 022 public static CatalogProviderId of(String value) { 023 return new CatalogProviderId(value); 024 } 025 026 public String value() { 027 return value; 028 } 029 030 @Override 031 public boolean equals(Object o) { 032 if (this == o) return true; 033 if (!(o instanceof CatalogProviderId)) return false; 034 return value.equals(((CatalogProviderId) o).value); 035 } 036 037 @Override 038 public int hashCode() { 039 return Objects.hash(value); 040 } 041 042 @Override 043 public String toString() { 044 return "CatalogProviderId[" + value + "]"; 045 } 046}