private Object getFieldValue(FieldAttributes f, Object obj) {
   try {
     return f.get(obj);
   } catch (IllegalAccessException e) {
     throw new RuntimeException(e);
   }
 }
 public boolean shouldSkipField(FieldAttributes f) {
   Expose annotation = f.getAnnotation(Expose.class);
   if (annotation == null) {
     return true;
   }
   return !annotation.deserialize();
 }
 public boolean shouldSkipField(FieldAttributes f) {
   for (int modifier : modifiers) {
     if (f.hasModifier(modifier)) {
       return true;
     }
   }
   return false;
 }
Esempio n. 4
0
 private void navigateClassFields(Object obj, Class<?> clazz, Visitor visitor) {
   Field[] fields = clazz.getDeclaredFields();
   AccessibleObject.setAccessible(fields, true);
   for (Field f : fields) {
     FieldAttributes fieldAttributes = new FieldAttributes(clazz, f);
     if (exclusionStrategy.shouldSkipField(fieldAttributes)
         || exclusionStrategy.shouldSkipClass(fieldAttributes.getDeclaredClass())) {
       continue; // skip
     }
     TypeInfo fieldTypeInfo = TypeInfoFactory.getTypeInfoForField(f, objTypePair.type);
     Type declaredTypeOfField = fieldTypeInfo.getActualType();
     boolean visitedWithCustomHandler =
         visitor.visitFieldUsingCustomHandler(fieldAttributes, declaredTypeOfField, obj);
     if (!visitedWithCustomHandler) {
       if (fieldTypeInfo.isArray()) {
         visitor.visitArrayField(fieldAttributes, declaredTypeOfField, obj);
       } else {
         visitor.visitObjectField(fieldAttributes, declaredTypeOfField, obj);
       }
     }
   }
 }
 public boolean visitFieldUsingCustomHandler(
     FieldAttributes f, Type declaredTypeOfField, Object parent) {
   try {
     Preconditions.checkState(root.isJsonObject());
     Object obj = f.get(parent);
     if (obj == null) {
       if (serializeNulls) {
         addChildAsElement(f, JsonNull.createJsonNull());
       }
       return true;
     }
     ObjectTypePair objTypePair = new ObjectTypePair(obj, declaredTypeOfField, false);
     JsonElement child = findAndInvokeCustomSerializer(objTypePair);
     if (child != null) {
       addChildAsElement(f, child);
       return true;
     }
     return false;
   } catch (IllegalAccessException e) {
     throw new RuntimeException();
   } catch (CircularReferenceException e) {
     throw e.createDetailedException(f);
   }
 }
 @SuppressWarnings("deprecation")
 public String translateName(FieldAttributes f) {
   return adaptee.translateName(f.getFieldObject());
 }