package foundation.icall;
|
|
import java.io.IOException;
|
|
import foundation.dao.bizlogic.DocDescription;
|
import foundation.dao.bizlogic.IRequest;
|
import foundation.dao.bizlogic.ResponseType;
|
import foundation.data.mapping.Mappings;
|
import foundation.icall.callout.HttpServerSource;
|
import foundation.icall.callout.ICallRequest;
|
import foundation.icall.callout.IRemoteSource;
|
import foundation.icall.log.ICallLogger;
|
import foundation.icall.log.LogRecord;
|
|
public class RemoteContext {
|
|
private IRemoteSource remoteSource;
|
private ICall iCall;
|
private OutboundResult outboundResult;
|
private InboundResult inboundResult;
|
|
|
public RemoteContext(ICall iCall) {
|
this.iCall = iCall;
|
this.remoteSource = iCall.getRemoteSource();
|
}
|
|
public IRequest createRequest(String url) throws IOException {
|
HttpServerSource serverSource = (HttpServerSource)remoteSource;
|
ICallRequest request = serverSource.createRequest(url);
|
return request;
|
}
|
|
public Mappings getMappings(String name) {
|
MappingsBucket bucket = MappingsBucket.getInstance();
|
Mappings mappings = bucket.get(name);
|
return mappings;
|
}
|
|
public <T> T post(IRequest request, ResponseType type) throws Exception {
|
HttpServerSource serverSource = (HttpServerSource)remoteSource;
|
|
LogRecord record = new LogRecord(iCall);
|
record.setUrl(request.getURL());
|
record.setRequestHeader(request.getRequestHeader());
|
record.setRequestBody(request.getRequestBody());
|
|
DocDescription docDescription = request.getDocDescription();
|
|
if (docDescription != null) {
|
record.setDocCode(docDescription.getCode());
|
}
|
|
ICallLogger.beginAction(record, null);
|
|
T result = serverSource.post(request, type);
|
|
ICallLogger.endAction(record, result == null ? "" : result.toString());
|
return result;
|
}
|
|
public <T> T get(IRequest request, ResponseType type) throws Exception {
|
HttpServerSource serverSource = (HttpServerSource)remoteSource;
|
T result = serverSource.get(request, type);
|
return result;
|
}
|
|
@SuppressWarnings("unchecked")
|
public <T> T getRemoteSource() throws Exception {
|
Object object = remoteSource.get();
|
T result = (T)object;
|
return result;
|
}
|
|
public ICall getICall() {
|
return iCall;
|
}
|
|
public String getCallName() {
|
return iCall.getName();
|
}
|
|
public ICallMeta getCallMeta() {
|
return iCall.getMeta();
|
}
|
|
public LogRecord getLogRecord() {
|
return outboundResult.getRecord();
|
}
|
|
public String getResponse() {
|
return outboundResult.getResponse();
|
}
|
|
public OutboundResult getOutboundResult() {
|
return outboundResult;
|
}
|
|
public void setOutboundResult(OutboundResult outboundResult) {
|
this.outboundResult = outboundResult;
|
}
|
|
public InboundResult getInboundResult() {
|
return inboundResult;
|
}
|
|
public void setInboundResult(InboundResult inboundResult) {
|
this.inboundResult = inboundResult;
|
}
|
}
|