MQTTSuite
Loading...
Searching...
No Matches
anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic > Class Template Reference
Inheritance diagram for anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >:
Collaboration diagram for anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >:

Public Member Functions

 logical_combination (json &sch, root_schema *root, const std::vector< nlohmann::json_uri > &uris)
 logical_combination (json &sch, root_schema *root, const std::vector< nlohmann::json_uri > &uris)
Public Member Functions inherited from anonymous_namespace{json-validator.cpp}::schema
virtual ~schema ()=default
 schema (root_schema *root)
virtual const jsondefault_value (const json::json_pointer &, const json &, error_handler &) const
void set_default_value (const json &v)
virtual ~schema ()=default
 schema (root_schema *root)
virtual const jsondefault_value (const json::json_pointer &, const json &, error_handler &) const
void set_default_value (const json &v)

Private Member Functions

void validate (const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const final
void validate (const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const final
bool is_validate_complete (const json &, const json::json_pointer &, error_handler &e, const logical_combination_error_handler &esub, size_t, size_t current_schema_index)
bool is_validate_complete (const json &, const json::json_pointer &, error_handler &, const logical_combination_error_handler &, size_t count, size_t)
bool is_validate_complete (const json &instance, const json::json_pointer &ptr, error_handler &e, const logical_combination_error_handler &, size_t count, size_t)
const std::string key
const std::string key
const std::string key
bool is_validate_complete (const json &, const json::json_pointer &, error_handler &e, const logical_combination_error_handler &esub, size_t, size_t current_schema_index)
bool is_validate_complete (const json &, const json::json_pointer &, error_handler &, const logical_combination_error_handler &, size_t count, size_t)
bool is_validate_complete (const json &instance, const json::json_pointer &ptr, error_handler &e, const logical_combination_error_handler &, size_t count, size_t)

Static Private Member Functions

static bool is_validate_complete (const json &, const json::json_pointer &, error_handler &, const logical_combination_error_handler &, size_t, size_t)
static bool is_validate_complete (const json &, const json::json_pointer &, error_handler &, const logical_combination_error_handler &, size_t, size_t)

Private Attributes

std::vector< std::shared_ptr< schema > > subschemata_

Static Private Attributes

static const std::string key

Additional Inherited Members

Static Public Member Functions inherited from anonymous_namespace{json-validator.cpp}::schema
static std::shared_ptr< schemamake (json &schema, root_schema *root, const std::vector< std::string > &key, std::vector< nlohmann::json_uri > uris)
static std::shared_ptr< schemamake (json &schema, root_schema *root, const std::vector< std::string > &key, std::vector< nlohmann::json_uri > uris)
Protected Member Functions inherited from anonymous_namespace{json-validator.cpp}::schema
virtual std::shared_ptr< schemamake_for_default_ (std::shared_ptr<::schema > &, root_schema *, std::vector< nlohmann::json_uri > &, nlohmann::json &) const
virtual std::shared_ptr< schemamake_for_default_ (std::shared_ptr<::schema > &, root_schema *, std::vector< nlohmann::json_uri > &, nlohmann::json &) const
Protected Attributes inherited from anonymous_namespace{json-validator.cpp}::schema
root_schemaroot_
json default_value_ = nullptr

Detailed Description

template<enum logical_combination_types combine_logic>
class anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >

Definition at line 455 of file json-validator.cpp.

Constructor & Destructor Documentation

◆ logical_combination() [1/2]

template<enum logical_combination_types combine_logic>
anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::logical_combination ( json & sch,
root_schema * root,
const std::vector< nlohmann::json_uri > & uris )
inline

Definition at line 491 of file json-validator.cpp.

494 : schema(root)
495 {
496 size_t c = 0;
497 for (auto &subschema : sch)
499
500 // value of allOf, anyOf, and oneOf "MUST be a non-empty array"
501 // TODO error/throw? when subschemata_.empty()
502 }
std::vector< std::shared_ptr< schema > > subschemata_
auto schema
Definition id-ref.cpp:69

References key, anonymous_namespace{json-validator.cpp}::schema::make(), and subschemata_.

Here is the call graph for this function:

◆ logical_combination() [2/2]

template<enum logical_combination_types combine_logic>
anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::logical_combination ( json & sch,
root_schema * root,
const std::vector< nlohmann::json_uri > & uris )
inline

Definition at line 491 of file json-validator.cpp.

494 : schema(root)
495 {
496 size_t c = 0;
497 for (auto &subschema : sch)
499
500 // value of allOf, anyOf, and oneOf "MUST be a non-empty array"
501 // TODO error/throw? when subschemata_.empty()
502 }

Member Function Documentation

◆ is_validate_complete() [1/8]

bool anonymous_namespace{json-validator.cpp}::logical_combination< anyOf >::is_validate_complete ( const json & ,
const json::json_pointer & ,
error_handler & ,
const logical_combination_error_handler & ,
size_t count,
size_t  )
private

Definition at line 523 of file json-validator.cpp.

524{
525 return count == 1;
526}

◆ is_validate_complete() [2/8]

bool anonymous_namespace{json-validator.cpp}::logical_combination< anyOf >::is_validate_complete ( const json & ,
const json::json_pointer & ,
error_handler & ,
const logical_combination_error_handler & ,
size_t count,
size_t  )
private

Definition at line 523 of file json-validator.cpp.

524{
525 return count == 1;
526}

◆ is_validate_complete() [3/8]

template<enum logical_combination_types combine_logic>
bool anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::is_validate_complete ( const json & ,
const json::json_pointer & ,
error_handler & ,
const logical_combination_error_handler & ,
size_t ,
size_t  )
staticprivate

Referenced by validate().

Here is the caller graph for this function:

◆ is_validate_complete() [4/8]

template<enum logical_combination_types combine_logic>
bool anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::is_validate_complete ( const json & ,
const json::json_pointer & ,
error_handler & ,
const logical_combination_error_handler & ,
size_t ,
size_t  )
staticprivate

◆ is_validate_complete() [5/8]

bool anonymous_namespace{json-validator.cpp}::logical_combination< allOf >::is_validate_complete ( const json & ,
const json::json_pointer & ,
error_handler & e,
const logical_combination_error_handler & esub,
size_t ,
size_t current_schema_index )
private

Definition at line 513 of file json-validator.cpp.

514{
515 if (esub) {
516 e.error(esub.error_entry_list_.front().ptr_, esub.error_entry_list_.front().instance_, "at least one subschema has failed, but all of them are required to validate - " + esub.error_entry_list_.front().message_);
517 esub.propagate(e, "[combination: allOf / case#" + std::to_string(current_schema_index) + "] ");
518 }
519 return esub;
520}

References nlohmann::json_schema::error_handler::error(), anonymous_namespace{json-validator.cpp}::logical_combination_error_handler::error_entry_list_, anonymous_namespace{json-validator.cpp}::logical_combination_error_handler::error_entry::instance_, anonymous_namespace{json-validator.cpp}::logical_combination_error_handler::error_entry::message_, anonymous_namespace{json-validator.cpp}::logical_combination_error_handler::propagate(), and anonymous_namespace{json-validator.cpp}::logical_combination_error_handler::error_entry::ptr_.

Here is the call graph for this function:

◆ is_validate_complete() [6/8]

bool anonymous_namespace{json-validator.cpp}::logical_combination< allOf >::is_validate_complete ( const json & ,
const json::json_pointer & ,
error_handler & e,
const logical_combination_error_handler & esub,
size_t ,
size_t current_schema_index )
private

Definition at line 513 of file json-validator.cpp.

514{
515 if (esub) {
516 e.error(esub.error_entry_list_.front().ptr_, esub.error_entry_list_.front().instance_, "at least one subschema has failed, but all of them are required to validate - " + esub.error_entry_list_.front().message_);
517 esub.propagate(e, "[combination: allOf / case#" + std::to_string(current_schema_index) + "] ");
518 }
519 return esub;
520}

◆ is_validate_complete() [7/8]

bool anonymous_namespace{json-validator.cpp}::logical_combination< oneOf >::is_validate_complete ( const json & instance,
const json::json_pointer & ptr,
error_handler & e,
const logical_combination_error_handler & ,
size_t count,
size_t  )
private

Definition at line 529 of file json-validator.cpp.

530{
531 if (count > 1)
532 e.error(ptr, instance, "more than one subschema has succeeded, but exactly one of them is required to validate");
533 return count > 1;
534}

References nlohmann::json_schema::error_handler::error().

Here is the call graph for this function:

◆ is_validate_complete() [8/8]

bool anonymous_namespace{json-validator.cpp}::logical_combination< oneOf >::is_validate_complete ( const json & instance,
const json::json_pointer & ptr,
error_handler & e,
const logical_combination_error_handler & ,
size_t count,
size_t  )
private

Definition at line 529 of file json-validator.cpp.

530{
531 if (count > 1)
532 e.error(ptr, instance, "more than one subschema has succeeded, but exactly one of them is required to validate");
533 return count > 1;
534}

◆ key() [1/3]

const std::string anonymous_namespace{json-validator.cpp}::logical_combination< oneOf >::key
private

Definition at line 510 of file json-validator.cpp.

◆ key() [2/3]

const std::string anonymous_namespace{json-validator.cpp}::logical_combination< anyOf >::key
private

Definition at line 508 of file json-validator.cpp.

◆ key() [3/3]

const std::string anonymous_namespace{json-validator.cpp}::logical_combination< allOf >::key
private

Definition at line 506 of file json-validator.cpp.

◆ validate() [1/2]

template<enum logical_combination_types combine_logic>
void anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::validate ( const json::json_pointer & ptr,
const json & instance,
json_patch & patch,
error_handler & e ) const
inlinefinalprivatevirtual

Implements anonymous_namespace{json-validator.cpp}::schema.

Definition at line 459 of file json-validator.cpp.

460 {
461 size_t count = 0;
463
464 for (std::size_t index = 0; index < subschemata_.size(); ++index) {
467 auto oldPatchSize = patch.get_json().size();
469 if (!esub)
470 count++;
471 else {
472 patch.get_json().get_ref<nlohmann::json::array_t &>().resize(oldPatchSize);
473 esub.propagate(error_summary, "case#" + std::to_string(index) + "] ");
474 }
475
477 return;
478 }
479
480 if (count == 0) {
481 e.error(ptr, instance, "no subschema has succeeded, but one of them is required to validate. Type: " + key + ", number of failed subschemas: " + std::to_string(subschemata_.size()));
482 error_summary.propagate(e, "[combination: " + key + " / ");
483 }
484 }
static bool is_validate_complete(const json &, const json::json_pointer &, error_handler &, const logical_combination_error_handler &, size_t, size_t)
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const final

References nlohmann::json_schema::error_handler::error(), nlohmann::json_patch::get_json(), is_validate_complete(), key, anonymous_namespace{json-validator.cpp}::logical_combination_error_handler::propagate(), subschemata_, and anonymous_namespace{json-validator.cpp}::schema::validate().

Here is the call graph for this function:

◆ validate() [2/2]

template<enum logical_combination_types combine_logic>
void anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::validate ( const json::json_pointer & ptr,
const json & instance,
json_patch & patch,
error_handler & e ) const
inlinefinalprivatevirtual

Implements anonymous_namespace{json-validator.cpp}::schema.

Definition at line 459 of file json-validator.cpp.

460 {
461 size_t count = 0;
463
464 for (std::size_t index = 0; index < subschemata_.size(); ++index) {
467 auto oldPatchSize = patch.get_json().size();
469 if (!esub)
470 count++;
471 else {
472 patch.get_json().get_ref<nlohmann::json::array_t &>().resize(oldPatchSize);
473 esub.propagate(error_summary, "case#" + std::to_string(index) + "] ");
474 }
475
477 return;
478 }
479
480 if (count == 0) {
481 e.error(ptr, instance, "no subschema has succeeded, but one of them is required to validate. Type: " + key + ", number of failed subschemas: " + std::to_string(subschemata_.size()));
482 error_summary.propagate(e, "[combination: " + key + " / ");
483 }
484 }

Member Data Documentation

◆ key

template<enum logical_combination_types combine_logic>
const std::string anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::key
staticprivate

Definition at line 487 of file json-validator.cpp.

Referenced by logical_combination(), and validate().

◆ subschemata_

template<enum logical_combination_types combine_logic>
std::vector< std::shared_ptr< schema > > anonymous_namespace{json-validator.cpp}::logical_combination< combine_logic >::subschemata_
private

Definition at line 457 of file json-validator.cpp.

Referenced by logical_combination(), and validate().


The documentation for this class was generated from the following file: