@@ -304,7 +304,7 @@ def __eq__(self, other):
304
304
return False
305
305
306
306
for name in self .classdesc .fields_names :
307
- if not ( getattr (self , name ) == getattr (other , name ) ):
307
+ if not getattr (self , name ) == getattr (other , name ):
308
308
return False
309
309
return True
310
310
@@ -427,6 +427,9 @@ class JavaObjectConstants(object):
427
427
428
428
429
429
class OpCodeDebug (object ):
430
+ """
431
+ OP Codes definition and utility methods
432
+ """
430
433
# Type codes
431
434
OP_CODE = dict ((getattr (JavaObjectConstants , key ), key )
432
435
for key in dir (JavaObjectConstants )
@@ -442,22 +445,38 @@ class OpCodeDebug(object):
442
445
443
446
@staticmethod
444
447
def op_id (op_id ):
448
+ """
449
+ Returns the name of the given OP Code
450
+ :param op_id: OP Code
451
+ :return: Name of the OP Code
452
+ """
445
453
return OpCodeDebug .OP_CODE .get (
446
454
op_id , "<unknown OP:{0}>" .format (op_id ))
447
455
448
456
@staticmethod
449
457
def type_code (type_id ):
458
+ """
459
+ Returns the name of the given Type Code
460
+ :param type_id: Type code
461
+ :return: Name of the type code
462
+ """
450
463
return OpCodeDebug .TYPE .get (
451
464
type_id , "<unknown Type:{0}>" .format (type_id ))
452
465
453
466
@staticmethod
454
467
def flags (flags ):
468
+ """
469
+ Returns the names of the class description flags found in the given
470
+ integer
471
+
472
+ :param flags: A class description flag entry
473
+ :return: The flags names as a single string
474
+ """
455
475
names = sorted (
456
476
descr for key , descr in OpCodeDebug .STREAM_CONSTANT .items ()
457
477
if key & flags )
458
478
return ', ' .join (names )
459
479
460
-
461
480
# ------------------------------------------------------------------------------
462
481
463
482
@@ -1545,46 +1564,47 @@ class DefaultObjectTransformer(object):
1545
1564
Converts JavaObject objects to Python types (maps, lists, ...)
1546
1565
"""
1547
1566
class JavaList (list , JavaObject ):
1567
+ """
1568
+ Python-Java list bridge type
1569
+ """
1548
1570
def __init__ (self , * args , ** kwargs ):
1549
1571
list .__init__ (self , * args , ** kwargs )
1550
1572
JavaObject .__init__ (self )
1551
1573
1552
1574
class JavaMap (dict , JavaObject ):
1575
+ """
1576
+ Python-Java dictionary/map bridge type
1577
+ """
1553
1578
def __init__ (self , * args , ** kwargs ):
1554
1579
dict .__init__ (self , * args , ** kwargs )
1555
1580
JavaObject .__init__ (self )
1556
1581
1582
+ TYPE_MAPPER = {
1583
+ "java.util.ArrayList" : JavaList ,
1584
+ "java.util.LinkedList" : JavaList ,
1585
+ "java.util.HashMap" : JavaMap ,
1586
+ "java.util.LinkedHashMap" : JavaMap ,
1587
+ "java.util.TreeMap" : JavaMap ,
1588
+ }
1589
+
1557
1590
def create (self , classdesc ):
1558
1591
"""
1559
1592
Transforms a deserialized Java object into a Python object
1560
1593
1561
- :param java_object: A JavaObject instance
1594
+ :param classdesc: The description of a Java class
1562
1595
:return: The Python form of the object, or the original JavaObject
1563
1596
"""
1564
-
1565
- if classdesc . name in ( "java.util.ArrayList" , "java.util.LinkedList" ):
1566
- # @serialData The length of the array backing the
1567
- # <tt>ArrayList</tt> instance is emitted (int),
1568
- # followed by all of its elements
1569
- # (each an <tt>Object</tt>) in the proper order
1597
+ try :
1598
+ mapped_type = self . TYPE_MAPPER [ classdesc . name ]
1599
+ except KeyError :
1600
+ # Return a JavaObject by default
1601
+ return JavaObject ()
1602
+ else :
1570
1603
log_debug ("---" )
1571
1604
log_debug (classdesc .name )
1572
1605
log_debug ("---" )
1573
1606
1574
- java_object = self .JavaList ()
1575
-
1576
- log_debug (">>> java_object: {0}" .format (java_object ))
1577
- return java_object
1578
-
1579
- if classdesc .name == "java.util.HashMap" :
1580
- log_debug ("---" )
1581
- log_debug ("java.util.HashMap" )
1582
- log_debug ("---" )
1583
-
1584
- java_object = self .JavaMap ()
1607
+ java_object = mapped_type ()
1585
1608
1586
1609
log_debug (">>> java_object: {0}" .format (java_object ))
1587
1610
return java_object
1588
-
1589
- # Return a JavaObject by default
1590
- return JavaObject ()
0 commit comments