30
30
package com .google .api .gax .httpjson ;
31
31
32
32
import com .google .api .core .InternalApi ;
33
- import com .google .api .core .ObsoleteApi ;
34
33
import com .google .api .gax .longrunning .OperationSnapshot ;
35
34
import com .google .api .gax .rpc .BatchingCallSettings ;
36
35
import com .google .api .gax .rpc .Callables ;
41
40
import com .google .api .gax .rpc .PagedCallSettings ;
42
41
import com .google .api .gax .rpc .ServerStreamingCallSettings ;
43
42
import com .google .api .gax .rpc .ServerStreamingCallable ;
43
+ import com .google .api .gax .rpc .StatusCode ;
44
44
import com .google .api .gax .rpc .UnaryCallSettings ;
45
45
import com .google .api .gax .rpc .UnaryCallable ;
46
46
import com .google .api .gax .tracing .SpanName ;
47
+ import com .google .api .gax .tracing .TracedBatchingCallable ;
48
+ import com .google .api .gax .tracing .TracedServerStreamingCallable ;
47
49
import com .google .api .gax .tracing .TracedUnaryCallable ;
48
50
import com .google .common .base .Preconditions ;
51
+ import java .util .Set ;
49
52
import java .util .regex .Matcher ;
50
53
import java .util .regex .Pattern ;
51
54
import javax .annotation .Nonnull ;
@@ -59,8 +62,9 @@ public class HttpJsonCallableFactory {
59
62
60
63
private HttpJsonCallableFactory () {}
61
64
62
- private static <RequestT , ResponseT > UnaryCallable <RequestT , ResponseT > createDirectUnaryCallable (
63
- HttpJsonCallSettings <RequestT , ResponseT > httpJsonCallSettings ) {
65
+ private static <RequestT , ResponseT > UnaryCallable <RequestT , ResponseT > createUnaryCallable (
66
+ HttpJsonCallSettings <RequestT , ResponseT > httpJsonCallSettings ,
67
+ Set <StatusCode .Code > retryableCodes ) {
64
68
UnaryCallable <RequestT , ResponseT > callable =
65
69
new HttpJsonDirectCallable <>(
66
70
httpJsonCallSettings .getMethodDescriptor (), httpJsonCallSettings .getTypeRegistry ());
@@ -70,33 +74,7 @@ private static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createDi
70
74
new HttpJsonUnaryRequestParamCallable <>(
71
75
callable , httpJsonCallSettings .getParamsExtractor ());
72
76
}
73
- return callable ;
74
- }
75
-
76
- /** Create httpJson UnaryCallable with request mutator. */
77
- static <RequestT , ResponseT > UnaryCallable <RequestT , ResponseT > createUnaryCallable (
78
- UnaryCallable <RequestT , ResponseT > innerCallable ,
79
- UnaryCallSettings <?, ?> callSettings ,
80
- HttpJsonCallSettings <RequestT , ResponseT > httpJsonCallSettings ,
81
- ClientContext clientContext ) {
82
- UnaryCallable <RequestT , ResponseT > callable =
83
- new HttpJsonExceptionCallable <>(innerCallable , callSettings .getRetryableCodes ());
84
- callable =
85
- Callables .retrying (
86
- callable , callSettings , clientContext , httpJsonCallSettings .getRequestMutator ());
87
- return callable .withDefaultCallContext (clientContext .getDefaultCallContext ());
88
- }
89
-
90
- /** Use {@link #createUnaryCallable createUnaryCallable} method instead. */
91
- @ ObsoleteApi ("Please use other httpJson UnaryCallable method instead" )
92
- static <RequestT , ResponseT > UnaryCallable <RequestT , ResponseT > createUnaryCallable (
93
- UnaryCallable <RequestT , ResponseT > innerCallable ,
94
- UnaryCallSettings <?, ?> callSettings ,
95
- ClientContext clientContext ) {
96
- UnaryCallable <RequestT , ResponseT > callable =
97
- new HttpJsonExceptionCallable <>(innerCallable , callSettings .getRetryableCodes ());
98
- callable = Callables .retrying (callable , callSettings , clientContext );
99
- return callable .withDefaultCallContext (clientContext .getDefaultCallContext ());
77
+ return new HttpJsonExceptionCallable <>(callable , retryableCodes );
100
78
}
101
79
102
80
/**
@@ -111,12 +89,15 @@ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBas
111
89
HttpJsonCallSettings <RequestT , ResponseT > httpJsonCallSettings ,
112
90
UnaryCallSettings <?, ?> callSettings ,
113
91
ClientContext clientContext ) {
114
- UnaryCallable <RequestT , ResponseT > callable = createDirectUnaryCallable (httpJsonCallSettings );
115
- callable = new HttpJsonExceptionCallable <>(callable , callSettings .getRetryableCodes ());
116
- callable =
117
- Callables .retrying (
118
- callable , callSettings , clientContext , httpJsonCallSettings .getRequestMutator ());
119
-
92
+ UnaryCallable <RequestT , ResponseT > callable =
93
+ createUnaryCallable (httpJsonCallSettings , callSettings .getRetryableCodes ());
94
+ if (httpJsonCallSettings .getRequestMutator () != null ) {
95
+ callable =
96
+ Callables .retrying (
97
+ callable , callSettings , clientContext , httpJsonCallSettings .getRequestMutator ());
98
+ } else {
99
+ callable = Callables .retrying (callable , callSettings , clientContext );
100
+ }
120
101
return callable ;
121
102
}
122
103
@@ -133,16 +114,15 @@ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUna
133
114
HttpJsonCallSettings <RequestT , ResponseT > httpJsonCallSettings ,
134
115
UnaryCallSettings <RequestT , ResponseT > callSettings ,
135
116
ClientContext clientContext ) {
136
- UnaryCallable <RequestT , ResponseT > innerCallable =
137
- createDirectUnaryCallable (httpJsonCallSettings );
138
-
139
- innerCallable =
117
+ UnaryCallable <RequestT , ResponseT > callable =
118
+ createBaseUnaryCallable (httpJsonCallSettings , callSettings , clientContext );
119
+ callable =
140
120
new TracedUnaryCallable <>(
141
- innerCallable ,
121
+ callable ,
142
122
clientContext .getTracerFactory (),
143
123
getSpanName (httpJsonCallSettings .getMethodDescriptor ()));
144
124
145
- return createUnaryCallable ( innerCallable , callSettings , httpJsonCallSettings , clientContext );
125
+ return callable . withDefaultCallContext ( clientContext . getDefaultCallContext () );
146
126
}
147
127
148
128
/**
@@ -159,9 +139,8 @@ UnaryCallable<RequestT, PagedListResponseT> createPagedCallable(
159
139
HttpJsonCallSettings <RequestT , ResponseT > httpJsonCallSettings ,
160
140
PagedCallSettings <RequestT , ResponseT , PagedListResponseT > pagedCallSettings ,
161
141
ClientContext clientContext ) {
162
- UnaryCallable <RequestT , ResponseT > callable = createDirectUnaryCallable (httpJsonCallSettings );
163
- callable =
164
- createUnaryCallable (callable , pagedCallSettings , httpJsonCallSettings , clientContext );
142
+ UnaryCallable <RequestT , ResponseT > callable =
143
+ createUnaryCallable (httpJsonCallSettings , pagedCallSettings .getRetryableCodes ());
165
144
UnaryCallable <RequestT , PagedListResponseT > pagedCallable =
166
145
Callables .paged (callable , pagedCallSettings );
167
146
return pagedCallable .withDefaultCallContext (clientContext .getDefaultCallContext ());
@@ -181,9 +160,14 @@ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBat
181
160
HttpJsonCallSettings <RequestT , ResponseT > httpJsonCallSettings ,
182
161
BatchingCallSettings <RequestT , ResponseT > batchingCallSettings ,
183
162
ClientContext clientContext ) {
184
- UnaryCallable <RequestT , ResponseT > callable = createDirectUnaryCallable (httpJsonCallSettings );
163
+ UnaryCallable <RequestT , ResponseT > callable =
164
+ createBaseUnaryCallable (httpJsonCallSettings , batchingCallSettings , clientContext );
185
165
callable =
186
- createUnaryCallable (callable , batchingCallSettings , httpJsonCallSettings , clientContext );
166
+ new TracedBatchingCallable <>(
167
+ callable ,
168
+ clientContext .getTracerFactory (),
169
+ getSpanName (httpJsonCallSettings .getMethodDescriptor ()),
170
+ batchingCallSettings .getBatchingDescriptor ());
187
171
callable = Callables .batching (callable , batchingCallSettings , clientContext );
188
172
return callable .withDefaultCallContext (clientContext .getDefaultCallContext ());
189
173
}
@@ -224,6 +208,13 @@ ServerStreamingCallable<RequestT, ResponseT> createServerStreamingCallable(
224
208
}
225
209
226
210
callable = Callables .retrying (callable , streamingCallSettings , clientContext );
211
+
212
+ callable =
213
+ new TracedServerStreamingCallable <>(
214
+ callable ,
215
+ clientContext .getTracerFactory (),
216
+ getSpanName (httpJsoncallSettings .getMethodDescriptor ()));
217
+
227
218
return callable .withDefaultCallContext (clientContext .getDefaultCallContext ());
228
219
}
229
220
0 commit comments