Skip to content

Commit e0de18e

Browse files
committed
Added support for transformers in dumps
Work in progress
1 parent cdba8b9 commit e0de18e

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

javaobj.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,20 @@ def loads(string, *transformers, ignore_remaining_data=False):
184184
ignore_remaining_data=ignore_remaining_data)
185185

186186

187-
def dumps(obj):
187+
def dumps(obj, *transformers):
188188
"""
189189
Serializes Java primitive data and objects unmarshaled by load(s) before
190190
into string.
191191
192192
:param obj: A Python primitive object, or one loaded using load(s)
193+
:param transformers: Custom transformers to use
193194
:return: The serialized data as a string
194195
"""
195196
marshaller = JavaObjectMarshaller()
197+
# Add custom transformers
198+
for transformer in transformers:
199+
marshaller.add_transformer(transformer)
200+
196201
return marshaller.dump(obj)
197202

198203
# ------------------------------------------------------------------------------
@@ -949,6 +954,15 @@ def __init__(self, stream=None):
949954
"""
950955
self.object_stream = stream
951956
self.object_obj = None
957+
self.object_transformers = []
958+
959+
def add_transformer(self, transformer):
960+
"""
961+
Appends an object transformer to the serialization process
962+
963+
:param transformer: An object with a transform(obj) method
964+
"""
965+
self.object_transformers.append(transformer)
952966

953967
def dump(self, obj):
954968
"""
@@ -1028,6 +1042,13 @@ def write_object(self, obj, parent=None):
10281042
:param obj: Not yet used
10291043
:param parent: Not yet used
10301044
"""
1045+
# Transform object
1046+
for transformer in self.object_transformers:
1047+
tmp_object = transformer.transform(obj)
1048+
if tmp_object is not obj:
1049+
obj = tmp_object
1050+
break
1051+
10311052
self._writeStruct(">B", 1, (self.TC_OBJECT,))
10321053
self._writeStruct(">B", 1, (self.TC_CLASSDESC,))
10331054

0 commit comments

Comments
 (0)