protected void doContainerSerialize()

in lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySerializer.java [51:133]


  protected void doContainerSerialize(final ResWrap<Entity> container, final JsonGenerator jgen)
      throws IOException, EdmPrimitiveTypeException {

    final Entity entity = container.getPayload();

    jgen.writeStartObject();

    if (serverMode && !isODataMetadataNone) {
      if (container.getContextURL() != null) {
        jgen.writeStringField(Constants.JSON_CONTEXT, container.getContextURL().toASCIIString());
      }
      if (container.getMetadataETag() != null) {
        jgen.writeStringField(Constants.JSON_METADATA_ETAG, container.getMetadataETag());
      }

      if (entity.getETag() != null) {
        jgen.writeStringField(Constants.JSON_ETAG, entity.getETag());
      }
    }

    if (entity.getType() != null && isODataMetadataFull) {
      jgen.writeStringField(Constants.JSON_TYPE,
          new EdmTypeInfo.Builder().setTypeExpression(entity.getType()).build().external());
    }

    if (entity.getId() != null && isODataMetadataFull) {
      jgen.writeStringField(Constants.JSON_ID, entity.getId().toASCIIString());
    }

    for (Annotation annotation : entity.getAnnotations()) {
      valuable(jgen, annotation, "@" + annotation.getTerm());
    }

    for (Property property : entity.getProperties()) {
      valuable(jgen, property, property.getName());
    }

    if (serverMode && entity.getEditLink() != null && 
        entity.getEditLink().getHref() != null && isODataMetadataFull) {
      jgen.writeStringField(Constants.JSON_EDIT_LINK, entity.getEditLink().getHref());

      if (entity.isMediaEntity() && isODataMetadataFull) {
        jgen.writeStringField(Constants.JSON_MEDIA_READ_LINK,
            entity.getEditLink().getHref() + "/$value");
      }
    }

    if (!isODataMetadataNone) {
      links(entity, jgen);
    }

    if (isODataMetadataFull) {
      for (Link link : entity.getMediaEditLinks()) {
        if (link.getTitle() == null) {
          jgen.writeStringField(Constants.JSON_MEDIA_EDIT_LINK, link.getHref());
        }

        if (link.getInlineEntity() != null) {
          jgen.writeObjectField(link.getTitle(), link.getInlineEntity());
        }
        if (link.getInlineEntitySet() != null) {
          jgen.writeArrayFieldStart(link.getTitle());
          for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
            jgen.writeObject(subEntry);
          }
          jgen.writeEndArray();
        }
      }
    }

    if (serverMode && isODataMetadataFull) {
      for (Operation operation : entity.getOperations()) {
        final String anchor = operation.getMetadataAnchor();
        final int index = anchor.lastIndexOf('#');
        jgen.writeObjectFieldStart('#' + anchor.substring(index < 0 ? 0 : (index + 1)));
        jgen.writeStringField(Constants.ATTR_TITLE, operation.getTitle());
        jgen.writeStringField(Constants.ATTR_TARGET, operation.getTarget().toASCIIString());
        jgen.writeEndObject();
      }
    }

    jgen.writeEndObject();
  }