Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[C++][cpp-restsdk] Simple request / response (string) is not well handled. Compilation failed #1163

Closed
CyrilleBenard opened this issue Oct 3, 2018 · 1 comment

Comments

@CyrilleBenard
Copy link

Description

A simple query with a simple response (string) does not compile.
The generated code shows a miscalled method that does not exist (std::string::fromJson)

The compilation error looks like :

/home/xxxx/dev/amf/impl-ms1/src/client/client-ms2/gen-cpp/api/Stair1Api.cpp: In lambda function:
/home/xxxx/dev/amf/impl-ms1/src/client/client-ms2/gen-cpp/api/Stair1Api.cpp:161:27: error: base operand of ‘->’ has non-pointer type ‘utility::string_t {aka std::__cxx11::basic_string<char>}’
             localVarResult->fromJson(localVarJson);
                           ^
CMakeFiles/client-ms2.dir/build.make:254: recipe for target 'CMakeFiles/client-ms2.dir/api/Stair1Api.cpp.o' failed
make[3]: *** [CMakeFiles/client-ms2.dir/api/Stair1Api.cpp.o] Error 1

openapi-generator version

Current master 3.3.0-SNAPSHOT

OpenAPI declaration file content or url
openapi: 3.0.0
info:
  version: 1.0.0
  title: Check generation of  (cpp-restsdk)
  description: Internal ref filename is check_cpprest_simple_response.yaml 

servers:
  - url: http://localhost:8080

paths:
  /stair1:
    post:
      summary: blabla
      operationId: check_generation
      tags:
        - Stair1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Content'
        required: true
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Gpsi'
        default:
          description: Unexpected error

components:
  schemas:
    Content:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Gpsi'

    Gpsi:
      type: string
Command line used for generation

Generate :

openapi-generator-cli.sh generate -i ./openapi.yaml -g cpp-restsdk -c ./config.json -o gen-cpp

Compile :

mkdir -p obj ; cd obj ; cmake -D CPPREST_ROOT=/usr/ ../gen-cpp ; make ; cd ..
Steps to reproduce

Generate & Compile

Related issues/PRs
Suggest a fix/enhancement

Wrong code is located in Stair1Api::checkGeneration method :

../..
    .then([=](utility::string_t localVarResponse)
    {
        utility::string_t localVarResult(utility::conversions::to_string_t(""));

        if(localVarResponseHttpContentType == utility::conversions::to_string_t("application/json"))
        {
            web::json::value localVarJson = web::json::value::parse(localVarResponse);

            // WRONG CALL BELOW
            localVarResult->fromJson(localVarJson);
        }
        // else if(localVarResponseHttpContentType == utility::conversions::to_string_t("multipart/form-data"))
        // {
        // TODO multipart response parsing
        // }
        else
        {
            throw ApiException(500
                , utility::conversions::to_string_t("error calling checkGeneration: unsupported response type"));
        }

        return localVarResult;
    });
../..

The called method should probably be :

    localVarResult = ModelBase::stringFromJson(localVarJson);
@CyrilleBenard
Copy link
Author

Indeed, fixed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants