mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
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 <larshp@hotmail.com>
This commit is contained in:
parent
269c7cb1e6
commit
53bd8c3fe5
|
@ -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 <ls_file> LIKE LINE OF mt_files.
|
||||
|
||||
lv_pattern = |*.{ to_lower( ms_item-obj_type ) }.json|.
|
||||
|
||||
LOOP AT mt_files ASSIGNING <ls_file> WHERE filename CP lv_pattern.
|
||||
rv_result = abap_true.
|
||||
EXIT.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD read_abap.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
|
|
|
@ -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: <ls_files> LIKE LINE OF lt_files.
|
||||
|
||||
" filenames are lower case
|
||||
APPEND INITIAL LINE TO lt_files ASSIGNING <ls_files>.
|
||||
<ls_files>-filename = 'zlf.prog.abap'.
|
||||
<ls_files>-data = get_program_data( zif_abapgit_definitions=>c_newline ).
|
||||
|
@ -45,8 +49,9 @@ CLASS ltcl_objects_files IMPLEMENTATION.
|
|||
<ls_files>-filename = 'zlf.prog.xml'.
|
||||
<ls_files>-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.
|
||||
|
|
|
@ -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( ).
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user