Do the ABAP Language Version for the AFF objects (#6375)

Co-authored-by: Michael Schneider <micha.schneider@sap.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
This commit is contained in:
Albert Mink 2023-08-10 06:11:20 +02:00 committed by GitHub
parent 9d2bb4da0b
commit 90bcac39e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 232 additions and 29 deletions

View File

@ -38,6 +38,14 @@ CLASS zcl_abapgit_object_common_aff DEFINITION
RETURNING
VALUE(rv_is_empty) TYPE abap_bool.
CLASS-METHODS remove_abap_language_version
IMPORTING
iv_json_as_xstring TYPE xstring
RETURNING
VALUE(rv_json_as_xstring_wo_alv) TYPE xstring
RAISING
zcx_abapgit_exception.
ENDCLASS.
@ -260,9 +268,10 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
CREATE OBJECT lo_settings TYPE ('CL_AFF_SETTINGS_DESERIALIZE')
EXPORTING
version = 'A'
language = mv_language
user = sy-uname.
version = 'A'
language = mv_language
user = sy-uname
abap_language_version = ms_item-abap_language_version.
CREATE OBJECT lo_object_json_file TYPE ('CL_AFF_FILE')
EXPORTING
@ -372,11 +381,11 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
METHOD zif_abapgit_object~exists.
DATA: lr_intf_aff_obj TYPE REF TO data,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lv_name TYPE c LENGTH 120,
lx_error TYPE REF TO cx_root.
DATA: lr_intf_aff_obj TYPE REF TO data,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lv_name TYPE c LENGTH 120,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <ls_intf_aff_obj> TYPE any.
@ -463,26 +472,26 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
DATA: lr_intf_aff_obj TYPE REF TO data,
lr_intf_aff_log TYPE REF TO data,
lr_intf_aff_settings TYPE REF TO data,
lr_messages TYPE REF TO data,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lo_object_json_file TYPE REF TO object,
lo_files_container TYPE REF TO object,
lo_settings TYPE REF TO object,
lo_aff_log TYPE REF TO object,
lo_aff_factory TYPE REF TO object,
lo_object_file TYPE REF TO object,
lv_json_as_xstring TYPE xstring,
lx_exception TYPE REF TO cx_root,
lv_name TYPE c LENGTH 120,
lv_file_name TYPE string,
lo_file_name_mapper TYPE REF TO object,
ls_additional_extensions TYPE ty_extension_mapper_pairs,
lv_file_as_xstring TYPE xstring.
DATA: lr_intf_aff_obj TYPE REF TO data,
lr_intf_aff_log TYPE REF TO data,
lr_intf_aff_settings TYPE REF TO data,
lr_messages TYPE REF TO data,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lo_object_json_file TYPE REF TO object,
lo_files_container TYPE REF TO object,
lo_settings TYPE REF TO object,
lo_aff_log TYPE REF TO object,
lo_aff_factory TYPE REF TO object,
lo_object_file TYPE REF TO object,
lv_json_as_xstring TYPE xstring,
lv_json_as_xstring_wo_alv TYPE xstring,
lx_exception TYPE REF TO cx_root,
lv_name TYPE c LENGTH 120,
lv_file_name TYPE string,
lo_file_name_mapper TYPE REF TO object,
ls_additional_extensions TYPE ty_extension_mapper_pairs,
lv_file_as_xstring TYPE xstring.
FIELD-SYMBOLS: <ls_intf_aff_obj> TYPE any,
<ls_intf_aff_log> TYPE any,
@ -579,9 +588,11 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
RECEIVING
result = lv_json_as_xstring.
lv_json_as_xstring_wo_alv = remove_abap_language_version( lv_json_as_xstring ).
zif_abapgit_object~mo_files->add_raw(
iv_ext = 'json'
iv_data = lv_json_as_xstring ).
iv_data = lv_json_as_xstring_wo_alv ).
ls_additional_extensions = get_additional_extensions( ).
@ -612,6 +623,27 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
CATCH cx_root INTO lx_exception.
zcx_abapgit_exception=>raise_with_text( lx_exception ).
ENDTRY.
ENDMETHOD.
METHOD remove_abap_language_version.
DATA lv_json TYPE string.
DATA lv_json_wo_alv TYPE string.
DATA li_json TYPE REF TO zif_abapgit_ajson.
lv_json = zcl_abapgit_convert=>xstring_to_string_utf8( iv_data = iv_json_as_xstring ).
TRY.
li_json = zcl_abapgit_ajson=>parse( iv_json = lv_json
iv_keep_item_order = abap_true ).
li_json->delete( '/header/abapLanguageVersion' ).
lv_json_wo_alv = li_json->stringify( iv_indent = 2 ).
rv_json_as_xstring_wo_alv = zcl_abapgit_convert=>string_to_xstring_utf8( lv_json_wo_alv ).
CATCH zcx_abapgit_ajson_error.
rv_json_as_xstring_wo_alv = iv_json_as_xstring.
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,170 @@
CLASS ltcl_remove_abap_lang_version DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
PRIVATE SECTION.
METHODS assert_abap_lang_vers_removed
IMPORTING
iv_json TYPE string
iv_json_exp TYPE string
RAISING
zcx_abapgit_exception.
METHODS at_end_of_header FOR TESTING RAISING zcx_abapgit_exception.
METHODS no_abap_lang_vers_in_header FOR TESTING RAISING cx_static_check.
METHODS at_begin_of_header FOR TESTING RAISING cx_static_check.
METHODS only_abap_lang_vers_in_header FOR TESTING RAISING cx_static_check.
METHODS other_abap_lang_vers_fld FOR TESTING RAISING cx_static_check.
METHODS only_other_abap_lang_vers_fld FOR TESTING RAISING cx_static_check.
METHODS keep_item_order FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS zcl_abapgit_object_common_aff DEFINITION LOCAL FRIENDS ltcl_remove_abap_lang_version.
CLASS ltcl_remove_abap_lang_version IMPLEMENTATION.
METHOD assert_abap_lang_vers_removed.
DATA lv_json_act TYPE string.
DATA lv_json_x TYPE xstring.
DATA lv_json_act_x TYPE xstring.
lv_json_x = zcl_abapgit_convert=>string_to_xstring_utf8( iv_json ).
lv_json_act_x = zcl_abapgit_object_common_aff=>remove_abap_language_version( lv_json_x ).
lv_json_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_json_act_x ).
cl_abap_unit_assert=>assert_equals( act = lv_json_act
exp = iv_json_exp ).
ENDMETHOD.
METHOD at_end_of_header.
assert_abap_lang_vers_removed(
iv_json = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en",\n| &
| "abapLanguageVersion": "cloudDevelopment"\n| &
| \}\n| &
|\}|
iv_json_exp = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \}\n| &
|\}| ).
ENDMETHOD.
METHOD no_abap_lang_vers_in_header.
assert_abap_lang_vers_removed(
iv_json = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \}\n| &
|\}|
iv_json_exp = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \}\n| &
|\}| ).
ENDMETHOD.
METHOD at_begin_of_header.
assert_abap_lang_vers_removed(
iv_json = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "abapLanguageVersion": "cloudDevelopment",\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \}\n| &
|\}|
iv_json_exp = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \}\n| &
|\}| ).
ENDMETHOD.
METHOD only_abap_lang_vers_in_header.
assert_abap_lang_vers_removed(
iv_json = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "abapLanguageVersion": "cloudDevelopment"\n| &
| \}\n| &
|\}|
iv_json_exp = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\}\n| &
|\}| ).
ENDMETHOD.
METHOD other_abap_lang_vers_fld.
assert_abap_lang_vers_removed(
iv_json = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en",\n| &
| "abapLanguageVersion": "cloudDevelopment"\n| &
| \},\n| &
| "abapLanguageVersion": "someOtherConent"\n| &
|\}|
iv_json_exp = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \},\n| &
| "abapLanguageVersion": "someOtherConent"\n| &
|\}| ).
ENDMETHOD.
METHOD only_other_abap_lang_vers_fld.
assert_abap_lang_vers_removed(
iv_json = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \},\n| &
| "abapLanguageVersion": "someOtherConent"\n| &
|\}|
iv_json_exp = |\{\n| &
| "formatVersion": "1",\n| &
| "header": \{\n| &
| "description": "Category",\n| &
| "originalLanguage": "en"\n| &
| \},\n| &
| "abapLanguageVersion": "someOtherConent"\n| &
|\}| ).
ENDMETHOD.
METHOD keep_item_order.
assert_abap_lang_vers_removed(
iv_json = |\{\n| &
| "c": "firstField",\n| &
| "b": \{\n| &
| "z": "firstFieldInObject",\n| &
| "y": "secondFieldInObject"\n| &
| \},\n| &
| "a": "lastField"\n| &
|\}|
iv_json_exp = |\{\n| &
| "c": "firstField",\n| &
| "b": \{\n| &
| "z": "firstFieldInObject",\n| &
| "y": "secondFieldInObject"\n| &
| \},\n| &
| "a": "lastField"\n| &
|\}| ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>