def testJavaBeanTemplateWithFilter(self): dirpath = Path('tmp', 'javaBeans3') if dirpath.exists() and dirpath.is_dir(): shutil.rmtree(dirpath) modelFile = 'resources/models/yaml/userConfig.swagger.yaml' modelFileExists = os.path.isfile(modelFile) self.assertTrue('model file exists: ' + modelFile, modelFileExists) model = config.Model() model.schema = modelFile modelTypes = getModelFromYaml(model, []) templateFile = 'resources/templates/examples/javaBeans.mako' templateFileExists = os.path.isfile(templateFile) self.assertTrue('template file exists: ' + templateFile, templateFileExists) templateParameters = [] templateParam = config.TemplateParam() templateParam.name = 'modelPackage' templateParam.value = 'de.test.model' templateParameters.append(templateParam) multiFileTask = MultiFileTask() multiFileTask.template = templateFile multiFileTask.destDir = 'tmp/javaBeans3/de/test/model' multiFileTask.destFileExt = 'java' multiFileTask.upperCaseStartedDestFileName = True multiFileTask.fileFilterType = MultiFileTaskFileFilterTypeEnum.OPENAPIOPERATIONID multiFileTask.templateParams = templateParameters whiteList = [] whiteListEntry = BlackWhiteListEntry() whiteListEntry.name = 'PathType' whiteListEntry.type = BlackWhiteListEntryTypeEnum.TYPETYPE whiteList.append(whiteListEntry) renderMultiFileTemplate(modelTypes, (), whiteList, multiFileTask)
def testJavaBeanTemplate(self): dirpath = Path('tmp', 'javaBeans') if dirpath.exists() and dirpath.is_dir(): shutil.rmtree(dirpath) modelFile = 'resources/models/json/yacg_model_schema.json' modelFileExists = os.path.isfile(modelFile) self.assertTrue('model file exists: ' + modelFile, modelFileExists) model = config.Model() model.schema = modelFile modelTypes = getModelFromJson(model, []) templateFile = 'resources/templates/examples/javaBeans.mako' templateFileExists = os.path.isfile(templateFile) self.assertTrue('template file exists: ' + templateFile, templateFileExists) templateParameters = [] templateParam = config.TemplateParam() templateParam.name = 'modelPackage' templateParam.value = 'de.test.model' templateParameters.append(templateParam) multiFileTask = MultiFileTask() multiFileTask.template = templateFile multiFileTask.destDir = 'tmp/javaBeans/de/test/model' multiFileTask.destFileExt = 'java' multiFileTask.templateParams = templateParameters renderMultiFileTemplate(modelTypes, (), (), multiFileTask)
def __doCodeGen(codeGenerationJobs, args): """process the jobs to do the actual code generation """ previousCodeGenMetaData = protocolFuncs.getPreviousMetaData( args.protocolFile, args.noLogs) previousJobsMetaData = previousCodeGenMetaData.get("jobs", {}) codeGenMetaData = {} jobsMetaData = {} codeGenMetaData["date"] = datetime.now().strftime("%d-%m-%Y %H:%M:%S.%f") codeGenMetaData["jobs"] = jobsMetaData allSkipped = True jobIndex = 1 for job in codeGenerationJobs: alloadedTypes = readModels(job, args.flattenInheritance) modelMetaData = protocolFuncs.getModelMetaData(alloadedTypes, job.models[0].schema) jobName = job.name if job.name else "UNKNOWN_JOB_{}".format(jobIndex) jobsMetaData[jobName] = modelMetaData jobIndex = jobIndex + 1 if protocolFuncs.shouldSkipCodeGen(args.skipCodeGenIfVersionUnchanged, args.skipCodeGenIfMd5Unchanged, previousJobsMetaData, modelMetaData, jobName, args.noLogs) is True: if not args.noLogs: logging.info(" SKIP CODEGEN: {}".format(jobName)) continue if not args.noLogs: logging.info(" do codeGen: {}".format(jobName)) if args.skipCodeGenDryRun is True: if not args.noLogs: logging.info( " 'skipCodeGenDryRun' is set, so no codeGen is executed': {}" .format(jobName)) continue # dictionary types are not really useful as toplevel types ... so it's # better to remove them - TODO add a commandline switch for that allSkipped = False loadedTypes = [] for t in alloadedTypes: if not isinstance(t, DictionaryType): loadedTypes.append(t) for task in job.tasks: if task.singleFileTask is not None: renderSingleFileTemplate(loadedTypes, task.blackListed, task.whiteListed, task.singleFileTask) elif task.multiFileTask is not None: renderMultiFileTemplate(loadedTypes, task.blackListed, task.whiteListed, task.multiFileTask) elif task.randomDataTask is not None: renderRandomData(loadedTypes, task.blackListed, task.whiteListed, task.randomDataTask) if (not allSkipped) and (args.skipCodeGenDryRun is not True): protocolFuncs.writeProtocolFile(args.protocolFile, codeGenMetaData)
def main(): """starts the program execution""" args = parser.parse_args() codeGenerationJobs = getJobConfigurations(args) if not _isConfigurationValid(codeGenerationJobs): sys.exit(1) for job in codeGenerationJobs: loadedTypes = readModels(job) for task in job.tasks: if task.singleFileTask is not None: renderSingleFileTemplate(loadedTypes, task.blackListed, task.whiteListed, task.singleFileTask) elif task.multiFileTask is not None: renderMultiFileTemplate(loadedTypes, task.blackListed, task.whiteListed, task.multiFileTask)
def __doCodeGen(codeGenerationJobs, args): """process the jobs to do the actual code generation """ for job in codeGenerationJobs: alloadedTypes = readModels(job, args.flattenInheritance) # dictionary types are not really useful as toplevel types ... so it's # better to remove them - TODO add a commandline switch for that loadedTypes = [] for t in alloadedTypes: if not isinstance(t, DictionaryType): loadedTypes.append(t) for task in job.tasks: if task.singleFileTask is not None: renderSingleFileTemplate(loadedTypes, task.blackListed, task.whiteListed, task.singleFileTask) elif task.multiFileTask is not None: renderMultiFileTemplate(loadedTypes, task.blackListed, task.whiteListed, task.multiFileTask) elif task.randomDataTask is not None: renderRandomData(loadedTypes, task.blackListed, task.whiteListed, task.randomDataTask)