From 44a6b88092e1b54039736355a78f39d7f920bafc Mon Sep 17 00:00:00 2001 From: larshp Date: Mon, 2 Jan 2017 14:58:27 +0000 Subject: [PATCH] deserialization sequence changed #511 this seems to work --- src/zabapgit_definitions.prog.abap | 3 +- src/zabapgit_object_doma.prog.abap | 1 + src/zabapgit_object_dtel.prog.abap | 1 + src/zabapgit_object_enqu.prog.abap | 1 + src/zabapgit_object_sfbf.prog.abap | 1 + src/zabapgit_object_sfbs.prog.abap | 1 + src/zabapgit_object_sfsw.prog.abap | 1 + src/zabapgit_object_shlp.prog.abap | 1 + src/zabapgit_object_tabl.prog.abap | 1 + src/zabapgit_object_ttyp.prog.abap | 1 + src/zabapgit_object_view.prog.abap | 1 + src/zabapgit_objects.prog.abap | 77 ++++++++++------------------- src/zabapgit_objects_impl.prog.abap | 75 +++++++++++++++++----------- 13 files changed, 83 insertions(+), 82 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index f28edbcde..925053ea8 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -51,8 +51,9 @@ TYPES: ty_files_item_tt TYPE STANDARD TABLE OF ty_file_item WITH DEFAULT KEY. TYPES: BEGIN OF ty_metadata, class TYPE string, version TYPE string, - late_deser TYPE string, + late_deser TYPE abap_bool, delete_tadir TYPE abap_bool, + ddic TYPE abap_bool, END OF ty_metadata. TYPES: BEGIN OF ty_web_asset, diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index 1864422a2..4e216e9de 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -80,6 +80,7 @@ CLASS lcl_object_doma IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index 024786107..d37f0aa08 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -73,6 +73,7 @@ CLASS lcl_object_dtel IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_enqu.prog.abap b/src/zabapgit_object_enqu.prog.abap index 53d08681f..43ba2a3db 100644 --- a/src/zabapgit_object_enqu.prog.abap +++ b/src/zabapgit_object_enqu.prog.abap @@ -53,6 +53,7 @@ CLASS lcl_object_enqu IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_sfbf.prog.abap b/src/zabapgit_object_sfbf.prog.abap index 5caaf627a..03bada100 100644 --- a/src/zabapgit_object_sfbf.prog.abap +++ b/src/zabapgit_object_sfbf.prog.abap @@ -39,6 +39,7 @@ CLASS lcl_object_sfbf IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_sfbs.prog.abap b/src/zabapgit_object_sfbs.prog.abap index 4bbd85222..4ff5c288e 100644 --- a/src/zabapgit_object_sfbs.prog.abap +++ b/src/zabapgit_object_sfbs.prog.abap @@ -56,6 +56,7 @@ CLASS lcl_object_sfbs IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_sfsw.prog.abap b/src/zabapgit_object_sfsw.prog.abap index 33e9c21ff..3812c9eaf 100644 --- a/src/zabapgit_object_sfsw.prog.abap +++ b/src/zabapgit_object_sfsw.prog.abap @@ -39,6 +39,7 @@ CLASS lcl_object_sfsw IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_shlp.prog.abap b/src/zabapgit_object_shlp.prog.abap index 9d32eb6db..e9c34345e 100644 --- a/src/zabapgit_object_shlp.prog.abap +++ b/src/zabapgit_object_shlp.prog.abap @@ -50,6 +50,7 @@ CLASS lcl_object_shlp IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 45bec76a8..2d01ab4fc 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -74,6 +74,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index b85104ebc..0ef632c77 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -50,6 +50,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index 4f0ccdd31..cbd51c60e 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -60,6 +60,7 @@ CLASS lcl_object_view IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). + rs_metadata-ddic = abap_true. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index b7a282a24..383f0ea69 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -20,7 +20,8 @@ CLASS lcl_objects_activation DEFINITION FINAL. RAISING lcx_exception. CLASS-METHODS activate - RAISING lcx_exception. + IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false + RAISING lcx_exception. CLASS-METHODS clear. @@ -29,8 +30,7 @@ CLASS lcl_objects_activation DEFINITION FINAL. IMPORTING iv_obj_name TYPE trobj_name CHANGING ct_objects TYPE dwinactiv_tab. - CLASS-DATA: gt_ddic TYPE TABLE OF dwinactiv, - gt_programs TYPE TABLE OF dwinactiv. + CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv. ENDCLASS. "lcl_objects_activation DEFINITION @@ -47,38 +47,18 @@ CLASS lcl_objects_activation IMPLEMENTATION. ENDMETHOD. "add_item METHOD clear. - CLEAR: gt_ddic, - gt_programs. + CLEAR gt_objects. ENDMETHOD. "clear METHOD activate. -* ddic - IF NOT gt_ddic IS INITIAL. + IF NOT gt_objects IS INITIAL. CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' EXPORTING - activate_ddic_objects = abap_true + activate_ddic_objects = iv_ddic with_popup = abap_true TABLES - objects = gt_ddic - EXCEPTIONS - excecution_error = 1 - cancelled = 2 - insert_into_corr_error = 3 - OTHERS = 4. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from RS_WORKING_OBJECTS_ACTIVATE' ). - ENDIF. - ENDIF. - -* programs - IF NOT gt_programs IS INITIAL. - CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' - EXPORTING - activate_ddic_objects = abap_false - with_popup = abap_true - TABLES - objects = gt_programs + objects = gt_objects EXCEPTIONS excecution_error = 1 cancelled = 2 @@ -139,9 +119,9 @@ CLASS lcl_objects_activation IMPLEMENTATION. lv_obj_name = iv_name. -* todo, refactoring CASE iv_type. WHEN 'CLAS' OR 'WDYN'. +* todo, move this to the object type include instead CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT' EXPORTING obj_name = lv_obj_name @@ -160,22 +140,11 @@ CLASS lcl_objects_activation IMPLEMENTATION. CHANGING ct_objects = lt_objects ). ENDIF. - APPEND LINES OF lt_objects TO gt_programs. - WHEN 'DOMA' OR 'DTEL' OR 'TABL' OR 'INDX' OR 'TTYP' - OR 'VIEW' OR 'SHLP' OR 'ENQU' - OR 'SFSW' OR 'SFBF' OR 'SFBS'. -* todo also insert_into_working_area? - APPEND INITIAL LINE TO gt_ddic ASSIGNING . - -object = iv_type. - -obj_name = lv_obj_name. - WHEN 'REPS' OR 'DYNP' OR 'CUAD' OR 'REPT' OR 'INTF' - OR 'FUNC' OR 'ENHO' OR 'TYPE' OR 'XSLT' OR 'WEBI'. -* these seem to go into the workarea automatically - APPEND INITIAL LINE TO gt_programs ASSIGNING . - -object = iv_type. - -obj_name = lv_obj_name. + APPEND LINES OF lt_objects TO gt_objects. WHEN OTHERS. - lcx_exception=>raise( 'activate, unknown type' ). + APPEND INITIAL LINE TO gt_objects ASSIGNING . + -object = iv_type. + -obj_name = lv_obj_name. ENDCASE. ENDMETHOD. "activate @@ -1656,11 +1625,14 @@ CLASS lcl_objects DEFINITION FINAL. PUBLIC SECTION. TYPES: ty_types_tt TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY. - TYPES: BEGIN OF ty_late, + TYPES: BEGIN OF ty_deserialization, obj TYPE REF TO lif_object, xml TYPE REF TO lcl_xml_input, package TYPE devclass, - END OF ty_late. + item TYPE ty_item, + END OF ty_deserialization. + + TYPES: ty_deserialization_tt TYPE STANDARD TABLE OF ty_deserialization WITH DEFAULT KEY. CLASS-METHODS serialize IMPORTING is_item TYPE ty_item @@ -1705,10 +1677,6 @@ CLASS lcl_objects DEFINITION FINAL. CLASS-METHODS supported_list RETURNING VALUE(rt_types) TYPE ty_types_tt. -* CLASS-METHODS is_language_installed -* IMPORTING iv_language TYPE langu -* RETURNING VALUE(rv_yes) TYPE abap_bool. - PRIVATE SECTION. CLASS-DATA: mv_langs_installed TYPE scplangs. @@ -1747,8 +1715,8 @@ CLASS lcl_objects DEFINITION FINAL. RAISING lcx_exception. CLASS-METHODS warning_overwrite - CHANGING ct_results TYPE ty_results_tt - RAISING lcx_exception. + CHANGING ct_results TYPE ty_results_tt + RAISING lcx_exception. CLASS-METHODS warning_package IMPORTING is_item TYPE ty_item @@ -1771,4 +1739,11 @@ CLASS lcl_objects DEFINITION FINAL. RAISING lcx_exception. + CLASS-METHODS deserialize_objects + IMPORTING it_objects TYPE ty_deserialization_tt + iv_ddic TYPE abap_bool DEFAULT abap_false + iv_descr TYPE string + CHANGING ct_files TYPE ty_file_signatures_tt + RAISING lcx_exception. + ENDCLASS. "lcl_object DEFINITION \ No newline at end of file diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index 674afa5d7..770740d2a 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -207,18 +207,6 @@ CLASS lcl_objects IMPLEMENTATION. ENDMETHOD. "supported_list -* METHOD is_language_installed. -* -* IF mv_langs_installed IS INITIAL. -* CALL FUNCTION 'RSAQ_READ_INSTALLED_LANGUAGES' -* IMPORTING -* inst_languages = mv_langs_installed. -* ENDIF. -* -* rv_yes = boolc( mv_langs_installed CA iv_language ). -* -* ENDMETHOD. "is_language_installed - METHOD exists. DATA: li_obj TYPE REF TO lif_object. @@ -600,10 +588,12 @@ CLASS lcl_objects IMPLEMENTATION. lo_files TYPE REF TO lcl_objects_files, lo_xml TYPE REF TO lcl_xml_input, lt_results TYPE ty_results_tt, - lt_late TYPE TABLE OF ty_late. + lt_ddic TYPE TABLE OF ty_deserialization, + lt_rest TYPE TABLE OF ty_deserialization, + lt_late TYPE TABLE OF ty_deserialization. FIELD-SYMBOLS: TYPE ty_result, - LIKE LINE OF lt_late. + LIKE LINE OF lt_late. lcl_objects_activation=>clear( ). @@ -665,27 +655,31 @@ CLASS lcl_objects IMPLEMENTATION. li_obj->mo_files = lo_files. IF li_obj->get_metadata( )-late_deser = abap_true. - APPEND INITIAL LINE TO lt_late ASSIGNING . - -obj = li_obj. - -xml = lo_xml. - -package = lv_package. - CONTINUE. + APPEND INITIAL LINE TO lt_late ASSIGNING . + ELSEIF li_obj->get_metadata( )-ddic = abap_true. + APPEND INITIAL LINE TO lt_ddic ASSIGNING . + ELSE. + APPEND INITIAL LINE TO lt_rest ASSIGNING . ENDIF. + -item = ls_item. + -obj = li_obj. + -xml = lo_xml. + -package = lv_package. - - li_obj->deserialize( iv_package = lv_package - io_xml = lo_xml ). - - " Remember accessed files - APPEND LINES OF lo_files->get_accessed_files( ) TO rt_accessed_files. ENDLOOP. - lcl_objects_activation=>activate( ). + deserialize_objects( EXPORTING it_objects = lt_ddic + iv_ddic = abap_true + iv_descr = 'DDIC' + CHANGING ct_files = rt_accessed_files ). - LOOP AT lt_late ASSIGNING . - -obj->deserialize( iv_package = -package - io_xml = -xml ). - ENDLOOP. + deserialize_objects( EXPORTING it_objects = lt_rest + iv_descr = 'Objects' + CHANGING ct_files = rt_accessed_files ). + + deserialize_objects( EXPORTING it_objects = lt_late + iv_descr = 'Late' + CHANGING ct_files = rt_accessed_files ). update_package_tree( io_repo->get_package( ) ). @@ -694,6 +688,27 @@ CLASS lcl_objects IMPLEMENTATION. ENDMETHOD. "deserialize + METHOD deserialize_objects. + + FIELD-SYMBOLS: LIKE LINE OF it_objects. + + + lcl_objects_activation=>clear( ). + + LOOP AT it_objects ASSIGNING . + lcl_progress=>show( iv_key = |Deserialize { iv_descr }| + iv_current = sy-tabix + iv_total = lines( it_objects ) + iv_text = -item-obj_name ) ##NO_TEXT. + + -obj->deserialize( iv_package = -package + io_xml = -xml ). + APPEND LINES OF -obj->mo_files->get_accessed_files( ) TO ct_files. + ENDLOOP. + + lcl_objects_activation=>activate( iv_ddic ). + + ENDMETHOD. METHOD compare_remote_to_local.