def _generate_java_lambdas()

in syndicate/core/generators/lambda_function.py [0:0]


def _generate_java_lambdas(**kwargs):
    from click import confirm as click_confirm
    project_path = kwargs.get(PROJECT_PATH_PARAM)
    project_state = kwargs.get(PROJECT_STATE_PARAM)
    project_name = project_state.name
    lambda_names = kwargs.get(LAMBDA_NAMES_PARAM, [])
    tags = kwargs.get(TAGS_PARAM)
    generated_lambdas = []

    _generate_java_project_hierarchy(project_name=project_name,
                                     full_project_path=project_path)

    java_package_name = _generate_java_package_name(project_name)
    java_package_as_path = java_package_name.replace('.', '/')

    pom_file_path = os.path.join(project_path, FILE_POM)
    pom_xml_content = _read_content_from_file(pom_file_path)
    pom_xml_content = pom_xml_content.replace(
        '<!--packages to scan-->',
        f'<package>{java_package_name}</package>')
    _write_content_to_file(pom_file_path, pom_xml_content)

    full_package_path = Path(project_path, SRC_MAIN_JAVA, java_package_as_path)
    for lambda_name in lambda_names:
        if not os.path.exists(full_package_path):
            _mkdir(full_package_path, exist_ok=True)

        lambda_class_name = _get_parts_split_by_chars(to_split=lambda_name,
                                                      chars=['-', '_']).title()
        lambda_class_name = lambda_class_name.replace(' ', '')
        lambda_role_name = LAMBDA_ROLE_NAME_PATTERN.format(lambda_name)
        lambda_tags_import, lambda_tags = _resolve_java_tags(tags)
        java_handler_content = \
            (JAVA_LAMBDA_HANDLER_CLASS
             .replace('{java_package_name}', java_package_name)
             .replace('{lambda_name}', lambda_name)
             .replace('{lambda_class_name}', lambda_class_name)
             .replace('{lambda_role_name}', lambda_role_name)
             .replace('{tags_import}', lambda_tags_import)
             .replace('{tags}', lambda_tags))

        java_handler_file_name = os.path.join(
            project_path, SRC_MAIN_JAVA, java_package_as_path,
            f'{lambda_class_name}.java')
        if Path(str(java_handler_file_name)).is_file():
            if not click_confirm(
                    f'\nLambda {lambda_name} already exists.\nOverride '
                    f'the Lambda function?'):
                USER_LOG.info(CANCEL_MESSAGE.format(lambda_name))
                continue
        _write_content_to_file(
            java_handler_file_name,
            java_handler_content
        )

        # add role to deployment_resource.json

        dep_res_path = os.path.join(project_path,
                                    FILE_DEPLOYMENT_RESOURCES)
        if not Path(dep_res_path).is_file():
            _LOG.warning(
                'The project root \'deployment_resources.json\' file is '
                'absent. Creating...'
            )
            _touch(dep_res_path)
            deployment_resources = {}
        else:
            deployment_resources = json.loads(_read_content_from_file(
                dep_res_path
            ))
        deployment_resources.update(_generate_lambda_role_config(
            lambda_role_name, tags, stringify=False))
        _write_content_to_file(dep_res_path,
                               json.dumps(deployment_resources, indent=2))

        project_state.add_lambda(lambda_name=lambda_name, runtime=RUNTIME_JAVA)
        _LOG.info(f'Lambda {lambda_name} created')
        generated_lambdas.append(lambda_name)

    return generated_lambdas