diff --git a/src/objects/aff/zcl_abapgit_json_handler.clas.abap b/src/objects/aff/zcl_abapgit_json_handler.clas.abap index ca83d0753..b0b2ea957 100644 --- a/src/objects/aff/zcl_abapgit_json_handler.clas.abap +++ b/src/objects/aff/zcl_abapgit_json_handler.clas.abap @@ -51,7 +51,7 @@ CLASS zcl_abapgit_json_handler DEFINITION "! @parameter ev_data | data of the xstring METHODS deserialize IMPORTING - !iv_content TYPE xstring + !iv_content TYPE string !iv_defaults TYPE ty_skip_paths OPTIONAL !iv_enum_mappings TYPE ty_enum_mappings OPTIONAL EXPORTING @@ -99,14 +99,11 @@ CLASS zcl_abapgit_json_handler IMPLEMENTATION. METHOD deserialize. - DATA lv_json TYPE string. - DATA lo_ajson TYPE REF TO zif_abapgit_ajson. + DATA lo_ajson TYPE REF TO zif_abapgit_ajson. CLEAR ev_data. - lv_json = zcl_abapgit_convert=>xstring_to_string_utf8( iv_content ). - - lo_ajson = zcl_abapgit_ajson=>parse( lv_json + lo_ajson = zcl_abapgit_ajson=>parse( iv_content )->map( zcl_abapgit_ajson_mapping=>create_to_snake_case( ) ). map2abap_original_language( CHANGING co_ajson = lo_ajson ). diff --git a/src/objects/aff/zcl_abapgit_json_path.clas.abap b/src/objects/aff/zcl_abapgit_json_path.clas.abap index 123ef9a55..3f1b1f834 100644 --- a/src/objects/aff/zcl_abapgit_json_path.clas.abap +++ b/src/objects/aff/zcl_abapgit_json_path.clas.abap @@ -6,14 +6,24 @@ CLASS zcl_abapgit_json_path DEFINITION PUBLIC CREATE PUBLIC. RAISING zcx_abapgit_exception. METHODS: deserialize IMPORTING it_json_path TYPE string_table - RETURNING VALUE(rv_result) TYPE xstring + RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. + + CLASS zcl_abapgit_json_path IMPLEMENTATION. + + METHOD deserialize. + + rv_result = lcl_json_path=>deserialize( it_json_path ). + + ENDMETHOD. + + METHOD serialize. DATA: lo_json_path TYPE REF TO lcl_json_path, lv_json_xstring TYPE xstring, @@ -39,11 +49,4 @@ CLASS zcl_abapgit_json_path IMPLEMENTATION. it_path = lt_root_path CHANGING ct_json_paths = rt_result ). ENDMETHOD. - - METHOD deserialize. - - rv_result = lcl_json_path=>deserialize( it_json_path ). - - ENDMETHOD. - ENDCLASS. diff --git a/src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap b/src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap index 968a4bb1e..9ff0f0bb7 100644 --- a/src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap +++ b/src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap @@ -13,7 +13,7 @@ CLASS lcl_json_path DEFINITION CREATE PUBLIC. CLASS-METHODS: deserialize IMPORTING it_json_path TYPE string_table - RETURNING VALUE(rv_result) TYPE xstring + RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_exception. PROTECTED SECTION. @@ -343,8 +343,7 @@ CLASS lcl_json_path IMPLEMENTATION. DATA: lo_merged TYPE REF TO zif_abapgit_ajson, lv_json_path TYPE string, lo_deserialization_result TYPE REF TO zif_abapgit_ajson, - lx_ajson TYPE REF TO zcx_abapgit_ajson_error, - lv_result_as_string TYPE string. + lx_ajson TYPE REF TO zcx_abapgit_ajson_error. TRY. lo_merged = zcl_abapgit_ajson=>parse( `` ). @@ -374,8 +373,7 @@ CLASS lcl_json_path IMPLEMENTATION. ENDLOOP. TRY. - lv_result_as_string = lo_merged->stringify( 2 ). - rv_result = zcl_abapgit_convert=>string_to_xstring( lv_result_as_string ). + rv_result = lo_merged->stringify( 2 ). CATCH zcx_abapgit_ajson_error INTO lx_ajson. zcx_abapgit_exception=>raise_with_text( lx_ajson ). ENDTRY. diff --git a/src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap b/src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap index 7f83b4d94..eba81a4af 100644 --- a/src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap +++ b/src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap @@ -145,7 +145,6 @@ CLASS ltcl_json_path IMPLEMENTATION. METHOD deserialize_nested_arrays. DATA: lt_file TYPE string_table, lo_cut TYPE REF TO zcl_abapgit_json_path, - lv_xact TYPE xstring, lv_act TYPE string, lv_exp TYPE string, lt_exp TYPE string_table, @@ -156,7 +155,7 @@ CLASS ltcl_json_path IMPLEMENTATION. APPEND `$.descriptions.methods[?(@.name=='METH1')].parameters[?(@.name=='param2')].description=ABC` TO lt_file. CREATE OBJECT lo_cut. - lv_xact = lo_cut->deserialize( lt_file ). + lv_act = lo_cut->deserialize( lt_file ). APPEND `{ "header": { "description": "Text" } ,` TO lt_exp. APPEND `"descriptions": {` TO lt_exp. @@ -170,8 +169,6 @@ CLASS ltcl_json_path IMPLEMENTATION. lv_exp = concat_lines_of( table = lt_exp sep = cl_abap_char_utilities=>newline ). - lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ). - lv_is_equal = zcl_abapgit_ajson_utilities=>new( )->is_equal( iv_json_a = lv_act iv_json_b = lv_exp ). @@ -183,16 +180,13 @@ CLASS ltcl_json_path IMPLEMENTATION. METHOD deserialize_simple. DATA: lt_file TYPE string_table, lo_cut TYPE REF TO zcl_abapgit_json_path, - lv_xact TYPE xstring, - lv_act TYPE string, lv_is_equal TYPE abap_bool. APPEND `$.header.description=Text` TO lt_file. CREATE OBJECT lo_cut. - lv_xact = lo_cut->deserialize( lt_file ). - lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ). + lv_act = lo_cut->deserialize( lt_file ). lv_is_equal = zcl_abapgit_ajson_utilities=>new( )->is_equal( iv_json_a = lv_act @@ -206,7 +200,6 @@ CLASS ltcl_json_path IMPLEMENTATION. METHOD deserialize_with_comments. DATA: lt_file TYPE string_table, lo_cut TYPE REF TO zcl_abapgit_json_path, - lv_xact TYPE xstring, lv_act TYPE string. APPEND `# comment = abc` TO lt_file. @@ -214,9 +207,7 @@ CLASS ltcl_json_path IMPLEMENTATION. APPEND `` TO lt_file. CREATE OBJECT lo_cut. - lv_xact = lo_cut->deserialize( lt_file ). - lv_act = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xact ). - + lv_act = lo_cut->deserialize( lt_file ). cl_abap_unit_assert=>assert_initial( lv_act ). diff --git a/src/objects/core/zcl_abapgit_objects_files.clas.abap b/src/objects/core/zcl_abapgit_objects_files.clas.abap index e6e7e5955..89c91c31e 100644 --- a/src/objects/core/zcl_abapgit_objects_files.clas.abap +++ b/src/objects/core/zcl_abapgit_objects_files.clas.abap @@ -105,11 +105,6 @@ CLASS zcl_abapgit_objects_files DEFINITION VALUE(rt_i18n_files) TYPE zif_abapgit_i18n_file=>ty_table_of RAISING zcx_abapgit_exception . - METHODS get_i18n_properties_file - RETURNING - VALUE(rt_result) TYPE zif_abapgit_git_definitions=>ty_files_tt - RAISING - zcx_abapgit_exception . PROTECTED SECTION. @@ -297,39 +292,6 @@ CLASS zcl_abapgit_objects_files IMPLEMENTATION. ENDMETHOD. - METHOD get_i18n_properties_file. - - " TODO: replace this method with read_i18n_files - - DATA lv_lang TYPE laiso. - DATA lv_ext TYPE string. - FIELD-SYMBOLS LIKE LINE OF mt_files. - - LOOP AT mt_files ASSIGNING . - - zcl_abapgit_filename_logic=>i18n_file_to_object( - EXPORTING - iv_path = -path - iv_filename = -filename - IMPORTING - ev_lang = lv_lang - ev_ext = lv_ext ). - - IF lv_ext = 'properties'. - - APPEND TO rt_result. - mark_accessed( - iv_path = -path - iv_file = -filename - iv_sha1 = -sha1 ). - - ENDIF. - - ENDLOOP. - - ENDMETHOD. - - METHOD is_json_metadata. DATA lv_pattern TYPE string. diff --git a/src/objects/texts/zcl_abapgit_properties_file.clas.abap b/src/objects/texts/zcl_abapgit_properties_file.clas.abap index 3cc0dad7a..d9a285f03 100644 --- a/src/objects/texts/zcl_abapgit_properties_file.clas.abap +++ b/src/objects/texts/zcl_abapgit_properties_file.clas.abap @@ -22,6 +22,12 @@ CLASS zcl_abapgit_properties_file DEFINITION METHODS push_text_pairs IMPORTING it_translation TYPE string_table. + METHODS get_translations + EXPORTING + ev_data TYPE data + RAISING + zcx_abapgit_exception. + PROTECTED SECTION. PRIVATE SECTION. @@ -40,12 +46,40 @@ CLASS zcl_abapgit_properties_file IMPLEMENTATION. ENDMETHOD. + METHOD get_translations. + + DATA: + lv_translation TYPE string, + lo_ajson TYPE REF TO zcl_abapgit_json_handler, + lo_json_path TYPE REF TO zcl_abapgit_json_path, + lx_exception TYPE REF TO cx_static_check. + + CREATE OBJECT lo_ajson. + CREATE OBJECT lo_json_path. + + TRY. + lv_translation = lo_json_path->deserialize( mt_translation ). + + lo_ajson->deserialize( + EXPORTING + iv_content = lv_translation + IMPORTING + ev_data = ev_data ). + CATCH cx_static_check INTO lx_exception. + zcx_abapgit_exception=>raise_with_text( lx_exception ). + ENDTRY. + + ENDMETHOD. + + METHOD parse. + DATA lv_data TYPE string. lv_data = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xdata ). SPLIT lv_data AT cl_abap_char_utilities=>newline INTO TABLE mt_translation. + ENDMETHOD. @@ -65,17 +99,12 @@ CLASS zcl_abapgit_properties_file IMPLEMENTATION. METHOD zif_abapgit_i18n_file~render. - DATA: lv_translation TYPE string, - lo_buf TYPE REF TO zcl_abapgit_string_buffer, - lv_str TYPE string. + + DATA lv_translation TYPE string. lv_translation = concat_lines_of( table = mt_translation - sep = cl_abap_char_utilities=>newline ). - CREATE OBJECT lo_buf. - lo_buf->add( lv_translation ). - - lv_str = lo_buf->join_w_newline_and_flush( ) && cl_abap_char_utilities=>newline. - rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_str ). + sep = cl_abap_char_utilities=>newline ) && cl_abap_char_utilities=>newline. + rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_translation ). ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_intf.clas.abap b/src/objects/zcl_abapgit_object_intf.clas.abap index fa8a757d2..ab6046043 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.abap @@ -262,11 +262,11 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. METHOD read_json. - DATA lv_json_data TYPE xstring. + DATA lv_json_data TYPE string. DATA ls_intf_aff TYPE zif_abapgit_aff_intf_v1=>ty_main. DATA lo_aff_mapper TYPE REF TO zif_abapgit_aff_type_mapping. - lv_json_data = mo_files->read_raw( 'json' ). + lv_json_data = mo_files->read_string( 'json' ). ls_intf_aff = lcl_aff_metadata_handler=>deserialize( lv_json_data ). CREATE OBJECT lo_aff_mapper TYPE lcl_aff_type_mapping. @@ -535,6 +535,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. lcl_aff_metadata_handler=>deserialize_translation( EXPORTING io_files = mo_files + is_item = ms_item IMPORTING et_description = lt_description et_description_sub = lt_description_sub ). diff --git a/src/objects/zcl_abapgit_object_intf.clas.locals_imp.abap b/src/objects/zcl_abapgit_object_intf.clas.locals_imp.abap index 19650a523..0763efc44 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.locals_imp.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.locals_imp.abap @@ -508,11 +508,12 @@ CLASS lcl_aff_metadata_handler DEFINITION. RETURNING VALUE(rt_result) TYPE zif_abapgit_i18n_file=>ty_table_of RAISING zcx_abapgit_exception. CLASS-METHODS deserialize - IMPORTING iv_data TYPE xstring + IMPORTING iv_data TYPE string RETURNING VALUE(rv_result) TYPE zif_abapgit_aff_intf_v1=>ty_main RAISING zcx_abapgit_exception. CLASS-METHODS deserialize_translation IMPORTING io_files TYPE REF TO zcl_abapgit_objects_files + is_item TYPE zif_abapgit_definitions=>ty_item EXPORTING et_description TYPE zcl_abapgit_object_intf=>ty_intf-description et_description_sub TYPE zcl_abapgit_object_intf=>ty_intf-description_sub RAISING zcx_abapgit_exception. @@ -529,11 +530,7 @@ CLASS lcl_aff_metadata_handler DEFINITION. fill_translation IMPORTING iv_name TYPE seoclsname iv_language TYPE laiso - RETURNING VALUE(rt_result) TYPE zif_abapgit_aff_intf_v1=>ty_main, - get_string_table - IMPORTING iv_xstring TYPE xstring - RETURNING VALUE(rt_result) TYPE string_table - RAISING zcx_abapgit_exception. + RETURNING VALUE(rt_result) TYPE zif_abapgit_aff_intf_v1=>ty_main. ENDCLASS. CLASS lcl_aff_metadata_handler IMPLEMENTATION. @@ -702,50 +699,29 @@ CLASS lcl_aff_metadata_handler IMPLEMENTATION. METHOD deserialize_translation. - DATA: lt_data TYPE string_table, - lv_xtranslation TYPE xstring, - lo_ajson TYPE REF TO zcl_abapgit_json_handler, - lx_exception TYPE REF TO cx_static_check, - lv_obj_name TYPE seoclsname, - lv_langu TYPE laiso, - lt_translation_file TYPE zif_abapgit_git_definitions=>ty_files_tt, - ls_translation_file TYPE zif_abapgit_git_definitions=>ty_file, - lo_json_path TYPE REF TO zcl_abapgit_json_path, + DATA: lo_properties_file TYPE REF TO zcl_abapgit_properties_file, + lt_translation_file TYPE zif_abapgit_i18n_file=>ty_table_of, + li_translation_file LIKE LINE OF lt_translation_file, ls_aff_data TYPE zif_abapgit_aff_intf_v1=>ty_main, lo_type_mapper TYPE REF TO zif_abapgit_aff_type_mapping, ls_ag_data TYPE zcl_abapgit_object_intf=>ty_intf. - lt_translation_file = io_files->get_i18n_properties_file( ). - CREATE OBJECT lo_json_path. + lt_translation_file = io_files->read_i18n_files( ). - LOOP AT lt_translation_file INTO ls_translation_file. + LOOP AT lt_translation_file INTO li_translation_file. CLEAR ls_ag_data. - lt_data = get_string_table( ls_translation_file-data ). - lv_xtranslation = lo_json_path->deserialize( lt_data ). + lo_properties_file ?= li_translation_file. + lo_properties_file->get_translations( IMPORTING ev_data = ls_aff_data ). - CREATE OBJECT lo_ajson. - TRY. - lo_ajson->deserialize( - EXPORTING - iv_content = lv_xtranslation - IMPORTING - ev_data = ls_aff_data ). - CATCH cx_static_check INTO lx_exception. - zcx_abapgit_exception=>raise_with_text( lx_exception ). - ENDTRY. - - FIND FIRST OCCURRENCE OF REGEX '^([\w]+).*\.i18n.([a-z]{2})\.' - IN ls_translation_file-filename SUBMATCHES lv_obj_name lv_langu. - - ls_aff_data-header-original_language = to_upper( lv_langu ). " is target language + ls_aff_data-header-original_language = to_upper( li_translation_file->lang( ) ). " is target language CREATE OBJECT lo_type_mapper TYPE lcl_aff_type_mapping. lo_type_mapper->to_abapgit( EXPORTING iv_data = ls_aff_data - iv_object_name = to_upper( lv_obj_name ) + iv_object_name = is_item-obj_name IMPORTING es_data = ls_ag_data ). @@ -754,17 +730,5 @@ CLASS lcl_aff_metadata_handler IMPLEMENTATION. ENDLOOP. - ENDMETHOD. - - - METHOD get_string_table. - - DATA lv_data TYPE string. - - lv_data = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xstring ). - SPLIT lv_data AT cl_abap_char_utilities=>newline INTO TABLE rt_result. - - ENDMETHOD. - ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap b/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap index 1f11c009c..aea0fd404 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.testclasses.abap @@ -363,7 +363,6 @@ CLASS ltcl_aff_metadata IMPLEMENTATION. METHOD deserialize_non_defaults. DATA: lv_source TYPE string, - lv_source_xstring TYPE xstring, ls_description_type TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description, ls_description_attr TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description, ls_description_meth_param TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description, @@ -447,10 +446,8 @@ CLASS ltcl_aff_metadata IMPLEMENTATION. ` }` && cl_abap_char_utilities=>newline && `}` && cl_abap_char_utilities=>newline. - lv_source_xstring = cl_abap_codepage=>convert_to( lv_source ). - " cut - ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source_xstring ). + ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source ). cl_abap_unit_assert=>assert_equals( act = ls_actual exp = ls_expected ). @@ -459,7 +456,6 @@ CLASS ltcl_aff_metadata IMPLEMENTATION. METHOD deserialize_defaults. DATA: lv_source TYPE string, - lv_source_xstring TYPE xstring, ls_actual TYPE zif_abapgit_aff_intf_v1=>ty_main, ls_expected TYPE zif_abapgit_aff_intf_v1=>ty_main. @@ -480,10 +476,8 @@ CLASS ltcl_aff_metadata IMPLEMENTATION. ` }` && cl_abap_char_utilities=>newline && `}` && cl_abap_char_utilities=>newline. - lv_source_xstring = cl_abap_codepage=>convert_to( lv_source ). - " cut - ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source_xstring ). + ls_actual = lcl_aff_metadata_handler=>deserialize( lv_source ). cl_abap_unit_assert=>assert_equals( act = ls_actual exp = ls_expected ).