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
  • #745
Closed
Open
Issue created Aug 06, 2018 by Administrator@rootContributor

[C++][Pistache-server] Wrong "toJson" and "fromJson" method generation - compilation failed

Created by: vbs96

Description

The C++ generated code does not compile because of the following errors:

  1. there is no matching function for ModelBase::toJson taking as argument std::map<std::string, std::vector>
  2. the generated code is calling "fromJson" method as it is a member of std::map type
  3. the generated code is calling a set method that is not generated

These error occur in model/Detections.cpp file.

Detection.h:

#include "ModelBase.h"

#include "BoundingRectangle.h"
#include <string>
#include "Point2D.h"
#include <map>
#include <vector>

namespace org {
namespace openapitools {
namespace server {
namespace model {

class  Detection
    : public ModelBase
{
public:
    Detection();
    virtual ~Detection();

    nlohmann::json toJson() const override;
    void fromJson(nlohmann::json& json) override;
 
    std::map<std::string, std::vector<Point2D>>& getKeyPoints();
    //setKeyPoints is missing
    bool keyPointsIsSet() const;
    void unsetKeyPoints();


protected:
   
    std::map<std::string, std::vector<Point2D>> m_KeyPoints;
    bool m_KeyPointsIsSet;
 
};

}
}
}
}

#endif /* Detection_H_ */

Detection.cpp:

nlohmann::json Detection::toJson() const
{
    //
    //
    if(m_KeyPointsIsSet)
    {
          //this call
        val["keyPoints"] = ModelBase::toJson(m_KeyPoints);
    }
   //
   //
    return val;
}

void Detection::fromJson(nlohmann::json& val)
{
    //
    //
    if(val.find("keyPoints") != val.end())
    {
        if(!val["keyPoints"].is_null())
        {
            std::map<std::string, std::vector<Point2D>> newItem;
            //and these 2 lines below
            newItem.fromJson(val["keyPoints"]);
            setKeyPoints( newItem );
        }
        
    }
}
openapi-generator version

3.2.0 (I cloned the latest master branch 2 days ago)

OpenAPI declaration file content or url

https://raw.githubusercontent.com/deepviss/deepviss-server-example/master/src/main/resources/deep-viss.json

Command line used for generation

Inside cloned repository, after mvn clean package: java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate / -i deep-viss.json / -g cpp-pistache-server / -o ../openapi-pistache-server

Steps to reproduce

Note: Assuming Pistache is installed

  1. Go to output folder
  2. copy json.hpp (from https://github.com/nlohmann/json) to model folder
  3. mkdir build
  4. cd build
  5. cmake ..
  6. make
Assignee
Assign to
Time tracking