/** * Validates that settings being merged into {@code this} is targeting the same "subject", e.g. * user, table, namespace. * * @param mergee The quota settings to be merged into {@code this}. * @throws IllegalArgumentException if the subjects are not equal. */ void validateQuotaTarget(QuotaSettings mergee) { if (!Objects.equals(getUserName(), mergee.getUserName())) { throw new IllegalArgumentException("Mismatched user names on settings to merge"); } if (!Objects.equals(getTableName(), mergee.getTableName())) { throw new IllegalArgumentException("Mismatched table names on settings to merge"); } if (!Objects.equals(getNamespace(), mergee.getNamespace())) { throw new IllegalArgumentException("Mismatched namespace on settings to merge"); } if (!Objects.equals(getRegionServer(), mergee.getRegionServer())) { throw new IllegalArgumentException("Mismatched region server on settings to merge"); } } }
/** * Convert a QuotaSettings to a protocol buffer SetQuotaRequest. * This is used internally by the Admin client to serialize the quota settings * and send them to the master. */ @InterfaceAudience.Private public static SetQuotaRequest buildSetQuotaRequestProto(final QuotaSettings settings) { SetQuotaRequest.Builder builder = SetQuotaRequest.newBuilder(); if (settings.getUserName() != null) { builder.setUserName(settings.getUserName()); } if (settings.getTableName() != null) { builder.setTableName(ProtobufUtil.toProtoTableName(settings.getTableName())); } if (settings.getNamespace() != null) { builder.setNamespace(settings.getNamespace()); } if (settings.getRegionServer() != null) { builder.setRegionServer(settings.getRegionServer()); } settings.setupSetQuotaRequest(builder); return builder.build(); }