package org.zstack.rest;
import org.zstack.header.exception.CloudRuntimeException;
import org.zstack.header.message.APIMessage;
import org.zstack.utils.gson.JSONObjectUtil;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Created by xing5 on 2017/1/2.
*/
public class RequestData {
String webHook;
APIMessage apiMessage;
RestServer.RequestInfo requestInfo;
private String apiClassName;
static RequestData fromJson(String jsonstr) {
Map m = JSONObjectUtil.toObject(jsonstr, LinkedHashMap.class);
RequestData d = new RequestData();
d.webHook = (String) m.get("webHook");
d.apiClassName = (String) m.get("apiClassName");
d.requestInfo = JSONObjectUtil.rehashObject(m.get("requestInfo"), RestServer.RequestInfo.class);
if (d.apiClassName != null) {
try {
Class<? extends APIMessage> clz = (Class<? extends APIMessage>) Class.forName(d.apiClassName);
d.apiMessage = JSONObjectUtil.rehashObject(m.get("apiMessage"), clz);
} catch (Exception e) {
throw new CloudRuntimeException(e);
}
}
return d;
}
String toJson() {
if (apiMessage != null) {
apiClassName = apiMessage.getClass().getName();
}
return JSONObjectUtil.toJsonString(this);
}
}