Skip to content
GitLab
    • Explore Projects Groups Snippets
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Merge requests
  • !2133

[core] Fix NullPointer when schema is not set in header

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Administrator requested to merge github/fork/jmini/fix_npe_in_headers into master 6 years ago
  • Overview 0
  • Commits 1
  • Pipelines 0
  • Changes 2

Created by: jmini

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language. @OpenAPITools/generator-core-team

Description of the PR

Fix a null pointer reported in https://github.com/OpenAPITools/openapi-generator/issues/855#issuecomment-462730420

Compare
  • master (base)

and
  • latest version
    fb632ed9
    1 commit, 2 years ago

2 files
+ 30
- 4

    Preferences

    File browser
    Compare changes
modules/openap‎i-generator/src‎
main/java/org/ope‎napitools/codegen‎
DefaultCo‎degen.java‎ +11 -4
test/java/org/ope‎napitools/codegen‎
DefaultCode‎genTest.java‎ +19 -0
modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+ 11
- 4
  • View file @ fb632ed9

  • Edit in single-file editor

  • Open in Web IDE


@@ -3297,12 +3297,19 @@ public class DefaultCodegen implements CodegenConfig {
*/
private void addHeaders(ApiResponse response, List<CodegenProperty> properties) {
if (response.getHeaders() != null) {
for (Map.Entry<String, Header> headers : response.getHeaders().entrySet()) {
String description = headers.getValue().getDescription();
for (Map.Entry<String, Header> headerEntry : response.getHeaders().entrySet()) {
String description = headerEntry.getValue().getDescription();
// follow the $ref
Header header = ModelUtils.getReferencedHeader(this.openAPI, headers.getValue());
Header header = ModelUtils.getReferencedHeader(this.openAPI, headerEntry.getValue());
CodegenProperty cp = fromProperty(headers.getKey(), header.getSchema());
Schema schema;
if(header.getSchema() == null) {
LOGGER.warn("No schema defined for Header '" + headerEntry.getKey() +"', using a String schema");
schema = new StringSchema();
} else {
schema = header.getSchema();
}
CodegenProperty cp = fromProperty(headerEntry.getKey(), schema);
cp.setDescription(escapeText(description));
cp.setUnescapedDescription(description);
properties.add(cp);
modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+ 19
- 0
  • View file @ fb632ed9

  • Edit in single-file editor

  • Open in Web IDE


@@ -22,6 +22,7 @@ import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.media.*;
import io.swagger.v3.oas.models.headers.Header;
import io.swagger.v3.oas.models.parameters.QueryParameter;
import io.swagger.v3.oas.models.parameters.RequestBody;
import io.swagger.v3.oas.models.responses.ApiResponse;
@@ -532,6 +533,24 @@ public class DefaultCodegenTest {
Assert.assertEquals(co2.path, "/some/path");
}
@Test
public void testResponseWithNoSchemaInHeaders() {
OpenAPI openAPI = TestUtils.createOpenAPI();
ApiResponse response2XX = new ApiResponse()
.description("OK")
.addHeaderObject("x-custom-header", new Header()
.description("a custom header")
.style(Header.StyleEnum.SIMPLE));
Operation operation1 = new Operation().operationId("op1").responses(new ApiResponses().addApiResponse("2XX", response2XX));
openAPI.path("/here", new PathItem().get(operation1));
final DefaultCodegen codegen = new DefaultCodegen();
codegen.setOpenAPI(openAPI);
CodegenResponse cr = codegen.fromResponse("2XX", response2XX);
Assert.assertNotNull(cr);
Assert.assertTrue(cr.hasHeaders);
}
private void verifyPersonDiscriminator(CodegenDiscriminator discriminator) {
CodegenDiscriminator test = new CodegenDiscriminator();
test.setPropertyName("DollarUnderscoretype");
0 Assignees
None
Assign to
0 Reviewers
None
Request review from
Labels
1
Enhancement: General
1
Enhancement: General
    Assign labels
  • Manage project labels

Milestone
4.0.0
4.0.0 (expired)
None
Time tracking
No estimate or time spent
Lock merge request
Unlocked
1
1 participant
Administrator
Reference: OpenAPITools/openapi-generator!2133
Source branch: github/fork/jmini/fix_npe_in_headers

Menu

Explore Projects Groups Snippets