Commit 7173b095 authored by Renato Figueiro Maia's avatar Renato Figueiro Maia

Merge from branch 02_00_01 (r161204)

git-svn-id: https://subversion.tecgraf.puc-rio.br/engdist/openbus/sdk/lua/trunk@161205 ae0415b3-e90b-0410-900d-d0be9363c56b
parents cde13cce f2d655c2
......@@ -25,7 +25,7 @@ OpenBusContext:setDefaultConnection(conn)
-- read shared authentication data
log:TEST("retrieve shared authentication data")
local secret = OpenBusContext:decodeSharedAuth(waitfile(sharedauthfile))
local secret = OpenBusContext:decodeSharedAuth(waitfile(sharedauthfile, 100, .1))
-- login to the bus
conn:loginBySharedAuth(secret)
......
......@@ -14,7 +14,7 @@ msg.GotInvalidCaller = "chamando opera
msg.ConfigFileNotFound = "o arquivo de configurao $path no foi encontrado"
msg.BadParamInConfigFile = "o parmetro $configname definido no arquivo $path invlido"
msg.BadParamTypeInConfigFile = "o parmetro $configname foi definido no arquivo $path com um valor do tipo $actual, mas deveria ser do tipo $expected"
msg.BadParamListInConfigFile = "o parmetro $configname definido no arquivo $path tem um valor invlido na posio $index"
msg.BadParamListInConfigFile = "o parmetro $configname definido no arquivo $path tem um valor invlido na posio $index ($error)"
msg.BadLogFile = "no foi possvel abrir o arquivo de log $path: $errmsg"
--msg.UnableToReadFileContents = "$path $errmsg"
--msg.UnableToReadPublicKey = "$path $errmsg"
......
......@@ -200,6 +200,31 @@ module.ConfigArgs = class({
_norepeat = "parmetro '%s' s pode ser definido uma vez",
}, Arguments)
local function processlist(path, name, list, func, ...)
for index, value in ipairs(list) do
local itemname = name.."["..index.."]"
local kind = type(value)
if kind == "string" then
local errmsg = func(append(tostring(value), ...))
if errmsg ~= nil then
log:misconfig(msg.BadParamListInConfigFile:tag{
configname = itemname,
index = index,
path = path,
error = errmsg,
})
end
else
log:misconfig(msg.BadParamTypeInConfigFile:tag{
configname = itemname,
path = path,
expected = "string",
actual = kind,
})
end
end
end
function module.ConfigArgs:configs(_, path)
local sandbox = setmetatable({}, SafeEnv)
local result, errmsg = loadfile(path, "t", sandbox)
......@@ -214,28 +239,42 @@ function module.ConfigArgs:configs(_, path)
path = path,
})
self[name] = value
elseif kind ~= type(value) then
log:misconfig(msg.BadParamTypeInConfigFile:tag{
configname = name,
path = path,
expected = kind,
actual = type(value),
})
elseif kind == "table" then
local list = self[name]
local add = list.add or defaultAdd
for index, value in ipairs(value) do
local errmsg = add(list, tostring(value))
if errmsg ~= nil then
log:misconfig(msg.BadParamListInConfigFile:tag{
else
local valkind = type(value)
if kind == "function" then
if valkind == "string" then
local errmsg = self[name](self, name, value)
if errmsg ~= nil then
log:misconfig(msg.BadParamInConfigFile:tag{
configname = name,
path = path,
error = errmsg,
})
end
elseif valkind == "table" then
processlist(path, name, value, self[name], self, name)
else
log:misconfig(msg.BadParamTypeInConfigFile:tag{
configname = name,
index = index,
path = path,
expected = "string|table",
actual = valkind,
})
end
elseif kind ~= valkind then
log:misconfig(msg.BadParamTypeInConfigFile:tag{
configname = name,
path = path,
expected = kind,
actual = valkind,
})
elseif kind == "table" then
local list = self[name]
local add = list.add or defaultAdd
processlist(path, name, value, add, list)
else
self[name] = value
end
else
self[name] = value
end
end
log:config(msg.ConfigFileLoaded:tag{path=path})
......@@ -249,4 +288,4 @@ end
return module
\ No newline at end of file
return module
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment