Skip to content
GitLab
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
  • Issues
  • #4320
Closed
Open
Issue created Oct 30, 2019 by Administrator@rootContributor5 of 6 checklist items completed5/6 checklist items

[BUG][C++] special characters and case sensitivity and key "operator" in properties not respected

Created by: AIexG

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • What's the version of OpenAPI Generator used?
  • Have you search for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Bounty to sponsor the fix (example)
Description

When generating a server stub, cpp-restbed-server in my case, all functions reading the values through the keys of a JSON request will automatically stripe certain special characters from the keys set the first letter to uppercase and add an underscore to certain keywords (e.g. operator). This causes the pt.put(), pt.get() etc, which apparently are case sensitive to fail aquiring and passing data to and from a JSON file/array.

The OAS also states that keys are case sensitive

All field names in the specification are case sensitive. This includes all fields that are used as keys in a map, except where explicitly noted that keys are case insensitive.

I haven't confirmed if any other languages/generators are affected by this problem, but it might be possible!

openapi-generator version
  • 4.1.3
  • 4.2.0-SNAPSHOT
OpenAPI declaration file content or url

caseSensitive.yaml

openapi: 3.0.1
info:
  title: Case Sensitivity Demo
  contact:
    email: mail@example.com
  version: 1.0.0

paths:
  /demo:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/demoSchema'
        required: true
      responses:
        '405':
          description: 'Validation error'
          content: {}

components:
  schemas:      
    demoSchema:
      type: object
      properties:
        $dollarsign:
          type: string
        §paragraph:
          type: string
        operator:
          type: string
        Firstupper:
          type: string
        noupper: 
          type: string
        midUpper: 
          type: string
        ALLUPPER:
          type: string

Generates the following function toJsonString():

std::string DemoSchema::toJsonString()
{
	std::stringstream ss;
	ptree pt;
	pt.put("dollarsign", m_dollarsign); // should be "$dollarsign"
	pt.put("paragraph", m_paragraph); // should be "§paragraph"
	pt.put("_operator", m__operator); // should be "operator"
	pt.put("Firstupper", m_Firstupper); // alright
	pt.put("Noupper", m_Noupper); // should be "noupper"
	pt.put("MidUpper", m_MidUpper); // should be "midUpper"
	pt.put("ALLUPPER", m_ALLUPPER); // alright
	write_json(ss, pt, false);
	return ss.str();
}

comments indicate the expected output

Command line used for generation

java -jar openapi-generator-cli.jar generate -i .\caseSensitive.yaml -g cpp-restbed-server -o .\openapi-server\

Steps to reproduce

Simply don't use an uppercase letter as first character for a property key.

Related issues/PRs
Suggest a fix
Assignee
Assign to
Time tracking