From 46de7e05d13ecd956a3344f292c8e7f7314ea5c6 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Mon, 29 Aug 2016 17:03:19 +0200 Subject: [PATCH] BinaryStruct now checks super class fields also --- src/zutil/parser/binary/BinaryFieldData.java | 12 +++++++----- src/zutil/parser/json/JSONObjectOutputStream.java | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/zutil/parser/binary/BinaryFieldData.java b/src/zutil/parser/binary/BinaryFieldData.java index dce0693..dab9ea9 100755 --- a/src/zutil/parser/binary/BinaryFieldData.java +++ b/src/zutil/parser/binary/BinaryFieldData.java @@ -32,12 +32,14 @@ public class BinaryFieldData { if (!cache.containsKey(clazz)) { try { ArrayList list = new ArrayList<>(); - for (Field field : clazz.getDeclaredFields()) { - if (field.isAnnotationPresent(BinaryField.class) || - field.isAnnotationPresent(CustomBinaryField.class) || - field.isAnnotationPresent(VariableLengthBinaryField.class)) + for(Class cc = clazz; cc != Object.class ;cc = cc.getSuperclass()) { // iterate through all super classes + for (Field field : cc.getDeclaredFields()) { + if (field.isAnnotationPresent(BinaryField.class) || + field.isAnnotationPresent(CustomBinaryField.class) || + field.isAnnotationPresent(VariableLengthBinaryField.class)) - list.add(new BinaryFieldData(field)); + list.add(new BinaryFieldData(field)); + } } Collections.sort(list, new Comparator(){ @Override diff --git a/src/zutil/parser/json/JSONObjectOutputStream.java b/src/zutil/parser/json/JSONObjectOutputStream.java index 5033a9f..8f70972 100755 --- a/src/zutil/parser/json/JSONObjectOutputStream.java +++ b/src/zutil/parser/json/JSONObjectOutputStream.java @@ -137,8 +137,8 @@ public class JSONObjectOutputStream extends OutputStream implements ObjectOutput } // Add all the fields to the DataNode for(Field field : obj.getClass().getDeclaredFields()){ - if((field.getModifiers() & Modifier.STATIC) == 0 && - (field.getModifiers() & Modifier.TRANSIENT) == 0){ + if( ! Modifier.isStatic(field.getModifiers()) && + ! Modifier.isTransient(field.getModifiers())){ field.setAccessible(true); Object fieldObj = field.get(obj);