Skip to content

Commit 2b1a00a

Browse files
committed
Use BytesIO in Python 3
Not yet working...
1 parent 00c85f9 commit 2b1a00a

File tree

1 file changed

+33
-29
lines changed

1 file changed

+33
-29
lines changed

javaobj.py

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@
4949

5050
if sys.version_info[0] < 3:
5151
# Python 2
52-
import StringIO
52+
from StringIO import StringIO
5353

5454
else:
5555
# Python 3+
56-
import io as StringIO
56+
from io import BytesIO as StringIO
5757

5858
# ------------------------------------------------------------------------------
5959

@@ -103,22 +103,22 @@ def loads(string):
103103
:param string: A Java data string
104104
:return: The deserialized object
105105
"""
106-
f = StringIO.StringIO(string)
106+
f = StringIO(string)
107107
marshaller = JavaObjectUnmarshaller(f)
108108
marshaller.add_transformer(DefaultObjectTransformer())
109109
return marshaller.readObject()
110110

111111

112-
def dumps(object):
112+
def dumps(obj):
113113
"""
114114
Serializes Java primitive data and objects unmarshaled by load(s) before
115115
into string.
116116
117-
:param object: A Python primitive object, or one loaded using load(s)
117+
:param obj: A Python primitive object, or one loaded using load(s)
118118
:return: The serialized data as a string
119119
"""
120120
marshaller = JavaObjectMarshaller()
121-
return marshaller.dump(object)
121+
return marshaller.dump(obj)
122122

123123
# ------------------------------------------------------------------------------
124124

@@ -421,6 +421,11 @@ def do_classdesc(self, parent=None, ident=0):
421421
clazz.name = ba
422422
log_debug("Class name: %s" % ba, ident)
423423
(serialVersionUID, newHandle, classDescFlags) = self._readStruct(">LLB")
424+
425+
# FIXME: Fix for 1.6 ?
426+
if serialVersionUID == 0:
427+
serialVersionUID = newHandle
428+
424429
clazz.serialVersionUID = serialVersionUID
425430
clazz.flags = classDescFlags
426431

@@ -822,7 +827,7 @@ def dump(self, obj):
822827
Dumps the given object in the Java serialization format
823828
"""
824829
self.object_obj = obj
825-
self.object_stream = StringIO.StringIO()
830+
self.object_stream = StringIO()
826831
self._writeStreamHeader()
827832
self.writeObject(obj)
828833
return self.object_stream.getvalue()
@@ -873,8 +878,7 @@ def _writeString(self, string):
873878
874879
:param string: String to serialize
875880
"""
876-
len = len(string)
877-
self._writeStruct(">H", 2, (len,))
881+
self._writeStruct(">H", 2, (len(string),))
878882
self.object_stream.write(string)
879883

880884

@@ -914,61 +918,61 @@ class JavaList(list, JavaObject):
914918
class JavaMap(dict, JavaObject):
915919
pass
916920

917-
def transform(self, object):
921+
def transform(self, java_object):
918922
"""
919923
Transforms a deserialized Java object into a Python object
920924
921-
:param object: A JavaObject instance
925+
:param java_object: A JavaObject instance
922926
:return: The Python form of the object, or the original JavaObject
923927
"""
924-
# Get the Java object class name
925-
classname = object.get_class().name
928+
# Get the Java java_object class name
929+
classname = java_object.get_class().name
926930

927931
if classname == "java.util.ArrayList":
928932
# @serialData The length of the array backing the <tt>ArrayList</tt>
929933
# instance is emitted (int), followed by all of its
930934
# elements (each an <tt>Object</tt>) in the proper order
931935
log_debug("---")
932936
log_debug("java.util.ArrayList")
933-
log_debug(object.annotations)
937+
log_debug(java_object.annotations)
934938
log_debug("---")
935939

936940
new_object = self.JavaList()
937-
object.copy(new_object)
938-
new_object.extend(object.annotations[1:])
941+
java_object.copy(new_object)
942+
new_object.extend(java_object.annotations[1:])
939943

940-
log_debug(">>> object: {0}".format(new_object))
944+
log_debug(">>> java_object: {0}".format(new_object))
941945
return new_object
942946

943947
elif classname == "java.util.LinkedList":
944948
log_debug("---")
945949
log_debug("java.util.LinkedList")
946-
log_debug(object.annotations)
950+
log_debug(java_object.annotations)
947951
log_debug("---")
948952

949953
new_object = self.JavaList()
950-
object.copy(new_object)
951-
new_object.extend(object.annotations[1:])
954+
java_object.copy(new_object)
955+
new_object.extend(java_object.annotations[1:])
952956

953-
log_debug(">>> object: {0}".format(new_object))
957+
log_debug(">>> java_object: {0}".format(new_object))
954958
return new_object
955959

956-
elif object.get_class().name == "java.util.HashMap":
960+
elif java_object.get_class().name == "java.util.HashMap":
957961
log_debug("---")
958962
log_debug("java.util.HashMap")
959-
log_debug(object.annotations)
963+
log_debug(java_object.annotations)
960964
log_debug("---")
961965

962966
new_object = self.JavaMap()
963-
object.copy(new_object)
967+
java_object.copy(new_object)
964968

965-
for i in range((len(object.annotations) - 1) / 2):
966-
new_object[object.annotations[i * 2 + 1]] = \
967-
object.annotations[i * 2 + 2]
969+
for i in range((len(java_object.annotations) - 1) / 2):
970+
new_object[java_object.annotations[i * 2 + 1]] = \
971+
java_object.annotations[i * 2 + 2]
968972

969-
log_debug(">>> object: {0}".format(new_object))
973+
log_debug(">>> java_object: {0}".format(new_object))
970974
return new_object
971975

972976
else:
973977
# Return the JavaObject by default
974-
return object
978+
return java_object

0 commit comments

Comments
 (0)