Open Lighting Architecture  Latest Git
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Classes | Public Member Functions | List of all members
ola::web::ObjectValidator Class Reference

Detailed Description

The validator for JsonObject.

Note
This does not implement patternProperties. This is done because we don't want to pull in a regex library just yet. Maybe some point in the future we can use re2.
Inheritance diagram for ola::web::ObjectValidator:
Inheritance graph
[legend]
Collaboration diagram for ola::web::ObjectValidator:
Collaboration graph
[legend]

Classes

struct  Options
 

Public Member Functions

 ObjectValidator (const Options &options)
 
void AddValidator (const std::string &property, ValidatorInterface *validator)
 Add a validator for a property. More...
 
void SetAdditionalValidator (ValidatorInterface *validator)
 Add the validator for additionalProperties. More...
 
void AddSchemaDependency (const std::string &property, ValidatorInterface *validator)
 Add a schema dependency. More...
 
void AddPropertyDependency (const std::string &property, const std::set< std::string > &properties)
 Add a property dependency. More...
 
void Visit (const JsonObject &obj)
 
void VisitProperty (const std::string &property, const JsonValue &value)
 Visit the value at the given property.
 
- Public Member Functions inherited from ola::web::BaseValidator
virtual bool IsValid () const
 Check if the value was valid according to this validator.
 
virtual void Visit (const JsonString &)
 
virtual void Visit (const JsonBool &)
 
virtual void Visit (const JsonNull &)
 
virtual void Visit (const JsonRawValue &)
 
virtual void Visit (const JsonArray &)
 
virtual void Visit (const JsonUInt &)
 
virtual void Visit (const JsonUInt64 &)
 
virtual void Visit (const JsonInt &)
 
virtual void Visit (const JsonInt64 &)
 
virtual void Visit (const JsonDouble &)
 
virtual JsonObjectGetSchema () const
 Returns the Schema as a JsonObject. More...
 
void SetSchema (const std::string &schema)
 Set the schema.
 
void SetId (const std::string &id)
 Set the id.
 
void SetTitle (const std::string &title)
 Set the title.
 
void SetDescription (const std::string &title)
 Set the description.
 
void SetDefaultValue (const JsonValue *value)
 Set the default value for this validator. More...
 
const JsonValueGetDefaultValue () const
 Return the default value. More...
 
void AddEnumValue (const JsonValue *value)
 Add a enum value to the list of allowed values. More...
 

Additional Inherited Members

- Public Types inherited from ola::web::ValidatorInterface
typedef std::vector
< ValidatorInterface * > 
ValidatorList
 a list of Validators.
 
- Protected Member Functions inherited from ola::web::BaseValidator
 BaseValidator (JsonType type)
 
bool CheckEnums (const JsonValue &value)
 
- Protected Attributes inherited from ola::web::BaseValidator
bool m_is_valid
 
JsonType m_type
 
std::string m_schema
 
std::string m_id
 
std::string m_title
 
std::string m_description
 
std::auto_ptr< const JsonValuem_default_value
 
std::vector< const JsonValue * > m_enums
 

Member Function Documentation

void ola::web::ObjectValidator::AddPropertyDependency ( const std::string &  property,
const std::set< std::string > &  properties 
)

Add a property dependency.

Parameters
propertythe property name
propertiesthe names of the properties that must exist in the object if the named property is present.

As per Section 5.4.5.2.2, if the named property is present in the object, the object must also contain all of the properties in the set.

void ola::web::ObjectValidator::AddSchemaDependency ( const std::string &  property,
ValidatorInterface validator 
)

Add a schema dependency.

Parameters
propertythe property name
validatorthe validator to check the object against. Ownership is transferred.

As per Section 5.4.5.2.1, if the named property is present in the object, the object itself will be validated against the supplied schema.

void ola::web::ObjectValidator::AddValidator ( const std::string &  property,
ValidatorInterface validator 
)

Add a validator for a property.

Parameters
propertythe name of the property to use this validator for
validatorthe validator, ownership is transferred.
void ola::web::ObjectValidator::SetAdditionalValidator ( ValidatorInterface validator)

Add the validator for additionalProperties.

Parameters
validatorthe validator, ownership is transferred.

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