From 77c42d6dd4f1fa7e5b4d32c26aec546dfc75820a Mon Sep 17 00:00:00 2001 From: sunn Date: Mon, 22 Oct 2018 13:11:00 +0200 Subject: [PATCH] Remove pointer usage in generated models Use const reference wherever possible Reuse same super class for Qt5 client and server Support primitive return types for Qt5 client --- bin/cpp-qt5-petstore.sh | 2 +- bin/openapi3/cpp-qt5-petstore.sh | 2 +- bin/security/cpp-qt5-petstore.sh | 2 +- bin/windows/cpp-qt5-petstore.bat | 2 +- .../languages/CppQt5AbstractCodegen.java | 344 ++++++++ .../languages/CppQt5ClientCodegen.java | 252 +----- .../CppQt5QHttpEngineServerCodegen.java | 334 +------- .../resources/cpp-qt5-client/Project.mustache | 4 +- .../cpp-qt5-client/QObjectWrapper.h.mustache | 28 - .../cpp-qt5-client/api-body.mustache | 106 +-- .../cpp-qt5-client/api-header.mustache | 4 +- .../cpp-qt5-client/helpers-body.mustache | 766 ++++++------------ .../cpp-qt5-client/helpers-header.mustache | 128 ++- .../cpp-qt5-client/model-body.mustache | 198 +---- .../cpp-qt5-client/model-header.mustache | 22 +- .../cpp-qt5-client/modelFactory.mustache | 36 - .../resources/cpp-qt5-client/object.mustache | 49 +- .../object.mustache | 6 +- .../petstore/cpp-qt5/PetStore/PetApiTests.cpp | 95 +-- .../petstore/cpp-qt5/PetStore/PetApiTests.h | 2 +- .../cpp-qt5/client/OAIApiResponse.cpp | 77 +- .../petstore/cpp-qt5/client/OAIApiResponse.h | 34 +- .../petstore/cpp-qt5/client/OAICategory.cpp | 58 +- .../petstore/cpp-qt5/client/OAICategory.h | 28 +- .../petstore/cpp-qt5/client/OAIHelpers.cpp | 766 ++++++------------ .../petstore/cpp-qt5/client/OAIHelpers.h | 128 ++- .../petstore/cpp-qt5/client/OAIModelFactory.h | 63 -- .../petstore/cpp-qt5/client/OAIObject.h | 49 +- .../petstore/cpp-qt5/client/OAIOrder.cpp | 115 ++- .../client/petstore/cpp-qt5/client/OAIOrder.h | 46 +- .../client/petstore/cpp-qt5/client/OAIPet.cpp | 148 ++-- .../client/petstore/cpp-qt5/client/OAIPet.h | 52 +- .../petstore/cpp-qt5/client/OAIPetApi.cpp | 190 ++--- .../petstore/cpp-qt5/client/OAIPetApi.h | 30 +- .../cpp-qt5/client/OAIQObjectWrapper.h | 35 - .../petstore/cpp-qt5/client/OAIStoreApi.cpp | 70 +- .../petstore/cpp-qt5/client/OAIStoreApi.h | 18 +- .../client/petstore/cpp-qt5/client/OAITag.cpp | 58 +- .../client/petstore/cpp-qt5/client/OAITag.h | 28 +- .../petstore/cpp-qt5/client/OAIUser.cpp | 166 ++-- .../client/petstore/cpp-qt5/client/OAIUser.h | 62 +- .../petstore/cpp-qt5/client/OAIUserApi.cpp | 130 +-- .../petstore/cpp-qt5/client/OAIUserApi.h | 24 +- .../client/petstore/cpp-qt5/client/client.pri | 4 +- .../server/src/models/OAIObject.h | 6 +- 45 files changed, 1766 insertions(+), 3001 deletions(-) create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java delete mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-client/QObjectWrapper.h.mustache delete mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-client/modelFactory.mustache delete mode 100644 samples/client/petstore/cpp-qt5/client/OAIModelFactory.h delete mode 100644 samples/client/petstore/cpp-qt5/client/OAIQObjectWrapper.h diff --git a/bin/cpp-qt5-petstore.sh b/bin/cpp-qt5-petstore.sh index 3ed26ff9fe8a..be1e8e774f97 100755 --- a/bin/cpp-qt5-petstore.sh +++ b/bin/cpp-qt5-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-qt5 -o samples/client/petstore/cpp-qt5 $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-qt5-client -o samples/client/petstore/cpp-qt5 $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/openapi3/cpp-qt5-petstore.sh b/bin/openapi3/cpp-qt5-petstore.sh index aa92aa3b5732..eebed3538adf 100755 --- a/bin/openapi3/cpp-qt5-petstore.sh +++ b/bin/openapi3/cpp-qt5-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g cpp-qt5 -o samples/client/petstore/cpp-qt5 $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g cpp-qt5-client -o samples/client/petstore/cpp-qt5 $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/security/cpp-qt5-petstore.sh b/bin/security/cpp-qt5-petstore.sh index 47ec7af45483..8e4bc70bc6ff 100755 --- a/bin/security/cpp-qt5-petstore.sh +++ b/bin/security/cpp-qt5-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g cpp-qt5 -o samples/client/petstore-security-test/cpp-qt5 $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g cpp-qt5-client -o samples/client/petstore-security-test/cpp-qt5 $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/windows/cpp-qt5-petstore.bat b/bin/windows/cpp-qt5-petstore.bat index 997c80ec0950..eb49309ca8da 100755 --- a/bin/windows/cpp-qt5-petstore.bat +++ b/bin/windows/cpp-qt5-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g cpp-qt5 -o samples\client\petstore\cpp-qt5 +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g cpp-qt5-client -o samples\client\petstore\cpp-qt5 java %JAVA_OPTS% -jar %executable% %ags% diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java new file mode 100644 index 000000000000..644e8553b375 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java @@ -0,0 +1,344 @@ +package org.openapitools.codegen.languages; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenParameter; +import org.openapitools.codegen.utils.ModelUtils; + +import io.swagger.v3.oas.models.media.ArraySchema; +import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.parser.util.SchemaTypeUtil; + +public class CppQt5AbstractCodegen extends AbstractCppCodegen implements CodegenConfig { + + protected final String PREFIX = "OAI"; + protected String apiVersion = "1.0.0"; + protected static final String CPP_NAMESPACE = "cppNamespace"; + protected static final String CPP_NAMESPACE_DESC = "C++ namespace (convention: name::space::for::api)."; + protected Set foundationClasses = new HashSet(); + protected String cppNamespace = "OpenAPI"; + protected Map namespaces = new HashMap(); + protected Set systemIncludes = new HashSet(); + + protected Set nonFrameworkPrimitives = new HashSet(); + + public CppQt5AbstractCodegen() { + super(); + // set modelNamePrefix as default for QHttpEngine Server + if (StringUtils.isEmpty(modelNamePrefix)) { + modelNamePrefix = PREFIX; + } + // CLI options + addOption(CPP_NAMESPACE, CPP_NAMESPACE_DESC, this.cppNamespace); + + /* + * Additional Properties. These values can be passed to the templates and + * are available in models, apis, and supporting files + */ + additionalProperties.put("apiVersion", apiVersion); + additionalProperties().put("prefix", PREFIX); + + // Write defaults namespace in properties so that it can be accessible in templates. + // At this point command line has not been parsed so if value is given + // in command line it will supersede this content + additionalProperties.put("cppNamespace", cppNamespace); + // CLI options + addOption(CPP_NAMESPACE, CPP_NAMESPACE_DESC, this.cppNamespace); + /* + * Language Specific Primitives. These types will not trigger imports by + * the client generator + */ + languageSpecificPrimitives = new HashSet( + Arrays.asList( + "bool", + "qint32", + "qint64", + "float", + "double") + ); + nonFrameworkPrimitives.addAll(languageSpecificPrimitives); + + foundationClasses.addAll( + Arrays.asList( + "QString", + "QDate", + "QDateTime", + "QByteArray") + ); + languageSpecificPrimitives.addAll(foundationClasses); + super.typeMapping = new HashMap(); + + typeMapping.put("date", "QDate"); + typeMapping.put("DateTime", "QDateTime"); + typeMapping.put("string", "QString"); + typeMapping.put("integer", "qint32"); + typeMapping.put("long", "qint64"); + typeMapping.put("boolean", "bool"); + typeMapping.put("array", "QList"); + typeMapping.put("map", "QMap"); + typeMapping.put("object", PREFIX + "Object"); + // mapped as "file" type for OAS 3.0 + typeMapping.put("ByteArray", "QByteArray"); + // UUID support - possible enhancement : use QUuid instead of QString. + // beware though that Serialization/de-serialization of QUuid does not + // come out of the box and will need to be sorted out (at least imply + // modifications on multiple templates) + typeMapping.put("UUID", "QString"); + typeMapping.put("file", "QIODevice"); + typeMapping.put("binary", "QIODevice"); + importMapping = new HashMap(); + namespaces = new HashMap(); + + systemIncludes.add("QString"); + systemIncludes.add("QList"); + systemIncludes.add("QMap"); + systemIncludes.add("QDate"); + systemIncludes.add("QDateTime"); + systemIncludes.add("QByteArray"); + systemIncludes.add("QIODevice"); + } + @Override + public void processOpts() { + super.processOpts(); + + if (additionalProperties.containsKey("cppNamespace")) { + cppNamespace = (String) additionalProperties.get("cppNamespace"); + } + + additionalProperties.put("cppNamespaceDeclarations", cppNamespace.split("\\::")); + if (additionalProperties.containsKey("modelNamePrefix")) { + typeMapping.put("object", modelNamePrefix + "Object"); + additionalProperties().put("prefix", modelNamePrefix); + } + } + + @Override + public String toModelImport(String name) { + if( name.isEmpty() ) { + return null; + } + + if (namespaces.containsKey(name)) { + return "using " + namespaces.get(name) + ";"; + } else if (systemIncludes.contains(name)) { + return "#include <" + name + ">"; + } else if(importMapping.containsKey(name)){ + return importMapping.get(name); + } + + String folder = modelPackage().replace("::", File.separator); + if (!folder.isEmpty()) + folder += File.separator; + + return "#include \"" + folder + name + ".h\""; + } + + /** + * Optional - type declaration. This is a String which is used by the templates to instantiate your + * types. There is typically special handling for different property types + * + * @return a string value used as the `dataType` field for model templates, `returnType` for api templates + */ + @Override + @SuppressWarnings("rawtypes") + public String getTypeDeclaration(Schema p) { + String openAPIType = getSchemaType(p); + + if (ModelUtils.isArraySchema(p)) { + ArraySchema ap = (ArraySchema) p; + Schema inner = ap.getItems(); + return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; + } else if (ModelUtils.isMapSchema(p)) { + Schema inner = ModelUtils.getAdditionalProperties(p); + return getSchemaType(p) + ""; + } else if (ModelUtils.isBinarySchema(p)) { + return getSchemaType(p) + "*"; + } else if (ModelUtils.isFileSchema(p)) { + return getSchemaType(p) + "*"; + } + if (foundationClasses.contains(openAPIType)) { + return openAPIType; + } else if (languageSpecificPrimitives.contains(openAPIType)) { + return toModelName(openAPIType); + } else { + return openAPIType; + } + } + + @Override + @SuppressWarnings("rawtypes") + public String toDefaultValue(Schema p) { + if (ModelUtils.isBooleanSchema(p)) { + return "false"; + } else if (ModelUtils.isDateSchema(p)) { + return "NULL"; + } else if (ModelUtils.isDateTimeSchema(p)) { + return "NULL"; + } else if (ModelUtils.isNumberSchema(p)) { + if (SchemaTypeUtil.FLOAT_FORMAT.equals(p.getFormat())) { + return "0.0f"; + } + return "0.0"; + } else if (ModelUtils.isIntegerSchema(p)) { + if (SchemaTypeUtil.INTEGER64_FORMAT.equals(p.getFormat())) { + return "0L"; + } + return "0"; + } else if (ModelUtils.isMapSchema(p)) { + Schema inner = ModelUtils.getAdditionalProperties(p); + return "QMap()"; + } else if (ModelUtils.isArraySchema(p)) { + ArraySchema ap = (ArraySchema) p; + Schema inner = ap.getItems(); + return "QList<" + getTypeDeclaration(inner) + ">()"; + } else if (ModelUtils.isStringSchema(p)) { + return "QString(\"\")"; + } else if (!StringUtils.isEmpty(p.get$ref())) { + return toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; + } + return "NULL"; + } + + @Override + public String toModelFilename(String name) { + return modelNamePrefix + initialCaps(name); + } + + /** + * Optional - OpenAPI type conversion. This is used to map OpenAPI types in a `Schema` into + * either language specific types via `typeMapping` or into complex models if there is not a mapping. + * + * @return a string value of the type or complex model for this property + */ + @Override + @SuppressWarnings("rawtypes") + public String getSchemaType(Schema p) { + String openAPIType = super.getSchemaType(p); + + String type = null; + if (typeMapping.containsKey(openAPIType)) { + type = typeMapping.get(openAPIType); + if (languageSpecificPrimitives.contains(type)) { + return toModelName(type); + } + if (foundationClasses.contains(type)) { + return type; + } + } else { + type = openAPIType; + } + return toModelName(type); + } + + @Override + public String toVarName(String name) { + // sanitize name + String varName = name; + varName = sanitizeName(name); + + // if it's all uppper case, convert to lower case + if (varName.matches("^[A-Z_]*$")) { + varName = varName.toLowerCase(Locale.ROOT); + } + + // camelize (lower first character) the variable name + // petId => pet_id + varName = org.openapitools.codegen.utils.StringUtils.underscore(varName); + + // for reserved word or word starting with number, append _ + if (isReservedWord(varName) || varName.matches("^\\d.*")) { + varName = escapeReservedWord(varName); + } + + return varName; + } + + @Override + public String toParamName(String name) { + return toVarName(name); + } + + @Override + public String getTypeDeclaration(String str) { + return str; + } + + @Override + protected boolean needToImport(String type) { + return StringUtils.isNotBlank(type) && !defaultIncludes.contains(type) + && !nonFrameworkPrimitives.contains(type); + } + + + @Override + @SuppressWarnings("unchecked") + public Map postProcessOperations(Map objs) { + Map objectMap = (Map) objs.get("operations"); + List operations = (List) objectMap.get("operation"); + + List> imports = (List>) objs.get("imports"); + for (CodegenOperation operation : operations) { + // Check all return parameter baseType if there is a necessity to include, include it if not + // already done + if (operation.returnBaseType != null && needToImport(operation.returnBaseType)) { + if(!isIncluded(operation.returnBaseType, imports)) { + imports.add(createMapping("import", operation.returnBaseType)); + } + } + List params = new ArrayList(); + if (operation.allParams != null)params.addAll(operation.allParams); + + // Check all parameter baseType if there is a necessity to include, include it if not + // already done + for(CodegenParameter param : params) { + if(param.isPrimitiveType && needToImport(param.baseType)) { + if(!isIncluded(param.baseType, imports)) { + imports.add(createMapping("import", param.baseType)); + } + } + } + if (operation.pathParams != null) { + // We use QString to pass path params, add it to include + if(!isIncluded("QString", imports)) { + imports.add(createMapping("import", "QString")); + } + } + } + if(isIncluded("QMap", imports)) { + // Maps uses QString as key + if(!isIncluded("QString", imports)) { + imports.add(createMapping("import", "QString")); + } + } + return objs; + } + + private Map createMapping(String key, String value) { + Map customImport = new HashMap(); + customImport.put(key, toModelImport(value)); + return customImport; + } + + private boolean isIncluded(String type, List> imports) { + boolean included = false; + String inclStr = toModelImport(type); + for (Map importItem : imports) { + if(importItem.containsValue(inclStr)) { + included = true; + break; + } + } + return included; + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java index e033b7c44b89..47e207cf584c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java @@ -17,42 +17,17 @@ package org.openapitools.codegen.languages; -import io.swagger.v3.oas.models.media.ArraySchema; -import io.swagger.v3.oas.models.media.Schema; -import io.swagger.v3.parser.util.SchemaTypeUtil; -import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CodegenConfig; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; -import org.openapitools.codegen.utils.ModelUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.File; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenConfig { - private static final Logger LOGGER = LoggerFactory.getLogger(CppQt5ClientCodegen.class); - public static final String CPP_NAMESPACE = "cppNamespace"; - public static final String CPP_NAMESPACE_DESC = "C++ namespace (convention: name::space::for::api)."; +public class CppQt5ClientCodegen extends CppQt5AbstractCodegen implements CodegenConfig { public static final String OPTIONAL_PROJECT_FILE_DESC = "Generate client.pri."; - - protected final String PREFIX = "OAI"; - protected Set foundationClasses = new HashSet(); // source folder where to write the files protected String sourceFolder = "client"; - protected String apiVersion = "1.0.0"; - protected Map namespaces = new HashMap(); - protected Set systemIncludes = new HashSet(); - protected String cppNamespace = "OpenAPI"; protected boolean optionalProjectFileFlag = true; public CppQt5ClientCodegen() { @@ -61,11 +36,6 @@ public CppQt5ClientCodegen() { // set the output folder here outputFolder = "generated-code/qt5cpp"; - // set modelNamePrefix as default for QT5CPP - if (StringUtils.isEmpty(modelNamePrefix)) { - modelNamePrefix = PREFIX; - } - /* * Models. You can write model files using the modelTemplateFiles map. * if you want to create one template for file, you can do so here. @@ -99,106 +69,35 @@ public CppQt5ClientCodegen() { */ embeddedTemplateDir = templateDir = "cpp-qt5-client"; - // CLI options - addOption(CPP_NAMESPACE, CPP_NAMESPACE_DESC, this.cppNamespace); addSwitch(CodegenConstants.OPTIONAL_PROJECT_FILE, OPTIONAL_PROJECT_FILE_DESC, this.optionalProjectFileFlag); - - /* - * Additional Properties. These values can be passed to the templates and - * are available in models, apis, and supporting files - */ - additionalProperties.put("apiVersion", apiVersion); - additionalProperties().put("prefix", PREFIX); - - // Write defaults namespace in properties so that it can be accessible in templates. - // At this point command line has not been parsed so if value is given - // in command line it will superseed this content - additionalProperties.put("cppNamespace", cppNamespace); - - /* - * Language Specific Primitives. These types will not trigger imports by - * the client generator - */ - languageSpecificPrimitives = new HashSet( - Arrays.asList( - "bool", - "qint32", - "qint64", - "float", - "double") - ); - supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, PREFIX + "Helpers.h")); supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder, PREFIX + "Helpers.cpp")); supportingFiles.add(new SupportingFile("HttpRequest.h.mustache", sourceFolder, PREFIX + "HttpRequest.h")); supportingFiles.add(new SupportingFile("HttpRequest.cpp.mustache", sourceFolder, PREFIX + "HttpRequest.cpp")); - supportingFiles.add(new SupportingFile("modelFactory.mustache", sourceFolder, PREFIX + "ModelFactory.h")); supportingFiles.add(new SupportingFile("object.mustache", sourceFolder, PREFIX + "Object.h")); - supportingFiles.add(new SupportingFile("QObjectWrapper.h.mustache", sourceFolder, PREFIX + "QObjectWrapper.h")); if (optionalProjectFileFlag) { supportingFiles.add(new SupportingFile("Project.mustache", sourceFolder, "client.pri")); } - - super.typeMapping = new HashMap(); - - typeMapping.put("date", "QDate"); - typeMapping.put("DateTime", "QDateTime"); - typeMapping.put("string", "QString"); - typeMapping.put("integer", "qint32"); - typeMapping.put("long", "qint64"); - typeMapping.put("boolean", "bool"); - typeMapping.put("array", "QList"); - typeMapping.put("map", "QMap"); - typeMapping.put("file", "OAIHttpRequestInputFileElement"); - typeMapping.put("object", PREFIX + "Object"); - // mapped as "file" type for OAS 3.0 - typeMapping.put("binary", "OAIHttpRequestInputFileElement"); - typeMapping.put("ByteArray", "QByteArray"); - // UUID support - possible enhancement : use QUuid instead of QString. - // beware though that Serialisation/deserialisation of QUuid does not - // come out of the box and will need to be sorted out (at least imply - // modifications on multiple templates) - typeMapping.put("UUID", "QString"); - - importMapping = new HashMap(); - - importMapping.put("OAIHttpRequestInputFileElement", "#include \"" + PREFIX + "HttpRequest.h\""); - - namespaces = new HashMap(); - - foundationClasses.add("QString"); - - systemIncludes.add("QString"); - systemIncludes.add("QList"); - systemIncludes.add("QMap"); - systemIncludes.add("QDate"); - systemIncludes.add("QDateTime"); - systemIncludes.add("QByteArray"); + typeMapping.put("file", PREFIX + "HttpRequestInputFileElement"); + typeMapping.put("binary", PREFIX +"HttpRequestInputFileElement"); + importMapping.put(PREFIX + "HttpRequestInputFileElement", "#include \"" + PREFIX + "HttpRequest.h\""); } @Override public void processOpts() { super.processOpts(); - if (additionalProperties.containsKey("cppNamespace")) { - cppNamespace = (String) additionalProperties.get("cppNamespace"); - } - - additionalProperties.put("cppNamespaceDeclarations", cppNamespace.split("\\::")); if (additionalProperties.containsKey("modelNamePrefix")) { supportingFiles.clear(); supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder, modelNamePrefix + "Helpers.h")); supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder, modelNamePrefix + "Helpers.cpp")); supportingFiles.add(new SupportingFile("HttpRequest.h.mustache", sourceFolder, modelNamePrefix + "HttpRequest.h")); supportingFiles.add(new SupportingFile("HttpRequest.cpp.mustache", sourceFolder, modelNamePrefix + "HttpRequest.cpp")); - supportingFiles.add(new SupportingFile("modelFactory.mustache", sourceFolder, modelNamePrefix + "ModelFactory.h")); supportingFiles.add(new SupportingFile("object.mustache", sourceFolder, modelNamePrefix + "Object.h")); - supportingFiles.add(new SupportingFile("QObjectWrapper.h.mustache", sourceFolder, modelNamePrefix + "QObjectWrapper.h")); - typeMapping.put("object", modelNamePrefix + "Object"); typeMapping.put("file", modelNamePrefix + "HttpRequestInputFileElement"); - importMapping.put("SWGHttpRequestInputFileElement", "#include \"" + modelNamePrefix + "HttpRequest.h\""); - additionalProperties().put("prefix", modelNamePrefix); + typeMapping.put("binary", modelNamePrefix + "HttpRequestInputFileElement"); + importMapping.put(modelNamePrefix + "HttpRequestInputFileElement", "#include \"" + modelNamePrefix + "HttpRequest.h\""); } if (additionalProperties.containsKey(CodegenConstants.OPTIONAL_PROJECT_FILE)) { @@ -227,7 +126,7 @@ public CodegenType getTag() { */ @Override public String getName() { - return "cpp-qt5"; + return "cpp-qt5-client"; } /** @@ -241,21 +140,6 @@ public String getHelp() { return "Generates a Qt5 C++ client library."; } - @Override - public String toModelImport(String name) { - if (namespaces.containsKey(name)) { - return "using " + namespaces.get(name) + ";"; - } else if (systemIncludes.contains(name)) { - return "#include <" + name + ">"; - } - - String folder = modelPackage().replace("::", File.separator); - if (!folder.isEmpty()) - folder += File.separator; - - return "#include \"" + folder + toModelName(name) + ".h\""; - } - /** * Location to write model files. You can use the modelPackage() as defined when the class is * instantiated @@ -274,134 +158,12 @@ public String apiFileFolder() { return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace("::", File.separator); } - @Override - public String toModelFilename(String name) { - return initialCaps(toModelName(name)); - } - @Override public String toApiFilename(String name) { return modelNamePrefix + initialCaps(name) + "Api"; } - /** - * Optional - type declaration. This is a String which is used by the templates to instantiate your - * types. There is typically special handling for different property types - * - * @return a string value used as the `dataType` field for model templates, `returnType` for api templates - */ - @Override - public String getTypeDeclaration(Schema p) { - String openAPIType = getSchemaType(p); - - if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); - return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">*"; - } else if (ModelUtils.isMapSchema(p)) { - Schema inner = ModelUtils.getAdditionalProperties(p); - return getSchemaType(p) + "*"; - } - if (foundationClasses.contains(openAPIType)) { - return openAPIType + "*"; - } else if (languageSpecificPrimitives.contains(openAPIType)) { - return toModelName(openAPIType); - } else { - return openAPIType + "*"; - } - } - - @Override - public String toDefaultValue(Schema p) { - if (ModelUtils.isBooleanSchema(p)) { - return "false"; - } else if (ModelUtils.isDateSchema(p)) { - return "NULL"; - } else if (ModelUtils.isDateTimeSchema(p)) { - return "NULL"; - } else if (ModelUtils.isNumberSchema(p)) { - if (SchemaTypeUtil.FLOAT_FORMAT.equals(p.getFormat())) { - return "0.0f"; - } - return "0.0"; - } else if (ModelUtils.isIntegerSchema(p)) { - if (SchemaTypeUtil.INTEGER64_FORMAT.equals(p.getFormat())) { - return "0L"; - } - return "0"; - } else if (ModelUtils.isMapSchema(p)) { - Schema inner = ModelUtils.getAdditionalProperties(p); - return "new QMap()"; - } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); - return "new QList<" + getTypeDeclaration(inner) + ">()"; - } else if (ModelUtils.isStringSchema(p)) { - return "new QString(\"\")"; - } else if (!StringUtils.isEmpty(p.get$ref())) { - return "new " + toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; - } - return "NULL"; - } - - /** - * Optional - OpenAPI type conversion. This is used to map OpenAPI types in a `Schema` into - * either language specific types via `typeMapping` or into complex models if there is not a mapping. - * - * @return a string value of the type or complex model for this property - */ - @Override - public String getSchemaType(Schema p) { - String openAPIType = super.getSchemaType(p); - - String type = null; - if (typeMapping.containsKey(openAPIType)) { - type = typeMapping.get(openAPIType); - if (languageSpecificPrimitives.contains(type)) { - return toModelName(type); - } - if (foundationClasses.contains(type)) { - return type; - } - } else { - type = openAPIType; - } - return toModelName(type); - } - - @Override - public String toVarName(String name) { - // sanitize name - String varName = sanitizeName(name); - - // if it's all uppper case, convert to lower case - if (varName.matches("^[A-Z_]*$")) { - varName = varName.toLowerCase(Locale.ROOT); - } - - // camelize (lower first character) the variable name - // petId => pet_id - varName = org.openapitools.codegen.utils.StringUtils.underscore(varName); - - // for reserved word or word starting with number, append _ - if (isReservedWord(varName) || varName.matches("^\\d.*")) { - varName = escapeReservedWord(varName); - } - - return varName; - } - - @Override - public String toParamName(String name) { - return toVarName(name); - } - public void setOptionalProjectFileFlag(boolean flag) { this.optionalProjectFileFlag = flag; } - - @Override - public String getTypeDeclaration(String str) { - return str; - } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java index f8e2f760999e..202e9874411a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5QHttpEngineServerCodegen.java @@ -17,61 +17,28 @@ package org.openapitools.codegen.languages; -import io.swagger.v3.oas.models.media.ArraySchema; -import io.swagger.v3.oas.models.media.Schema; -import io.swagger.v3.parser.util.SchemaTypeUtil; -import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CodegenConfig; import org.openapitools.codegen.CodegenType; -import org.openapitools.codegen.CodegenOperation; -import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.SupportingFile; -import org.openapitools.codegen.utils.ModelUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -public class CppQt5QHttpEngineServerCodegen extends AbstractCppCodegen implements CodegenConfig { - @SuppressWarnings("unused") - private static final Logger LOGGER = LoggerFactory.getLogger(CppQt5QHttpEngineServerCodegen.class); - public static final String CPP_NAMESPACE = "cppNamespace"; - public static final String CPP_NAMESPACE_DESC = "C++ namespace (convention: name::space::for::api)."; +public class CppQt5QHttpEngineServerCodegen extends CppQt5AbstractCodegen implements CodegenConfig { - protected final String PREFIX = "OAI"; protected final String SRC_DIR = "/src"; protected final String MODEL_DIR = "/src/models"; protected final String APIHANDLER_DIR = "/src/handlers"; protected final String APIREQUEST_DIR = "/src/requests"; - protected Set foundationClasses = new HashSet(); + // source folder where to write the files protected String sourceFolder = "server"; - protected String apiVersion = "1.0.0"; - protected Map namespaces = new HashMap(); - protected Set systemIncludes = new HashSet(); - protected String cppNamespace = "OpenAPI"; - protected Set nonFrameworkPrimitives = new HashSet(); + public CppQt5QHttpEngineServerCodegen() { super(); // set the output folder here outputFolder = "generated-code/cpp-qt5-qhttpengine-server"; - // set modelNamePrefix as default for QHttpEngine Server - if (StringUtils.isEmpty(modelNamePrefix)) { - modelNamePrefix = PREFIX; - } - /* * Models. You can write model files using the modelTemplateFiles map. * if you want to create one template for file, you can do so here. @@ -112,45 +79,7 @@ public CppQt5QHttpEngineServerCodegen() { * will use the resource stream to attempt to read the templates. */ embeddedTemplateDir = templateDir = "cpp-qt5-qhttpengine-server"; - - // CLI options - addOption(CPP_NAMESPACE, CPP_NAMESPACE_DESC, this.cppNamespace); - - /* - * Additional Properties. These values can be passed to the templates and - * are available in models, apis, and supporting files - */ - additionalProperties.put("apiVersion", apiVersion); - additionalProperties().put("prefix", PREFIX); - - // Write defaults namespace in properties so that it can be accessible in templates. - // At this point command line has not been parsed so if value is given - // in command line it will supersede this content - additionalProperties.put("cppNamespace", cppNamespace); - - /* - * Language Specific Primitives. These types will not trigger imports by - * the client generator - */ - languageSpecificPrimitives = new HashSet( - Arrays.asList( - "bool", - "qint32", - "qint64", - "float", - "double") - ); - nonFrameworkPrimitives.addAll(languageSpecificPrimitives); - - foundationClasses.addAll( - Arrays.asList( - "QString", - "QDate", - "QDateTime", - "QByteArray") - ); - languageSpecificPrimitives.addAll(foundationClasses); - + supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.h")); supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.cpp")); supportingFiles.add(new SupportingFile("object.mustache", sourceFolder + MODEL_DIR, PREFIX + "Object.h")); @@ -166,49 +95,12 @@ public CppQt5QHttpEngineServerCodegen() { supportingFiles.add(new SupportingFile("Dockerfile.mustache", sourceFolder, "Dockerfile")); supportingFiles.add(new SupportingFile("LICENSE.txt.mustache", sourceFolder, "LICENSE.txt")); - super.typeMapping = new HashMap(); - - typeMapping.put("date", "QDate"); - typeMapping.put("DateTime", "QDateTime"); - typeMapping.put("string", "QString"); - typeMapping.put("integer", "qint32"); - typeMapping.put("long", "qint64"); - typeMapping.put("boolean", "bool"); - typeMapping.put("array", "QList"); - typeMapping.put("map", "QMap"); - typeMapping.put("object", PREFIX + "Object"); - // mapped as "file" type for OAS 3.0 - typeMapping.put("ByteArray", "QByteArray"); - // UUID support - possible enhancement : use QUuid instead of QString. - // beware though that Serialization/deserialization of QUuid does not - // come out of the box and will need to be sorted out (at least imply - // modifications on multiple templates) - typeMapping.put("UUID", "QString"); - typeMapping.put("file", "QIODevice"); - typeMapping.put("binary", "QIODevice"); - importMapping = new HashMap(); - namespaces = new HashMap(); - - - - systemIncludes.add("QString"); - systemIncludes.add("QList"); - systemIncludes.add("QMap"); - systemIncludes.add("QDate"); - systemIncludes.add("QDateTime"); - systemIncludes.add("QByteArray"); - systemIncludes.add("QIODevice"); } @Override public void processOpts() { super.processOpts(); - if (additionalProperties.containsKey("cppNamespace")) { - cppNamespace = (String) additionalProperties.get("cppNamespace"); - } - - additionalProperties.put("cppNamespaceDeclarations", cppNamespace.split("\\::")); if (additionalProperties.containsKey("modelNamePrefix")) { supportingFiles.clear(); supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "Helpers.h")); @@ -224,9 +116,6 @@ public void processOpts() { supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt")); supportingFiles.add(new SupportingFile("Dockerfile.mustache", sourceFolder, "Dockerfile")); supportingFiles.add(new SupportingFile("LICENSE.txt.mustache", sourceFolder, "LICENSE.txt")); - - typeMapping.put("object", modelNamePrefix + "Object"); - additionalProperties().put("prefix", modelNamePrefix); } } @@ -262,25 +151,6 @@ public String getName() { public String getHelp() { return "Generates a Qt5 C++ Server using the QHTTPEngine HTTP Library."; } - - @Override - public String toModelImport(String name) { - if( name.isEmpty() ) { - return null; - } - - if (namespaces.containsKey(name)) { - return "using " + namespaces.get(name) + ";"; - } else if (systemIncludes.contains(name)) { - return "#include <" + name + ">"; - } - - String folder = modelPackage().replace("::", File.separator); - if (!folder.isEmpty()) - folder += File.separator; - - return "#include \"" + folder + name + ".h\""; - } /** * Location to write model files. You can use the modelPackage() as defined when the class is @@ -304,11 +174,6 @@ private String requestFileFolder() { return outputFolder + "/" + sourceFolder + APIREQUEST_DIR + "/" + apiPackage().replace("::", File.separator); } - @Override - public String toModelFilename(String name) { - return modelNamePrefix + initialCaps(name); - } - @Override public String apiFilename(String templateName, String tag) { String result = super.apiFilename(templateName, tag); @@ -325,195 +190,4 @@ public String toApiFilename(String name) { return modelNamePrefix + initialCaps(name) + "ApiHandler"; } - /** - * Optional - type declaration. This is a String which is used by the templates to instantiate your - * types. There is typically special handling for different property types - * - * @return a string value used as the `dataType` field for model templates, `returnType` for api templates - */ - @Override - @SuppressWarnings("rawtypes") - public String getTypeDeclaration(Schema p) { - String openAPIType = getSchemaType(p); - - if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); - return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; - } else if (ModelUtils.isMapSchema(p)) { - Schema inner = ModelUtils.getAdditionalProperties(p); - return getSchemaType(p) + ""; - } else if (ModelUtils.isBinarySchema(p)) { - return getSchemaType(p) + "*"; - } else if (ModelUtils.isFileSchema(p)) { - return getSchemaType(p) + "*"; - } - if (foundationClasses.contains(openAPIType)) { - return openAPIType; - } else if (languageSpecificPrimitives.contains(openAPIType)) { - return toModelName(openAPIType); - } else { - return openAPIType; - } - } - - @Override - @SuppressWarnings("rawtypes") - public String toDefaultValue(Schema p) { - if (ModelUtils.isBooleanSchema(p)) { - return "false"; - } else if (ModelUtils.isDateSchema(p)) { - return "NULL"; - } else if (ModelUtils.isDateTimeSchema(p)) { - return "NULL"; - } else if (ModelUtils.isNumberSchema(p)) { - if (SchemaTypeUtil.FLOAT_FORMAT.equals(p.getFormat())) { - return "0.0f"; - } - return "0.0"; - } else if (ModelUtils.isIntegerSchema(p)) { - if (SchemaTypeUtil.INTEGER64_FORMAT.equals(p.getFormat())) { - return "0L"; - } - return "0"; - } else if (ModelUtils.isMapSchema(p)) { - Schema inner = ModelUtils.getAdditionalProperties(p); - return "QMap()"; - } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); - return "QList<" + getTypeDeclaration(inner) + ">()"; - } else if (ModelUtils.isStringSchema(p)) { - return "QString(\"\")"; - } else if (!StringUtils.isEmpty(p.get$ref())) { - return toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; - } - return "NULL"; - } - - /** - * Optional - OpenAPI type conversion. This is used to map OpenAPI types in a `Schema` into - * either language specific types via `typeMapping` or into complex models if there is not a mapping. - * - * @return a string value of the type or complex model for this property - */ - @Override - @SuppressWarnings("rawtypes") - public String getSchemaType(Schema p) { - String openAPIType = super.getSchemaType(p); - - String type = null; - if (typeMapping.containsKey(openAPIType)) { - type = typeMapping.get(openAPIType); - if (languageSpecificPrimitives.contains(type)) { - return toModelName(type); - } - if (foundationClasses.contains(type)) { - return type; - } - } else { - type = openAPIType; - } - return toModelName(type); - } - - @Override - public String toVarName(String name) { - // sanitize name - String varName = name; - varName = sanitizeName(name); - - // if it's all uppper case, convert to lower case - if (varName.matches("^[A-Z_]*$")) { - varName = varName.toLowerCase(Locale.ROOT); - } - - // camelize (lower first character) the variable name - // petId => pet_id - varName = org.openapitools.codegen.utils.StringUtils.underscore(varName); - - // for reserved word or word starting with number, append _ - if (isReservedWord(varName) || varName.matches("^\\d.*")) { - varName = escapeReservedWord(varName); - } - - return varName; - } - - @Override - public String toParamName(String name) { - return toVarName(name); - } - - @Override - public String getTypeDeclaration(String str) { - return str; - } - - @Override - protected boolean needToImport(String type) { - return StringUtils.isNotBlank(type) && !defaultIncludes.contains(type) - && !nonFrameworkPrimitives.contains(type); - } - - @Override - @SuppressWarnings("unchecked") - public Map postProcessOperations(Map objs) { - Map objectMap = (Map) objs.get("operations"); - List operations = (List) objectMap.get("operation"); - - List> imports = (List>) objs.get("imports"); - for (CodegenOperation operation : operations) { - // Check all return parameter baseType if there is a necessity to include, include it if not - // already done - if (operation.returnBaseType != null && needToImport(operation.returnBaseType)) { - if(!isIncluded(operation.returnBaseType, imports)) { - imports.add(createMapping("import", operation.returnBaseType)); - } - } - List params = new ArrayList(); - if (operation.allParams != null)params.addAll(operation.allParams); - - // Check all parameter baseType if there is a necessity to include, include it if not - // already done - for(CodegenParameter param : params) { - if(param.isPrimitiveType && needToImport(param.baseType)) { - if(!isIncluded(param.baseType, imports)) { - imports.add(createMapping("import", param.baseType)); - } - } - } - if (operation.pathParams != null) { - // We use QString to pass path params, add it to include - if(!isIncluded("QString", imports)) { - imports.add(createMapping("import", "QString")); - } - } - } - if(isIncluded("QMap", imports)) { - // Maps uses QString as key - if(!isIncluded("QString", imports)) { - imports.add(createMapping("import", "QString")); - } - } - return objs; - } - - public Map createMapping(String key, String value) { - Map customImport = new HashMap(); - customImport.put(key, toModelImport(value)); - return customImport; - } - - private boolean isIncluded(String type, List> imports) { - boolean included = false; - String inclStr = toModelImport(type); - for (Map importItem : imports) { - if(importItem.containsValue(inclStr)) { - included = true; - break; - } - } - return included; - } } diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache index dac7276b98cd..72e0aea1456a 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache @@ -18,9 +18,7 @@ HEADERS += \ # Others $${PWD}/{{prefix}}Helpers.h \ $${PWD}/{{prefix}}HttpRequest.h \ - $${PWD}/{{prefix}}ModelFactory.h \ - $${PWD}/{{prefix}}Object.h \ - $${PWD}/{{prefix}}QObjectWrapper.h + $${PWD}/{{prefix}}Object.h SOURCES += \ # Models diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/QObjectWrapper.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/QObjectWrapper.h.mustache deleted file mode 100644 index efd71407777b..000000000000 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/QObjectWrapper.h.mustache +++ /dev/null @@ -1,28 +0,0 @@ -{{>licenseInfo}} -#ifndef {{prefix}}_QOBJECT_WRAPPER_H -#define {{prefix}}_QOBJECT_WRAPPER_H - -#include - -{{#cppNamespaceDeclarations}} -namespace {{this}} { -{{/cppNamespaceDeclarations}} - - template - class {{prefix}}QObjectWrapper : public QObject { - public: - {{prefix}}QObjectWrapper(ObjectPtrT ptr){ - data = ptr; - } - ~{{prefix}}QObjectWrapper(){ - delete data; - } - private : - ObjectPtrT data; - }; - -{{#cppNamespaceDeclarations}} -} -{{/cppNamespaceDeclarations}} - -#endif // {{prefix}}_QOBJECT_WRAPPER_H \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache index 52891ab59513..2ecf10a6dda5 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache @@ -1,8 +1,6 @@ {{>licenseInfo}} #include "{{classname}}.h" #include "{{prefix}}Helpers.h" -#include "{{prefix}}ModelFactory.h" -#include "{{prefix}}QObjectWrapper.h" #include #include @@ -11,9 +9,13 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} -{{classname}}::{{classname}}() {} +{{classname}}::{{classname}}() { -{{classname}}::~{{classname}}() {} +} + +{{classname}}::~{{classname}}() { + +} {{classname}}::{{classname}}(QString host, QString basePath) { this->host = host; @@ -26,33 +28,28 @@ void {{classname}}::{{nickname}}({{#allParams}}{{{dataType}}}{{#isBodyParam}}&{{/isBodyParam}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("{{{path}}}"); - {{#pathParams}} - QString {{paramName}}PathParam("{"); {{paramName}}PathParam.append("{{baseName}}").append("}"); - fullPath.replace({{paramName}}PathParam, stringValue({{paramName}})); + QString {{paramName}}PathParam("{"); + {{paramName}}PathParam.append("{{baseName}}").append("}"); + fullPath.replace({{paramName}}PathParam, ::{{cppNamespace}}::toStringValue({{paramName}})); {{/pathParams}} - - {{#queryParams}} - {{^collectionFormat}} + {{#queryParams}}{{^collectionFormat}} if (fullPath.indexOf("?") > 0) fullPath.append("&"); else fullPath.append("?"); fullPath.append(QUrl::toPercentEncoding("{{baseName}}")) .append("=") - .append(QUrl::toPercentEncoding(stringValue({{paramName}}))); - {{/collectionFormat}} - - {{#collectionFormat}} - - if ({{{paramName}}}->size() > 0) { + .append(QUrl::toPercentEncoding(::{{cppNamespace}}::toStringValue({{paramName}}))); + {{/collectionFormat}}{{#collectionFormat}} + if ({{{paramName}}}.size() > 0) { if (QString("{{collectionFormat}}").indexOf("multi") == 0) { - foreach({{{baseType}}} t, *{{paramName}}) { + foreach({{{baseType}}} t, {{paramName}}) { if (fullPath.indexOf("?") > 0) fullPath.append("&"); else fullPath.append("?"); - fullPath.append("{{{baseName}}}=").append(stringValue(t)); + fullPath.append("{{{baseName}}}=").append(::{{cppNamespace}}::toStringValue(t)); } } else if (QString("{{collectionFormat}}").indexOf("ssv") == 0) { @@ -62,11 +59,11 @@ void fullPath.append("?"); fullPath.append("{{baseName}}="); qint32 count = 0; - foreach({{{baseType}}} t, *{{paramName}}) { + foreach({{{baseType}}} t, {{paramName}}) { if (count > 0) { fullPath.append(" "); } - fullPath.append(stringValue(t)); + fullPath.append(::{{cppNamespace}}::toStringValue(t)); } } else if (QString("{{collectionFormat}}").indexOf("tsv") == 0) { @@ -76,43 +73,32 @@ void fullPath.append("?"); fullPath.append("{{baseName}}="); qint32 count = 0; - foreach({{{baseType}}} t, *{{paramName}}) { + foreach({{{baseType}}} t, {{paramName}}) { if (count > 0) { fullPath.append("\t"); } - fullPath.append(stringValue(t)); + fullPath.append(::{{cppNamespace}}::toStringValue(t)); } } } - - {{/collectionFormat}} - {{/queryParams}} - + {{/collectionFormat}}{{/queryParams}} {{prefix}}HttpRequestWorker *worker = new {{prefix}}HttpRequestWorker(); {{prefix}}HttpRequestInput input(fullPath, "{{httpMethod}}"); - {{#formParams}} if ({{paramName}} != nullptr) { - {{^isFile}}input.add_var("{{baseName}}", *{{paramName}});{{/isFile}}{{#isFile}}input.add_file("{{baseName}}", (*{{paramName}}).local_filename, (*{{paramName}}).request_filename, (*{{paramName}}).mime_type);{{/isFile}} + {{^isFile}}input.add_var("{{baseName}}", {{paramName}});{{/isFile}}{{#isFile}}input.add_file("{{baseName}}", (*{{paramName}}).local_filename, (*{{paramName}}).request_filename, (*{{paramName}}).mime_type);{{/isFile}} } - {{/formParams}} - - {{#bodyParams}} - {{#isContainer}} - QJsonObject {{paramName}}_jobj; - toJsonArray((QList*){{paramName}}, {{paramName}}_jobj, QString("body"), QString("{{prefix}}User*")); - - QJsonDocument doc({{paramName}}_jobj); + {{/formParams}}{{#bodyParams}} + {{#isContainer}}{{#isListContainer}} + QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toArray());{{/isListContainer}}{{#isMapContainer}} + QJsonDocument doc(::{{cppNamespace}}::toJsonValue({{paramName}}).toObject());{{/isMapContainer}} QByteArray bytes = doc.toJson(); - input.request_body.append(bytes); - {{/isContainer}} - {{^isContainer}}{{#isString}} - QString output(*{{paramName}});{{/isString}}{{#isByteArray}}QString output(*{{paramName}});{{/isByteArray}}{{^isString}}{{^isByteArray}} + {{/isContainer}}{{^isContainer}}{{#isString}} + QString output({{paramName}});{{/isString}}{{#isByteArray}}QString output({{paramName}});{{/isByteArray}}{{^isString}}{{^isByteArray}} QString output = {{paramName}}.asJson();{{/isByteArray}}{{/isString}} input.request_body.append(output); {{/isContainer}}{{/bodyParams}} - {{#headerParams}} if ({{paramName}} != nullptr) { input.headers.insert("{{baseName}}", "{{paramName}}"); @@ -143,59 +129,41 @@ void else { msg = "Error: " + worker->error_str; } - {{#returnType}} {{#isListContainer}} - {{{returnType}}} output = {{{defaultResponse}}}; + {{{returnType}}} output; QString json(worker->response); QByteArray array (json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonArray jsonArray = doc.array(); - auto wrapper = new {{prefix}}QObjectWrapper<{{{returnType}}}> (output); - wrapper->deleteLater(); foreach(QJsonValue obj, jsonArray) { - {{{returnBaseType}}}* o = new {{returnBaseType}}(); - QJsonObject jv = obj.toObject(); - QJsonObject * ptr = (QJsonObject*)&jv; - o->fromJsonObject(*ptr); - auto objwrapper = new {{prefix}}QObjectWrapper<{{{returnBaseType}}}*> (o); - objwrapper->deleteLater(); - output->append(o); + {{{returnBaseType}}} val; + ::{{cppNamespace}}::fromJsonValue(val, obj); + output.append(val); } {{/isListContainer}} {{^isListContainer}} {{^isMapContainer}} {{#returnTypeIsPrimitive}} - {{{returnType}}} output; // TODO add primitive output support - {{#isByteArray}}auto wrapper = new {{prefix}}QObjectWrapper<{{{returnType}}}> (output); - wrapper->deleteLater();{{/isByteArray}} - {{#isDateTime}}auto wrapper = new {{prefix}}QObjectWrapper<{{{returnType}}}> (output); - wrapper->deleteLater();{{/isDateTime}} - {{#isDate}}auto wrapper = new {{prefix}}QObjectWrapper<{{{returnType}}}> (output); - wrapper->deleteLater();{{/isDate}} - {{#isString}}auto wrapper = new {{prefix}}QObjectWrapper<{{{returnType}}}> (output); - wrapper->deleteLater();{{/isString}} + {{{returnType}}} output; + ::{{cppNamespace}}::fromStringValue(QString(worker->response), output); {{/returnTypeIsPrimitive}} {{/isMapContainer}} {{#isMapContainer}} - {{{returnType}}} output = {{{defaultResponse}}}; + {{{returnType}}} output; QString json(worker->response); QByteArray array (json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject obj = doc.object(); - foreach(QString key, obj.keys()) { {{returnBaseType}} val; - setValue(&val, obj[key], "{{returnBaseType}}", QString()); - output->insert(key, val); + ::{{cppNamespace}}::fromJsonValue(val, obj[key]); + output.insert(key, val); } {{/isMapContainer}} {{^isMapContainer}} {{^returnTypeIsPrimitive}} - QString json(worker->response); - {{{returnType}}} output = static_cast<{{{returnType}}}>(create(json, QString("{{{returnBaseType}}}"))); - auto wrapper = new {{prefix}}QObjectWrapper<{{{returnType}}}> (output); - wrapper->deleteLater(); + {{{returnType}}} output(QString(worker->response)); {{/returnTypeIsPrimitive}} {{/isMapContainer}} {{/isListContainer}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache index b992c16c1d12..2023c06406fe 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache @@ -1,6 +1,6 @@ {{>licenseInfo}} -#ifndef _{{prefix}}_{{classname}}_H_ -#define _{{prefix}}_{{classname}}_H_ +#ifndef {{prefix}}_{{classname}}_H +#define {{prefix}}_{{classname}}_H #include "{{prefix}}HttpRequest.h" diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache index ca5f9116742f..afd728b78c98 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache @@ -1,576 +1,280 @@ {{>licenseInfo}} +#include #include "{{prefix}}Helpers.h" -#include "{{prefix}}ModelFactory.h" #include "{{prefix}}Object.h" -#include -#include -#include -#include - {{#cppNamespaceDeclarations}} namespace {{this}} { {{/cppNamespaceDeclarations}} -void -setValue(void* value, QJsonValue obj, QString type, QString complexType) { - if((value == nullptr) || (obj.isUndefined())) { - // can't set value with a null pointer - return; - } - if(QStringLiteral("bool").compare(type) == 0) { - bool * val = static_cast(value); - *val = obj.toBool(); - } - else if(QStringLiteral("qint32").compare(type) == 0) { - qint32 *val = static_cast(value); - *val = obj.toInt(); - } - else if(QStringLiteral("qint64").compare(type) == 0) { - qint64 *val = static_cast(value); - *val = obj.toVariant().toLongLong(); - } - else if(QStringLiteral("float").compare(type) == 0) { - float *val = static_cast(value); - *val = static_cast(obj.toDouble()); - } - else if(QStringLiteral("double").compare(type) == 0) { - double *val = static_cast(value); - *val = obj.toDouble(); - } - else if (QStringLiteral("QString").compare(type) == 0) { - QString **val = static_cast(value); - if(val != nullptr) { - if(!obj.isNull()) { - (*val)->clear(); - (*val)->append(obj.toString()); - return; - } - else { - (*val)->clear(); - } - } + +QString +toStringValue(const QString &value) { + return value; +} + +QString +toStringValue(const QDateTime &value){ + // ISO 8601 + return value.toString("yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); +} + +QString +toStringValue(const QByteArray &value){ + return QString(value); +} + +QString +toStringValue(const QDate &value){ + // ISO 8601 + return value.toString(Qt::DateFormat::ISODate); +} + +QString +toStringValue(const qint32 &value) { + return QString::number(value); +} + +QString +toStringValue(const qint64 &value) { + return QString::number(value); +} + +QString +toStringValue(const bool &value) { + return QString(value ? "true" : "false"); +} + +QString +toStringValue(const float &value){ + return QString::number(value); +} + +QString +toStringValue(const double &value){ + return QString::number(value); +} + +QJsonValue +toJsonValue(const QString &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const QDateTime &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const QByteArray &value){ + return QJsonValue(QString(value.toBase64())); +} + +QJsonValue +toJsonValue(const QDate &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const qint32 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const qint64 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const bool &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const float &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const double &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const {{prefix}}Object &value){ + return value.asJsonObject(); +} + +bool +fromStringValue(const QString &inStr, QString &value){ + value.clear(); + value.append(inStr); + return !inStr.isEmpty(); +} + +bool +fromStringValue(const QString &inStr, QDateTime &value){ + if(inStr.isEmpty()){ + return false; } - else if (QStringLiteral("QDateTime").compare(type) == 0) { - QDateTime **val = static_cast(value); - - if(val != nullptr) { - if(!obj.isNull()) { - // create a new value and return - if(*val != nullptr) delete *val; - *val = new QDateTime(QDateTime::fromString(obj.toString(), Qt::ISODate)); - return; - } - else { - // set target to nullptr - if(*val != nullptr) delete *val; - *val = nullptr; - } + else{ + auto dateTime = QDateTime::fromString(inStr, "yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); + if(dateTime.isValid()){ + value.setDate(dateTime.date()); + value.setTime(dateTime.time()); } - else { - qDebug() << "Can't set value because the target pointer is nullptr"; + else{ + qDebug() << "DateTime is invalid"; } + return dateTime.isValid(); } - else if (QStringLiteral("QDate").compare(type) == 0) { - QDate **val = static_cast(value); - - if(val != nullptr) { - if(!obj.isNull()) { - // create a new value and return - if(*val != nullptr) delete *val; - *val = new QDate(QDate::fromString(obj.toString(), Qt::ISODate)); - return; - } - else { - // set target to nullptr - if(*val != nullptr) delete *val; - *val = nullptr; - } - } - else { - qDebug() << "Can't set value because the target pointer is nullptr"; - } +} + +bool +fromStringValue(const QString &inStr, QByteArray &value){ + if(inStr.isEmpty()){ + return false; } - else if (QStringLiteral("QByteArray").compare(type) == 0) { - QByteArray **val = static_cast(value); - - if(val != nullptr) { - if(!obj.isNull()) { - // create a new value and return - if(*val != nullptr) delete *val; - - *val = new QByteArray(QByteArray::fromBase64(QByteArray::fromStdString(obj.toString().toStdString()))); - return; - } - else { - // set target to nullptr - if(*val != nullptr) delete *val; - *val = nullptr; - } - } - else { - qDebug() << "Can't set value because the target pointer is nullptr"; - } + else{ + value.clear(); + value.append(inStr.toUtf8()); + return value.count() > 0; } - else if(type.startsWith("{{prefix}}") && obj.isObject()) { - // complex type - QJsonObject jsonObj = obj.toObject(); - {{prefix}}Object * so = ({{prefix}}Object*)::{{cppNamespace}}::create(complexType); - if(so != nullptr) { - so->fromJsonObject(jsonObj); - {{prefix}}Object **val = static_cast<{{prefix}}Object**>(value); - if(*val != nullptr) delete *val; - *val = so; - } +} + +bool +fromStringValue(const QString &inStr, QDate &value){ + if(inStr.isEmpty()){ + return false; } - else if(type.startsWith("QList") && QString("").compare(complexType) != 0 && obj.isArray()) { - // list of values - if(complexType.startsWith("{{prefix}}")) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr) { - // it's an object - {{prefix}}Object * val = ({{prefix}}Object*)::{{cppNamespace}}::create(complexType); - QJsonObject t = jval.toObject(); - val->fromJsonObject(t); - (*output)->append(val); - } - } - else if(QStringLiteral("qint32").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - qint32 val; - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("qint32"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("qint64").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - qint64 val; - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("qint64"), QStringLiteral("")); - (*output)->push_back(val); - } + else{ + auto date = QDate::fromString(inStr, Qt::DateFormat::ISODate); + if(date.isValid()){ + value.setDate(date.year(), date.month(), date.day()); } - else if(QStringLiteral("bool").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - bool val; - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("bool"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("float").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - float val; - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("float"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("double").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - double val; - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("double"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("QString").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - QString * val = new QString(); - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("QString"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("QDate").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - QDate * val = new QDate(); - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("QDate"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("QDateTime").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - QDateTime * val = new QDateTime(); - ::{{cppNamespace}}::setValue(&val, jval, QStringLiteral("QDateTime"), QStringLiteral("")); - (*output)->push_back(val); - } - } - } - else if(type.startsWith("QMap") && QString("").compare(complexType) != 0 && obj.isObject()) { - // list of values - if(complexType.startsWith("{{prefix}}")) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - auto val = ({{prefix}}Object*)::{{cppNamespace}}::create(complexType); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, complexType, complexType); - (*output)->insert(itemkey, val); - } - } - } - else if(QStringLiteral("qint32").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - qint32 val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("qint32"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("qint64").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - qint64 val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("qint64"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("bool").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - bool val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("bool"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("float").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - float val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("float"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("double").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - double val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("double"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("QString").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - QString * val = new QString(); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("QString"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("QDate").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - QDate * val = new QDate(); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("QDate"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("QDateTime").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - QDateTime * val = new QDateTime(); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::{{cppNamespace}}::setValue(&val, jsonval, QStringLiteral("QDateTime"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } + else{ + qDebug() << "Date is invalid"; } + return date.isValid(); } } +bool +fromStringValue(const QString &inStr, qint32 &value){ + bool ok = false; + value = QVariant(inStr).toInt(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, qint64 &value){ + bool ok = false; + value = QVariant(inStr).toLongLong(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, bool &value){ + value = QVariant(inStr).toBool(); + return ((inStr == "true") || (inStr == "false")); +} + +bool +fromStringValue(const QString &inStr, float &value){ + bool ok = false; + value = QVariant(inStr).toFloat(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, double &value){ + bool ok = false; + value = QVariant(inStr).toDouble(&ok); + return ok; +} + void -toJsonValue(QString name, void* value, QJsonObject& output, QString type) { - if(value == nullptr) { - return; - } - if(type.startsWith("{{prefix}}")) { - {{prefix}}Object *{{prefix}}object = reinterpret_cast<{{prefix}}Object *>(value); - if({{prefix}}object != nullptr) { - QJsonObject o = {{prefix}}object->asJsonObject(); - if(!name.isNull()) { - output.insert(name, o); - } - else { - output.empty(); - for(QString key : o.keys()) { - output.insert(key, o.value(key)); - } - } +fromJsonValue(QString &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + if(jval.isString()){ + value = jval.toString(); + } else if(jval.isBool()) { + value = jval.toBool() ? "true" : "false"; + } else if(jval.isDouble()){ + value = QString::number(jval.toDouble()); } } - else if(QStringLiteral("QString").compare(type) == 0) { - QString* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("qint32").compare(type) == 0) { - qint32* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("qint64").compare(type) == 0) { - qint64* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("bool").compare(type) == 0) { - bool* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("float").compare(type) == 0) { - float* str = static_cast(value); - output.insert(name, QJsonValue((double)*str)); - } - else if(QStringLiteral("double").compare(type) == 0) { - double* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("QDate").compare(type) == 0) { - QDate* date = static_cast(value); - output.insert(name, QJsonValue(date->toString(Qt::ISODate))); - } - else if(QStringLiteral("QDateTime").compare(type) == 0) { - QDateTime* datetime = static_cast(value); - output.insert(name, QJsonValue(datetime->toString(Qt::ISODate))); - } - else if(QStringLiteral("QByteArray").compare(type) == 0) { - QByteArray* byteArray = static_cast(value); - output.insert(name, QJsonValue(QString(byteArray->toBase64()))); - } + } void -toJsonArray(QList* value, QJsonObject& output, QString innerName, QString innerType) { - if(value == nullptr) { - return; - } - QJsonArray outputarray; - if(innerType.startsWith("{{prefix}}")){ - for(void* obj : *value) { - {{prefix}}Object *{{prefix}}object = reinterpret_cast<{{prefix}}Object *>(obj); - if({{prefix}}object != nullptr) { - outputarray.append({{prefix}}object->asJsonObject()); - } - } - } - else if(QStringLiteral("QString").compare(innerType) == 0) { - for(QString* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(*obj)); - } - } - else if(QStringLiteral("QDate").compare(innerType) == 0) { - for(QDate* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(obj->toString(Qt::ISODate))); - } - } - else if(QStringLiteral("QDateTime").compare(innerType) == 0) { - for(QDateTime* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(obj->toString(Qt::ISODate))); } - } - else if(QStringLiteral("QByteArray").compare(innerType) == 0) { - for(QByteArray* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(QString(obj->toBase64()))); - } - } - else if(QStringLiteral("qint32").compare(innerType) == 0) { - for(qint32 obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("qint64").compare(innerType) == 0) { - for(qint64 obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("bool").compare(innerType) == 0) { - for(bool obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("float").compare(innerType) == 0) { - for(float obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("double").compare(innerType) == 0) { - for(double obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); +fromJsonValue(QDateTime &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDateTime::fromString(jval.toString(), Qt::ISODate); } - output.insert(innerName, outputarray); + } void -toJsonMap(QMap* value, QJsonObject& output, QString innerName, QString innerType) { - if(value == nullptr) { - return; - } - QJsonObject mapobj; - if(innerType.startsWith("{{prefix}}")){ - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::{{cppNamespace}}::toJsonValue(itemkey, items->value(itemkey),mapobj, innerType); - } - } - else if(QStringLiteral("QString").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::{{cppNamespace}}::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } +fromJsonValue(QByteArray &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QByteArray::fromBase64(QByteArray::fromStdString(jval.toString().toStdString())); } - else if(QStringLiteral("QDate").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::{{cppNamespace}}::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } - } - else if(QStringLiteral("QDateTime").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::{{cppNamespace}}::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } - } - else if(QStringLiteral("QByteArray").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::{{cppNamespace}}::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } - } - else if(QStringLiteral("qint32").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::{{cppNamespace}}::toJsonValue(itemkey, &val, mapobj, innerType); - } - } - else if(QStringLiteral("qint64").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::{{cppNamespace}}::toJsonValue(itemkey, &val, mapobj, innerType); - } - } - else if(QStringLiteral("bool").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::{{cppNamespace}}::toJsonValue(itemkey, &val, mapobj, innerType); - } + +} + +void +fromJsonValue(QDate &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDate::fromString(jval.toString(), Qt::ISODate); } - else if(QStringLiteral("float").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::{{cppNamespace}}::toJsonValue(itemkey, &val, mapobj, innerType); - } + +} + +void +fromJsonValue(qint32 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toInt(); } - else if(QStringLiteral("double").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys() ) { - auto val = items->value(itemkey); - ::{{cppNamespace}}::toJsonValue(itemkey, &val, mapobj, innerType); - } + +} + +void +fromJsonValue(qint64 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toVariant().toLongLong(); } - output.insert(innerName, mapobj); + } -QString -stringValue(QString* value) { - QString* str = static_cast(value); - return QString(*str); +void +fromJsonValue(bool &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toBool(); + } + } -QString -stringValue(qint32 value) { - return QString::number(value); +void +fromJsonValue(float &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = static_cast(jval.toDouble()); + } } -QString -stringValue(qint64 value) { - return QString::number(value); +void +fromJsonValue(double &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toDouble(); + } + } -QString -stringValue(bool value) { - return QString(value ? "true" : "false"); +void +fromJsonValue({{prefix}}Object &value, const QJsonValue &jval){ + if(jval.isObject()){ + value.fromJsonObject(jval.toObject()); + } } {{#cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache index a74e3b15cd95..78a0094eb020 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache @@ -4,22 +4,132 @@ #include #include +#include #include #include +#include +#include +#include +#include +#include "{{prefix}}Object.h" {{#cppNamespaceDeclarations}} namespace {{this}} { {{/cppNamespaceDeclarations}} - void setValue(void* value, QJsonValue obj, QString type, QString complexType); - void toJsonArray(QList* value, QJsonObject& output, QString innerName, QString innerType); - void toJsonValue(QString name, void* value, QJsonObject& output, QString type); - void toJsonMap(QMap* value, QJsonObject& output, QString innerName, QString innerType); - bool isCompatibleJsonValue(QString type); - QString stringValue(QString* value); - QString stringValue(qint32 value); - QString stringValue(qint64 value); - QString stringValue(bool value); + QString toStringValue(const QString &value); + QString toStringValue(const QDateTime &value); + QString toStringValue(const QByteArray &value); + QString toStringValue(const QDate &value); + QString toStringValue(const qint32 &value); + QString toStringValue(const qint64 &value); + QString toStringValue(const bool &value); + QString toStringValue(const float &value); + QString toStringValue(const double &value); + + template + QString toStringValue(const QList &val) { + QString strArray; + for(auto item : val) { + strArray.append(toStringValue(item) + ","); + } + if(val.count() > 0) { + strArray.chop(1); + } + return strArray; + } + + QJsonValue toJsonValue(const QString &value); + QJsonValue toJsonValue(const QDateTime &value); + QJsonValue toJsonValue(const QByteArray &value); + QJsonValue toJsonValue(const QDate &value); + QJsonValue toJsonValue(const qint32 &value); + QJsonValue toJsonValue(const qint64 &value); + QJsonValue toJsonValue(const bool &value); + QJsonValue toJsonValue(const float &value); + QJsonValue toJsonValue(const double &value); + QJsonValue toJsonValue(const {{prefix}}Object &value); + + template + QJsonValue toJsonValue(const QList &val) { + QJsonArray jArray; + for(auto item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; + } + + template + QJsonValue toJsonValue(const QMap &val) { + QJsonObject jObject; + for(auto itemkey : val.keys()) { + jObject.insert(itemkey, toJsonValue(val.value(itemkey))); + } + return jObject; + } + + bool fromStringValue(const QString &inStr, QString &value); + bool fromStringValue(const QString &inStr, QDateTime &value); + bool fromStringValue(const QString &inStr, QByteArray &value); + bool fromStringValue(const QString &inStr, QDate &value); + bool fromStringValue(const QString &inStr, qint32 &value); + bool fromStringValue(const QString &inStr, qint64 &value); + bool fromStringValue(const QString &inStr, bool &value); + bool fromStringValue(const QString &inStr, float &value); + bool fromStringValue(const QString &inStr, double &value); + + template + void fromStringValue(const QList &inStr, QList &val) { + for(auto item: inStr){ + T itemVal; + fromStringValue(item, itemVal); + val.push_back(itemVal); + } + } + + template + void fromStringValue(const QMap &inStr, QMap &val) { + for(auto itemkey : inStr.keys()){ + T itemVal; + fromStringValue(inStr.value(itemkey), itemVal); + val.insert(itemkey, itemVal); + } + } + + void fromJsonValue(QString &value, const QJsonValue &jval); + void fromJsonValue(QDateTime &value, const QJsonValue &jval); + void fromJsonValue(QByteArray &value, const QJsonValue &jval); + void fromJsonValue(QDate &value, const QJsonValue &jval); + void fromJsonValue(qint32 &value, const QJsonValue &jval); + void fromJsonValue(qint64 &value, const QJsonValue &jval); + void fromJsonValue(bool &value, const QJsonValue &jval); + void fromJsonValue(float &value, const QJsonValue &jval); + void fromJsonValue(double &value, const QJsonValue &jval); + void fromJsonValue({{prefix}}Object &value, const QJsonValue &jval); + + template + void fromJsonValue(QList &val, const QJsonValue &jval) { + if(jval.isArray()){ + for(const QJsonValue &jitem : jval.toArray()){ + T item; + fromJsonValue(item, jitem); + val.push_back(item); + } + } + } + + template + void fromJsonValue(QMap &val, const QJsonValue &jval) { + auto varmap = jval.toObject().toVariantMap(); + if(varmap.count() > 0){ + for(auto itemkey : varmap.keys() ){ + T itemVal; + fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); + val.insert(itemkey, itemVal); + } + } + return; + } {{#cppNamespaceDeclarations}} } diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache index 367c0d526939..9c0de18a32f4 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache @@ -14,84 +14,53 @@ namespace {{this}} { {{/cppNamespaceDeclarations}} {{classname}}::{{classname}}(QString json) { - init(); this->fromJson(json); } {{classname}}::{{classname}}() { - init(); + this->init(); } {{classname}}::~{{classname}}() { - this->cleanup(); + } void {{classname}}::init() { {{#vars}} - {{name}} = {{{defaultValue}}}; m_{{name}}_isSet = false; {{/vars}} } void -{{classname}}::cleanup() { - {{#vars}} - {{#complexType}} - if({{name}} != nullptr) { {{#isContainer}} - auto arr = {{name}}; - for(auto o: *arr) { {{#items.isContainer}} - for(auto o1: *o) { - delete o1; - }{{/items.isContainer}} - delete o; - }{{/isContainer}} - delete {{name}}; - }{{/complexType}}{{^complexType}}{{#isContainer}} - if({{name}} != nullptr) { {{#items.isContainer}} - auto arr = {{name}}; - for(auto o: *arr) { - delete o; - }{{/items.isContainer}} - delete {{name}}; - }{{/isContainer}}{{/complexType}} - {{/vars}} -} - -{{classname}}* -{{classname}}::fromJson(QString json) { - QByteArray array (json.toStdString().c_str()); +{{classname}}::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); - return this; } void -{{classname}}::fromJsonObject(QJsonObject pJson) { +{{classname}}::fromJsonObject(QJsonObject json) { {{#vars}} - {{^isContainer}}::{{cppNamespace}}::setValue(&{{name}}, pJson["{{baseName}}"], "{{baseType}}", "{{complexType}}");{{/isContainer}} - {{#isContainer}}{{^items.isContainer}}::{{cppNamespace}}::setValue(&{{name}}, pJson["{{baseName}}"], "{{baseType}}", "{{items.baseType}}");{{/items.isContainer}}{{#items.isContainer}}{{#isListContainer}} - if(pJson["{{baseName}}"].isArray()){ - auto arr = pJson["{{baseName}}"].toArray(); + {{^isContainer}}::{{cppNamespace}}::fromJsonValue({{name}}, json[QString("{{baseName}}")]);{{/isContainer}} + {{#isContainer}}{{^items.isContainer}}::{{cppNamespace}}::fromJsonValue({{name}}, json[QString("{{baseName}}")]);{{/items.isContainer}}{{#items.isContainer}}{{#isListContainer}} + if(json["{{baseName}}"].isArray()){ + auto arr = json["{{baseName}}"].toArray(); for (const QJsonValue & jval : arr) { - {{#items.isListContainer}}auto {{name}}_item = new QList<{{items.items.baseType}}{{^items.items.isLong}}{{^items.items.isInteger}}{{^items.items.isDouble}}{{^items.items.isFloat}}{{^items.items.isBoolean}}*{{/items.items.isBoolean}}{{/items.items.isFloat}}{{/items.items.isDouble}}{{/items.items.isInteger}}{{/items.items.isLong}}>();{{/items.isListContainer}} - {{#items.isMapContainer}}auto {{name}}_item = new QMap();{{/items.isMapContainer}} - auto jsonval = jval.toObject(); - ::{{cppNamespace}}::setValue({{name}}_item, jsonval, "{{items.baseType}}", "{{items.items.baseType}}"); - {{name}}->push_back({{name}}_item); + {{^items.isContainer}}{{items.baseType}}{{/items.isContainer}}{{#items.isListContainer}}QList<{{items.items.baseType}}>{{/items.isListContainer}}{{#items.isMapContainer}}QMap{{/items.isMapContainer}} item; + ::{{cppNamespace}}::fromJsonValue(item, jval) + {{name}}.push_back(item); } }{{/isListContainer}}{{#isMapContainer}} - if(pJson["{{baseName}}"].isObject()){ - auto varmap = pJson["{{baseName}}"].toObject().toVariantMap(); + if(json["{{baseName}}"].isObject()){ + auto varmap = json["{{baseName}}"].toObject().toVariantMap(); if(varmap.count() > 0){ for(auto val : varmap.keys()){ - {{#items.isListContainer}}auto {{name}}_item = new QList<{{items.items.baseType}}{{^items.items.isLong}}{{^items.items.isInteger}}{{^items.items.isDouble}}{{^items.items.isFloat}}{{^items.items.isBoolean}}*{{/items.items.isBoolean}}{{/items.items.isFloat}}{{/items.items.isDouble}}{{/items.items.isInteger}}{{/items.items.isLong}}>();{{/items.isListContainer}} - {{#items.isMapContainer}}auto {{name}}_item = new QMap();{{/items.isMapContainer}} - auto jsonval = QJsonValue::fromVariant(varmap.value(val)); - ::{{cppNamespace}}::setValue((QMap*)&{{name}}_item, jsonval, "{{items.baseType}}", "{{items.items.baseType}}"); - - {{name}}->insert({{name}}->end(), val, {{name}}_item); + {{^items.isContainer}}{{items.baseType}}{{/items.isContainer}}{{#items.isListContainer}}QList<{{items.items.baseType}}>{{/items.isListContainer}}{{#items.isMapContainer}}QMap{{/items.isMapContainer}} item; + auto jval = QJsonValue::fromVariant(varmap.value(val)); + ::{{cppNamespace}}::fromJsonValue(item, jval); + {{name}}.insert({{name}}.end(), val, item); } } }{{/isMapContainer}}{{/items.isContainer}}{{/isContainer}} @@ -99,8 +68,7 @@ void } QString -{{classname}}::asJson () -{ +{{classname}}::asJson () const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -108,107 +76,27 @@ QString } QJsonObject -{{classname}}::asJsonObject() { +{{classname}}::asJsonObject() const { QJsonObject obj; {{#vars}} - {{^isContainer}} - {{#complexType}} - {{^isString}} - {{^isDate}} - {{^isDateTime}} - {{^isByteArray}} - if(({{name}} != nullptr) && ({{name}}->isSet())){ - toJsonValue(QString("{{baseName}}"), {{name}}, obj, QString("{{complexType}}")); - } - {{/isByteArray}} - {{/isDateTime}} - {{/isDate}} - {{/isString}} - {{#isString}} - if({{name}} != nullptr && *{{name}} != QString("")){ - toJsonValue(QString("{{baseName}}"), {{name}}, obj, QString("{{complexType}}")); - } - {{/isString}} - {{/complexType}} - {{#isPrimitiveType}} - {{^isDateTime}} - {{^isDate}} - {{^isByteArray}} - if(m_{{name}}_isSet){ - obj.insert("{{baseName}}", QJsonValue({{name}})); - } - {{/isByteArray}} - {{/isDate}} - {{/isDateTime}} - {{/isPrimitiveType}} - {{#isDate}} - if({{name}} != nullptr) { - toJsonValue(QString("{{baseName}}"), {{name}}, obj, QString("{{complexType}}")); - } - {{/isDate}} - {{#isByteArray}} - if({{name}} != nullptr) { - obj.insert("{{name}}", QJsonValue(*{{name}})); - } - {{/isByteArray}} - {{#isDateTime}} - if({{name}} != nullptr) { - toJsonValue(QString("{{baseName}}"), {{name}}, obj, QString("{{complexType}}")); - } - {{/isDateTime}} - {{/isContainer}} - {{#isContainer}} - {{#isListContainer}} - if({{name}}->size() > 0){ - {{^items.isContainer}} - toJsonArray((QList*){{name}}, obj, "{{baseName}}", "{{complexType}}"); - {{/items.isContainer}} - {{#items.isContainer}} - QJsonArray jarray; - for(auto items : *{{name}}){ - QJsonObject jobj; - {{#items.isListContainer}} - toJsonArray((QList*)items, jobj, "{{baseName}}", "{{items.items.baseType}}"); - {{/items.isListContainer}} - {{#items.isMapContainer}} - toJsonMap((QMap*)items, jobj, "{{baseName}}", "{{items.items.baseType}}"); - {{/items.isMapContainer}} - jarray.append(jobj.value("{{baseName}}")); - } - obj.insert("{{baseName}}", jarray); - {{/items.isContainer}} - } - {{/isListContainer}} - {{#isMapContainer}} - if({{name}}->size() > 0){ - {{^items.isContainer}}toJsonMap((QMap*) {{name}}, obj, "{{baseName}}", "{{complexType}}");{{/items.isContainer}}{{#items.isContainer}} - QJsonObject mapobj; - for(auto itemkey : {{name}}->keys()){ - QJsonObject jobj; - {{#items.isListContainer}} - toJsonArray((QList*){{name}}->value(itemkey), jobj, itemkey, "{{items.items.baseType}}"); - {{/items.isListContainer}} - {{#items.isMapContainer}} - toJsonMap((QMap*){{name}}->value(itemkey), jobj, itemkey, "{{items.items.baseType}}"); - {{/items.isMapContainer}} - mapobj.insert(itemkey, jobj); - } - obj.insert("{{baseName}}", mapobj);{{/items.isContainer}} - } - {{/isMapContainer}} - {{/isContainer}} + {{^isContainer}}{{#complexType}}if({{name}}.isSet()){{/complexType}}{{^complexType}}if(m_{{name}}_isSet){{/complexType}}{ + obj.insert(QString("{{baseName}}"), ::{{cppNamespace}}::toJsonValue({{name}})); + }{{/isContainer}}{{#isContainer}} + if({{name}}.size() > 0){ + {{^items.isContainer}}obj.insert(QString("{{baseName}}"), ::{{cppNamespace}}::toJsonValue({{name}}));{{/items.isContainer}}{{#items.isContainer}} + obj.insert(QString("{{baseName}}"), toJsonValue({{name}}));{{/items.isContainer}} + } {{/isContainer}} {{/vars}} - return obj; } {{#vars}} {{{dataType}}} -{{classname}}::{{getter}}() { +{{classname}}::{{getter}}() const { return {{name}}; } void -{{classname}}::{{setter}}({{{dataType}}} {{name}}) { +{{classname}}::{{setter}}(const {{{dataType}}} &{{name}}) { this->{{name}} = {{name}}; this->m_{{name}}_isSet = true; } @@ -216,32 +104,14 @@ void {{/vars}} bool -{{classname}}::isSet(){ +{{classname}}::isSet() const { bool isObjectUpdated = false; - do{ - {{#vars}} - {{#isPrimitiveType}} - if(m_{{name}}_isSet){ isObjectUpdated = true; break;} - {{/isPrimitiveType}} - {{#isContainer}} - if({{name}}->size() > 0){ isObjectUpdated = true; break;} - {{/isContainer}} - {{^isContainer}} - {{#complexType}} - {{^isString}} - {{^isDateTime}} - if({{name}} != nullptr && {{name}}->isSet()){ isObjectUpdated = true; break;} - {{/isDateTime}} - {{/isString}} - {{#isString}} - if({{name}} != nullptr && *{{name}} != QString("")){ isObjectUpdated = true; break;} - {{/isString}} - {{/complexType}} - {{/isContainer}} - {{/vars}} - }while(false); + do{ {{#vars}} + {{#isContainer}}if({{name}}.size() > 0){{/isContainer}}{{^isContainer}}{{#complexType}}if({{name}}.isSet()){{/complexType}}{{^complexType}}if(m_{{name}}_isSet){{/complexType}}{{/isContainer}}{ isObjectUpdated = true; break;} + {{/vars}}}while(false); return isObjectUpdated; } + {{#cppNamespaceDeclarations}} } {{/cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache index 94ae7e236ef1..4c8ec537f870 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache @@ -5,8 +5,8 @@ * {{description}} */ -#ifndef {{classname}}_H_ -#define {{classname}}_H_ +#ifndef {{classname}}_H +#define {{classname}}_H #include @@ -26,22 +26,20 @@ class {{classname}}: public {{prefix}}Object { public: {{classname}}(); {{classname}}(QString json); - ~{{classname}}(); + ~{{classname}}() override; void init(); - void cleanup(); - QString asJson () override; - QJsonObject asJsonObject() override; + QString asJson () const override; + QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; - {{classname}}* fromJson(QString jsonString) override; + void fromJson(QString jsonString) override; {{#vars}} - {{{dataType}}} {{getter}}(); - void {{setter}}({{{dataType}}} {{name}}); + {{{dataType}}} {{getter}}() const; + void {{setter}}(const {{{dataType}}} &{{name}}); {{/vars}} - - virtual bool isSet() override; + virtual bool isSet() const override; private: {{#vars}} @@ -55,6 +53,6 @@ private: } {{/cppNamespaceDeclarations}} -#endif /* {{classname}}_H_ */ +#endif // {{classname}}_H {{/model}} {{/models}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/modelFactory.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/modelFactory.mustache deleted file mode 100644 index 0b1c789d6189..000000000000 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/modelFactory.mustache +++ /dev/null @@ -1,36 +0,0 @@ -{{>licenseInfo}} -#ifndef ModelFactory_H_ -#define ModelFactory_H_ - -#include "{{prefix}}Object.h" -{{#models}}{{#model}} -#include "{{classname}}.h"{{/model}}{{/models}} - -{{#cppNamespaceDeclarations}} -namespace {{this}} { -{{/cppNamespaceDeclarations}} - - inline void* create(QString type) { - {{#models}}{{#model}}if(QString("{{classname}}").compare(type) == 0) { - return new {{classname}}(); - } - {{/model}}{{/models}} - return nullptr; - } - - inline void* create(QString json, QString type) { - if(type.startsWith("QString")) { - return new QString(); - } - auto val = static_cast<{{prefix}}Object*>(create(type)); - if(val != nullptr) { - return val->fromJson(json); - } - return nullptr; - } - -{{#cppNamespaceDeclarations}} -} -{{/cppNamespaceDeclarations}} - -#endif /* ModelFactory_H_ */ diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache index 9d6f17cab6c7..023879854924 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache @@ -1,6 +1,6 @@ {{>licenseInfo}} -#ifndef _{{prefix}}_OBJECT_H_ -#define _{{prefix}}_OBJECT_H_ +#ifndef {{prefix}}_OBJECT_H +#define {{prefix}}_OBJECT_H #include #include @@ -11,56 +11,37 @@ namespace {{this}} { class {{prefix}}Object { public: - virtual QJsonObject asJsonObject() { - if(jObj != nullptr){ - return *jObj; - } - return QJsonObject(); + virtual ~{{prefix}}Object(){ + } - {{prefix}}Object() { - jObj = nullptr; + virtual QJsonObject asJsonObject() const { + return jObj; } - virtual ~{{prefix}}Object() { - if(jObj != nullptr){ - delete jObj; - } + virtual QString asJson() const { + QJsonDocument doc(jObj); + return doc.toJson(QJsonDocument::Compact); } - virtual {{prefix}}Object* fromJson(QString jsonString) { + virtual void fromJson(QString jsonString) { QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8()); - auto ret = new {{prefix}}Object(); - ret->fromJsonObject(doc.object()); - return ret; + jObj = doc.object(); } virtual void fromJsonObject(QJsonObject json) { - if(jObj != nullptr) - { - delete jObj; - } - jObj = new QJsonObject(json); - } - - virtual QString asJson() { - if(jObj != nullptr) - { - QJsonDocument doc(*jObj); - return doc.toJson(QJsonDocument::Compact); - } - return QString(); + jObj = json; } - virtual bool isSet() { + virtual bool isSet() const { return false; } private : - QJsonObject *jObj; + QJsonObject jObj; }; {{#cppNamespaceDeclarations}} } {{/cppNamespaceDeclarations}} -#endif /* _{{prefix}}_OBJECT_H_ */ +#endif // {{prefix}}_OBJECT_H diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/object.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/object.mustache index 26621c747ed6..023879854924 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/object.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-qhttpengine-server/object.mustache @@ -1,6 +1,6 @@ {{>licenseInfo}} -#ifndef _{{prefix}}_OBJECT_H_ -#define _{{prefix}}_OBJECT_H_ +#ifndef {{prefix}}_OBJECT_H +#define {{prefix}}_OBJECT_H #include #include @@ -44,4 +44,4 @@ private : } {{/cppNamespaceDeclarations}} -#endif /* _{{prefix}}_OBJECT_H_ */ +#endif // {{prefix}}_OBJECT_H diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp index 51ad254196cd..3150415d2dcb 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp +++ b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp @@ -18,15 +18,12 @@ OAIPetApi* PetApiTests::getApi() { return api; } -OAIPet* PetApiTests::createRandomPet() { - OAIPet* pet = new OAIPet(); +OAIPet PetApiTests::createRandomPet() { + OAIPet pet; qint64 id = QDateTime::currentMSecsSinceEpoch(); - pet->getName()->clear(); - pet->getName()->append(QString("monster")); - pet->setId(id); - pet->getStatus()->clear(); - pet->getStatus()->append(QString("freaky")); - + pet.setName(QString("monster")); + pet.setId(id); + pet.setStatus(QString("freaky")); return pet; } @@ -44,9 +41,9 @@ void PetApiTests::findPetsByStatusTest() { timer.setInterval(14000); timer.setSingleShot(true); - auto validator = [this](QList* pets) { - foreach(OAIPet* pet, *pets) { - QVERIFY(pet->getStatus()->startsWith("available") || pet->getStatus()->startsWith("sold")); + auto validator = [this](QList pets) { + foreach(OAIPet pet, pets) { + QVERIFY(pet.getStatus().startsWith("available") || pet.getStatus().startsWith("sold")); } emit quit(); }; @@ -57,20 +54,17 @@ void PetApiTests::findPetsByStatusTest() { connect(api, &OAIPetApi::findPetsByStatusSignal, this, validator); connect(&timer, &QTimer::timeout, &loop, finalizer); - QList* status = new QList(); - auto available = new QString("available"); - auto sold = new QString("sold"); - status->append(available); - status->append(sold); + QList status; + QString available("available"); + QString sold("sold"); + status.append(available); + status.append(sold); api->findPetsByStatus(status); timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); - disconnect(this, 0,0,0); + disconnect(this, nullptr, nullptr, nullptr); delete api; - delete status; - delete sold; - delete available; } void PetApiTests::createAndGetPetTest() { @@ -93,10 +87,10 @@ void PetApiTests::createAndGetPetTest() { connect(api, &OAIPetApi::addPetSignal, this, validator); connect(&timer, &QTimer::timeout, &loop, finalizer); - OAIPet* pet = createRandomPet(); - qint64 id = pet->getId(); + OAIPet pet = createRandomPet(); + qint64 id = pet.getId(); - api->addPet(*pet); + api->addPet(pet); timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); @@ -104,9 +98,9 @@ void PetApiTests::createAndGetPetTest() { timer.setInterval(1000); timer.setSingleShot(true); - auto getPetValidator = [this](OAIPet* pet) { - QVERIFY(pet->getId() > 0); - QVERIFY(pet->getStatus()->compare("freaky") == 0); + auto getPetValidator = [this](OAIPet pet) { + QVERIFY(pet.getId() > 0); + QVERIFY(pet.getStatus().compare("freaky") == 0); emit quit(); }; @@ -117,17 +111,16 @@ void PetApiTests::createAndGetPetTest() { timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); - disconnect(this, 0,0,0); + disconnect(this, nullptr, nullptr, nullptr); delete api; - delete pet; } void PetApiTests::updatePetTest() { OAIPetApi* api = getApi(); - OAIPet* pet = createRandomPet(); - OAIPet* petToCheck; - qint64 id = pet->getId(); + OAIPet pet = createRandomPet(); + OAIPet petToCheck; + qint64 id = pet.getId(); QEventLoop loop; QTimer timer; timer.setInterval(100000); @@ -144,7 +137,7 @@ void PetApiTests::updatePetTest() { connect(&timer, &QTimer::timeout, &loop, finalizer); // create pet - api->addPet(*pet); + api->addPet(pet); timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); @@ -153,7 +146,7 @@ void PetApiTests::updatePetTest() { timer.setInterval(1000); timer.setSingleShot(true); - auto fetchPet = [&](OAIPet* pet) { + auto fetchPet = [&](OAIPet pet) { petToCheck = pet; emit quit(); }; @@ -177,9 +170,8 @@ void PetApiTests::updatePetTest() { connect(&timer, &QTimer::timeout, &loop, finalizer); // update pet - petToCheck->getStatus()->clear(); - petToCheck->getStatus()->append(QString("scary")); - api->updatePet(*petToCheck); + petToCheck.setStatus(QString("scary")); + api->updatePet(petToCheck); timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); @@ -188,9 +180,9 @@ void PetApiTests::updatePetTest() { timer.setInterval(1000); timer.setSingleShot(true); - auto fetchPet2 = [&](OAIPet* pet) { - QVERIFY(pet->getId() == petToCheck->getId()); - QVERIFY(pet->getStatus()->compare(petToCheck->getStatus()) == 0); + auto fetchPet2 = [&](OAIPet pet) { + QVERIFY(pet.getId() == petToCheck.getId()); + QVERIFY(pet.getStatus().compare(petToCheck.getStatus()) == 0); emit quit(); }; connect(api, &OAIPetApi::getPetByIdSignal, this, fetchPet2); @@ -199,17 +191,16 @@ void PetApiTests::updatePetTest() { timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); - disconnect(this, 0,0,0); + disconnect(this, nullptr, nullptr, nullptr); delete api; - delete pet; } void PetApiTests::updatePetWithFormTest() { OAIPetApi* api = getApi(); - OAIPet* pet = createRandomPet(); - OAIPet* petToCheck; - qint64 id = pet->getId(); + OAIPet pet = createRandomPet(); + OAIPet petToCheck; + qint64 id = pet.getId(); QEventLoop loop; QTimer timer; @@ -226,7 +217,7 @@ void PetApiTests::updatePetWithFormTest() { connect(this, &PetApiTests::quit, finalizer); connect(api, &OAIPetApi::addPetSignal, this, validator); connect(&timer, &QTimer::timeout, &loop, finalizer); - api->addPet(*pet); + api->addPet(pet); timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); @@ -235,7 +226,7 @@ void PetApiTests::updatePetWithFormTest() { timer.setInterval(1000); timer.setSingleShot(true); - auto fetchPet = [&](OAIPet* pet) { + auto fetchPet = [&](OAIPet pet) { petToCheck = pet; emit quit(); }; @@ -254,8 +245,8 @@ void PetApiTests::updatePetWithFormTest() { connect(api, &OAIPetApi::updatePetWithFormSignal, this, [this](){emit quit();}); connect(&timer, &QTimer::timeout, &loop, finalizer); - auto name = new QString("gorilla"); - api->updatePetWithForm(id, name, NULL); + QString name("gorilla"); + api->updatePetWithForm(id, name, nullptr); timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); @@ -264,8 +255,8 @@ void PetApiTests::updatePetWithFormTest() { timer.setInterval(1000); timer.setSingleShot(true); - auto fetchUpdatedPet = [this](OAIPet* pet) { - QVERIFY(pet->getName()->compare(QString("gorilla")) == 0); + auto fetchUpdatedPet = [this](OAIPet pet) { + QVERIFY(pet.getName().compare(QString("gorilla")) == 0); emit quit(); }; connect(api, &OAIPetApi::getPetByIdSignal, this, fetchUpdatedPet); @@ -275,8 +266,6 @@ void PetApiTests::updatePetWithFormTest() { timer.start(); loop.exec(); QVERIFY2(timer.isActive(), "didn't finish within timeout"); - disconnect(this, 0,0,0); + disconnect(this, nullptr, nullptr, nullptr); delete api; - delete pet; - delete name; } diff --git a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h index 7046bc78aa19..48919ab3043d 100644 --- a/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h +++ b/samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h @@ -18,7 +18,7 @@ Q_OBJECT private: OAIPetApi* getApi(); - OAIPet* createRandomPet(); + OAIPet createRandomPet(); signals: void quit(); diff --git a/samples/client/petstore/cpp-qt5/client/OAIApiResponse.cpp b/samples/client/petstore/cpp-qt5/client/OAIApiResponse.cpp index 7ae036ad2864..0e576128205c 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIApiResponse.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIApiResponse.cpp @@ -23,61 +23,44 @@ namespace OpenAPI { OAIApiResponse::OAIApiResponse(QString json) { - init(); this->fromJson(json); } OAIApiResponse::OAIApiResponse() { - init(); + this->init(); } OAIApiResponse::~OAIApiResponse() { - this->cleanup(); + } void OAIApiResponse::init() { - code = 0; m_code_isSet = false; - type = new QString(""); m_type_isSet = false; - message = new QString(""); m_message_isSet = false; } void -OAIApiResponse::cleanup() { - - if(type != nullptr) { - delete type; - } - if(message != nullptr) { - delete message; - } -} - -OAIApiResponse* -OAIApiResponse::fromJson(QString json) { - QByteArray array (json.toStdString().c_str()); +OAIApiResponse::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); - return this; } void -OAIApiResponse::fromJsonObject(QJsonObject pJson) { - ::OpenAPI::setValue(&code, pJson["code"], "qint32", ""); +OAIApiResponse::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(code, json[QString("code")]); - ::OpenAPI::setValue(&type, pJson["type"], "QString", "QString"); + ::OpenAPI::fromJsonValue(type, json[QString("type")]); - ::OpenAPI::setValue(&message, pJson["message"], "QString", "QString"); + ::OpenAPI::fromJsonValue(message, json[QString("message")]); } QString -OAIApiResponse::asJson () -{ +OAIApiResponse::asJson () const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -85,61 +68,63 @@ OAIApiResponse::asJson () } QJsonObject -OAIApiResponse::asJsonObject() { +OAIApiResponse::asJsonObject() const { QJsonObject obj; - if(m_code_isSet){ - obj.insert("code", QJsonValue(code)); + if(m_code_isSet){ + obj.insert(QString("code"), ::OpenAPI::toJsonValue(code)); } - if(type != nullptr && *type != QString("")){ - toJsonValue(QString("type"), type, obj, QString("QString")); + if(m_type_isSet){ + obj.insert(QString("type"), ::OpenAPI::toJsonValue(type)); } - if(message != nullptr && *message != QString("")){ - toJsonValue(QString("message"), message, obj, QString("QString")); + if(m_message_isSet){ + obj.insert(QString("message"), ::OpenAPI::toJsonValue(message)); } - return obj; } qint32 -OAIApiResponse::getCode() { +OAIApiResponse::getCode() const { return code; } void -OAIApiResponse::setCode(qint32 code) { +OAIApiResponse::setCode(const qint32 &code) { this->code = code; this->m_code_isSet = true; } -QString* -OAIApiResponse::getType() { +QString +OAIApiResponse::getType() const { return type; } void -OAIApiResponse::setType(QString* type) { +OAIApiResponse::setType(const QString &type) { this->type = type; this->m_type_isSet = true; } -QString* -OAIApiResponse::getMessage() { +QString +OAIApiResponse::getMessage() const { return message; } void -OAIApiResponse::setMessage(QString* message) { +OAIApiResponse::setMessage(const QString &message) { this->message = message; this->m_message_isSet = true; } bool -OAIApiResponse::isSet(){ +OAIApiResponse::isSet() const { bool isObjectUpdated = false; - do{ + do{ if(m_code_isSet){ isObjectUpdated = true; break;} - if(type != nullptr && *type != QString("")){ isObjectUpdated = true; break;} - if(message != nullptr && *message != QString("")){ isObjectUpdated = true; break;} + + if(m_type_isSet){ isObjectUpdated = true; break;} + + if(m_message_isSet){ isObjectUpdated = true; break;} }while(false); return isObjectUpdated; } + } diff --git a/samples/client/petstore/cpp-qt5/client/OAIApiResponse.h b/samples/client/petstore/cpp-qt5/client/OAIApiResponse.h index a1a1bf551e1d..144c0c402943 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIApiResponse.h +++ b/samples/client/petstore/cpp-qt5/client/OAIApiResponse.h @@ -16,8 +16,8 @@ * Describes the result of uploading an image resource */ -#ifndef OAIApiResponse_H_ -#define OAIApiResponse_H_ +#ifndef OAIApiResponse_H +#define OAIApiResponse_H #include @@ -32,39 +32,37 @@ class OAIApiResponse: public OAIObject { public: OAIApiResponse(); OAIApiResponse(QString json); - ~OAIApiResponse(); + ~OAIApiResponse() override; void init(); - void cleanup(); - QString asJson () override; - QJsonObject asJsonObject() override; + QString asJson () const override; + QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; - OAIApiResponse* fromJson(QString jsonString) override; + void fromJson(QString jsonString) override; - qint32 getCode(); - void setCode(qint32 code); + qint32 getCode() const; + void setCode(const qint32 &code); - QString* getType(); - void setType(QString* type); + QString getType() const; + void setType(const QString &type); - QString* getMessage(); - void setMessage(QString* message); + QString getMessage() const; + void setMessage(const QString &message); - - virtual bool isSet() override; + virtual bool isSet() const override; private: qint32 code; bool m_code_isSet; - QString* type; + QString type; bool m_type_isSet; - QString* message; + QString message; bool m_message_isSet; }; } -#endif /* OAIApiResponse_H_ */ +#endif // OAIApiResponse_H diff --git a/samples/client/petstore/cpp-qt5/client/OAICategory.cpp b/samples/client/petstore/cpp-qt5/client/OAICategory.cpp index ae0fe4a380d6..fb8ec997ce38 100644 --- a/samples/client/petstore/cpp-qt5/client/OAICategory.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAICategory.cpp @@ -23,54 +23,41 @@ namespace OpenAPI { OAICategory::OAICategory(QString json) { - init(); this->fromJson(json); } OAICategory::OAICategory() { - init(); + this->init(); } OAICategory::~OAICategory() { - this->cleanup(); + } void OAICategory::init() { - id = 0L; m_id_isSet = false; - name = new QString(""); m_name_isSet = false; } void -OAICategory::cleanup() { - - if(name != nullptr) { - delete name; - } -} - -OAICategory* -OAICategory::fromJson(QString json) { - QByteArray array (json.toStdString().c_str()); +OAICategory::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); - return this; } void -OAICategory::fromJsonObject(QJsonObject pJson) { - ::OpenAPI::setValue(&id, pJson["id"], "qint64", ""); +OAICategory::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); - ::OpenAPI::setValue(&name, pJson["name"], "QString", "QString"); + ::OpenAPI::fromJsonValue(name, json[QString("name")]); } QString -OAICategory::asJson () -{ +OAICategory::asJson () const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -78,47 +65,48 @@ OAICategory::asJson () } QJsonObject -OAICategory::asJsonObject() { +OAICategory::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ - obj.insert("id", QJsonValue(id)); + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); } - if(name != nullptr && *name != QString("")){ - toJsonValue(QString("name"), name, obj, QString("QString")); + if(m_name_isSet){ + obj.insert(QString("name"), ::OpenAPI::toJsonValue(name)); } - return obj; } qint64 -OAICategory::getId() { +OAICategory::getId() const { return id; } void -OAICategory::setId(qint64 id) { +OAICategory::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } -QString* -OAICategory::getName() { +QString +OAICategory::getName() const { return name; } void -OAICategory::setName(QString* name) { +OAICategory::setName(const QString &name) { this->name = name; this->m_name_isSet = true; } bool -OAICategory::isSet(){ +OAICategory::isSet() const { bool isObjectUpdated = false; - do{ + do{ if(m_id_isSet){ isObjectUpdated = true; break;} - if(name != nullptr && *name != QString("")){ isObjectUpdated = true; break;} + + if(m_name_isSet){ isObjectUpdated = true; break;} }while(false); return isObjectUpdated; } + } diff --git a/samples/client/petstore/cpp-qt5/client/OAICategory.h b/samples/client/petstore/cpp-qt5/client/OAICategory.h index 8ce026e5e728..027d83c6db03 100644 --- a/samples/client/petstore/cpp-qt5/client/OAICategory.h +++ b/samples/client/petstore/cpp-qt5/client/OAICategory.h @@ -16,8 +16,8 @@ * A category for a pet */ -#ifndef OAICategory_H_ -#define OAICategory_H_ +#ifndef OAICategory_H +#define OAICategory_H #include @@ -32,33 +32,31 @@ class OAICategory: public OAIObject { public: OAICategory(); OAICategory(QString json); - ~OAICategory(); + ~OAICategory() override; void init(); - void cleanup(); - QString asJson () override; - QJsonObject asJsonObject() override; + QString asJson () const override; + QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; - OAICategory* fromJson(QString jsonString) override; + void fromJson(QString jsonString) override; - qint64 getId(); - void setId(qint64 id); + qint64 getId() const; + void setId(const qint64 &id); - QString* getName(); - void setName(QString* name); + QString getName() const; + void setName(const QString &name); - - virtual bool isSet() override; + virtual bool isSet() const override; private: qint64 id; bool m_id_isSet; - QString* name; + QString name; bool m_name_isSet; }; } -#endif /* OAICategory_H_ */ +#endif // OAICategory_H diff --git a/samples/client/petstore/cpp-qt5/client/OAIHelpers.cpp b/samples/client/petstore/cpp-qt5/client/OAIHelpers.cpp index c0a0f944cfcd..4851d67a1216 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIHelpers.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIHelpers.cpp @@ -10,576 +10,280 @@ * Do not edit the class manually. */ +#include #include "OAIHelpers.h" -#include "OAIModelFactory.h" #include "OAIObject.h" -#include -#include -#include -#include - namespace OpenAPI { -void -setValue(void* value, QJsonValue obj, QString type, QString complexType) { - if((value == nullptr) || (obj.isUndefined())) { - // can't set value with a null pointer - return; - } - if(QStringLiteral("bool").compare(type) == 0) { - bool * val = static_cast(value); - *val = obj.toBool(); - } - else if(QStringLiteral("qint32").compare(type) == 0) { - qint32 *val = static_cast(value); - *val = obj.toInt(); - } - else if(QStringLiteral("qint64").compare(type) == 0) { - qint64 *val = static_cast(value); - *val = obj.toVariant().toLongLong(); - } - else if(QStringLiteral("float").compare(type) == 0) { - float *val = static_cast(value); - *val = static_cast(obj.toDouble()); - } - else if(QStringLiteral("double").compare(type) == 0) { - double *val = static_cast(value); - *val = obj.toDouble(); - } - else if (QStringLiteral("QString").compare(type) == 0) { - QString **val = static_cast(value); - if(val != nullptr) { - if(!obj.isNull()) { - (*val)->clear(); - (*val)->append(obj.toString()); - return; - } - else { - (*val)->clear(); - } - } + +QString +toStringValue(const QString &value) { + return value; +} + +QString +toStringValue(const QDateTime &value){ + // ISO 8601 + return value.toString("yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); +} + +QString +toStringValue(const QByteArray &value){ + return QString(value); +} + +QString +toStringValue(const QDate &value){ + // ISO 8601 + return value.toString(Qt::DateFormat::ISODate); +} + +QString +toStringValue(const qint32 &value) { + return QString::number(value); +} + +QString +toStringValue(const qint64 &value) { + return QString::number(value); +} + +QString +toStringValue(const bool &value) { + return QString(value ? "true" : "false"); +} + +QString +toStringValue(const float &value){ + return QString::number(value); +} + +QString +toStringValue(const double &value){ + return QString::number(value); +} + +QJsonValue +toJsonValue(const QString &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const QDateTime &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const QByteArray &value){ + return QJsonValue(QString(value.toBase64())); +} + +QJsonValue +toJsonValue(const QDate &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const qint32 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const qint64 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const bool &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const float &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const double &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const OAIObject &value){ + return value.asJsonObject(); +} + +bool +fromStringValue(const QString &inStr, QString &value){ + value.clear(); + value.append(inStr); + return !inStr.isEmpty(); +} + +bool +fromStringValue(const QString &inStr, QDateTime &value){ + if(inStr.isEmpty()){ + return false; } - else if (QStringLiteral("QDateTime").compare(type) == 0) { - QDateTime **val = static_cast(value); - - if(val != nullptr) { - if(!obj.isNull()) { - // create a new value and return - if(*val != nullptr) delete *val; - *val = new QDateTime(QDateTime::fromString(obj.toString(), Qt::ISODate)); - return; - } - else { - // set target to nullptr - if(*val != nullptr) delete *val; - *val = nullptr; - } + else{ + auto dateTime = QDateTime::fromString(inStr, "yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); + if(dateTime.isValid()){ + value.setDate(dateTime.date()); + value.setTime(dateTime.time()); } - else { - qDebug() << "Can't set value because the target pointer is nullptr"; + else{ + qDebug() << "DateTime is invalid"; } + return dateTime.isValid(); } - else if (QStringLiteral("QDate").compare(type) == 0) { - QDate **val = static_cast(value); - - if(val != nullptr) { - if(!obj.isNull()) { - // create a new value and return - if(*val != nullptr) delete *val; - *val = new QDate(QDate::fromString(obj.toString(), Qt::ISODate)); - return; - } - else { - // set target to nullptr - if(*val != nullptr) delete *val; - *val = nullptr; - } - } - else { - qDebug() << "Can't set value because the target pointer is nullptr"; - } +} + +bool +fromStringValue(const QString &inStr, QByteArray &value){ + if(inStr.isEmpty()){ + return false; } - else if (QStringLiteral("QByteArray").compare(type) == 0) { - QByteArray **val = static_cast(value); - - if(val != nullptr) { - if(!obj.isNull()) { - // create a new value and return - if(*val != nullptr) delete *val; - - *val = new QByteArray(QByteArray::fromBase64(QByteArray::fromStdString(obj.toString().toStdString()))); - return; - } - else { - // set target to nullptr - if(*val != nullptr) delete *val; - *val = nullptr; - } - } - else { - qDebug() << "Can't set value because the target pointer is nullptr"; - } + else{ + value.clear(); + value.append(inStr.toUtf8()); + return value.count() > 0; } - else if(type.startsWith("OAI") && obj.isObject()) { - // complex type - QJsonObject jsonObj = obj.toObject(); - OAIObject * so = (OAIObject*)::OpenAPI::create(complexType); - if(so != nullptr) { - so->fromJsonObject(jsonObj); - OAIObject **val = static_cast(value); - if(*val != nullptr) delete *val; - *val = so; - } +} + +bool +fromStringValue(const QString &inStr, QDate &value){ + if(inStr.isEmpty()){ + return false; } - else if(type.startsWith("QList") && QString("").compare(complexType) != 0 && obj.isArray()) { - // list of values - if(complexType.startsWith("OAI")) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr) { - // it's an object - OAIObject * val = (OAIObject*)::OpenAPI::create(complexType); - QJsonObject t = jval.toObject(); - val->fromJsonObject(t); - (*output)->append(val); - } - } - else if(QStringLiteral("qint32").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - qint32 val; - ::OpenAPI::setValue(&val, jval, QStringLiteral("qint32"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("qint64").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - qint64 val; - ::OpenAPI::setValue(&val, jval, QStringLiteral("qint64"), QStringLiteral("")); - (*output)->push_back(val); - } + else{ + auto date = QDate::fromString(inStr, Qt::DateFormat::ISODate); + if(date.isValid()){ + value.setDate(date.year(), date.month(), date.day()); } - else if(QStringLiteral("bool").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - bool val; - ::OpenAPI::setValue(&val, jval, QStringLiteral("bool"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("float").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - float val; - ::OpenAPI::setValue(&val, jval, QStringLiteral("float"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("double").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - double val; - ::OpenAPI::setValue(&val, jval, QStringLiteral("double"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("QString").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - QString * val = new QString(); - ::OpenAPI::setValue(&val, jval, QStringLiteral("QString"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("QDate").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - QDate * val = new QDate(); - ::OpenAPI::setValue(&val, jval, QStringLiteral("QDate"), QStringLiteral("")); - (*output)->push_back(val); - } - } - else if(QStringLiteral("QDateTime").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - QJsonArray arr = obj.toArray(); - for (const QJsonValue & jval : arr){ - QDateTime * val = new QDateTime(); - ::OpenAPI::setValue(&val, jval, QStringLiteral("QDateTime"), QStringLiteral("")); - (*output)->push_back(val); - } - } - } - else if(type.startsWith("QMap") && QString("").compare(complexType) != 0 && obj.isObject()) { - // list of values - if(complexType.startsWith("OAI")) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - auto val = (OAIObject*)::OpenAPI::create(complexType); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, complexType, complexType); - (*output)->insert(itemkey, val); - } - } - } - else if(QStringLiteral("qint32").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - qint32 val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("qint32"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("qint64").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - qint64 val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("qint64"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("bool").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - bool val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("bool"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("float").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - float val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("float"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("double").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - double val; - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("double"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("QString").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - QString * val = new QString(); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("QString"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("QDate").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - QDate * val = new QDate(); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("QDate"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } - } - else if(QStringLiteral("QDateTime").compare(complexType) == 0) { - auto output = reinterpret_cast **> (value); - for (auto item : **output) { - if(item != nullptr) delete item; - } - (*output)->clear(); - auto varmap = obj.toObject().toVariantMap(); - if(varmap.count() > 0){ - for(auto itemkey : varmap.keys() ){ - QDateTime * val = new QDateTime(); - auto jsonval = QJsonValue::fromVariant(varmap.value(itemkey)); - ::OpenAPI::setValue(&val, jsonval, QStringLiteral("QDateTime"), QStringLiteral("")); - (*output)->insert( itemkey, val); - } - } + else{ + qDebug() << "Date is invalid"; } + return date.isValid(); } } +bool +fromStringValue(const QString &inStr, qint32 &value){ + bool ok = false; + value = QVariant(inStr).toInt(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, qint64 &value){ + bool ok = false; + value = QVariant(inStr).toLongLong(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, bool &value){ + value = QVariant(inStr).toBool(); + return ((inStr == "true") || (inStr == "false")); +} + +bool +fromStringValue(const QString &inStr, float &value){ + bool ok = false; + value = QVariant(inStr).toFloat(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, double &value){ + bool ok = false; + value = QVariant(inStr).toDouble(&ok); + return ok; +} + void -toJsonValue(QString name, void* value, QJsonObject& output, QString type) { - if(value == nullptr) { - return; - } - if(type.startsWith("OAI")) { - OAIObject *OAIobject = reinterpret_cast(value); - if(OAIobject != nullptr) { - QJsonObject o = OAIobject->asJsonObject(); - if(!name.isNull()) { - output.insert(name, o); - } - else { - output.empty(); - for(QString key : o.keys()) { - output.insert(key, o.value(key)); - } - } +fromJsonValue(QString &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + if(jval.isString()){ + value = jval.toString(); + } else if(jval.isBool()) { + value = jval.toBool() ? "true" : "false"; + } else if(jval.isDouble()){ + value = QString::number(jval.toDouble()); } } - else if(QStringLiteral("QString").compare(type) == 0) { - QString* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("qint32").compare(type) == 0) { - qint32* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("qint64").compare(type) == 0) { - qint64* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("bool").compare(type) == 0) { - bool* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("float").compare(type) == 0) { - float* str = static_cast(value); - output.insert(name, QJsonValue((double)*str)); - } - else if(QStringLiteral("double").compare(type) == 0) { - double* str = static_cast(value); - output.insert(name, QJsonValue(*str)); - } - else if(QStringLiteral("QDate").compare(type) == 0) { - QDate* date = static_cast(value); - output.insert(name, QJsonValue(date->toString(Qt::ISODate))); - } - else if(QStringLiteral("QDateTime").compare(type) == 0) { - QDateTime* datetime = static_cast(value); - output.insert(name, QJsonValue(datetime->toString(Qt::ISODate))); - } - else if(QStringLiteral("QByteArray").compare(type) == 0) { - QByteArray* byteArray = static_cast(value); - output.insert(name, QJsonValue(QString(byteArray->toBase64()))); - } + } void -toJsonArray(QList* value, QJsonObject& output, QString innerName, QString innerType) { - if(value == nullptr) { - return; - } - QJsonArray outputarray; - if(innerType.startsWith("OAI")){ - for(void* obj : *value) { - OAIObject *OAIobject = reinterpret_cast(obj); - if(OAIobject != nullptr) { - outputarray.append(OAIobject->asJsonObject()); - } - } - } - else if(QStringLiteral("QString").compare(innerType) == 0) { - for(QString* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(*obj)); - } - } - else if(QStringLiteral("QDate").compare(innerType) == 0) { - for(QDate* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(obj->toString(Qt::ISODate))); - } - } - else if(QStringLiteral("QDateTime").compare(innerType) == 0) { - for(QDateTime* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(obj->toString(Qt::ISODate))); } - } - else if(QStringLiteral("QByteArray").compare(innerType) == 0) { - for(QByteArray* obj : *(reinterpret_cast*>(value))){ - outputarray.append(QJsonValue(QString(obj->toBase64()))); - } - } - else if(QStringLiteral("qint32").compare(innerType) == 0) { - for(qint32 obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("qint64").compare(innerType) == 0) { - for(qint64 obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("bool").compare(innerType) == 0) { - for(bool obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("float").compare(innerType) == 0) { - for(float obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); - } - else if(QStringLiteral("double").compare(innerType) == 0) { - for(double obj : *(reinterpret_cast*>(value))) - outputarray.append(QJsonValue(obj)); +fromJsonValue(QDateTime &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDateTime::fromString(jval.toString(), Qt::ISODate); } - output.insert(innerName, outputarray); + } void -toJsonMap(QMap* value, QJsonObject& output, QString innerName, QString innerType) { - if(value == nullptr) { - return; - } - QJsonObject mapobj; - if(innerType.startsWith("OAI")){ - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::OpenAPI::toJsonValue(itemkey, items->value(itemkey),mapobj, innerType); - } - } - else if(QStringLiteral("QString").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::OpenAPI::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } +fromJsonValue(QByteArray &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QByteArray::fromBase64(QByteArray::fromStdString(jval.toString().toStdString())); } - else if(QStringLiteral("QDate").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::OpenAPI::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } - } - else if(QStringLiteral("QDateTime").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::OpenAPI::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } - } - else if(QStringLiteral("QByteArray").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - ::OpenAPI::toJsonValue(itemkey, items->value(itemkey), mapobj, innerType); - } - } - else if(QStringLiteral("qint32").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::OpenAPI::toJsonValue(itemkey, &val, mapobj, innerType); - } - } - else if(QStringLiteral("qint64").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::OpenAPI::toJsonValue(itemkey, &val, mapobj, innerType); - } - } - else if(QStringLiteral("bool").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::OpenAPI::toJsonValue(itemkey, &val, mapobj, innerType); - } + +} + +void +fromJsonValue(QDate &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDate::fromString(jval.toString(), Qt::ISODate); } - else if(QStringLiteral("float").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys()) { - auto val = items->value(itemkey); - ::OpenAPI::toJsonValue(itemkey, &val, mapobj, innerType); - } + +} + +void +fromJsonValue(qint32 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toInt(); } - else if(QStringLiteral("double").compare(innerType) == 0) { - auto items = reinterpret_cast< QMap *>(value); - for(auto itemkey: items->keys() ) { - auto val = items->value(itemkey); - ::OpenAPI::toJsonValue(itemkey, &val, mapobj, innerType); - } + +} + +void +fromJsonValue(qint64 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toVariant().toLongLong(); } - output.insert(innerName, mapobj); + } -QString -stringValue(QString* value) { - QString* str = static_cast(value); - return QString(*str); +void +fromJsonValue(bool &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toBool(); + } + } -QString -stringValue(qint32 value) { - return QString::number(value); +void +fromJsonValue(float &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = static_cast(jval.toDouble()); + } } -QString -stringValue(qint64 value) { - return QString::number(value); +void +fromJsonValue(double &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toDouble(); + } + } -QString -stringValue(bool value) { - return QString(value ? "true" : "false"); +void +fromJsonValue(OAIObject &value, const QJsonValue &jval){ + if(jval.isObject()){ + value.fromJsonObject(jval.toObject()); + } } } diff --git a/samples/client/petstore/cpp-qt5/client/OAIHelpers.h b/samples/client/petstore/cpp-qt5/client/OAIHelpers.h index 6aa2bc92759e..d904bcc7920a 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIHelpers.h +++ b/samples/client/petstore/cpp-qt5/client/OAIHelpers.h @@ -15,20 +15,130 @@ #include #include +#include #include #include +#include +#include +#include +#include +#include "OAIObject.h" namespace OpenAPI { - void setValue(void* value, QJsonValue obj, QString type, QString complexType); - void toJsonArray(QList* value, QJsonObject& output, QString innerName, QString innerType); - void toJsonValue(QString name, void* value, QJsonObject& output, QString type); - void toJsonMap(QMap* value, QJsonObject& output, QString innerName, QString innerType); - bool isCompatibleJsonValue(QString type); - QString stringValue(QString* value); - QString stringValue(qint32 value); - QString stringValue(qint64 value); - QString stringValue(bool value); + QString toStringValue(const QString &value); + QString toStringValue(const QDateTime &value); + QString toStringValue(const QByteArray &value); + QString toStringValue(const QDate &value); + QString toStringValue(const qint32 &value); + QString toStringValue(const qint64 &value); + QString toStringValue(const bool &value); + QString toStringValue(const float &value); + QString toStringValue(const double &value); + + template + QString toStringValue(const QList &val) { + QString strArray; + for(auto item : val) { + strArray.append(toStringValue(item) + ","); + } + if(val.count() > 0) { + strArray.chop(1); + } + return strArray; + } + + QJsonValue toJsonValue(const QString &value); + QJsonValue toJsonValue(const QDateTime &value); + QJsonValue toJsonValue(const QByteArray &value); + QJsonValue toJsonValue(const QDate &value); + QJsonValue toJsonValue(const qint32 &value); + QJsonValue toJsonValue(const qint64 &value); + QJsonValue toJsonValue(const bool &value); + QJsonValue toJsonValue(const float &value); + QJsonValue toJsonValue(const double &value); + QJsonValue toJsonValue(const OAIObject &value); + + template + QJsonValue toJsonValue(const QList &val) { + QJsonArray jArray; + for(auto item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; + } + + template + QJsonValue toJsonValue(const QMap &val) { + QJsonObject jObject; + for(auto itemkey : val.keys()) { + jObject.insert(itemkey, toJsonValue(val.value(itemkey))); + } + return jObject; + } + + bool fromStringValue(const QString &inStr, QString &value); + bool fromStringValue(const QString &inStr, QDateTime &value); + bool fromStringValue(const QString &inStr, QByteArray &value); + bool fromStringValue(const QString &inStr, QDate &value); + bool fromStringValue(const QString &inStr, qint32 &value); + bool fromStringValue(const QString &inStr, qint64 &value); + bool fromStringValue(const QString &inStr, bool &value); + bool fromStringValue(const QString &inStr, float &value); + bool fromStringValue(const QString &inStr, double &value); + + template + void fromStringValue(const QList &inStr, QList &val) { + for(auto item: inStr){ + T itemVal; + fromStringValue(item, itemVal); + val.push_back(itemVal); + } + } + + template + void fromStringValue(const QMap &inStr, QMap &val) { + for(auto itemkey : inStr.keys()){ + T itemVal; + fromStringValue(inStr.value(itemkey), itemVal); + val.insert(itemkey, itemVal); + } + } + + void fromJsonValue(QString &value, const QJsonValue &jval); + void fromJsonValue(QDateTime &value, const QJsonValue &jval); + void fromJsonValue(QByteArray &value, const QJsonValue &jval); + void fromJsonValue(QDate &value, const QJsonValue &jval); + void fromJsonValue(qint32 &value, const QJsonValue &jval); + void fromJsonValue(qint64 &value, const QJsonValue &jval); + void fromJsonValue(bool &value, const QJsonValue &jval); + void fromJsonValue(float &value, const QJsonValue &jval); + void fromJsonValue(double &value, const QJsonValue &jval); + void fromJsonValue(OAIObject &value, const QJsonValue &jval); + + template + void fromJsonValue(QList &val, const QJsonValue &jval) { + if(jval.isArray()){ + for(const QJsonValue &jitem : jval.toArray()){ + T item; + fromJsonValue(item, jitem); + val.push_back(item); + } + } + } + + template + void fromJsonValue(QMap &val, const QJsonValue &jval) { + auto varmap = jval.toObject().toVariantMap(); + if(varmap.count() > 0){ + for(auto itemkey : varmap.keys() ){ + T itemVal; + fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); + val.insert(itemkey, itemVal); + } + } + return; + } } diff --git a/samples/client/petstore/cpp-qt5/client/OAIModelFactory.h b/samples/client/petstore/cpp-qt5/client/OAIModelFactory.h deleted file mode 100644 index 0ead3946f447..000000000000 --- a/samples/client/petstore/cpp-qt5/client/OAIModelFactory.h +++ /dev/null @@ -1,63 +0,0 @@ -/** - * OpenAPI Petstore - * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. - * - * OpenAPI spec version: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -#ifndef ModelFactory_H_ -#define ModelFactory_H_ - -#include "OAIObject.h" - -#include "OAIApiResponse.h" -#include "OAICategory.h" -#include "OAIOrder.h" -#include "OAIPet.h" -#include "OAITag.h" -#include "OAIUser.h" - -namespace OpenAPI { - - inline void* create(QString type) { - if(QString("OAIApiResponse").compare(type) == 0) { - return new OAIApiResponse(); - } - if(QString("OAICategory").compare(type) == 0) { - return new OAICategory(); - } - if(QString("OAIOrder").compare(type) == 0) { - return new OAIOrder(); - } - if(QString("OAIPet").compare(type) == 0) { - return new OAIPet(); - } - if(QString("OAITag").compare(type) == 0) { - return new OAITag(); - } - if(QString("OAIUser").compare(type) == 0) { - return new OAIUser(); - } - - return nullptr; - } - - inline void* create(QString json, QString type) { - if(type.startsWith("QString")) { - return new QString(); - } - auto val = static_cast(create(type)); - if(val != nullptr) { - return val->fromJson(json); - } - return nullptr; - } - -} - -#endif /* ModelFactory_H_ */ diff --git a/samples/client/petstore/cpp-qt5/client/OAIObject.h b/samples/client/petstore/cpp-qt5/client/OAIObject.h index 6ce563184c44..aeb5ccfc52c0 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIObject.h +++ b/samples/client/petstore/cpp-qt5/client/OAIObject.h @@ -10,8 +10,8 @@ * Do not edit the class manually. */ -#ifndef _OAI_OBJECT_H_ -#define _OAI_OBJECT_H_ +#ifndef OAI_OBJECT_H +#define OAI_OBJECT_H #include #include @@ -20,54 +20,35 @@ namespace OpenAPI { class OAIObject { public: - virtual QJsonObject asJsonObject() { - if(jObj != nullptr){ - return *jObj; - } - return QJsonObject(); + virtual ~OAIObject(){ + } - OAIObject() { - jObj = nullptr; + virtual QJsonObject asJsonObject() const { + return jObj; } - virtual ~OAIObject() { - if(jObj != nullptr){ - delete jObj; - } + virtual QString asJson() const { + QJsonDocument doc(jObj); + return doc.toJson(QJsonDocument::Compact); } - virtual OAIObject* fromJson(QString jsonString) { + virtual void fromJson(QString jsonString) { QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8()); - auto ret = new OAIObject(); - ret->fromJsonObject(doc.object()); - return ret; + jObj = doc.object(); } virtual void fromJsonObject(QJsonObject json) { - if(jObj != nullptr) - { - delete jObj; - } - jObj = new QJsonObject(json); - } - - virtual QString asJson() { - if(jObj != nullptr) - { - QJsonDocument doc(*jObj); - return doc.toJson(QJsonDocument::Compact); - } - return QString(); + jObj = json; } - virtual bool isSet() { + virtual bool isSet() const { return false; } private : - QJsonObject *jObj; + QJsonObject jObj; }; } -#endif /* _OAI_OBJECT_H_ */ +#endif // OAI_OBJECT_H diff --git a/samples/client/petstore/cpp-qt5/client/OAIOrder.cpp b/samples/client/petstore/cpp-qt5/client/OAIOrder.cpp index 217f83d1105f..567533b830b6 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIOrder.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIOrder.cpp @@ -23,76 +23,53 @@ namespace OpenAPI { OAIOrder::OAIOrder(QString json) { - init(); this->fromJson(json); } OAIOrder::OAIOrder() { - init(); + this->init(); } OAIOrder::~OAIOrder() { - this->cleanup(); + } void OAIOrder::init() { - id = 0L; m_id_isSet = false; - pet_id = 0L; m_pet_id_isSet = false; - quantity = 0; m_quantity_isSet = false; - ship_date = NULL; m_ship_date_isSet = false; - status = new QString(""); m_status_isSet = false; - complete = false; m_complete_isSet = false; } void -OAIOrder::cleanup() { - - - - if(ship_date != nullptr) { - delete ship_date; - } - if(status != nullptr) { - delete status; - } - -} - -OAIOrder* -OAIOrder::fromJson(QString json) { - QByteArray array (json.toStdString().c_str()); +OAIOrder::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); - return this; } void -OAIOrder::fromJsonObject(QJsonObject pJson) { - ::OpenAPI::setValue(&id, pJson["id"], "qint64", ""); +OAIOrder::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); - ::OpenAPI::setValue(&pet_id, pJson["petId"], "qint64", ""); + ::OpenAPI::fromJsonValue(pet_id, json[QString("petId")]); - ::OpenAPI::setValue(&quantity, pJson["quantity"], "qint32", ""); + ::OpenAPI::fromJsonValue(quantity, json[QString("quantity")]); - ::OpenAPI::setValue(&ship_date, pJson["shipDate"], "QDateTime", "QDateTime"); + ::OpenAPI::fromJsonValue(ship_date, json[QString("shipDate")]); - ::OpenAPI::setValue(&status, pJson["status"], "QString", "QString"); + ::OpenAPI::fromJsonValue(status, json[QString("status")]); - ::OpenAPI::setValue(&complete, pJson["complete"], "bool", ""); + ::OpenAPI::fromJsonValue(complete, json[QString("complete")]); } QString -OAIOrder::asJson () -{ +OAIOrder::asJson () const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -100,102 +77,108 @@ OAIOrder::asJson () } QJsonObject -OAIOrder::asJsonObject() { +OAIOrder::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ - obj.insert("id", QJsonValue(id)); + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); } - if(m_pet_id_isSet){ - obj.insert("petId", QJsonValue(pet_id)); + if(m_pet_id_isSet){ + obj.insert(QString("petId"), ::OpenAPI::toJsonValue(pet_id)); } - if(m_quantity_isSet){ - obj.insert("quantity", QJsonValue(quantity)); + if(m_quantity_isSet){ + obj.insert(QString("quantity"), ::OpenAPI::toJsonValue(quantity)); } - if(ship_date != nullptr) { - toJsonValue(QString("shipDate"), ship_date, obj, QString("QDateTime")); + if(m_ship_date_isSet){ + obj.insert(QString("shipDate"), ::OpenAPI::toJsonValue(ship_date)); } - if(status != nullptr && *status != QString("")){ - toJsonValue(QString("status"), status, obj, QString("QString")); + if(m_status_isSet){ + obj.insert(QString("status"), ::OpenAPI::toJsonValue(status)); } - if(m_complete_isSet){ - obj.insert("complete", QJsonValue(complete)); + if(m_complete_isSet){ + obj.insert(QString("complete"), ::OpenAPI::toJsonValue(complete)); } - return obj; } qint64 -OAIOrder::getId() { +OAIOrder::getId() const { return id; } void -OAIOrder::setId(qint64 id) { +OAIOrder::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } qint64 -OAIOrder::getPetId() { +OAIOrder::getPetId() const { return pet_id; } void -OAIOrder::setPetId(qint64 pet_id) { +OAIOrder::setPetId(const qint64 &pet_id) { this->pet_id = pet_id; this->m_pet_id_isSet = true; } qint32 -OAIOrder::getQuantity() { +OAIOrder::getQuantity() const { return quantity; } void -OAIOrder::setQuantity(qint32 quantity) { +OAIOrder::setQuantity(const qint32 &quantity) { this->quantity = quantity; this->m_quantity_isSet = true; } -QDateTime* -OAIOrder::getShipDate() { +QDateTime +OAIOrder::getShipDate() const { return ship_date; } void -OAIOrder::setShipDate(QDateTime* ship_date) { +OAIOrder::setShipDate(const QDateTime &ship_date) { this->ship_date = ship_date; this->m_ship_date_isSet = true; } -QString* -OAIOrder::getStatus() { +QString +OAIOrder::getStatus() const { return status; } void -OAIOrder::setStatus(QString* status) { +OAIOrder::setStatus(const QString &status) { this->status = status; this->m_status_isSet = true; } bool -OAIOrder::isComplete() { +OAIOrder::isComplete() const { return complete; } void -OAIOrder::setComplete(bool complete) { +OAIOrder::setComplete(const bool &complete) { this->complete = complete; this->m_complete_isSet = true; } bool -OAIOrder::isSet(){ +OAIOrder::isSet() const { bool isObjectUpdated = false; - do{ + do{ if(m_id_isSet){ isObjectUpdated = true; break;} + if(m_pet_id_isSet){ isObjectUpdated = true; break;} + if(m_quantity_isSet){ isObjectUpdated = true; break;} - if(status != nullptr && *status != QString("")){ isObjectUpdated = true; break;} + + if(m_ship_date_isSet){ isObjectUpdated = true; break;} + + if(m_status_isSet){ isObjectUpdated = true; break;} + if(m_complete_isSet){ isObjectUpdated = true; break;} }while(false); return isObjectUpdated; } + } diff --git a/samples/client/petstore/cpp-qt5/client/OAIOrder.h b/samples/client/petstore/cpp-qt5/client/OAIOrder.h index 6b047b746113..561aebd8a4f8 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIOrder.h +++ b/samples/client/petstore/cpp-qt5/client/OAIOrder.h @@ -16,8 +16,8 @@ * An order for a pets from the pet store */ -#ifndef OAIOrder_H_ -#define OAIOrder_H_ +#ifndef OAIOrder_H +#define OAIOrder_H #include @@ -33,35 +33,33 @@ class OAIOrder: public OAIObject { public: OAIOrder(); OAIOrder(QString json); - ~OAIOrder(); + ~OAIOrder() override; void init(); - void cleanup(); - QString asJson () override; - QJsonObject asJsonObject() override; + QString asJson () const override; + QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; - OAIOrder* fromJson(QString jsonString) override; + void fromJson(QString jsonString) override; - qint64 getId(); - void setId(qint64 id); + qint64 getId() const; + void setId(const qint64 &id); - qint64 getPetId(); - void setPetId(qint64 pet_id); + qint64 getPetId() const; + void setPetId(const qint64 &pet_id); - qint32 getQuantity(); - void setQuantity(qint32 quantity); + qint32 getQuantity() const; + void setQuantity(const qint32 &quantity); - QDateTime* getShipDate(); - void setShipDate(QDateTime* ship_date); + QDateTime getShipDate() const; + void setShipDate(const QDateTime &ship_date); - QString* getStatus(); - void setStatus(QString* status); + QString getStatus() const; + void setStatus(const QString &status); - bool isComplete(); - void setComplete(bool complete); + bool isComplete() const; + void setComplete(const bool &complete); - - virtual bool isSet() override; + virtual bool isSet() const override; private: qint64 id; @@ -73,10 +71,10 @@ class OAIOrder: public OAIObject { qint32 quantity; bool m_quantity_isSet; - QDateTime* ship_date; + QDateTime ship_date; bool m_ship_date_isSet; - QString* status; + QString status; bool m_status_isSet; bool complete; @@ -86,4 +84,4 @@ class OAIOrder: public OAIObject { } -#endif /* OAIOrder_H_ */ +#endif // OAIOrder_H diff --git a/samples/client/petstore/cpp-qt5/client/OAIPet.cpp b/samples/client/petstore/cpp-qt5/client/OAIPet.cpp index 54cba24f3de7..83e4b23f8e73 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIPet.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIPet.cpp @@ -23,90 +23,53 @@ namespace OpenAPI { OAIPet::OAIPet(QString json) { - init(); this->fromJson(json); } OAIPet::OAIPet() { - init(); + this->init(); } OAIPet::~OAIPet() { - this->cleanup(); + } void OAIPet::init() { - id = 0L; m_id_isSet = false; - category = new OAICategory(); m_category_isSet = false; - name = new QString(""); m_name_isSet = false; - photo_urls = new QList(); m_photo_urls_isSet = false; - tags = new QList(); m_tags_isSet = false; - status = new QString(""); m_status_isSet = false; } void -OAIPet::cleanup() { - - if(category != nullptr) { - delete category; - } - if(name != nullptr) { - delete name; - } - if(photo_urls != nullptr) { - auto arr = photo_urls; - for(auto o: *arr) { - delete o; - } - delete photo_urls; - } - if(tags != nullptr) { - auto arr = tags; - for(auto o: *arr) { - delete o; - } - delete tags; - } - if(status != nullptr) { - delete status; - } -} - -OAIPet* -OAIPet::fromJson(QString json) { - QByteArray array (json.toStdString().c_str()); +OAIPet::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); - return this; } void -OAIPet::fromJsonObject(QJsonObject pJson) { - ::OpenAPI::setValue(&id, pJson["id"], "qint64", ""); +OAIPet::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); - ::OpenAPI::setValue(&category, pJson["category"], "OAICategory", "OAICategory"); + ::OpenAPI::fromJsonValue(category, json[QString("category")]); - ::OpenAPI::setValue(&name, pJson["name"], "QString", "QString"); + ::OpenAPI::fromJsonValue(name, json[QString("name")]); - ::OpenAPI::setValue(&photo_urls, pJson["photoUrls"], "QList", "QString"); + ::OpenAPI::fromJsonValue(photo_urls, json[QString("photoUrls")]); - ::OpenAPI::setValue(&tags, pJson["tags"], "QList", "OAITag"); - ::OpenAPI::setValue(&status, pJson["status"], "QString", "QString"); + ::OpenAPI::fromJsonValue(tags, json[QString("tags")]); + ::OpenAPI::fromJsonValue(status, json[QString("status")]); } QString -OAIPet::asJson () -{ +OAIPet::asJson () const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -114,103 +77,110 @@ OAIPet::asJson () } QJsonObject -OAIPet::asJsonObject() { +OAIPet::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ - obj.insert("id", QJsonValue(id)); - } - if((category != nullptr) && (category->isSet())){ - toJsonValue(QString("category"), category, obj, QString("OAICategory")); + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); } - if(name != nullptr && *name != QString("")){ - toJsonValue(QString("name"), name, obj, QString("QString")); + if(category.isSet()){ + obj.insert(QString("category"), ::OpenAPI::toJsonValue(category)); } - if(photo_urls->size() > 0){ - toJsonArray((QList*)photo_urls, obj, "photoUrls", "QString"); + if(m_name_isSet){ + obj.insert(QString("name"), ::OpenAPI::toJsonValue(name)); } - if(tags->size() > 0){ - toJsonArray((QList*)tags, obj, "tags", "OAITag"); + + if(photo_urls.size() > 0){ + obj.insert(QString("photoUrls"), ::OpenAPI::toJsonValue(photo_urls)); + } + + if(tags.size() > 0){ + obj.insert(QString("tags"), ::OpenAPI::toJsonValue(tags)); + } + if(m_status_isSet){ + obj.insert(QString("status"), ::OpenAPI::toJsonValue(status)); } - if(status != nullptr && *status != QString("")){ - toJsonValue(QString("status"), status, obj, QString("QString")); - } - return obj; } qint64 -OAIPet::getId() { +OAIPet::getId() const { return id; } void -OAIPet::setId(qint64 id) { +OAIPet::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } -OAICategory* -OAIPet::getCategory() { +OAICategory +OAIPet::getCategory() const { return category; } void -OAIPet::setCategory(OAICategory* category) { +OAIPet::setCategory(const OAICategory &category) { this->category = category; this->m_category_isSet = true; } -QString* -OAIPet::getName() { +QString +OAIPet::getName() const { return name; } void -OAIPet::setName(QString* name) { +OAIPet::setName(const QString &name) { this->name = name; this->m_name_isSet = true; } -QList* -OAIPet::getPhotoUrls() { +QList +OAIPet::getPhotoUrls() const { return photo_urls; } void -OAIPet::setPhotoUrls(QList* photo_urls) { +OAIPet::setPhotoUrls(const QList &photo_urls) { this->photo_urls = photo_urls; this->m_photo_urls_isSet = true; } -QList* -OAIPet::getTags() { +QList +OAIPet::getTags() const { return tags; } void -OAIPet::setTags(QList* tags) { +OAIPet::setTags(const QList &tags) { this->tags = tags; this->m_tags_isSet = true; } -QString* -OAIPet::getStatus() { +QString +OAIPet::getStatus() const { return status; } void -OAIPet::setStatus(QString* status) { +OAIPet::setStatus(const QString &status) { this->status = status; this->m_status_isSet = true; } bool -OAIPet::isSet(){ +OAIPet::isSet() const { bool isObjectUpdated = false; - do{ + do{ if(m_id_isSet){ isObjectUpdated = true; break;} - if(category != nullptr && category->isSet()){ isObjectUpdated = true; break;} - if(name != nullptr && *name != QString("")){ isObjectUpdated = true; break;} - if(photo_urls->size() > 0){ isObjectUpdated = true; break;} - if(tags->size() > 0){ isObjectUpdated = true; break;} - if(status != nullptr && *status != QString("")){ isObjectUpdated = true; break;} + + if(category.isSet()){ isObjectUpdated = true; break;} + + if(m_name_isSet){ isObjectUpdated = true; break;} + + if(photo_urls.size() > 0){ isObjectUpdated = true; break;} + + if(tags.size() > 0){ isObjectUpdated = true; break;} + + if(m_status_isSet){ isObjectUpdated = true; break;} }while(false); return isObjectUpdated; } + } diff --git a/samples/client/petstore/cpp-qt5/client/OAIPet.h b/samples/client/petstore/cpp-qt5/client/OAIPet.h index 9e69b6b637f1..948040eb1e4b 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIPet.h +++ b/samples/client/petstore/cpp-qt5/client/OAIPet.h @@ -16,8 +16,8 @@ * A pet for sale in the pet store */ -#ifndef OAIPet_H_ -#define OAIPet_H_ +#ifndef OAIPet_H +#define OAIPet_H #include @@ -35,57 +35,55 @@ class OAIPet: public OAIObject { public: OAIPet(); OAIPet(QString json); - ~OAIPet(); + ~OAIPet() override; void init(); - void cleanup(); - QString asJson () override; - QJsonObject asJsonObject() override; + QString asJson () const override; + QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; - OAIPet* fromJson(QString jsonString) override; + void fromJson(QString jsonString) override; - qint64 getId(); - void setId(qint64 id); + qint64 getId() const; + void setId(const qint64 &id); - OAICategory* getCategory(); - void setCategory(OAICategory* category); + OAICategory getCategory() const; + void setCategory(const OAICategory &category); - QString* getName(); - void setName(QString* name); + QString getName() const; + void setName(const QString &name); - QList* getPhotoUrls(); - void setPhotoUrls(QList* photo_urls); + QList getPhotoUrls() const; + void setPhotoUrls(const QList &photo_urls); - QList* getTags(); - void setTags(QList* tags); + QList getTags() const; + void setTags(const QList &tags); - QString* getStatus(); - void setStatus(QString* status); + QString getStatus() const; + void setStatus(const QString &status); - - virtual bool isSet() override; + virtual bool isSet() const override; private: qint64 id; bool m_id_isSet; - OAICategory* category; + OAICategory category; bool m_category_isSet; - QString* name; + QString name; bool m_name_isSet; - QList* photo_urls; + QList photo_urls; bool m_photo_urls_isSet; - QList* tags; + QList tags; bool m_tags_isSet; - QString* status; + QString status; bool m_status_isSet; }; } -#endif /* OAIPet_H_ */ +#endif // OAIPet_H diff --git a/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp b/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp index e0be3d09bc91..3ed0d703e725 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIPetApi.cpp @@ -12,17 +12,19 @@ #include "OAIPetApi.h" #include "OAIHelpers.h" -#include "OAIModelFactory.h" -#include "OAIQObjectWrapper.h" #include #include namespace OpenAPI { -OAIPetApi::OAIPetApi() {} +OAIPetApi::OAIPetApi() { -OAIPetApi::~OAIPetApi() {} +} + +OAIPetApi::~OAIPetApi() { + +} OAIPetApi::OAIPetApi(QString host, QString basePath) { this->host = host; @@ -33,19 +35,15 @@ void OAIPetApi::addPet(OAIPet& oai_pet) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "POST"); - QString output = oai_pet.asJson(); input.request_body.append(output); - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -70,7 +68,6 @@ OAIPetApi::addPetCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -82,20 +79,16 @@ OAIPetApi::addPetCallback(OAIHttpRequestWorker * worker) { } void -OAIPetApi::deletePet(qint64 pet_id, QString* api_key) { +OAIPetApi::deletePet(qint64 pet_id, QString api_key) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet/{petId}"); - - QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); - fullPath.replace(pet_idPathParam, stringValue(pet_id)); - - + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + fullPath.replace(pet_idPathParam, ::OpenAPI::toStringValue(pet_id)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "DELETE"); - - - if (api_key != nullptr) { input.headers.insert("api_key", "api_key"); } @@ -124,7 +117,6 @@ OAIPetApi::deletePetCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -136,21 +128,18 @@ OAIPetApi::deletePetCallback(OAIHttpRequestWorker * worker) { } void -OAIPetApi::findPetsByStatus(QList* status) { +OAIPetApi::findPetsByStatus(QList status) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet/findByStatus"); - - - - - if (status->size() > 0) { + + if (status.size() > 0) { if (QString("csv").indexOf("multi") == 0) { - foreach(QString* t, *status) { + foreach(QString t, status) { if (fullPath.indexOf("?") > 0) fullPath.append("&"); else fullPath.append("?"); - fullPath.append("status=").append(stringValue(t)); + fullPath.append("status=").append(::OpenAPI::toStringValue(t)); } } else if (QString("csv").indexOf("ssv") == 0) { @@ -160,11 +149,11 @@ OAIPetApi::findPetsByStatus(QList* status) { fullPath.append("?"); fullPath.append("status="); qint32 count = 0; - foreach(QString* t, *status) { + foreach(QString t, status) { if (count > 0) { fullPath.append(" "); } - fullPath.append(stringValue(t)); + fullPath.append(::OpenAPI::toStringValue(t)); } } else if (QString("csv").indexOf("tsv") == 0) { @@ -174,23 +163,19 @@ OAIPetApi::findPetsByStatus(QList* status) { fullPath.append("?"); fullPath.append("status="); qint32 count = 0; - foreach(QString* t, *status) { + foreach(QString t, status) { if (count > 0) { fullPath.append("\t"); } - fullPath.append(stringValue(t)); + fullPath.append(::OpenAPI::toStringValue(t)); } } } - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -215,22 +200,15 @@ OAIPetApi::findPetsByStatusCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QList* output = new QList(); + QList output; QString json(worker->response); QByteArray array (json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonArray jsonArray = doc.array(); - auto wrapper = new OAIQObjectWrapper*> (output); - wrapper->deleteLater(); foreach(QJsonValue obj, jsonArray) { - OAIPet* o = new OAIPet(); - QJsonObject jv = obj.toObject(); - QJsonObject * ptr = (QJsonObject*)&jv; - o->fromJsonObject(*ptr); - auto objwrapper = new OAIQObjectWrapper (o); - objwrapper->deleteLater(); - output->append(o); + OAIPet val; + ::OpenAPI::fromJsonValue(val, obj); + output.append(val); } worker->deleteLater(); @@ -243,21 +221,18 @@ OAIPetApi::findPetsByStatusCallback(OAIHttpRequestWorker * worker) { } void -OAIPetApi::findPetsByTags(QList* tags) { +OAIPetApi::findPetsByTags(QList tags) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet/findByTags"); - - - - - if (tags->size() > 0) { + + if (tags.size() > 0) { if (QString("csv").indexOf("multi") == 0) { - foreach(QString* t, *tags) { + foreach(QString t, tags) { if (fullPath.indexOf("?") > 0) fullPath.append("&"); else fullPath.append("?"); - fullPath.append("tags=").append(stringValue(t)); + fullPath.append("tags=").append(::OpenAPI::toStringValue(t)); } } else if (QString("csv").indexOf("ssv") == 0) { @@ -267,11 +242,11 @@ OAIPetApi::findPetsByTags(QList* tags) { fullPath.append("?"); fullPath.append("tags="); qint32 count = 0; - foreach(QString* t, *tags) { + foreach(QString t, tags) { if (count > 0) { fullPath.append(" "); } - fullPath.append(stringValue(t)); + fullPath.append(::OpenAPI::toStringValue(t)); } } else if (QString("csv").indexOf("tsv") == 0) { @@ -281,23 +256,19 @@ OAIPetApi::findPetsByTags(QList* tags) { fullPath.append("?"); fullPath.append("tags="); qint32 count = 0; - foreach(QString* t, *tags) { + foreach(QString t, tags) { if (count > 0) { fullPath.append("\t"); } - fullPath.append(stringValue(t)); + fullPath.append(::OpenAPI::toStringValue(t)); } } } - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -322,22 +293,15 @@ OAIPetApi::findPetsByTagsCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QList* output = new QList(); + QList output; QString json(worker->response); QByteArray array (json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonArray jsonArray = doc.array(); - auto wrapper = new OAIQObjectWrapper*> (output); - wrapper->deleteLater(); foreach(QJsonValue obj, jsonArray) { - OAIPet* o = new OAIPet(); - QJsonObject jv = obj.toObject(); - QJsonObject * ptr = (QJsonObject*)&jv; - o->fromJsonObject(*ptr); - auto objwrapper = new OAIQObjectWrapper (o); - objwrapper->deleteLater(); - output->append(o); + OAIPet val; + ::OpenAPI::fromJsonValue(val, obj); + output.append(val); } worker->deleteLater(); @@ -353,18 +317,14 @@ void OAIPetApi::getPetById(qint64 pet_id) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet/{petId}"); - - QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); - fullPath.replace(pet_idPathParam, stringValue(pet_id)); - - + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + fullPath.replace(pet_idPathParam, ::OpenAPI::toStringValue(pet_id)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -389,11 +349,7 @@ OAIPetApi::getPetByIdCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QString json(worker->response); - OAIPet* output = static_cast(create(json, QString("OAIPet"))); - auto wrapper = new OAIQObjectWrapper (output); - wrapper->deleteLater(); + OAIPet output(QString(worker->response)); worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -408,19 +364,15 @@ void OAIPetApi::updatePet(OAIPet& oai_pet) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "PUT"); - QString output = oai_pet.asJson(); input.request_body.append(output); - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -445,7 +397,6 @@ OAIPetApi::updatePetCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -457,26 +408,22 @@ OAIPetApi::updatePetCallback(OAIHttpRequestWorker * worker) { } void -OAIPetApi::updatePetWithForm(qint64 pet_id, QString* name, QString* status) { +OAIPetApi::updatePetWithForm(qint64 pet_id, QString name, QString status) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet/{petId}"); - - QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); - fullPath.replace(pet_idPathParam, stringValue(pet_id)); - - + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + fullPath.replace(pet_idPathParam, ::OpenAPI::toStringValue(pet_id)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "POST"); - if (name != nullptr) { - input.add_var("name", *name); + input.add_var("name", name); } - if (status != nullptr) { - input.add_var("status", *status); + if (status != nullptr) { + input.add_var("status", status); } - - - + foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); @@ -502,7 +449,6 @@ OAIPetApi::updatePetWithFormCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -514,26 +460,22 @@ OAIPetApi::updatePetWithFormCallback(OAIHttpRequestWorker * worker) { } void -OAIPetApi::uploadFile(qint64 pet_id, QString* additional_metadata, OAIHttpRequestInputFileElement* file) { +OAIPetApi::uploadFile(qint64 pet_id, QString additional_metadata, OAIHttpRequestInputFileElement* file) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/pet/{petId}/uploadImage"); - - QString pet_idPathParam("{"); pet_idPathParam.append("petId").append("}"); - fullPath.replace(pet_idPathParam, stringValue(pet_id)); - - + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + fullPath.replace(pet_idPathParam, ::OpenAPI::toStringValue(pet_id)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "POST"); - if (additional_metadata != nullptr) { - input.add_var("additionalMetadata", *additional_metadata); + input.add_var("additionalMetadata", additional_metadata); } - if (file != nullptr) { + if (file != nullptr) { input.add_file("file", (*file).local_filename, (*file).request_filename, (*file).mime_type); } - - - + foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); @@ -559,11 +501,7 @@ OAIPetApi::uploadFileCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QString json(worker->response); - OAIApiResponse* output = static_cast(create(json, QString("OAIApiResponse"))); - auto wrapper = new OAIQObjectWrapper (output); - wrapper->deleteLater(); + OAIApiResponse output(QString(worker->response)); worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { diff --git a/samples/client/petstore/cpp-qt5/client/OAIPetApi.h b/samples/client/petstore/cpp-qt5/client/OAIPetApi.h index 497e4ad01132..31a5413acbcd 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIPetApi.h +++ b/samples/client/petstore/cpp-qt5/client/OAIPetApi.h @@ -10,8 +10,8 @@ * Do not edit the class manually. */ -#ifndef _OAI_OAIPetApi_H_ -#define _OAI_OAIPetApi_H_ +#ifndef OAI_OAIPetApi_H +#define OAI_OAIPetApi_H #include "OAIHttpRequest.h" @@ -37,13 +37,13 @@ class OAIPetApi: public QObject { QMap defaultHeaders; void addPet(OAIPet& oai_pet); - void deletePet(qint64 pet_id, QString* api_key); - void findPetsByStatus(QList* status); - void findPetsByTags(QList* tags); + void deletePet(qint64 pet_id, QString api_key); + void findPetsByStatus(QList status); + void findPetsByTags(QList tags); void getPetById(qint64 pet_id); void updatePet(OAIPet& oai_pet); - void updatePetWithForm(qint64 pet_id, QString* name, QString* status); - void uploadFile(qint64 pet_id, QString* additional_metadata, OAIHttpRequestInputFileElement* file); + void updatePetWithForm(qint64 pet_id, QString name, QString status); + void uploadFile(qint64 pet_id, QString additional_metadata, OAIHttpRequestInputFileElement* file); private: void addPetCallback (OAIHttpRequestWorker * worker); @@ -58,21 +58,21 @@ class OAIPetApi: public QObject { signals: void addPetSignal(); void deletePetSignal(); - void findPetsByStatusSignal(QList* summary); - void findPetsByTagsSignal(QList* summary); - void getPetByIdSignal(OAIPet* summary); + void findPetsByStatusSignal(QList summary); + void findPetsByTagsSignal(QList summary); + void getPetByIdSignal(OAIPet summary); void updatePetSignal(); void updatePetWithFormSignal(); - void uploadFileSignal(OAIApiResponse* summary); + void uploadFileSignal(OAIApiResponse summary); void addPetSignalE(QNetworkReply::NetworkError error_type, QString& error_str); void deletePetSignalE(QNetworkReply::NetworkError error_type, QString& error_str); - void findPetsByStatusSignalE(QList* summary, QNetworkReply::NetworkError error_type, QString& error_str); - void findPetsByTagsSignalE(QList* summary, QNetworkReply::NetworkError error_type, QString& error_str); - void getPetByIdSignalE(OAIPet* summary, QNetworkReply::NetworkError error_type, QString& error_str); + void findPetsByStatusSignalE(QList summary, QNetworkReply::NetworkError error_type, QString& error_str); + void findPetsByTagsSignalE(QList summary, QNetworkReply::NetworkError error_type, QString& error_str); + void getPetByIdSignalE(OAIPet summary, QNetworkReply::NetworkError error_type, QString& error_str); void updatePetSignalE(QNetworkReply::NetworkError error_type, QString& error_str); void updatePetWithFormSignalE(QNetworkReply::NetworkError error_type, QString& error_str); - void uploadFileSignalE(OAIApiResponse* summary, QNetworkReply::NetworkError error_type, QString& error_str); + void uploadFileSignalE(OAIApiResponse summary, QNetworkReply::NetworkError error_type, QString& error_str); void addPetSignalEFull(OAIHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str); void deletePetSignalEFull(OAIHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str); diff --git a/samples/client/petstore/cpp-qt5/client/OAIQObjectWrapper.h b/samples/client/petstore/cpp-qt5/client/OAIQObjectWrapper.h deleted file mode 100644 index d3ca4e38bf16..000000000000 --- a/samples/client/petstore/cpp-qt5/client/OAIQObjectWrapper.h +++ /dev/null @@ -1,35 +0,0 @@ -/** - * OpenAPI Petstore - * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. - * - * OpenAPI spec version: 1.0.0 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -#ifndef OAI_QOBJECT_WRAPPER_H -#define OAI_QOBJECT_WRAPPER_H - -#include - -namespace OpenAPI { - - template - class OAIQObjectWrapper : public QObject { - public: - OAIQObjectWrapper(ObjectPtrT ptr){ - data = ptr; - } - ~OAIQObjectWrapper(){ - delete data; - } - private : - ObjectPtrT data; - }; - -} - -#endif // OAI_QOBJECT_WRAPPER_H \ No newline at end of file diff --git a/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp b/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp index 1ad514f372ad..c13b04d9d983 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIStoreApi.cpp @@ -12,17 +12,19 @@ #include "OAIStoreApi.h" #include "OAIHelpers.h" -#include "OAIModelFactory.h" -#include "OAIQObjectWrapper.h" #include #include namespace OpenAPI { -OAIStoreApi::OAIStoreApi() {} +OAIStoreApi::OAIStoreApi() { -OAIStoreApi::~OAIStoreApi() {} +} + +OAIStoreApi::~OAIStoreApi() { + +} OAIStoreApi::OAIStoreApi(QString host, QString basePath) { this->host = host; @@ -30,21 +32,17 @@ OAIStoreApi::OAIStoreApi(QString host, QString basePath) { } void -OAIStoreApi::deleteOrder(QString* order_id) { +OAIStoreApi::deleteOrder(QString order_id) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/store/order/{orderId}"); - - QString order_idPathParam("{"); order_idPathParam.append("orderId").append("}"); - fullPath.replace(order_idPathParam, stringValue(order_id)); - - + QString order_idPathParam("{"); + order_idPathParam.append("orderId").append("}"); + fullPath.replace(order_idPathParam, ::OpenAPI::toStringValue(order_id)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "DELETE"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -69,7 +67,6 @@ OAIStoreApi::deleteOrderCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -84,16 +81,11 @@ void OAIStoreApi::getInventory() { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/store/inventory"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -118,17 +110,15 @@ OAIStoreApi::getInventoryCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QMap* output = new QMap(); + QMap output; QString json(worker->response); QByteArray array (json.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject obj = doc.object(); - foreach(QString key, obj.keys()) { qint32 val; - setValue(&val, obj[key], "qint32", QString()); - output->insert(key, val); + ::OpenAPI::fromJsonValue(val, obj[key]); + output.insert(key, val); } worker->deleteLater(); @@ -144,18 +134,14 @@ void OAIStoreApi::getOrderById(qint64 order_id) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/store/order/{orderId}"); - - QString order_idPathParam("{"); order_idPathParam.append("orderId").append("}"); - fullPath.replace(order_idPathParam, stringValue(order_id)); - - + QString order_idPathParam("{"); + order_idPathParam.append("orderId").append("}"); + fullPath.replace(order_idPathParam, ::OpenAPI::toStringValue(order_id)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -180,11 +166,7 @@ OAIStoreApi::getOrderByIdCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QString json(worker->response); - OAIOrder* output = static_cast(create(json, QString("OAIOrder"))); - auto wrapper = new OAIQObjectWrapper (output); - wrapper->deleteLater(); + OAIOrder output(QString(worker->response)); worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -199,19 +181,15 @@ void OAIStoreApi::placeOrder(OAIOrder& oai_order) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/store/order"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "POST"); - QString output = oai_order.asJson(); input.request_body.append(output); - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -236,11 +214,7 @@ OAIStoreApi::placeOrderCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QString json(worker->response); - OAIOrder* output = static_cast(create(json, QString("OAIOrder"))); - auto wrapper = new OAIQObjectWrapper (output); - wrapper->deleteLater(); + OAIOrder output(QString(worker->response)); worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { diff --git a/samples/client/petstore/cpp-qt5/client/OAIStoreApi.h b/samples/client/petstore/cpp-qt5/client/OAIStoreApi.h index 7f08be814d64..67a0916b7a16 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIStoreApi.h +++ b/samples/client/petstore/cpp-qt5/client/OAIStoreApi.h @@ -10,8 +10,8 @@ * Do not edit the class manually. */ -#ifndef _OAI_OAIStoreApi_H_ -#define _OAI_OAIStoreApi_H_ +#ifndef OAI_OAIStoreApi_H +#define OAI_OAIStoreApi_H #include "OAIHttpRequest.h" @@ -35,7 +35,7 @@ class OAIStoreApi: public QObject { QString basePath; QMap defaultHeaders; - void deleteOrder(QString* order_id); + void deleteOrder(QString order_id); void getInventory(); void getOrderById(qint64 order_id); void placeOrder(OAIOrder& oai_order); @@ -48,14 +48,14 @@ class OAIStoreApi: public QObject { signals: void deleteOrderSignal(); - void getInventorySignal(QMap* summary); - void getOrderByIdSignal(OAIOrder* summary); - void placeOrderSignal(OAIOrder* summary); + void getInventorySignal(QMap summary); + void getOrderByIdSignal(OAIOrder summary); + void placeOrderSignal(OAIOrder summary); void deleteOrderSignalE(QNetworkReply::NetworkError error_type, QString& error_str); - void getInventorySignalE(QMap* summary, QNetworkReply::NetworkError error_type, QString& error_str); - void getOrderByIdSignalE(OAIOrder* summary, QNetworkReply::NetworkError error_type, QString& error_str); - void placeOrderSignalE(OAIOrder* summary, QNetworkReply::NetworkError error_type, QString& error_str); + void getInventorySignalE(QMap summary, QNetworkReply::NetworkError error_type, QString& error_str); + void getOrderByIdSignalE(OAIOrder summary, QNetworkReply::NetworkError error_type, QString& error_str); + void placeOrderSignalE(OAIOrder summary, QNetworkReply::NetworkError error_type, QString& error_str); void deleteOrderSignalEFull(OAIHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str); void getInventorySignalEFull(OAIHttpRequestWorker* worker, QNetworkReply::NetworkError error_type, QString& error_str); diff --git a/samples/client/petstore/cpp-qt5/client/OAITag.cpp b/samples/client/petstore/cpp-qt5/client/OAITag.cpp index a70a77de773e..d450cc833f6d 100644 --- a/samples/client/petstore/cpp-qt5/client/OAITag.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAITag.cpp @@ -23,54 +23,41 @@ namespace OpenAPI { OAITag::OAITag(QString json) { - init(); this->fromJson(json); } OAITag::OAITag() { - init(); + this->init(); } OAITag::~OAITag() { - this->cleanup(); + } void OAITag::init() { - id = 0L; m_id_isSet = false; - name = new QString(""); m_name_isSet = false; } void -OAITag::cleanup() { - - if(name != nullptr) { - delete name; - } -} - -OAITag* -OAITag::fromJson(QString json) { - QByteArray array (json.toStdString().c_str()); +OAITag::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); - return this; } void -OAITag::fromJsonObject(QJsonObject pJson) { - ::OpenAPI::setValue(&id, pJson["id"], "qint64", ""); +OAITag::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); - ::OpenAPI::setValue(&name, pJson["name"], "QString", "QString"); + ::OpenAPI::fromJsonValue(name, json[QString("name")]); } QString -OAITag::asJson () -{ +OAITag::asJson () const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -78,47 +65,48 @@ OAITag::asJson () } QJsonObject -OAITag::asJsonObject() { +OAITag::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ - obj.insert("id", QJsonValue(id)); + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); } - if(name != nullptr && *name != QString("")){ - toJsonValue(QString("name"), name, obj, QString("QString")); + if(m_name_isSet){ + obj.insert(QString("name"), ::OpenAPI::toJsonValue(name)); } - return obj; } qint64 -OAITag::getId() { +OAITag::getId() const { return id; } void -OAITag::setId(qint64 id) { +OAITag::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } -QString* -OAITag::getName() { +QString +OAITag::getName() const { return name; } void -OAITag::setName(QString* name) { +OAITag::setName(const QString &name) { this->name = name; this->m_name_isSet = true; } bool -OAITag::isSet(){ +OAITag::isSet() const { bool isObjectUpdated = false; - do{ + do{ if(m_id_isSet){ isObjectUpdated = true; break;} - if(name != nullptr && *name != QString("")){ isObjectUpdated = true; break;} + + if(m_name_isSet){ isObjectUpdated = true; break;} }while(false); return isObjectUpdated; } + } diff --git a/samples/client/petstore/cpp-qt5/client/OAITag.h b/samples/client/petstore/cpp-qt5/client/OAITag.h index ab06fb06f2d8..c6deb9cfef7d 100644 --- a/samples/client/petstore/cpp-qt5/client/OAITag.h +++ b/samples/client/petstore/cpp-qt5/client/OAITag.h @@ -16,8 +16,8 @@ * A tag for a pet */ -#ifndef OAITag_H_ -#define OAITag_H_ +#ifndef OAITag_H +#define OAITag_H #include @@ -32,33 +32,31 @@ class OAITag: public OAIObject { public: OAITag(); OAITag(QString json); - ~OAITag(); + ~OAITag() override; void init(); - void cleanup(); - QString asJson () override; - QJsonObject asJsonObject() override; + QString asJson () const override; + QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; - OAITag* fromJson(QString jsonString) override; + void fromJson(QString jsonString) override; - qint64 getId(); - void setId(qint64 id); + qint64 getId() const; + void setId(const qint64 &id); - QString* getName(); - void setName(QString* name); + QString getName() const; + void setName(const QString &name); - - virtual bool isSet() override; + virtual bool isSet() const override; private: qint64 id; bool m_id_isSet; - QString* name; + QString name; bool m_name_isSet; }; } -#endif /* OAITag_H_ */ +#endif // OAITag_H diff --git a/samples/client/petstore/cpp-qt5/client/OAIUser.cpp b/samples/client/petstore/cpp-qt5/client/OAIUser.cpp index d36db702e4da..9f345cf874a2 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIUser.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIUser.cpp @@ -23,94 +23,59 @@ namespace OpenAPI { OAIUser::OAIUser(QString json) { - init(); this->fromJson(json); } OAIUser::OAIUser() { - init(); + this->init(); } OAIUser::~OAIUser() { - this->cleanup(); + } void OAIUser::init() { - id = 0L; m_id_isSet = false; - username = new QString(""); m_username_isSet = false; - first_name = new QString(""); m_first_name_isSet = false; - last_name = new QString(""); m_last_name_isSet = false; - email = new QString(""); m_email_isSet = false; - password = new QString(""); m_password_isSet = false; - phone = new QString(""); m_phone_isSet = false; - user_status = 0; m_user_status_isSet = false; } void -OAIUser::cleanup() { - - if(username != nullptr) { - delete username; - } - if(first_name != nullptr) { - delete first_name; - } - if(last_name != nullptr) { - delete last_name; - } - if(email != nullptr) { - delete email; - } - if(password != nullptr) { - delete password; - } - if(phone != nullptr) { - delete phone; - } - -} - -OAIUser* -OAIUser::fromJson(QString json) { - QByteArray array (json.toStdString().c_str()); +OAIUser::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); QJsonDocument doc = QJsonDocument::fromJson(array); QJsonObject jsonObject = doc.object(); this->fromJsonObject(jsonObject); - return this; } void -OAIUser::fromJsonObject(QJsonObject pJson) { - ::OpenAPI::setValue(&id, pJson["id"], "qint64", ""); +OAIUser::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); - ::OpenAPI::setValue(&username, pJson["username"], "QString", "QString"); + ::OpenAPI::fromJsonValue(username, json[QString("username")]); - ::OpenAPI::setValue(&first_name, pJson["firstName"], "QString", "QString"); + ::OpenAPI::fromJsonValue(first_name, json[QString("firstName")]); - ::OpenAPI::setValue(&last_name, pJson["lastName"], "QString", "QString"); + ::OpenAPI::fromJsonValue(last_name, json[QString("lastName")]); - ::OpenAPI::setValue(&email, pJson["email"], "QString", "QString"); + ::OpenAPI::fromJsonValue(email, json[QString("email")]); - ::OpenAPI::setValue(&password, pJson["password"], "QString", "QString"); + ::OpenAPI::fromJsonValue(password, json[QString("password")]); - ::OpenAPI::setValue(&phone, pJson["phone"], "QString", "QString"); + ::OpenAPI::fromJsonValue(phone, json[QString("phone")]); - ::OpenAPI::setValue(&user_status, pJson["userStatus"], "qint32", ""); + ::OpenAPI::fromJsonValue(user_status, json[QString("userStatus")]); } QString -OAIUser::asJson () -{ +OAIUser::asJson () const { QJsonObject obj = this->asJsonObject(); QJsonDocument doc(obj); QByteArray bytes = doc.toJson(); @@ -118,131 +83,138 @@ OAIUser::asJson () } QJsonObject -OAIUser::asJsonObject() { +OAIUser::asJsonObject() const { QJsonObject obj; - if(m_id_isSet){ - obj.insert("id", QJsonValue(id)); + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); } - if(username != nullptr && *username != QString("")){ - toJsonValue(QString("username"), username, obj, QString("QString")); + if(m_username_isSet){ + obj.insert(QString("username"), ::OpenAPI::toJsonValue(username)); } - if(first_name != nullptr && *first_name != QString("")){ - toJsonValue(QString("firstName"), first_name, obj, QString("QString")); + if(m_first_name_isSet){ + obj.insert(QString("firstName"), ::OpenAPI::toJsonValue(first_name)); } - if(last_name != nullptr && *last_name != QString("")){ - toJsonValue(QString("lastName"), last_name, obj, QString("QString")); + if(m_last_name_isSet){ + obj.insert(QString("lastName"), ::OpenAPI::toJsonValue(last_name)); } - if(email != nullptr && *email != QString("")){ - toJsonValue(QString("email"), email, obj, QString("QString")); + if(m_email_isSet){ + obj.insert(QString("email"), ::OpenAPI::toJsonValue(email)); } - if(password != nullptr && *password != QString("")){ - toJsonValue(QString("password"), password, obj, QString("QString")); + if(m_password_isSet){ + obj.insert(QString("password"), ::OpenAPI::toJsonValue(password)); } - if(phone != nullptr && *phone != QString("")){ - toJsonValue(QString("phone"), phone, obj, QString("QString")); + if(m_phone_isSet){ + obj.insert(QString("phone"), ::OpenAPI::toJsonValue(phone)); } - if(m_user_status_isSet){ - obj.insert("userStatus", QJsonValue(user_status)); + if(m_user_status_isSet){ + obj.insert(QString("userStatus"), ::OpenAPI::toJsonValue(user_status)); } - return obj; } qint64 -OAIUser::getId() { +OAIUser::getId() const { return id; } void -OAIUser::setId(qint64 id) { +OAIUser::setId(const qint64 &id) { this->id = id; this->m_id_isSet = true; } -QString* -OAIUser::getUsername() { +QString +OAIUser::getUsername() const { return username; } void -OAIUser::setUsername(QString* username) { +OAIUser::setUsername(const QString &username) { this->username = username; this->m_username_isSet = true; } -QString* -OAIUser::getFirstName() { +QString +OAIUser::getFirstName() const { return first_name; } void -OAIUser::setFirstName(QString* first_name) { +OAIUser::setFirstName(const QString &first_name) { this->first_name = first_name; this->m_first_name_isSet = true; } -QString* -OAIUser::getLastName() { +QString +OAIUser::getLastName() const { return last_name; } void -OAIUser::setLastName(QString* last_name) { +OAIUser::setLastName(const QString &last_name) { this->last_name = last_name; this->m_last_name_isSet = true; } -QString* -OAIUser::getEmail() { +QString +OAIUser::getEmail() const { return email; } void -OAIUser::setEmail(QString* email) { +OAIUser::setEmail(const QString &email) { this->email = email; this->m_email_isSet = true; } -QString* -OAIUser::getPassword() { +QString +OAIUser::getPassword() const { return password; } void -OAIUser::setPassword(QString* password) { +OAIUser::setPassword(const QString &password) { this->password = password; this->m_password_isSet = true; } -QString* -OAIUser::getPhone() { +QString +OAIUser::getPhone() const { return phone; } void -OAIUser::setPhone(QString* phone) { +OAIUser::setPhone(const QString &phone) { this->phone = phone; this->m_phone_isSet = true; } qint32 -OAIUser::getUserStatus() { +OAIUser::getUserStatus() const { return user_status; } void -OAIUser::setUserStatus(qint32 user_status) { +OAIUser::setUserStatus(const qint32 &user_status) { this->user_status = user_status; this->m_user_status_isSet = true; } bool -OAIUser::isSet(){ +OAIUser::isSet() const { bool isObjectUpdated = false; - do{ + do{ if(m_id_isSet){ isObjectUpdated = true; break;} - if(username != nullptr && *username != QString("")){ isObjectUpdated = true; break;} - if(first_name != nullptr && *first_name != QString("")){ isObjectUpdated = true; break;} - if(last_name != nullptr && *last_name != QString("")){ isObjectUpdated = true; break;} - if(email != nullptr && *email != QString("")){ isObjectUpdated = true; break;} - if(password != nullptr && *password != QString("")){ isObjectUpdated = true; break;} - if(phone != nullptr && *phone != QString("")){ isObjectUpdated = true; break;} + + if(m_username_isSet){ isObjectUpdated = true; break;} + + if(m_first_name_isSet){ isObjectUpdated = true; break;} + + if(m_last_name_isSet){ isObjectUpdated = true; break;} + + if(m_email_isSet){ isObjectUpdated = true; break;} + + if(m_password_isSet){ isObjectUpdated = true; break;} + + if(m_phone_isSet){ isObjectUpdated = true; break;} + if(m_user_status_isSet){ isObjectUpdated = true; break;} }while(false); return isObjectUpdated; } + } diff --git a/samples/client/petstore/cpp-qt5/client/OAIUser.h b/samples/client/petstore/cpp-qt5/client/OAIUser.h index 389356c0e72b..fce595439c2b 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIUser.h +++ b/samples/client/petstore/cpp-qt5/client/OAIUser.h @@ -16,8 +16,8 @@ * A User who is purchasing from the pet store */ -#ifndef OAIUser_H_ -#define OAIUser_H_ +#ifndef OAIUser_H +#define OAIUser_H #include @@ -32,62 +32,60 @@ class OAIUser: public OAIObject { public: OAIUser(); OAIUser(QString json); - ~OAIUser(); + ~OAIUser() override; void init(); - void cleanup(); - QString asJson () override; - QJsonObject asJsonObject() override; + QString asJson () const override; + QJsonObject asJsonObject() const override; void fromJsonObject(QJsonObject json) override; - OAIUser* fromJson(QString jsonString) override; + void fromJson(QString jsonString) override; - qint64 getId(); - void setId(qint64 id); + qint64 getId() const; + void setId(const qint64 &id); - QString* getUsername(); - void setUsername(QString* username); + QString getUsername() const; + void setUsername(const QString &username); - QString* getFirstName(); - void setFirstName(QString* first_name); + QString getFirstName() const; + void setFirstName(const QString &first_name); - QString* getLastName(); - void setLastName(QString* last_name); + QString getLastName() const; + void setLastName(const QString &last_name); - QString* getEmail(); - void setEmail(QString* email); + QString getEmail() const; + void setEmail(const QString &email); - QString* getPassword(); - void setPassword(QString* password); + QString getPassword() const; + void setPassword(const QString &password); - QString* getPhone(); - void setPhone(QString* phone); + QString getPhone() const; + void setPhone(const QString &phone); - qint32 getUserStatus(); - void setUserStatus(qint32 user_status); + qint32 getUserStatus() const; + void setUserStatus(const qint32 &user_status); - - virtual bool isSet() override; + virtual bool isSet() const override; private: qint64 id; bool m_id_isSet; - QString* username; + QString username; bool m_username_isSet; - QString* first_name; + QString first_name; bool m_first_name_isSet; - QString* last_name; + QString last_name; bool m_last_name_isSet; - QString* email; + QString email; bool m_email_isSet; - QString* password; + QString password; bool m_password_isSet; - QString* phone; + QString phone; bool m_phone_isSet; qint32 user_status; @@ -97,4 +95,4 @@ class OAIUser: public OAIObject { } -#endif /* OAIUser_H_ */ +#endif // OAIUser_H diff --git a/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp b/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp index 6ba2797ff903..a4c2e5e28b07 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp +++ b/samples/client/petstore/cpp-qt5/client/OAIUserApi.cpp @@ -12,17 +12,19 @@ #include "OAIUserApi.h" #include "OAIHelpers.h" -#include "OAIModelFactory.h" -#include "OAIQObjectWrapper.h" #include #include namespace OpenAPI { -OAIUserApi::OAIUserApi() {} +OAIUserApi::OAIUserApi() { -OAIUserApi::~OAIUserApi() {} +} + +OAIUserApi::~OAIUserApi() { + +} OAIUserApi::OAIUserApi(QString host, QString basePath) { this->host = host; @@ -33,19 +35,15 @@ void OAIUserApi::createUser(OAIUser& oai_user) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "POST"); - QString output = oai_user.asJson(); input.request_body.append(output); - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -70,7 +68,6 @@ OAIUserApi::createUserCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -82,26 +79,19 @@ OAIUserApi::createUserCallback(OAIHttpRequestWorker * worker) { } void -OAIUserApi::createUsersWithArrayInput(QList*& oai_user) { +OAIUserApi::createUsersWithArrayInput(QList& oai_user) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user/createWithArray"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "POST"); - - QJsonObject oai_user_jobj; - toJsonArray((QList*)oai_user, oai_user_jobj, QString("body"), QString("OAIUser*")); - - QJsonDocument doc(oai_user_jobj); + + QJsonDocument doc(::OpenAPI::toJsonValue(oai_user).toArray()); QByteArray bytes = doc.toJson(); - input.request_body.append(bytes); - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -126,7 +116,6 @@ OAIUserApi::createUsersWithArrayInputCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -138,26 +127,19 @@ OAIUserApi::createUsersWithArrayInputCallback(OAIHttpRequestWorker * worker) { } void -OAIUserApi::createUsersWithListInput(QList*& oai_user) { +OAIUserApi::createUsersWithListInput(QList& oai_user) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user/createWithList"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "POST"); - - QJsonObject oai_user_jobj; - toJsonArray((QList*)oai_user, oai_user_jobj, QString("body"), QString("OAIUser*")); - - QJsonDocument doc(oai_user_jobj); + + QJsonDocument doc(::OpenAPI::toJsonValue(oai_user).toArray()); QByteArray bytes = doc.toJson(); - input.request_body.append(bytes); - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -182,7 +164,6 @@ OAIUserApi::createUsersWithListInputCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -194,21 +175,17 @@ OAIUserApi::createUsersWithListInputCallback(OAIHttpRequestWorker * worker) { } void -OAIUserApi::deleteUser(QString* username) { +OAIUserApi::deleteUser(QString username) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user/{username}"); - - QString usernamePathParam("{"); usernamePathParam.append("username").append("}"); - fullPath.replace(usernamePathParam, stringValue(username)); - - + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + fullPath.replace(usernamePathParam, ::OpenAPI::toStringValue(username)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "DELETE"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -233,7 +210,6 @@ OAIUserApi::deleteUserCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -245,21 +221,17 @@ OAIUserApi::deleteUserCallback(OAIHttpRequestWorker * worker) { } void -OAIUserApi::getUserByName(QString* username) { +OAIUserApi::getUserByName(QString username) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user/{username}"); - - QString usernamePathParam("{"); usernamePathParam.append("username").append("}"); - fullPath.replace(usernamePathParam, stringValue(username)); - - + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + fullPath.replace(usernamePathParam, ::OpenAPI::toStringValue(username)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -284,11 +256,7 @@ OAIUserApi::getUserByNameCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QString json(worker->response); - OAIUser* output = static_cast(create(json, QString("OAIUser"))); - auto wrapper = new OAIQObjectWrapper (output); - wrapper->deleteLater(); + OAIUser output(QString(worker->response)); worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -300,35 +268,30 @@ OAIUserApi::getUserByNameCallback(OAIHttpRequestWorker * worker) { } void -OAIUserApi::loginUser(QString* username, QString* password) { +OAIUserApi::loginUser(QString username, QString password) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user/login"); - - + if (fullPath.indexOf("?") > 0) fullPath.append("&"); else fullPath.append("?"); fullPath.append(QUrl::toPercentEncoding("username")) .append("=") - .append(QUrl::toPercentEncoding(stringValue(username))); - + .append(QUrl::toPercentEncoding(::OpenAPI::toStringValue(username))); + if (fullPath.indexOf("?") > 0) fullPath.append("&"); else fullPath.append("?"); fullPath.append(QUrl::toPercentEncoding("password")) .append("=") - .append(QUrl::toPercentEncoding(stringValue(password))); - - + .append(QUrl::toPercentEncoding(::OpenAPI::toStringValue(password))); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -353,11 +316,8 @@ OAIUserApi::loginUserCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - - QString json(worker->response); - QString* output = static_cast(create(json, QString("QString"))); - auto wrapper = new OAIQObjectWrapper (output); - wrapper->deleteLater(); + QString output; + ::OpenAPI::fromStringValue(QString(worker->response), output); worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -372,16 +332,11 @@ void OAIUserApi::logoutUser() { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user/logout"); - - - + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "GET"); - - - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -406,7 +361,6 @@ OAIUserApi::logoutUserCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { @@ -418,24 +372,21 @@ OAIUserApi::logoutUserCallback(OAIHttpRequestWorker * worker) { } void -OAIUserApi::updateUser(QString* username, OAIUser& oai_user) { +OAIUserApi::updateUser(QString username, OAIUser& oai_user) { QString fullPath; fullPath.append(this->host).append(this->basePath).append("/user/{username}"); - - QString usernamePathParam("{"); usernamePathParam.append("username").append("}"); - fullPath.replace(usernamePathParam, stringValue(username)); - - + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + fullPath.replace(usernamePathParam, ::OpenAPI::toStringValue(username)); + OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(); OAIHttpRequestInput input(fullPath, "PUT"); - QString output = oai_user.asJson(); input.request_body.append(output); - foreach(QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); } @@ -460,7 +411,6 @@ OAIUserApi::updateUserCallback(OAIHttpRequestWorker * worker) { else { msg = "Error: " + worker->error_str; } - worker->deleteLater(); if (worker->error_type == QNetworkReply::NoError) { diff --git a/samples/client/petstore/cpp-qt5/client/OAIUserApi.h b/samples/client/petstore/cpp-qt5/client/OAIUserApi.h index 137b964bde90..775ea98e5078 100644 --- a/samples/client/petstore/cpp-qt5/client/OAIUserApi.h +++ b/samples/client/petstore/cpp-qt5/client/OAIUserApi.h @@ -10,8 +10,8 @@ * Do not edit the class manually. */ -#ifndef _OAI_OAIUserApi_H_ -#define _OAI_OAIUserApi_H_ +#ifndef OAI_OAIUserApi_H +#define OAI_OAIUserApi_H #include "OAIHttpRequest.h" @@ -36,13 +36,13 @@ class OAIUserApi: public QObject { QMap defaultHeaders; void createUser(OAIUser& oai_user); - void createUsersWithArrayInput(QList*& oai_user); - void createUsersWithListInput(QList*& oai_user); - void deleteUser(QString* username); - void getUserByName(QString* username); - void loginUser(QString* username, QString* password); + void createUsersWithArrayInput(QList& oai_user); + void createUsersWithListInput(QList& oai_user); + void deleteUser(QString username); + void getUserByName(QString username); + void loginUser(QString username, QString password); void logoutUser(); - void updateUser(QString* username, OAIUser& oai_user); + void updateUser(QString username, OAIUser& oai_user); private: void createUserCallback (OAIHttpRequestWorker * worker); @@ -59,8 +59,8 @@ class OAIUserApi: public QObject { void createUsersWithArrayInputSignal(); void createUsersWithListInputSignal(); void deleteUserSignal(); - void getUserByNameSignal(OAIUser* summary); - void loginUserSignal(QString* summary); + void getUserByNameSignal(OAIUser summary); + void loginUserSignal(QString summary); void logoutUserSignal(); void updateUserSignal(); @@ -68,8 +68,8 @@ class OAIUserApi: public QObject { void createUsersWithArrayInputSignalE(QNetworkReply::NetworkError error_type, QString& error_str); void createUsersWithListInputSignalE(QNetworkReply::NetworkError error_type, QString& error_str); void deleteUserSignalE(QNetworkReply::NetworkError error_type, QString& error_str); - void getUserByNameSignalE(OAIUser* summary, QNetworkReply::NetworkError error_type, QString& error_str); - void loginUserSignalE(QString* summary, QNetworkReply::NetworkError error_type, QString& error_str); + void getUserByNameSignalE(OAIUser summary, QNetworkReply::NetworkError error_type, QString& error_str); + void loginUserSignalE(QString summary, QNetworkReply::NetworkError error_type, QString& error_str); void logoutUserSignalE(QNetworkReply::NetworkError error_type, QString& error_str); void updateUserSignalE(QNetworkReply::NetworkError error_type, QString& error_str); diff --git a/samples/client/petstore/cpp-qt5/client/client.pri b/samples/client/petstore/cpp-qt5/client/client.pri index 2b1e0e572806..858d450b176c 100644 --- a/samples/client/petstore/cpp-qt5/client/client.pri +++ b/samples/client/petstore/cpp-qt5/client/client.pri @@ -15,9 +15,7 @@ HEADERS += \ # Others $${PWD}/OAIHelpers.h \ $${PWD}/OAIHttpRequest.h \ - $${PWD}/OAIModelFactory.h \ - $${PWD}/OAIObject.h \ - $${PWD}/OAIQObjectWrapper.h + $${PWD}/OAIObject.h SOURCES += \ # Models diff --git a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIObject.h b/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIObject.h index fe37f898f7df..aeb5ccfc52c0 100644 --- a/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIObject.h +++ b/samples/server/petstore/cpp-qt5-qhttpengine-server/server/src/models/OAIObject.h @@ -10,8 +10,8 @@ * Do not edit the class manually. */ -#ifndef _OAI_OBJECT_H_ -#define _OAI_OBJECT_H_ +#ifndef OAI_OBJECT_H +#define OAI_OBJECT_H #include #include @@ -51,4 +51,4 @@ private : } -#endif /* _OAI_OBJECT_H_ */ +#endif // OAI_OBJECT_H