diff options
Diffstat (limited to 'acf/transaction/init.lua')
-rw-r--r-- | acf/transaction/init.lua | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/acf/transaction/init.lua b/acf/transaction/init.lua index 7f2f6b9..99b8b9d 100644 --- a/acf/transaction/init.lua +++ b/acf/transaction/init.lua @@ -1,10 +1,11 @@ --[[ -Copyright (c) 2012 Kaarle Ritvanen +Copyright (c) 2012-2013 Kaarle Ritvanen See LICENSE file for license details --]] module(..., package.seeall) +local ErrorDict = require('acf.error').ErrorDict local RootModel = require('acf.model').RootModel local object = require('acf.object') local super = object.super @@ -121,7 +122,9 @@ function Transaction:search(path) return self.root:search(pth.split(path)) end function Transaction:commit() self:check() - for _, func in pairs(self.validate) do func() end + local errors = ErrorDict() + for path, func in pairs(self.validate) do errors:collect(func) end + errors:raise() local mods = {} local handled = {} |