THRIFT-4386 Add Lua 5.3/5.4 support
Clint: lua
Patch: Thomas Bruggink
This closes #3012
diff --git a/lib/lua/TJsonProtocol.lua b/lib/lua/TJsonProtocol.lua
index db08eec..cec8e26 100644
--- a/lib/lua/TJsonProtocol.lua
+++ b/lib/lua/TJsonProtocol.lua
@@ -18,8 +18,9 @@
--
require 'TProtocol'
-require 'libluabpack'
-require 'libluabitwise'
+local libluabpack = require 'libluabpack'
+local libluabitwise = require 'libluabitwise'
+local liblualongnumber = require 'liblualongnumber'
TJSONProtocol = __TObject.new(TProtocolBase, {
__type = 'TJSONProtocol',
@@ -42,6 +43,7 @@
TTypeToString[TType.LIST] = "lst"
TTypeToString[TType.SET] = "set"
TTypeToString[TType.MAP] = "map"
+TTypeToString[TType.UUID] = "uid"
StringToTType = {
tf = TType.BOOL,
@@ -54,7 +56,8 @@
rec = TType.STRUCT,
map = TType.MAP,
set = TType.SET,
- lst = TType.LIST
+ lst = TType.LIST,
+ uid = TType.UUID,
}
JSONNode = {
@@ -402,13 +405,17 @@
end
function TJSONProtocol:writeDouble(dub)
- self:writeJSONDouble(string.format("%.16f", dub))
+ self:writeJSONDouble(string.format("%.20f", dub))
end
function TJSONProtocol:writeString(str)
self:writeJSONString(str)
end
+function TJSONProtocol:writeUuid(uuid)
+ self:writeJSONString(uuid:getString())
+end
+
function TJSONProtocol:writeBinary(str)
-- Should be utf-8
self:writeJSONBase64(str)
@@ -706,6 +713,10 @@
return self:readJSONString()
end
+function TJSONProtocol:readUuid()
+ return TUUIDfromString(self:readJSONString())
+end
+
function TJSONProtocol:readBinary()
return self:readJSONBase64()
end