Merge "Issue #1428: Optimize deserialize to directly lookup set method" into development
Former-commit-id:1cfc4f1566
[formerlye97ab89d1d
] [formerly8d28163deb
] [formerly8d28163deb
[formerly76e643e876
]] [formerly1cfc4f1566
[formerlye97ab89d1d
] [formerly8d28163deb
] [formerly8d28163deb
[formerly76e643e876
]] [formerlyb0d47ed420
[formerly8d28163deb
[formerly76e643e876
] [formerlyb0d47ed420
[formerly a5d9b113bbf644a613015fe593f4b9d4070ab167]]]]] Former-commit-id:b0d47ed420
Former-commit-id:96d22f6587
[formerly2fd8ce1e29
] [formerly9007b1c424
] [formerly 780bc7a713cf82d96c251a1d6765f2f670349faf [formerly 6df0cbdfa214b59e1ee4d4dd2cd80597fae9d106] [formerly9007b1c424
[formerly0295be792f
]]] Former-commit-id: d4abf0a0c2264dbe29b46a095a296c3b9db9feb1 [formerly 556bd041eb68e0a0f7e84dd42c40e3b20d512ba0] [formerlya309307d51
[formerlye696e879e0
]] Former-commit-id:a309307d51
Former-commit-id:4bfa33055f
This commit is contained in:
commit
2a9e43ec1f
1 changed files with 12 additions and 9 deletions
|
@ -187,13 +187,16 @@ class ThriftSerializationContext:
|
|||
# result = adapters.fieldAdapterRegistry[structname][fieldName].deserialize(self)
|
||||
# else:
|
||||
result = self._deserializeType(fieldType)
|
||||
members = inspect.getmembers(obj, inspect.ismethod)
|
||||
lookingFor = "set" + fieldName[0].upper() + fieldName[1:]
|
||||
for f in members:
|
||||
if f[0] == lookingFor:
|
||||
f[1](result)
|
||||
break
|
||||
else:
|
||||
|
||||
try:
|
||||
setMethod = getattr(obj, lookingFor)
|
||||
|
||||
if callable(setMethod):
|
||||
setMethod(result)
|
||||
else:
|
||||
raise dynamicserialize.SerializationException("Couldn't find setter method " + lookingFor)
|
||||
except:
|
||||
raise dynamicserialize.SerializationException("Couldn't find setter method " + lookingFor)
|
||||
|
||||
self.protocol.readFieldEnd()
|
||||
|
@ -206,7 +209,7 @@ class ThriftSerializationContext:
|
|||
if size:
|
||||
if listType not in primitiveSupport:
|
||||
m = self.typeDeserializationMethod[listType]
|
||||
result = [m() for n in range(size)]
|
||||
result = [m() for n in xrange(size)]
|
||||
else:
|
||||
result = self.listDeserializationMethod[listType](size)
|
||||
self.protocol.readListEnd()
|
||||
|
@ -215,7 +218,7 @@ class ThriftSerializationContext:
|
|||
def _deserializeMap(self):
|
||||
keyType, valueType, size = self.protocol.readMapBegin()
|
||||
result = {}
|
||||
for n in range(size):
|
||||
for n in xrange(size):
|
||||
# can't go off the type, due to java generics limitations dynamic serialize is
|
||||
# serializing keys and values as void
|
||||
key = self.typeDeserializationMethod[TType.STRUCT]()
|
||||
|
@ -227,7 +230,7 @@ class ThriftSerializationContext:
|
|||
def _deserializeSet(self):
|
||||
setType, setSize = self.protocol.readSetBegin()
|
||||
result = set([])
|
||||
for n in range(setSize):
|
||||
for n in xrange(setSize):
|
||||
result.add(self.typeDeserializationMethod[TType.STRUCT]())
|
||||
self.protocol.readSetEnd()
|
||||
return result
|
||||
|
|
Loading…
Add table
Reference in a new issue