From 6a7c4d87c47a50566fbdddbd2e204e678c824c99 Mon Sep 17 00:00:00 2001 From: Chris van Marle Date: Mon, 22 Apr 2019 15:42:19 +0200 Subject: [PATCH 1/3] Support Integer and Boolean class types --- javaobj/core.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/javaobj/core.py b/javaobj/core.py index d2008c0..05fdc52 100644 --- a/javaobj/core.py +++ b/javaobj/core.py @@ -1709,6 +1709,35 @@ def __extra_loading__(self, unmarshaller, ident=0): # Lists have their content in there annotations self.extend(self.annotations[1:]) + class JavaBool(JavaObject): + def __init__(self, unmarshaller): + JavaObject.__init__(self) + self.value = None + pass + + def __str__(self): + return self.value.__str__() + + def __repr__(self): + return self.value.__repr__() + + def __bool__(self): + return self.value + + class JavaInt(JavaObject): + def __init__(self, unmarshaller): + self.value = None + JavaObject.__init__(self) + + def __str__(self): + return self.value.__str__() + + def __repr__(self): + return self.value.__repr__() + + def __int__(self): + return self.value + class JavaMap(dict, JavaObject): """ Python-Java dictionary/map bridge type @@ -1955,6 +1984,8 @@ def do_period(self, unmarshaller, data): "java.util.HashSet": JavaSet, "java.util.TreeSet": JavaTreeSet, "java.time.Ser": JavaTime, + "java.lang.Boolean": JavaBool, + "java.lang.Integer": JavaInt, } def create(self, classdesc, unmarshaller=None): From ff14d8ffd3e8e9b6a256d4beaafbd7da8a405e65 Mon Sep 17 00:00:00 2001 From: Chris van Marle Date: Mon, 22 Apr 2019 15:42:27 +0200 Subject: [PATCH 2/3] Add support for java.lang.Long --- javaobj/core.py | 1 + 1 file changed, 1 insertion(+) diff --git a/javaobj/core.py b/javaobj/core.py index 05fdc52..9394983 100644 --- a/javaobj/core.py +++ b/javaobj/core.py @@ -1986,6 +1986,7 @@ def do_period(self, unmarshaller, data): "java.time.Ser": JavaTime, "java.lang.Boolean": JavaBool, "java.lang.Integer": JavaInt, + "java.lang.Long": JavaInt, } def create(self, classdesc, unmarshaller=None): From a2c0172858d465dbbe920c656252c02417d6bed1 Mon Sep 17 00:00:00 2001 From: Chris van Marle Date: Mon, 22 Apr 2019 17:46:50 +0200 Subject: [PATCH 3/3] Read annotations if superclass dictates that --- javaobj/core.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/javaobj/core.py b/javaobj/core.py index 9394983..59b9960 100644 --- a/javaobj/core.py +++ b/javaobj/core.py @@ -906,6 +906,9 @@ def do_object(self, parent=None, ident=0): and classdesc.flags & self.SC_WRITE_METHOD or classdesc.flags & self.SC_EXTERNALIZABLE and classdesc.flags & self.SC_BLOCK_DATA + or classdesc.superclass is not None + and classdesc.superclass.flags & self.SC_SERIALIZABLE + and classdesc.superclass.flags & self.SC_WRITE_METHOD ): # objectAnnotation log_debug(