Skip to content

Commit 60ed5f6

Browse files
committed
Store transformed objects with add_reference
The test_collections method now passes
1 parent 1c6796f commit 60ed5f6

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

javaobj.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -755,15 +755,16 @@ def do_object(self, parent=None, ident=0):
755755
self.TC_NULL, self.TC_REFERENCE))
756756
# self.TC_REFERENCE hasn't shown in spec, but actually is here
757757

758-
self._add_reference(java_object, ident)
759-
760758
# classdata[]
761759

762760
# Store classdesc of this object
763761
java_object.classdesc = classdesc
764762

765763
if classdesc.flags & self.SC_EXTERNALIZABLE \
766764
and not classdesc.flags & self.SC_BLOCK_DATA:
765+
# Store the reference anyway (to avoid a delta in indices)
766+
self._add_reference(java_object, ident)
767+
767768
# TODO:
768769
raise NotImplementedError("externalContents isn't implemented yet")
769770

@@ -825,6 +826,9 @@ def do_object(self, parent=None, ident=0):
825826
java_object = tmp_object
826827
break
827828

829+
# Store the reference
830+
self._add_reference(java_object, ident)
831+
828832
log_debug(">>> java_object: {0}".format(java_object), ident)
829833
return java_object
830834

@@ -903,7 +907,9 @@ def do_reference(self, parent=None, ident=0):
903907
"""
904908
(handle,) = self._readStruct(">L")
905909
log_debug("## Reference handle: 0x{0:X}".format(handle), ident)
906-
return self.references[handle - self.BASE_REFERENCE_IDX]
910+
ref = self.references[handle - self.BASE_REFERENCE_IDX]
911+
log_debug("Reference: %s" % ref)
912+
return ref
907913

908914
@staticmethod
909915
def do_null(parent=None, ident=0):

tests/tests.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -265,17 +265,17 @@ def test_class(self):
265265
# self.assertEqual(pobj.value, 19)
266266
# self.assertFalse(pobj.next)
267267
#
268-
# def test_collections(self):
269-
# jobj = self.read_file("objCollections.ser")
270-
# pobj = javaobj.loads(jobj)
271-
# print pobj
272-
#
273-
# print "arrayList:", pobj.arrayList
274-
# self.assertTrue(isinstance(pobj.arrayList, list))
275-
# print "hashMap:", pobj.hashMap
276-
# self.assertTrue(isinstance(pobj.hashMap, dict))
277-
# print "linkedList:", pobj.linkedList
278-
# self.assertTrue(isinstance(pobj.linkedList, list)) # Fails
268+
def test_collections(self):
269+
jobj = self.read_file("objCollections.ser")
270+
pobj = javaobj.loads(jobj)
271+
_logger.debug(pobj)
272+
273+
_logger.debug("arrayList: %s", pobj.arrayList)
274+
self.assertTrue(isinstance(pobj.arrayList, list))
275+
_logger.debug("hashMap: %s", pobj.hashMap)
276+
self.assertTrue(isinstance(pobj.hashMap, dict))
277+
_logger.debug("linkedList: %s", pobj.linkedList)
278+
self.assertTrue(isinstance(pobj.linkedList, list))
279279

280280
# ------------------------------------------------------------------------------
281281

0 commit comments

Comments
 (0)