// ========================================================================
// Copyright (C) zeroth Project Team. All rights reserved.
// GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
// http://www.gnu.org/licenses/agpl-3.0.txt
// ========================================================================
package zeroth.framework.service.app;
import java.util.logging.Logger;
import javax.ws.rs.core.Response.Status;
import zeroth.framework.standard.app.GatewayHeader;
import zeroth.framework.standard.app.GatewayModel;
import zeroth.framework.standard.app.GatewayUtil;
import zeroth.framework.standard.shared.StandardException;
/**
* ゲートウェイサービスのクライアント
* @author nilcy
*/
public final class GatewayClient {
/** ロガー */
private static final Logger LOG = Logger.getGlobal();
/** 非公開コンストラクタ */
private GatewayClient() {
}
/**
* RPCサービスの実行
* @param <T> ボディオブジェクト型
* @param aHeader {@link GatewayModel#setHeader(GatewayHeader)}
* @param aBody {@link GatewayModel#setBody(String)}
* @return {@link GatewayModel}
* @throws StandardException ステータスコードがOKでないとき
*/
public static <T> GatewayModel submit(final GatewayHeader aHeader, final T aBody)
throws StandardException {
final GatewayService gateway = GatewayUtil.getProxy(GatewayService.class);
final GatewayModel request = GatewayFactory.create(aBody);
request.setHeader(aHeader);
final GatewayModel returnModel = gateway.submit(request);
if (returnModel.getStatus().getCode().intValue() != Status.OK.getStatusCode()) {
LOG.info("returnModel is " + returnModel);
throw new StandardException("", returnModel.getStatus().getMessage());
}
return returnModel;
}
}