From 67ec3980b593452ad89596c9d065b9a527b4473c Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Thu, 21 Mar 2024 14:06:10 +0100 Subject: [PATCH] Refactor: Determine i18n parameters (#6869) Co-authored-by: Lars Hvam --- .../core/zcl_abapgit_serialize.clas.abap | 67 ++++++------------- src/objects/zcl_abapgit_objects.clas.abap | 41 ++---------- src/repo/zcl_abapgit_dot_abapgit.clas.abap | 22 ++++++ 3 files changed, 50 insertions(+), 80 deletions(-) diff --git a/src/objects/core/zcl_abapgit_serialize.clas.abap b/src/objects/core/zcl_abapgit_serialize.clas.abap index 8adab4784..21dae0a50 100644 --- a/src/objects/core/zcl_abapgit_serialize.clas.abap +++ b/src/objects/core/zcl_abapgit_serialize.clas.abap @@ -118,14 +118,7 @@ CLASS zcl_abapgit_serialize DEFINITION RAISING zcx_abapgit_exception . PRIVATE SECTION. - CLASS-METHODS determine_i18n_params - IMPORTING - !io_dot TYPE REF TO zcl_abapgit_dot_abapgit - !iv_main_language_only TYPE abap_bool - RETURNING - VALUE(rs_i18n_params) TYPE zif_abapgit_definitions=>ty_i18n_params - RAISING - zcx_abapgit_exception. + METHODS is_parallelization_possible RETURNING VALUE(rv_result) TYPE abap_bool. @@ -271,9 +264,12 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. mo_dot_abapgit = io_dot_abapgit. ms_local_settings = is_local_settings. - ms_i18n_params = determine_i18n_params( - io_dot = io_dot_abapgit - iv_main_language_only = is_local_settings-main_language_only ). + IF io_dot_abapgit IS BOUND. + ms_i18n_params = io_dot_abapgit->determine_i18n_parameters( is_local_settings-main_language_only ). + ELSE. + ms_i18n_params-main_language = sy-langu. + ms_i18n_params-main_language_only = is_local_settings-main_language_only. + ENDIF. CREATE OBJECT mo_abap_language_version EXPORTING @@ -282,26 +278,6 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. ENDMETHOD. - METHOD determine_i18n_params. - - " TODO: unify with ZCL_ABAPGIT_OBJECTS=>DETERMINE_I18N_PARAMS, same code - - IF io_dot IS BOUND. - rs_i18n_params-main_language = io_dot->get_main_language( ). - rs_i18n_params-use_lxe = io_dot->use_lxe( ). - rs_i18n_params-main_language_only = iv_main_language_only. - rs_i18n_params-translation_languages = zcl_abapgit_lxe_texts=>get_translation_languages( - iv_main_language = io_dot->get_main_language( ) - it_i18n_languages = io_dot->get_i18n_languages( ) ). - ENDIF. - - IF rs_i18n_params-main_language IS INITIAL. - rs_i18n_params-main_language = sy-langu. - ENDIF. - - ENDMETHOD. - - METHOD determine_max_processes. DATA: li_exit TYPE REF TO zif_abapgit_exit. @@ -503,6 +479,20 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. ENDMETHOD. + METHOD is_parallelization_possible. + + rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false + AND zcl_abapgit_persist_factory=>get_settings( )->read( )->get_parallel_proc_disabled( ) = abap_false + AND mv_group IS NOT INITIAL + " The function module below should always exist here as is_merged evaluated to false above. + " It does however not exist in the transpiled version which then causes unit tests to fail. + " Therefore the check needs to stay. + AND zcl_abapgit_factory=>get_function_module( + )->function_exists( 'Z_ABAPGIT_SERIALIZE_PARALLEL' ) = abap_true ). + + ENDMETHOD. + + METHOD on_end_of_task. * this method will be called from the parallel processing, thus it must be public @@ -693,19 +683,4 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. lo_timer->end( abap_true ). ENDMETHOD. - - - METHOD is_parallelization_possible. - - rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false - AND zcl_abapgit_persist_factory=>get_settings( )->read( )->get_parallel_proc_disabled( ) = abap_false - AND mv_group IS NOT INITIAL - " The function module below should always exist here as is_merged evaluated to false above. - " It does however not exist in the transpiled version which then causes unit tests to fail. - " Therefore the check needs to stay. - AND zcl_abapgit_factory=>get_function_module( - )->function_exists( 'Z_ABAPGIT_SERIALIZE_PARALLEL' ) = abap_true ). - - ENDMETHOD. - ENDCLASS. diff --git a/src/objects/zcl_abapgit_objects.clas.abap b/src/objects/zcl_abapgit_objects.clas.abap index 4d6372340..98c475060 100644 --- a/src/objects/zcl_abapgit_objects.clas.abap +++ b/src/objects/zcl_abapgit_objects.clas.abap @@ -205,14 +205,6 @@ CLASS zcl_abapgit_objects DEFINITION IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !ii_log TYPE REF TO zif_abapgit_log . - CLASS-METHODS determine_i18n_params - IMPORTING - !io_dot TYPE REF TO zcl_abapgit_dot_abapgit - !iv_main_language_only TYPE abap_bool - RETURNING - VALUE(rs_i18n_params) TYPE zif_abapgit_definitions=>ty_i18n_params - RAISING - zcx_abapgit_exception. CLASS-METHODS get_extra_from_filename IMPORTING !iv_filename TYPE string @@ -660,6 +652,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. METHOD deserialize. DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, + lo_dot TYPE REF TO zcl_abapgit_dot_abapgit, li_obj TYPE REF TO zif_abapgit_object, lt_remote TYPE zif_abapgit_git_definitions=>ty_files_tt, lv_package TYPE devclass, @@ -686,6 +679,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. lt_steps = get_deserialize_steps( ). lv_package = io_repo->get_package( ). + lo_dot = io_repo->get_dot_abapgit( ). IF is_checks-transport-required = abap_true. zcl_abapgit_factory=>get_default_transport( )->set( is_checks-transport-transport ). @@ -728,9 +722,8 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. ii_log = ii_log io_dot = io_repo->get_dot_abapgit( ) ). - lo_i18n_params = zcl_abapgit_i18n_params=>new( is_params = determine_i18n_params( - io_dot = io_repo->get_dot_abapgit( ) - iv_main_language_only = io_repo->get_local_settings( )-main_language_only ) ). + lo_i18n_params = zcl_abapgit_i18n_params=>new( is_params = + lo_dot->determine_i18n_parameters( io_repo->get_local_settings( )-main_language_only ) ). IF lines( lt_items ) = 1. ii_log->add_info( |>>> Deserializing 1 object| ). @@ -740,7 +733,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. CREATE OBJECT lo_abap_language_vers EXPORTING - io_dot_abapgit = io_repo->get_dot_abapgit( ). + io_dot_abapgit = lo_dot. lo_folder_logic = zcl_abapgit_folder_logic=>get_instance( ). LOOP AT lt_results ASSIGNING . @@ -759,7 +752,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. " If package does not exist yet, it will be created with this call lv_package = lo_folder_logic->path_to_package( iv_top = io_repo->get_package( ) - io_dot = io_repo->get_dot_abapgit( ) + io_dot = lo_dot iv_path = -path ). check_main_package( @@ -872,7 +865,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. update_original_system( it_items = lt_items ii_log = ii_log - io_dot = io_repo->get_dot_abapgit( ) + io_dot = lo_dot iv_transport = is_checks-transport-transport ). zcl_abapgit_factory=>get_default_transport( )->reset( ). @@ -986,26 +979,6 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. ENDMETHOD. - METHOD determine_i18n_params. - - " TODO: unify with ZCL_ABAPGIT_SERIALIZE=>DETERMINE_I18N_PARAMS, same code - - IF io_dot IS BOUND. - rs_i18n_params-main_language = io_dot->get_main_language( ). - rs_i18n_params-use_lxe = io_dot->use_lxe( ). - rs_i18n_params-main_language_only = iv_main_language_only. - rs_i18n_params-translation_languages = zcl_abapgit_lxe_texts=>get_translation_languages( - iv_main_language = io_dot->get_main_language( ) - it_i18n_languages = io_dot->get_i18n_languages( ) ). - ENDIF. - - IF rs_i18n_params-main_language IS INITIAL. - rs_i18n_params-main_language = sy-langu. - ENDIF. - - ENDMETHOD. - - METHOD exists. DATA: li_obj TYPE REF TO zif_abapgit_object. diff --git a/src/repo/zcl_abapgit_dot_abapgit.clas.abap b/src/repo/zcl_abapgit_dot_abapgit.clas.abap index 6e99b6677..cea1dc0b6 100644 --- a/src/repo/zcl_abapgit_dot_abapgit.clas.abap +++ b/src/repo/zcl_abapgit_dot_abapgit.clas.abap @@ -69,6 +69,13 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION it_languages TYPE zif_abapgit_definitions=>ty_languages RAISING zcx_abapgit_exception . + METHODS determine_i18n_parameters + IMPORTING + !iv_main_language_only TYPE abap_bool + RETURNING + VALUE(rs_i18n_params) TYPE zif_abapgit_definitions=>ty_i18n_params + RAISING + zcx_abapgit_exception. METHODS get_signature RETURNING VALUE(rs_signature) TYPE zif_abapgit_git_definitions=>ty_file_signature @@ -192,6 +199,18 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION. ENDMETHOD. + METHOD determine_i18n_parameters. + + rs_i18n_params-main_language = get_main_language( ). + rs_i18n_params-use_lxe = use_lxe( ). + rs_i18n_params-main_language_only = iv_main_language_only. + rs_i18n_params-translation_languages = zcl_abapgit_lxe_texts=>get_translation_languages( + iv_main_language = get_main_language( ) + it_i18n_languages = get_i18n_languages( ) ). + + ENDMETHOD. + + METHOD from_xml. DATA: lv_xml TYPE string. @@ -233,6 +252,9 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION. METHOD get_main_language. rv_language = ms_data-master_language. + IF rv_language IS INITIAL. + rv_language = sy-langu. + ENDIF. ENDMETHOD.