Skip to content

Commit c0d9886

Browse files
wing328artnan
andauthored
[Java] fix missing header parameters in the generated google-api-client Java client (#22468)
* fix(java): add header parameter handling for google-api-client Header parameters defined in OpenAPI specs were being accepted as method parameters but never actually added to the HTTP request. Fixes #22457 * update samples * minor enhancement --------- Co-authored-by: artnan <[email protected]>
1 parent 788f67d commit c0d9886

File tree

7 files changed

+276
-95
lines changed

7 files changed

+276
-95
lines changed

modules/openapi-generator/src/main/resources/Java/libraries/google-api-client/api.mustache

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,13 @@ public class {{classname}} {
123123
GenericUrl genericUrl = new GenericUrl(localVarUrl);
124124

125125
HttpContent content = {{#isBodyAllowed}}{{#bodyParam}}apiClient.new JacksonJsonHttpContent({{paramName}}){{/bodyParam}}{{^bodyParam}}new EmptyContent(){{/bodyParam}}{{/isBodyAllowed}}{{^isBodyAllowed}}null{{/isBodyAllowed}};
126-
return apiClient.getHttpRequestFactory().buildRequest(HttpMethods.{{httpMethod}}, genericUrl, content).execute();
126+
com.google.api.client.http.HttpRequest httpRequest = apiClient.getHttpRequestFactory().buildRequest(HttpMethods.{{httpMethod}}, genericUrl, content);
127+
{{#headerParams}}
128+
if ({{paramName}} != null) {
129+
httpRequest.getHeaders().set("{{baseName}}", {{paramName}});
130+
}
131+
{{/headerParams}}
132+
return httpRequest.execute();
127133
}{{#bodyParam}}
128134

129135
{{#isDeprecated}}
@@ -159,7 +165,13 @@ public class {{classname}} {
159165
HttpContent content = {{#bodyParam}}{{paramName}} == null ?
160166
apiClient.new JacksonJsonHttpContent(null) :
161167
new InputStreamContent(mediaType == null ? Json.MEDIA_TYPE : mediaType, {{paramName}}){{/bodyParam}};
162-
return apiClient.getHttpRequestFactory().buildRequest(HttpMethods.{{httpMethod}}, genericUrl, content).execute();
168+
com.google.api.client.http.HttpRequest httpRequest = apiClient.getHttpRequestFactory().buildRequest(HttpMethods.{{httpMethod}}, genericUrl, content);
169+
{{#headerParams}}
170+
if ({{paramName}} != null) {
171+
httpRequest.getHeaders().set("{{baseName}}", {{paramName}});
172+
}
173+
{{/headerParams}}
174+
return httpRequest.execute();
163175
}{{/bodyParam}}
164176

165177
{{#isDeprecated}}
@@ -201,7 +213,21 @@ public class {{classname}} {
201213
GenericUrl genericUrl = new GenericUrl(localVarUrl);
202214

203215
HttpContent content = {{#isBodyAllowed}}{{#bodyParam}}apiClient.new JacksonJsonHttpContent({{paramName}}){{/bodyParam}}{{^bodyParam}}new EmptyContent(){{/bodyParam}}{{/isBodyAllowed}}{{^isBodyAllowed}}null{{/isBodyAllowed}};
204-
return apiClient.getHttpRequestFactory().buildRequest(HttpMethods.{{httpMethod}}, genericUrl, content).execute();
216+
com.google.api.client.http.HttpRequest httpRequest = apiClient.getHttpRequestFactory().buildRequest(HttpMethods.{{httpMethod}}, genericUrl, content);
217+
{{#hasHeaderParams}}
218+
// Note: Header params passed via 'params' map are handled below
219+
for (Map.Entry<String, Object> entry: params.entrySet()) {
220+
String key = entry.getKey();
221+
Object value = entry.getValue();
222+
// Check if this is a header parameter by name
223+
{{#headerParams}}
224+
if ("{{baseName}}".equals(key) && value != null) {
225+
httpRequest.getHeaders().set(key, value);
226+
}
227+
{{/headerParams}}
228+
}
229+
{{/hasHeaderParams}}
230+
return httpRequest.execute();
205231
}
206232

207233

samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/api/AnotherFakeApi.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,11 @@ public HttpResponse call123testSpecialTagsForHttpResponse(@javax.annotation.Nonn
8787
GenericUrl genericUrl = new GenericUrl(localVarUrl);
8888

8989
HttpContent content = apiClient.new JacksonJsonHttpContent(body);
90-
return apiClient.getHttpRequestFactory().buildRequest(HttpMethods.PATCH, genericUrl, content).execute();
90+
com.google.api.client.http.HttpRequest httpRequest = apiClient.getHttpRequestFactory().buildRequest(HttpMethods.PATCH, genericUrl, content);
91+
if (uuidTest != null) {
92+
httpRequest.getHeaders().set("uuid_test", uuidTest);
93+
}
94+
return httpRequest.execute();
9195
}
9296

9397
public HttpResponse call123testSpecialTagsForHttpResponse(@javax.annotation.Nonnull UUID uuidTest, java.io.InputStream body, String mediaType) throws IOException {
@@ -106,7 +110,11 @@ public HttpResponse call123testSpecialTagsForHttpResponse(@javax.annotation.Nonn
106110
HttpContent content = body == null ?
107111
apiClient.new JacksonJsonHttpContent(null) :
108112
new InputStreamContent(mediaType == null ? Json.MEDIA_TYPE : mediaType, body);
109-
return apiClient.getHttpRequestFactory().buildRequest(HttpMethods.PATCH, genericUrl, content).execute();
113+
com.google.api.client.http.HttpRequest httpRequest = apiClient.getHttpRequestFactory().buildRequest(HttpMethods.PATCH, genericUrl, content);
114+
if (uuidTest != null) {
115+
httpRequest.getHeaders().set("uuid_test", uuidTest);
116+
}
117+
return httpRequest.execute();
110118
}
111119

112120
public HttpResponse call123testSpecialTagsForHttpResponse(@javax.annotation.Nonnull UUID uuidTest, @javax.annotation.Nonnull Client body, Map<String, Object> params) throws IOException {
@@ -141,7 +149,17 @@ public HttpResponse call123testSpecialTagsForHttpResponse(@javax.annotation.Nonn
141149
GenericUrl genericUrl = new GenericUrl(localVarUrl);
142150

143151
HttpContent content = apiClient.new JacksonJsonHttpContent(body);
144-
return apiClient.getHttpRequestFactory().buildRequest(HttpMethods.PATCH, genericUrl, content).execute();
152+
com.google.api.client.http.HttpRequest httpRequest = apiClient.getHttpRequestFactory().buildRequest(HttpMethods.PATCH, genericUrl, content);
153+
// Note: Header params passed via 'params' map are handled below
154+
for (Map.Entry<String, Object> entry: params.entrySet()) {
155+
String key = entry.getKey();
156+
Object value = entry.getValue();
157+
// Check if this is a header parameter by name
158+
if ("uuid_test".equals(key) && value != null) {
159+
httpRequest.getHeaders().set(key, value);
160+
}
161+
}
162+
return httpRequest.execute();
145163
}
146164

147165

0 commit comments

Comments
 (0)