// ========================================================================
// 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 javax.ws.rs.core.Response.Status;
import org.apache.commons.lang3.StringUtils;
import zeroth.framework.standard.app.GatewayHeader;
import zeroth.framework.standard.app.GatewayModel;
import zeroth.framework.standard.app.GatewayStatus;
import zeroth.framework.standard.app.GatewayUtil;
/**
* ゲートウェイオブジェクトのファクトリ
* @author nilcy
*/
public final class GatewayFactory {
/** 非公開コンストラクタ */
private GatewayFactory() {
}
/**
* {@link GatewayHeader} の作成
* @param wsdlLocation {@link GatewayHeader#setWsdlLocation(String)}
* @param namespaceURI {@link GatewayHeader#setNamespaceURI(String)}
* @param localPart {@link GatewayHeader#setLocalPart(String)}
* @param endpoint {@link GatewayHeader#setEndpoint(String)}
* @param operation {@link GatewayHeader#setOperation(String)}
* @param parameter {@link GatewayHeader#setParameter(String)}
* @return {@link GatewayHeader}
*/
public static GatewayHeader createHeader(final String wsdlLocation,
final String namespaceURI, final String localPart, final String endpoint,
final String operation, final String parameter) {
final GatewayHeader header = new GatewayHeader();
header.setWsdlLocation(wsdlLocation);
header.setNamespaceURI(namespaceURI);
header.setLocalPart(localPart);
header.setEndpoint(endpoint);
header.setOperation(operation);
header.setParameter(parameter);
return header;
}
/**
* {@link GatewayStatus} の作成
* @param httpStatus {@link Status}
* @return {@link GatewayStatus}
*/
public static GatewayStatus createStatus(final Status httpStatus) {
final GatewayStatus status = new GatewayStatus();
status.setCode(Integer.valueOf(httpStatus.getStatusCode()));
status.setReason(httpStatus.toString());
status.setMessage(StringUtils.EMPTY);
return status;
}
/**
* {@link GatewayStatus} の作成
* @param httpStatus {@link Status}
* @param message {@link GatewayStatus#setMessage(String)}
* @return {@link GatewayStatus}
*/
public static GatewayStatus createStatus(final Status httpStatus, final String message) {
final GatewayStatus status = createStatus(httpStatus);
status.setMessage(message);
return status;
}
/**
* {@link GatewayModel} の作成
* @return {@link GatewayModel}
*/
public static GatewayModel create() {
final GatewayModel model = new GatewayModel();
model.setHeader(new GatewayHeader());
model.setStatus(new GatewayStatus());
return model;
}
/**
* {@link GatewayModel} の作成
* @param <T> ボディオブジェクト型
* @param body ボディオブジェクト
* @return {@link GatewayModel}
*/
public static <T> GatewayModel create(final T body) {
final GatewayModel model = create();
model.setBody(GatewayUtil.encode(body));
return model;
}
}