3#include <userver/components/component_config.hpp>
4#include <userver/components/raw_component_base.hpp>
5#include <userver/yaml_config/impl/validate_static_config.hpp>
6#include <userver/yaml_config/schema.hpp>
12enum class ValidationMode {
21[[noreturn]]
void WrapInvalidStaticConfigSchemaException(
const std::exception&);
23template <
typename Component>
24void TryValidateStaticConfig(
25 std::string_view component_name,
26 const components::ComponentConfig& static_config,
27 ValidationMode validation_condition
29 if (
components::kForceNoValidation<Component>)
return;
31 if (
components::kHasValidate<Component> || validation_condition == ValidationMode::kAll) {
34 schema = Component::GetStaticConfigSchema();
35 }
catch (
const std::exception& ex) {
36 WrapInvalidStaticConfigSchemaException(ex);
38 schema.path = component_name;
44template <
typename Component>
47 return Component::GetStaticConfigSchema();