Sha256: fc1d672d63c184b0e56886284dfe793554f68ae66cd075cd765a59e760a0cc5e

Contents?: true

Size: 1.99 KB

Versions: 20

Compression:

Stored size: 1.99 KB

Contents

// Copyright 2020 gRPC authors.
//
// 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
//
//     http://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.

#include <grpc/support/port_platform.h>

#include "src/core/lib/gprpp/validation_errors.h"

#include <algorithm>
#include <utility>

#include "absl/status/status.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
#include "absl/strings/strip.h"

namespace grpc_core {

void ValidationErrors::PushField(absl::string_view ext) {
  // Skip leading '.' for top-level field names.
  if (fields_.empty()) absl::ConsumePrefix(&ext, ".");
  fields_.emplace_back(std::string(ext));
}

void ValidationErrors::PopField() { fields_.pop_back(); }

void ValidationErrors::AddError(absl::string_view error) {
  field_errors_[absl::StrJoin(fields_, "")].emplace_back(error);
}

bool ValidationErrors::FieldHasErrors() const {
  return field_errors_.find(absl::StrJoin(fields_, "")) != field_errors_.end();
}

absl::Status ValidationErrors::status(absl::string_view prefix) const {
  if (field_errors_.empty()) return absl::OkStatus();
  std::vector<std::string> errors;
  for (const auto& p : field_errors_) {
    if (p.second.size() > 1) {
      errors.emplace_back(absl::StrCat("field:", p.first, " errors:[",
                                       absl::StrJoin(p.second, "; "), "]"));
    } else {
      errors.emplace_back(
          absl::StrCat("field:", p.first, " error:", p.second[0]));
    }
  }
  return absl::InvalidArgumentError(
      absl::StrCat(prefix, ": [", absl::StrJoin(errors, "; "), "]"));
}

}  // namespace grpc_core

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
grpc-1.54.3 src/core/lib/gprpp/validation_errors.cc
grpc-1.53.2 src/core/lib/gprpp/validation_errors.cc
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/grpc-1.50.0-x86_64-linux/src/core/lib/gprpp/validation_errors.cc
grpc-1.53.1 src/core/lib/gprpp/validation_errors.cc
grpc-1.52.2 src/core/lib/gprpp/validation_errors.cc
grpc-1.54.2 src/core/lib/gprpp/validation_errors.cc
grpc-1.54.0 src/core/lib/gprpp/validation_errors.cc
grpc-1.53.0 src/core/lib/gprpp/validation_errors.cc
grpc-1.53.0.pre2 src/core/lib/gprpp/validation_errors.cc
grpc-1.52.0 src/core/lib/gprpp/validation_errors.cc
rubypitaya-3.12.4 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/grpc-1.50.0-x86_64-linux/src/core/lib/gprpp/validation_errors.cc
grpc-1.51.0-x86_64-linux src/core/lib/gprpp/validation_errors.cc
grpc-1.51.0 src/core/lib/gprpp/validation_errors.cc
grpc-1.52.0.pre2 src/core/lib/gprpp/validation_errors.cc
rubypitaya-3.12.3 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/grpc-1.50.0-x86_64-linux/src/core/lib/gprpp/validation_errors.cc
rubypitaya-3.12.2 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/grpc-1.50.0-x86_64-linux/src/core/lib/gprpp/validation_errors.cc
grpc-1.50.0 src/core/lib/gprpp/validation_errors.cc
grpc-1.50.0-x86_64-linux src/core/lib/gprpp/validation_errors.cc
grpc-1.50.0.pre1 src/core/lib/gprpp/validation_errors.cc
grpc-1.50.0.pre1-x86_64-linux src/core/lib/gprpp/validation_errors.cc