@@ -339,6 +339,17 @@ def __init__(self, classdesc=None):
339339 JavaObject .__init__ (self )
340340 self .classdesc = classdesc
341341
342+
343+ class JavaByteArray (bytearray , JavaObject ):
344+ """
345+ Represents the special case of Java Array which contains bytes
346+ """
347+
348+ def __init__ (self , data , classdesc = None ):
349+ bytearray .__init__ (self , data )
350+ JavaObject .__init__ (self )
351+ self .classdesc = classdesc
352+
342353# ------------------------------------------------------------------------------
343354
344355
@@ -903,6 +914,8 @@ def do_array(self, parent=None, ident=0):
903914 _ , res = self ._read_and_exec_opcode (ident = ident + 1 )
904915 log_debug ("Object value: {0}" .format (res ), ident )
905916 array .append (res )
917+ elif type_char == self .TYPE_BYTE :
918+ array = JavaByteArray (self .object_stream .read (size ), classdesc )
906919 else :
907920 for _ in range (size ):
908921 res = self ._read_value (type_char , ident )
@@ -1465,7 +1478,8 @@ def _write_value(self, field_type, value):
14651478 self .write_null ()
14661479 elif isinstance (value , JavaEnum ):
14671480 self .write_enum (value )
1468- elif isinstance (value , JavaArray ):
1481+ elif isinstance (value , JavaArray ) \
1482+ or isinstance (value , JavaByteArray ):
14691483 self .write_array (value )
14701484 elif isinstance (value , JavaObject ):
14711485 self .write_object (value )
0 commit comments