package open.dolphin.delegater;
import java.util.concurrent.Future;
import javax.ws.rs.core.MediaType;
import open.dolphin.converter.ChartEventModelConverter;
import open.dolphin.infomodel.ChartEventModel;
import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
/**
* State変化関連のデレゲータ
* @author masuda, Masuda Naika
*
* オリジナル: Git Hub Masuda-Naika OpenDolphin-2.3.8m
* 上記の劣化版コピー: minagawa
* JSON のハンドリングを reasteasyのjacksonで行う
* resteasyクライントが非同期通信をサポートしていないのでAsyncHttpClientを使用する
*/
public class ChartEventDelegater extends BusinessDelegater {
private static final String RES_CE = "/chartEvent";
private static final String SUBSCRIBE_PATH = RES_CE + "/subscribe";
private static final String PUT_EVENT_PATH = RES_CE + "/event";
private static final ChartEventDelegater instance = new ChartEventDelegater();
private ChartEventDelegater() {
}
public static ChartEventDelegater getInstance() {
return instance;
}
public int putChartEvent(ChartEventModel evt) throws Exception {
// Convert
ChartEventModelConverter conv = new ChartEventModelConverter();
conv.setModel(evt);
// JSON
ObjectMapper mapper = this.getSerializeMapper();
byte[] data = mapper.writeValueAsBytes(conv);
// PUT
String countStr = putEasyJson(PUT_EVENT_PATH, data, String.class);
// cnt
return Integer.parseInt(countStr);
}
public Future<ChartEventModel> subscribe() throws Exception {
ResteasyWebTarget target = getWebTargetSubscribe(SUBSCRIBE_PATH);
return target.request(MediaType.APPLICATION_JSON).async().get(ChartEventModel.class);
}
}