P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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;
    }
}