package org.odata4j.format.jsonlite; import java.io.Writer; import javax.ws.rs.core.UriInfo; import org.odata4j.core.OCollection; import org.odata4j.core.OComplexObject; import org.odata4j.core.OFunctionParameter; import org.odata4j.core.OObject; import org.odata4j.core.OSimpleObject; import org.odata4j.edm.EdmCollectionType; import org.odata4j.edm.EdmComplexType; import org.odata4j.edm.EdmProperty.CollectionKind; import org.odata4j.format.Parameters; import org.odata4j.format.json.JsonWriter; /** * The Class JsonLiteParametersFormatWriter. * * @author <a href="mailto:rajni.kumari@synerzip.com">Rajni Kumari</a> */ public class JsonLiteParametersFormatWriter extends JsonLiteFormatWriter<Parameters> { private final String metadataType; /** * Instantiates a new json lite parameters format writer. * * @param jsonpCallback the jsonp callback * @param metadataType */ public JsonLiteParametersFormatWriter(String jsonpCallback, String metadataType) { super(jsonpCallback, metadataType); this.metadataType= metadataType; } @Override protected void writeContent(UriInfo uriInfo, JsonWriter jw, Parameters parameters) { boolean isFirst = true; jw.startObject(); for (OFunctionParameter param : parameters.getParameters()) { if (isFirst) { isFirst = false; } else { jw.writeSeparator(); } jw.writeName(param.getName()); OObject oo = param.getValue(); if (oo instanceof OCollection) { EdmCollectionType colType = new EdmCollectionType(CollectionKind.Collection, param.getType()); writeValue(jw, colType, oo, false); } else if (param.getType().isSimple()) { writeValue(jw, param.getType(), ((OSimpleObject<?>) oo).getValue(), false); } else if (oo instanceof OComplexObject) { EdmComplexType complexType = (EdmComplexType) param.getType(); writeValue(jw, complexType, oo, false); } else { writeValue(jw, param.getType(), param.getValue(), false); } } jw.endObject(); } @Override public void write(UriInfo uriInfo, Writer w, Parameters target) { JsonWriter jw = new JsonWriter(w); if (getJsonpCallback() != null) { jw.startCallback(getJsonpCallback()); } writeContent(uriInfo, jw, target); } }