コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
ファイル: yacg.py プロジェクト: OkieOth/yacg
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)
コード例 #4
0
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)
コード例 #5
0
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)