From 53bd8c3fe56d9b0277479a758c23d85078582c2f Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Wed, 12 Jan 2022 16:54:33 +0100 Subject: [PATCH] Don't include XML when serializing AFF (#5254) * Don't include XML when serializing AFF Avoids output of metadata XML when serialized object contains JSON (ABAP file format). Preparation for #5126 PS: Contains new and updated unit tests * Rename is_json_metadata * CP Co-authored-by: Lars Hvam --- .../core/zcl_abapgit_objects_files.clas.abap | 35 +++++++++----- ...bapgit_objects_files.clas.testclasses.abap | 47 +++++++++++++++++-- src/objects/zcl_abapgit_objects.clas.abap | 6 ++- 3 files changed, 70 insertions(+), 18 deletions(-) diff --git a/src/objects/core/zcl_abapgit_objects_files.clas.abap b/src/objects/core/zcl_abapgit_objects_files.clas.abap index 10ba90b62..72e71ca09 100644 --- a/src/objects/core/zcl_abapgit_objects_files.clas.abap +++ b/src/objects/core/zcl_abapgit_objects_files.clas.abap @@ -12,9 +12,7 @@ CLASS zcl_abapgit_objects_files DEFINITION IMPORTING !iv_extra TYPE clike OPTIONAL !iv_ext TYPE string - !iv_string TYPE string - RAISING - zcx_abapgit_exception . + !iv_string TYPE string. METHODS read_string IMPORTING !iv_extra TYPE clike OPTIONAL @@ -28,9 +26,7 @@ CLASS zcl_abapgit_objects_files DEFINITION !iv_extra TYPE clike OPTIONAL !ii_xml TYPE REF TO zif_abapgit_xml_output !iv_normalize TYPE abap_bool DEFAULT abap_true - !is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL - RAISING - zcx_abapgit_exception . + !is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL. METHODS read_xml IMPORTING !iv_extra TYPE clike OPTIONAL @@ -49,9 +45,7 @@ CLASS zcl_abapgit_objects_files DEFINITION METHODS add_abap IMPORTING !iv_extra TYPE clike OPTIONAL - !it_abap TYPE STANDARD TABLE - RAISING - zcx_abapgit_exception . + !it_abap TYPE STANDARD TABLE. METHODS add IMPORTING !is_file TYPE zif_abapgit_definitions=>ty_file . @@ -59,9 +53,7 @@ CLASS zcl_abapgit_objects_files DEFINITION IMPORTING !iv_extra TYPE clike OPTIONAL !iv_ext TYPE string - !iv_data TYPE xstring - RAISING - zcx_abapgit_exception . + !iv_data TYPE xstring. METHODS read_raw IMPORTING !iv_extra TYPE clike OPTIONAL @@ -88,6 +80,9 @@ CLASS zcl_abapgit_objects_files DEFINITION METHODS get_file_pattern RETURNING VALUE(rv_pattern) TYPE string . + METHODS is_json_metadata + RETURNING + VALUE(rv_result) TYPE abap_bool. PROTECTED SECTION. METHODS read_file @@ -248,6 +243,22 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION. ENDMETHOD. + METHOD is_json_metadata. + + DATA lv_pattern TYPE string. + + FIELD-SYMBOLS LIKE LINE OF mt_files. + + lv_pattern = |*.{ to_lower( ms_item-obj_type ) }.json|. + + LOOP AT mt_files ASSIGNING WHERE filename CP lv_pattern. + rv_result = abap_true. + EXIT. + ENDLOOP. + + ENDMETHOD. + + METHOD read_abap. DATA: lv_filename TYPE string, diff --git a/src/objects/core/zcl_abapgit_objects_files.clas.testclasses.abap b/src/objects/core/zcl_abapgit_objects_files.clas.testclasses.abap index 2b2dcdc6b..4f1d4a51b 100644 --- a/src/objects/core/zcl_abapgit_objects_files.clas.testclasses.abap +++ b/src/objects/core/zcl_abapgit_objects_files.clas.testclasses.abap @@ -29,6 +29,9 @@ CLASS ltcl_objects_files DEFINITION FOR TESTING cx_static_check. METHODS get_file_pattern FOR TESTING. + + METHODS is_json_metadata FOR TESTING. + METHODS is_not_json_metadata FOR TESTING. ENDCLASS. CLASS ltcl_objects_files IMPLEMENTATION. @@ -38,6 +41,7 @@ CLASS ltcl_objects_files IMPLEMENTATION. ls_item TYPE zif_abapgit_definitions=>ty_item. FIELD-SYMBOLS: LIKE LINE OF lt_files. + " filenames are lower case APPEND INITIAL LINE TO lt_files ASSIGNING . -filename = 'zlf.prog.abap'. -data = get_program_data( zif_abapgit_definitions=>c_newline ). @@ -45,8 +49,9 @@ CLASS ltcl_objects_files IMPLEMENTATION. -filename = 'zlf.prog.xml'. -data = get_xml_data( ). - ls_item-obj_type = 'prog'. - ls_item-obj_name = 'zlf'. + " object type and name are upper case + ls_item-obj_type = 'PROG'. + ls_item-obj_name = 'ZLF'. CREATE OBJECT mo_cut EXPORTING is_item = ls_item. @@ -127,21 +132,55 @@ CLASS ltcl_objects_files IMPLEMENTATION. DATA ls_item TYPE zif_abapgit_definitions=>ty_item. + " filenames are lower case cl_abap_unit_assert=>assert_equals( exp = 'zlf.prog.*' act = mo_cut->get_file_pattern( ) ). - ls_item-obj_type = 'prog'. - ls_item-obj_name = '/test/zlf'. + " object type and name are upper case + ls_item-obj_type = 'PROG'. + ls_item-obj_name = '/TEST/ZLF'. CREATE OBJECT mo_cut EXPORTING is_item = ls_item. + " filenames are lower case cl_abap_unit_assert=>assert_equals( exp = '##test##zlf.prog.*' act = mo_cut->get_file_pattern( ) ). ENDMETHOD. + METHOD is_json_metadata. + + DATA ls_item TYPE zif_abapgit_definitions=>ty_item. + DATA lv_data TYPE xstring. + + " object type and name are upper case + ls_item-obj_type = 'CHKO'. + ls_item-obj_name = 'Z_AFF_EXAMPLE_CHKO'. + + CREATE OBJECT mo_cut + EXPORTING + is_item = ls_item. + + mo_cut->add_raw( iv_data = lv_data + iv_ext = 'json' ). + + cl_abap_unit_assert=>assert_equals( + exp = abap_true + act = mo_cut->is_json_metadata( ) ). + + ENDMETHOD. + + METHOD is_not_json_metadata. + + " checks PROG ZLF (see setup) + cl_abap_unit_assert=>assert_equals( + exp = abap_false + act = mo_cut->is_json_metadata( ) ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_objects.clas.abap b/src/objects/zcl_abapgit_objects.clas.abap index 7dd50df85..3d3543f21 100644 --- a/src/objects/zcl_abapgit_objects.clas.abap +++ b/src/objects/zcl_abapgit_objects.clas.abap @@ -1042,8 +1042,10 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. li_obj->serialize( li_xml ). - lo_files->add_xml( ii_xml = li_xml - is_metadata = li_obj->get_metadata( ) ). + IF lo_files->is_json_metadata( ) = abap_false. + lo_files->add_xml( ii_xml = li_xml + is_metadata = li_obj->get_metadata( ) ). + ENDIF. rs_files_and_item-files = lo_files->get_files( ).