All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avos.avoscloud.AVObjectSerializer Maven / Gradle / Ivy

package com.avos.avoscloud;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;
import com.alibaba.fastjson.serializer.SerializerFeature;

import java.io.IOException;
import java.lang.reflect.Type;

/**
 * Created by lbt05 on 6/3/15.
 */
class AVObjectSerializer implements ObjectSerializer {
  public static final AVObjectSerializer instance = new AVObjectSerializer();

  @Override
  public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features)
      throws IOException {
    SerializeWriter out = serializer.getWriter();
    AVObject avObject = (AVObject) object;
    out.write('{');
    out.writeFieldValue(' ', "@type", avObject.getClass().getName());
    out.writeFieldValue(',', "objectId", avObject.getObjectId());
    out.writeFieldValue(',', "updatedAt", AVUtils.getAVObjectUpdatedAt(avObject));
    out.writeFieldValue(',', "createdAt", AVUtils.getAVObjectCreatedAt(avObject));
    String className = AVUtils.getAVObjectClassName(avObject.getClass());
    out.writeFieldValue(',', "className", className == null ? avObject.getClassName() : className);
    out.write(',');

    if (avObject instanceof AVStatus) {
      AVStatus status = (AVStatus) avObject;
      out.writeFieldName("dataMap");
      out.write(JSON.toJSONString(status.getData(), ObjectValueFilter.instance,
          SerializerFeature.WriteClassName,
          SerializerFeature.DisableCircularReferenceDetect));

      out.write(',');
      out.writeFieldName("inboxType");
      out.write(status.getInboxType());
      out.write(',');
      out.writeFieldName("messageId");
      out.write(Long.toString(status.getMessageId()));
      if (status.getSource() != null) {
        out.write(',');
        out.writeFieldName("source");
        out.write(JSON.toJSONString(status.getSource(), ObjectValueFilter.instance,
            SerializerFeature.WriteClassName,
            SerializerFeature.DisableCircularReferenceDetect));
      }
    } else {
      out.writeFieldName("serverData");
      out.write(JSON.toJSONString(avObject.serverData, ObjectValueFilter.instance,
          SerializerFeature.WriteClassName,
          SerializerFeature.DisableCircularReferenceDetect));
      if (!avObject.operationQueue.isEmpty()) {
        out.write(',');
        out.writeFieldName("operationQueue");
        out.write(JSON.toJSONString(avObject.operationQueue, ObjectValueFilter.instance,
            SerializerFeature.WriteClassName,
            SerializerFeature.DisableCircularReferenceDetect));
      }
    }
    out.write('}');
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy