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 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 get(IRequest request, ResponseType type) throws Exception { HttpServerSource serverSource = (HttpServerSource)remoteSource; T result = serverSource.get(request, type); return result; } @SuppressWarnings("unchecked") public 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; } }