BinaryStruct now checks super class fields also

This commit is contained in:
Ziver Koc 2016-08-29 17:03:19 +02:00
parent 7176bddc15
commit 46de7e05d1
2 changed files with 9 additions and 7 deletions

View file

@ -32,12 +32,14 @@ public class BinaryFieldData {
if (!cache.containsKey(clazz)) { if (!cache.containsKey(clazz)) {
try { try {
ArrayList<BinaryFieldData> list = new ArrayList<>(); ArrayList<BinaryFieldData> list = new ArrayList<>();
for (Field field : clazz.getDeclaredFields()) { for(Class<?> cc = clazz; cc != Object.class ;cc = cc.getSuperclass()) { // iterate through all super classes
if (field.isAnnotationPresent(BinaryField.class) || for (Field field : cc.getDeclaredFields()) {
field.isAnnotationPresent(CustomBinaryField.class) || if (field.isAnnotationPresent(BinaryField.class) ||
field.isAnnotationPresent(VariableLengthBinaryField.class)) field.isAnnotationPresent(CustomBinaryField.class) ||
field.isAnnotationPresent(VariableLengthBinaryField.class))
list.add(new BinaryFieldData(field)); list.add(new BinaryFieldData(field));
}
} }
Collections.sort(list, new Comparator<BinaryFieldData>(){ Collections.sort(list, new Comparator<BinaryFieldData>(){
@Override @Override

View file

@ -137,8 +137,8 @@ public class JSONObjectOutputStream extends OutputStream implements ObjectOutput
} }
// Add all the fields to the DataNode // Add all the fields to the DataNode
for(Field field : obj.getClass().getDeclaredFields()){ for(Field field : obj.getClass().getDeclaredFields()){
if((field.getModifiers() & Modifier.STATIC) == 0 && if( ! Modifier.isStatic(field.getModifiers()) &&
(field.getModifiers() & Modifier.TRANSIENT) == 0){ ! Modifier.isTransient(field.getModifiers())){
field.setAccessible(true); field.setAccessible(true);
Object fieldObj = field.get(obj); Object fieldObj = field.get(obj);