package cn.mutils.app.demo.web;
import org.json.JSONObject;
import cn.mutils.app.demo.web.BasicWebMessage.BasicWebMessageData;
import cn.mutils.app.demo.web.BasicWebMessage.BasicWebMessageResult;
import cn.mutils.app.ui.web.WebMessageDispatcher;
import cn.mutils.core.json.JsonUtil;
import cn.mutils.core.reflect.ReflectUtil;
@SuppressWarnings({"serial", "unchecked"})
public abstract class BasicWebMessageDispatcher<DATA extends BasicWebMessageData, RESULT extends BasicWebMessageResult>
extends WebMessageDispatcher<BasicWebMessage<DATA, RESULT>> {
public Integer id;
public String name;
public String callbacker;
public JSONObject data;
public abstract int messageId();
public abstract String messageName();
@Override
public boolean preTranslateMessage() {
if (id != null) {
if (id.equals(this.messageId())) {
return false;
}
}
if (name != null) {
if (name.equals(this.messageName())) {
return false;
}
}
return true;
}
@Override
public BasicWebMessage<DATA, RESULT> translateMessage() {
BasicWebMessage<DATA, RESULT> msg = new BasicWebMessage<DATA, RESULT>();
msg.id = id;
msg.name = name;
msg.callbacker = callbacker;
try {
msg.data = (DATA) ReflectUtil.getParamRawType(this.getClass(), 0).newInstance();
JsonUtil.fromJson(data, msg.data);
return msg;
} catch (Exception e) {
return null;
}
}
}