public void visitArrayField(FieldAttributes f, Type typeOfF, Object obj) { try { if (isFieldNull(f, obj)) { if (serializeNulls) { addChildAsElement(f, JsonNull.createJsonNull()); } } else { Object array = getFieldValue(f, obj); addAsChildOfObject(f, new ObjectTypePair(array, typeOfF, false)); } } catch (CircularReferenceException e) { throw e.createDetailedException(f); } }
public void visitObjectField(FieldAttributes f, Type typeOfF, Object obj) { try { if (isFieldNull(f, obj)) { if (serializeNulls) { addChildAsElement(f, JsonNull.createJsonNull()); } } else { Object fieldValue = getFieldValue(f, obj); // we should not get more specific component type yet since it is // possible that a custom // serializer is registered for the componentType addAsChildOfObject(f, new ObjectTypePair(fieldValue, typeOfF, false)); } } catch (CircularReferenceException e) { throw e.createDetailedException(f); } }
public boolean visitUsingCustomHandler(ObjectTypePair objTypePair) { try { Object obj = objTypePair.getObject(); if (obj == null) { if (serializeNulls) { assignToRoot(JsonNull.createJsonNull()); } return true; } JsonElement element = findAndInvokeCustomSerializer(objTypePair); if (element != null) { assignToRoot(element); return true; } return false; } catch (CircularReferenceException e) { throw e.createDetailedException(null); } }
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); } }