From 05c12aacc97e473aad543dce98eef5044466ef99 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 28 Jul 2023 06:03:51 +0200 Subject: [PATCH] remove use of `seok_pgmid_r3tr` & refactor class constructor (#6347) --- abaplint.json | 12 +++++++---- package.json | 10 +++++----- src/objects/zcl_abapgit_object_chdo.clas.abap | 2 +- .../zcl_abapgit_objects_bridge.clas.abap | 15 ++++++++++---- .../zcl_abapgit_objects_generic.clas.abap | 4 ++-- test/abap_transpile.json | 20 +++++++++++++++++++ 6 files changed, 47 insertions(+), 16 deletions(-) diff --git a/abaplint.json b/abaplint.json index 7396b3620..329b8a2f4 100644 --- a/abaplint.json +++ b/abaplint.json @@ -25,7 +25,6 @@ "cssf_formtype_text", "seok_access_free", "seok_access_modify", - "seok_pgmid_r3tr", "sews_c_vif_version", "skwfc_obtype_folder", "skwfc_obtype_loio", @@ -45,8 +44,7 @@ "wdyn_limu_component_controller", "wdyn_limu_component_definition", "wdyn_limu_component_view" - ], - "globalMacros": [] + ] }, "rules": { "select_single_full_key": false, @@ -55,6 +53,10 @@ "change_if_to_case": false, "expand_macros": true, "unnecessary_return": false, + "easy_to_find_messages": true, + "prefer_pragmas": false, + "smim_consistency": true, + "sql_value_conversion": true, "fully_type_itabs": false, "cds_legacy_view": true, "superfluous_value": true, @@ -196,7 +198,6 @@ }, "forbidden_identifier": true, "try_without_catch": true, - "unused_variables": false, "prefix_is_current_class": true, "allowed_object_naming": true, "check_comments": false, @@ -439,5 +440,8 @@ "use_new": true, "when_others_last": true, "whitespace_end": true + }, + "targetRules": { + "unused_variables": false } } diff --git a/package.json b/package.json index 381675d60..e7226ac89 100644 --- a/package.json +++ b/package.json @@ -27,12 +27,12 @@ ] }, "devDependencies": { - "@abaplint/cli": "^2.101.34", + "@abaplint/cli": "^2.102.7", "@abaplint/database-sqlite": "^2.7.18", - "@abaplint/runtime": "^2.7.33", - "@abaplint/transpiler-cli": "^2.7.33", + "@abaplint/runtime": "^2.7.51", + "@abaplint/transpiler-cli": "^2.7.51", "abapmerge": "^0.16.0", - "c8": "^8.0.0", - "eslint": "^8.44.0" + "c8": "^8.0.1", + "eslint": "^8.45.0" } } diff --git a/src/objects/zcl_abapgit_object_chdo.clas.abap b/src/objects/zcl_abapgit_object_chdo.clas.abap index fb617fe94..6e3b21e6f 100644 --- a/src/objects/zcl_abapgit_object_chdo.clas.abap +++ b/src/objects/zcl_abapgit_object_chdo.clas.abap @@ -48,7 +48,7 @@ CLASS zcl_abapgit_object_chdo IMPLEMENTATION. ls_cts_object_entry LIKE LINE OF lt_cts_object_entry, lt_errormsg TYPE STANDARD TABLE OF sprot_u WITH DEFAULT KEY. - ls_cts_object_entry-pgmid = seok_pgmid_r3tr. + ls_cts_object_entry-pgmid = 'R3TR'. ls_cts_object_entry-object = ms_item-obj_type. ls_cts_object_entry-obj_name = ms_item-obj_name. INSERT ls_cts_object_entry INTO TABLE lt_cts_object_entry. diff --git a/src/objects/zcl_abapgit_objects_bridge.clas.abap b/src/objects/zcl_abapgit_objects_bridge.clas.abap index 55401ab9c..d2a1d2e65 100644 --- a/src/objects/zcl_abapgit_objects_bridge.clas.abap +++ b/src/objects/zcl_abapgit_objects_bridge.clas.abap @@ -2,8 +2,6 @@ CLASS zcl_abapgit_objects_bridge DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITIN PUBLIC SECTION. - CLASS-METHODS class_constructor. - METHODS constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item RAISING cx_sy_create_object_error. @@ -11,7 +9,9 @@ CLASS zcl_abapgit_objects_bridge DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITIN INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. - DATA: mo_plugin TYPE REF TO object. + DATA mo_plugin TYPE REF TO object. + + CLASS-METHODS initialize. " Metadata flags (late_deser, delete_tadir, and ddic) are not required by abapGit anymore " We keep them to stay compatible with old bridge implementation @@ -30,6 +30,7 @@ CLASS zcl_abapgit_objects_bridge DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITIN END OF ty_s_objtype_map, ty_t_objtype_map TYPE SORTED TABLE OF ty_s_objtype_map WITH UNIQUE KEY obj_typ. + CLASS-DATA gv_init TYPE abap_bool. CLASS-DATA gt_objtype_map TYPE ty_t_objtype_map. ENDCLASS. @@ -39,7 +40,7 @@ ENDCLASS. CLASS zcl_abapgit_objects_bridge IMPLEMENTATION. - METHOD class_constructor. + METHOD initialize. DATA lt_plugin_class TYPE STANDARD TABLE OF seoclsname WITH DEFAULT KEY. DATA lv_plugin_class LIKE LINE OF lt_plugin_class. @@ -47,6 +48,10 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION. DATA lt_plugin_obj_type TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY. DATA ls_objtype_map LIKE LINE OF gt_objtype_map. + IF gv_init = abap_true. + RETURN. + ENDIF. + gv_init = abap_true. SELECT clsname FROM seometarel @@ -108,6 +113,8 @@ CLASS zcl_abapgit_objects_bridge IMPLEMENTATION. super->constructor( is_item = is_item iv_language = zif_abapgit_definitions=>c_english ). + initialize( ). + * determine the responsible plugin READ TABLE gt_objtype_map INTO ls_objtype_map WITH TABLE KEY obj_typ = is_item-obj_type. diff --git a/src/objects/zcl_abapgit_objects_generic.clas.abap b/src/objects/zcl_abapgit_objects_generic.clas.abap index 48e7ca875..d0134df18 100644 --- a/src/objects/zcl_abapgit_objects_generic.clas.abap +++ b/src/objects/zcl_abapgit_objects_generic.clas.abap @@ -137,7 +137,7 @@ CLASS zcl_abapgit_objects_generic IMPLEMENTATION. FIELD-SYMBOLS LIKE LINE OF mt_object_method. - ls_cts_object_entry-pgmid = seok_pgmid_r3tr. + ls_cts_object_entry-pgmid = 'R3TR'. ls_cts_object_entry-object = ms_item-obj_type. ls_cts_object_entry-obj_name = ms_item-obj_name. INSERT ls_cts_object_entry INTO TABLE lt_cts_object_entry. @@ -200,7 +200,7 @@ CLASS zcl_abapgit_objects_generic IMPLEMENTATION. IF sy-subrc = 0. lv_client = sy-mandt. - ls_cts_object_entry-pgmid = seok_pgmid_r3tr. + ls_cts_object_entry-pgmid = 'R3TR'. ls_cts_object_entry-object = ms_item-obj_type. ls_cts_object_entry-obj_name = ms_item-obj_name. INSERT ls_cts_object_entry INTO TABLE lt_cts_object_entry. diff --git a/test/abap_transpile.json b/test/abap_transpile.json index 880293ebb..2bb7379b8 100644 --- a/test/abap_transpile.json +++ b/test/abap_transpile.json @@ -28,6 +28,8 @@ "zcl_abapgit_objects_program", "zcl_abapgit_objects_super", "zcl_abapgit_objects.clas.abap", + "zcl_abapgit_objects.clas.testclasses.abap", + "zcl_abapgit_objects_bridge", "zcl_abapgit_oo_base", "zcl_abapgit_oo_factory", "zcl_abapgit_oo_interface", @@ -168,6 +170,24 @@ {"object": "ZCL_ABAPGIT_USER_RECORD", "class": "ltcl_user_record", "method": "test_invalid_user", "note": "Void type: BAPIADDR3"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_object_types", "method": "type_supported", "note": "no such table: seometarel, https://github.com/abapGit/abapGit/issues/1449#issuecomment-1653011315 "}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_object_types", "method": "not_exist", "note": "Void type: KO100"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_tabl", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_shlp", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_view", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_auth", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_clas", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_intf", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_doma", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_dtel", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_fugr", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_msag", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_prog", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_tran", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_ttyp", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "throw_excp_if_object_is_locked", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "no_excp_if_obj_is_not_locked", "note": "no such table: seometarel"}, + {"object": "ZCL_ABAPGIT_SERVICES_BASIS", "class": "ltcl_create_package", "method": "raise_error_if_package_exists", "note": "Void type: SCOMPKDTLN"}, {"object": "ZCL_ABAPGIT_SERVICES_BASIS", "class": "ltcl_create_package", "method": "package_given_in_popup", "note": "Void type: SCOMPKDTLN"}, {"object": "ZCL_ABAPGIT_SERVICES_BASIS", "class": "ltcl_create_package", "method": "package_not_created_when_canc", "note": "Void type: SCOMPKDTLN"},