Merge pull request #68 from realm/tg/schema-validation-error

Split SchemaValidationException into SchemaValidationException and SchemaMismatchException
This commit is contained in:
Thomas Goyne 2016-05-11 09:58:06 -07:00
commit 8d115ad42d
2 changed files with 19 additions and 2 deletions

View File

@ -171,7 +171,7 @@ void ObjectStore::verify_schema(Schema const& actual_schema, Schema& target_sche
errors.insert(errors.end(), more_errors.begin(), more_errors.end());
}
if (errors.size()) {
throw SchemaValidationException(errors);
throw SchemaMismatchException(errors);
}
}
@ -523,6 +523,15 @@ DuplicatePrimaryKeyValueException::DuplicatePrimaryKeyValueException(std::string
SchemaValidationException::SchemaValidationException(std::vector<ObjectSchemaValidationException> const& errors) :
m_validation_errors(errors)
{
m_what = "Schema validation failed due to the following errors: ";
for (auto const& error : errors) {
m_what += std::string("\n- ") + error.what();
}
}
SchemaMismatchException::SchemaMismatchException(std::vector<ObjectSchemaValidationException> const& errors) :
m_validation_errors(errors)
{
m_what = "Migration is required due to the following errors: ";
for (auto const& error : errors) {

View File

@ -160,6 +160,14 @@ namespace realm {
std::vector<ObjectSchemaValidationException> m_validation_errors;
};
class SchemaMismatchException : public ObjectStoreException {
public:
SchemaMismatchException(std::vector<ObjectSchemaValidationException> const& errors);
std::vector<ObjectSchemaValidationException> const& validation_errors() const { return m_validation_errors; }
private:
std::vector<ObjectSchemaValidationException> m_validation_errors;
};
class ObjectSchemaValidationException : public ObjectStoreException {
public:
ObjectSchemaValidationException(std::string const& object_type) : m_object_type(object_type) {}