From d474a48cdba7f0b03898aacd7b996881931bd6f6 Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Mon, 12 Dec 2016 17:33:41 +0100 Subject: [PATCH 01/40] Isolating creation dependencies --- src/zabapgit_object_clas.prog.abap | 85 ++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 5549a80c8..635050282 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -7,6 +7,91 @@ *----------------------------------------------------------------------* * *----------------------------------------------------------------------* +INTERFACE lif_object_oriented_object. + METHODS: + create + IMPORTING + iv_package TYPE devclass + iv_overwrite TYPE seox_boolean DEFAULT seox_true + CHANGING + is_properties TYPE any + RAISING + lcx_exception. +ENDINTERFACE. + +CLASS lcl_object_oriented_class DEFINITION. + PUBLIC SECTION. + INTERFACES: lif_object_oriented_object. +ENDCLASS. +CLASS lcl_object_oriented_class IMPLEMENTATION. + METHOD lif_object_oriented_object~create. + CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE' + EXPORTING + devclass = iv_package + overwrite = iv_overwrite + CHANGING + class = is_properties + EXCEPTIONS + existing = 1 + is_interface = 2 + db_error = 3 + component_error = 4 + no_access = 5 + other = 6 + OTHERS = 7. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ). + ENDIF. + ENDMETHOD. +ENDCLASS. + +CLASS lcl_object_oriented_interface DEFINITION. + PUBLIC SECTION. + INTERFACES: lif_object_oriented_object. +ENDCLASS. + +CLASS lcl_object_oriented_interface IMPLEMENTATION. + METHOD lif_object_oriented_object~create. + CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE' + EXPORTING + devclass = iv_package + overwrite = iv_overwrite + CHANGING + interface = is_properties + EXCEPTIONS + existing = 1 + is_class = 2 + db_error = 3 + component_error = 4 + no_access = 5 + other = 6 + OTHERS = 7. + IF sy-subrc <> 0. + lcx_exception=>raise( 'Error from SEO_INTERFACE_CREATE_COMPLETE' ). + ENDIF. + ENDMETHOD. +ENDCLASS. + +CLASS lcl_object_oriented_factory DEFINITION. + PUBLIC SECTION. + CLASS-METHODS: + create + IMPORTING + iv_object_type TYPE tadir-object + RETURNING + VALUE(ro_object_oriented_object) TYPE REF TO lif_object_oriented_object. +ENDCLASS. +CLASS lcl_object_oriented_factory IMPLEMENTATION. + METHOD create. + IF iv_object_type = 'CLAS'. + CREATE OBJECT ro_object_oriented_object TYPE lcl_object_oriented_class. + ELSEIF iv_object_type = 'INTF'. + CREATE OBJECT ro_object_oriented_object TYPE lcl_object_oriented_interface. + ENDIF. + ENDMETHOD. +ENDCLASS. + + CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. PUBLIC SECTION. From e763228fc53287e3e66f702ffc20d2753eb53447 Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Wed, 21 Dec 2016 10:30:23 +0100 Subject: [PATCH 02/40] Tests dependency isolation for creation --- src/zabapgit_object_clas.prog.abap | 216 ++++++++++++++++++++++++----- src/zabapgit_objects.prog.abap | 2 +- 2 files changed, 181 insertions(+), 37 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 635050282..de70546aa 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -17,6 +17,24 @@ INTERFACE lif_object_oriented_object. is_properties TYPE any RAISING lcx_exception. +* generate_locals +* CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS' +* EXPORTING +* clskey = ls_clskey +* force = seox_true +* locals_def = lt_locals_def +* locals_imp = lt_locals_imp +* locals_mac = lt_locals_mac +* locals_testclasses = lt_testclasses +* EXCEPTIONS +* not_existing = 1 +* model_only = 2 +* locals_not_generated = 3 +* locals_not_initialised = 4 +* OTHERS = 5. +* IF sy-subrc <> 0. +* lcx_exception=>raise( 'error from generate_locals' ). +* ENDIF. ENDINTERFACE. CLASS lcl_object_oriented_class DEFINITION. @@ -72,17 +90,27 @@ CLASS lcl_object_oriented_interface IMPLEMENTATION. ENDMETHOD. ENDCLASS. -CLASS lcl_object_oriented_factory DEFINITION. +CLASS lth_oo_factory_injector DEFINITION DEFERRED. + +CLASS lcl_object_oriented_factory DEFINITION + FRIENDS lth_oo_factory_injector. PUBLIC SECTION. CLASS-METHODS: - create + make IMPORTING iv_object_type TYPE tadir-object RETURNING VALUE(ro_object_oriented_object) TYPE REF TO lif_object_oriented_object. + PRIVATE SECTION. + CLASS-DATA: + go_object_oriented_object TYPE REF TO lif_object_oriented_object. ENDCLASS. CLASS lcl_object_oriented_factory IMPLEMENTATION. - METHOD create. + METHOD make. + IF go_object_oriented_object IS BOUND. + ro_object_oriented_object = go_object_oriented_object. + RETURN. + ENDIF. IF iv_object_type = 'CLAS'. CREATE OBJECT ro_object_oriented_object TYPE lcl_object_oriented_class. ELSEIF iv_object_type = 'INTF'. @@ -91,6 +119,18 @@ CLASS lcl_object_oriented_factory IMPLEMENTATION. ENDMETHOD. ENDCLASS. +CLASS lth_oo_factory_injector DEFINITION FOR TESTING. + PUBLIC SECTION. + CLASS-METHODS: + inject + IMPORTING + io_object_oriented_object TYPE REF TO lif_object_oriented_object. +ENDCLASS. +CLASS lth_oo_factory_injector IMPLEMENTATION. + METHOD inject. + lcl_object_oriented_factory=>go_object_oriented_object = io_object_oriented_object. + ENDMETHOD. +ENDCLASS. CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. @@ -1004,51 +1044,32 @@ CLASS lcl_object_clas IMPLEMENTATION. ls_clskey-clsname = ms_item-obj_name. + DATA lo_object_oriented_object TYPE REF TO lif_object_oriented_object. + lo_object_oriented_object = lcl_object_oriented_factory=>make( iv_object_type = ms_item-obj_type ). + CASE ms_item-obj_type. WHEN 'CLAS'. io_xml->read( EXPORTING iv_name = 'VSEOCLASS' CHANGING cg_data = ls_vseoclass ). - CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE' + lo_object_oriented_object->create( EXPORTING - devclass = iv_package - overwrite = seox_true + iv_package = iv_package CHANGING - class = ls_vseoclass - EXCEPTIONS - existing = 1 - is_interface = 2 - db_error = 3 - component_error = 4 - no_access = 5 - other = 6 - OTHERS = 7. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ). - ENDIF. + is_properties = ls_vseoclass + ). WHEN 'INTF'. io_xml->read( EXPORTING iv_name = 'VSEOINTERF' CHANGING cg_data = ls_vseointerf ). - CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE' - EXPORTING - devclass = iv_package - overwrite = seox_true - CHANGING - interface = ls_vseointerf - EXCEPTIONS - existing = 1 - is_class = 2 - db_error = 3 - component_error = 4 - no_access = 5 - other = 6 - OTHERS = 7. - IF sy-subrc <> 0. - lcx_exception=>raise( 'Error from SEO_INTERFACE_CREATE_COMPLETE' ). - ENDIF. + lo_object_oriented_object->create( + EXPORTING + iv_package = iv_package + CHANGING + is_properties = ls_vseointerf + ). WHEN OTHERS. ASSERT 0 = 1. @@ -1158,4 +1179,127 @@ CLASS lcl_object_clas IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. -ENDCLASS. "lcl_object_CLAS IMPLEMENTATION \ No newline at end of file +ENDCLASS. "lcl_object_CLAS IMPLEMENTATION + +CLASS ltd_spy_oo_object DEFINITION FOR TESTING. + PUBLIC SECTION. + INTERFACES: lif_object_oriented_object. + DATA: + mv_package TYPE devclass, + mv_overwrite TYPE seox_boolean, + mr_properties TYPE REF TO data. +ENDCLASS. +CLASS ltd_spy_oo_object IMPLEMENTATION. + METHOD lif_object_oriented_object~create. + FIELD-SYMBOLS: TYPE any. + ASSIGN is_properties to . + " = is_properties. + GET reference of into mr_properties. + mv_package = iv_package. + mv_overwrite = iv_overwrite. + ENDMETHOD. +ENDCLASS. + +CLASS ltd_fake_object_files DEFINITION FOR TESTING + INHERITING FROM lcl_objects_files. + PUBLIC SECTION. + METHODS constructor. + METHODS read_abap REDEFINITION. + DATA: + lt_sources TYPE seop_source_string, + lt_local_definitions TYPE seop_source_string, + lt_local_implementations TYPE seop_source_string, + lt_local_macros TYPE seop_source_string, + lt_test_classes TYPE seop_source_string. +ENDCLASS. +CLASS ltd_fake_object_files IMPLEMENTATION. + METHOD read_abap. + CASE iv_extra. + WHEN 'locals_def'. + rt_abap = lt_local_definitions. + WHEN 'locals_imp'. + rt_abap = lt_local_implementations. + WHEN 'macros'. + rt_abap = lt_local_macros. + WHEN 'testclasses'. + rt_abap = lt_test_classes. + WHEN OTHERS. + rt_abap = lt_sources. + RETURN. + ENDCASE. + + cl_abap_unit_assert=>assert_false( iv_error ). + ENDMETHOD. + METHOD constructor. + DATA ls_empty_item TYPE ty_item. + super->constructor( ls_empty_item ). + APPEND 'source' TO me->lt_sources. + APPEND 'definition' TO me->lt_local_definitions. + APPEND 'implementation' TO me->lt_local_implementations. + APPEND 'macro' TO me->lt_local_macros. + APPEND 'test' TO me->lt_test_classes. + ENDMETHOD. + +ENDCLASS. + +CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. + PRIVATE SECTION. + METHODS: + create FOR TESTING RAISING cx_static_check. +ENDCLASS. + +CLASS ltc_class_deserialization IMPLEMENTATION. + + METHOD create. + DATA spy_oo_object TYPE REF TO ltd_spy_oo_object. + DATA fake_object_files TYPE REF TO ltd_fake_object_files. + CREATE OBJECT fake_object_files. + CREATE OBJECT spy_oo_object. + + lth_oo_factory_injector=>inject( spy_oo_object ). + + DATA lo_class TYPE REF TO lif_object. + CREATE OBJECT lo_class TYPE lcl_object_clas + EXPORTING + is_item = VALUE #( devclass = 'CLAS' obj_name = 'zclass' obj_type = 'CLAS' ) + iv_language = sy-langu. + lo_class->mo_files = fake_object_files. + + DATA xml_input TYPE REF TO lcl_xml_input. + DATA xml_out TYPE REF TO lcl_xml_output. + DATA: ls_class_properties TYPE vseoclass. + ls_class_properties-clsname = 'class_name'. + CREATE OBJECT xml_out. + xml_out->add( + EXPORTING + iv_name = 'VSEOCLASS' + ig_data = ls_class_properties + ). + + CREATE OBJECT xml_input + EXPORTING + iv_xml = xml_out->render( ). + lo_class->deserialize( + iv_package = 'package_name' + io_xml = xml_input + ). + + lcl_objects_activation=>clear( ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mr_properties + exp = ls_class_properties + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mv_overwrite + exp = abap_true + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mv_package + exp = 'package_name' + ). + ENDMETHOD. + +ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 30887800b..a76058992 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -187,7 +187,7 @@ ENDCLASS. "lcl_objects_activation IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* -CLASS lcl_objects_files DEFINITION FINAL. +CLASS lcl_objects_files DEFINITION . PUBLIC SECTION. METHODS: From 9ade177c49aefd83d34b45fb8ded87c282f19aef Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Wed, 21 Dec 2016 14:18:18 +0100 Subject: [PATCH 03/40] class_abap_deserializing --- src/zabapgit_definitions.prog.abap | 2 + src/zabapgit_object_clas.prog.abap | 433 ++++++++++++++++++++++------- 2 files changed, 334 insertions(+), 101 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 139849bfe..5f0b0e1bd 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -114,6 +114,8 @@ TYPES: ty_results_tt TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY. TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY. +TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY. + CONSTANTS: BEGIN OF gc_state, " https://git-scm.com/docs/git-status unchanged TYPE char1 VALUE '', added TYPE char1 VALUE 'A', diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index de70546aa..0fe33e381 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -15,31 +15,150 @@ INTERFACE lif_object_oriented_object. iv_overwrite TYPE seox_boolean DEFAULT seox_true CHANGING is_properties TYPE any + RAISING + lcx_exception, + generate_locals + IMPORTING + is_key TYPE seoclskey + iv_force TYPE seox_boolean DEFAULT seox_true + it_local_definitions TYPE seop_source_string OPTIONAL + it_local_implementations TYPE seop_source_string OPTIONAL + it_local_macros TYPE seop_source_string OPTIONAL + it_local_test_classes TYPE seop_source_string OPTIONAL + RAISING + lcx_exception, + deserialize_source + IMPORTING + is_key TYPE seoclskey + it_source TYPE ty_string_tt + RAISING + lcx_exception + cx_sy_dyn_call_error, + update_descriptions + IMPORTING + is_key TYPE seoclskey + it_descriptions TYPE ty_seocompotx_tt, + add_to_activation_list + IMPORTING + is_item TYPE ty_item RAISING lcx_exception. -* generate_locals -* CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS' -* EXPORTING -* clskey = ls_clskey -* force = seox_true -* locals_def = lt_locals_def -* locals_imp = lt_locals_imp -* locals_mac = lt_locals_mac -* locals_testclasses = lt_testclasses -* EXCEPTIONS -* not_existing = 1 -* model_only = 2 -* locals_not_generated = 3 -* locals_not_initialised = 4 -* OTHERS = 5. -* IF sy-subrc <> 0. -* lcx_exception=>raise( 'error from generate_locals' ). -* ENDIF. ENDINTERFACE. -CLASS lcl_object_oriented_class DEFINITION. +CLASS lcl_object_oriented_base DEFINITION ABSTRACT. PUBLIC SECTION. INTERFACES: lif_object_oriented_object. + PRIVATE SECTION. + METHODS deserialize_abap_source_old + IMPORTING is_clskey TYPE seoclskey + it_source TYPE ty_string_tt + RAISING lcx_exception. + + METHODS deserialize_abap_source_new + IMPORTING is_clskey TYPE seoclskey + it_source TYPE ty_string_tt + RAISING lcx_exception + cx_sy_dyn_call_error. +ENDCLASS. + +CLASS lcl_object_oriented_base IMPLEMENTATION. + + METHOD lif_object_oriented_object~create. + "Subclass responsibility + RETURN. + ENDMETHOD. + + METHOD lif_object_oriented_object~deserialize_source. + TRY. + deserialize_abap_source_new( + is_clskey = is_key + it_source = it_source ). + CATCH cx_sy_dyn_call_error. + deserialize_abap_source_old( + is_clskey = is_key + it_source = it_source ). + ENDTRY. + ENDMETHOD. + + METHOD lif_object_oriented_object~generate_locals. + "Subclass responsibility + RETURN. + ENDMETHOD. + + METHOD deserialize_abap_source_old. + "for backwards compatability down to 702 + + DATA: lo_source TYPE REF TO cl_oo_source. + + CREATE OBJECT lo_source + EXPORTING + clskey = is_clskey + EXCEPTIONS + class_not_existing = 1 + OTHERS = 2. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from CL_OO_SOURCE' ). + ENDIF. + + TRY. + lo_source->access_permission( seok_access_modify ). + lo_source->set_source( it_source ). + lo_source->save( ). + lo_source->access_permission( seok_access_free ). + CATCH cx_oo_access_permission. + lcx_exception=>raise( 'permission error' ). + CATCH cx_oo_source_save_failure. + lcx_exception=>raise( 'save failure' ). + ENDTRY. + + ENDMETHOD. + + METHOD deserialize_abap_source_new. + DATA: lo_factory TYPE REF TO object, + lo_source TYPE REF TO object. + + CALL METHOD ('CL_OO_FACTORY')=>('CREATE_INSTANCE') + RECEIVING + result = lo_factory. + + CALL METHOD lo_factory->('CREATE_CLIF_SOURCE') + EXPORTING + clif_name = is_clskey-clsname + RECEIVING + result = lo_source. + + TRY. + CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~LOCK'). + CATCH cx_oo_access_permission. + lcx_exception=>raise( 'source_new, access permission exception' ). + ENDTRY. + + CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SET_SOURCE') + EXPORTING + source = it_source. + + CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SAVE'). + + CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~UNLOCK'). + + ENDMETHOD. + METHOD lif_object_oriented_object~add_to_activation_list. + lcl_objects_activation=>add_item( is_item ). + ENDMETHOD. + + METHOD lif_object_oriented_object~update_descriptions. + DELETE FROM seocompotx WHERE clsname = is_key-clsname. + INSERT seocompotx FROM TABLE it_descriptions. + ENDMETHOD. +ENDCLASS. + + +CLASS lcl_object_oriented_class DEFINITION + INHERITING FROM lcl_object_oriented_base. + PUBLIC SECTION. + METHODS: + lif_object_oriented_object~create REDEFINITION, + lif_object_oriented_object~generate_locals REDEFINITION. ENDCLASS. CLASS lcl_object_oriented_class IMPLEMENTATION. METHOD lif_object_oriented_object~create. @@ -61,11 +180,32 @@ CLASS lcl_object_oriented_class IMPLEMENTATION. lcx_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ). ENDIF. ENDMETHOD. + METHOD lif_object_oriented_object~generate_locals. + CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS' + EXPORTING + clskey = is_key + force = iv_force + locals_def = it_local_definitions + locals_imp = it_local_implementations + locals_mac = it_local_macros + locals_testclasses = it_local_test_classes + EXCEPTIONS + not_existing = 1 + model_only = 2 + locals_not_generated = 3 + locals_not_initialised = 4 + OTHERS = 5. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from generate_locals' ). + ENDIF. + ENDMETHOD. ENDCLASS. -CLASS lcl_object_oriented_interface DEFINITION. +CLASS lcl_object_oriented_interface DEFINITION + INHERITING FROM lcl_object_oriented_base. PUBLIC SECTION. - INTERFACES: lif_object_oriented_object. + METHODS: + lif_object_oriented_object~create REDEFINITION. ENDCLASS. CLASS lcl_object_oriented_interface IMPLEMENTATION. @@ -146,7 +286,7 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. TYPES: ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY. - TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY. + DATA mv_skip_testclass TYPE abap_bool. @@ -861,13 +1001,6 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDMETHOD. "serialize_xml METHOD lif_object~deserialize. - -* function group SEOK -* function group SEOQ -* function group SEOP -* class CL_OO_CLASSNAME_SERVICE -* class CL_OO_SOURCE - deserialize_abap( io_xml = io_xml iv_package = iv_package ). @@ -879,7 +1012,6 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDIF. deserialize_docu( io_xml ). - ENDMETHOD. "deserialize METHOD deserialize_sotr. @@ -1076,42 +1208,30 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDCASE. IF ms_item-obj_type = 'CLAS'. - CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS' - EXPORTING - clskey = ls_clskey - force = seox_true - locals_def = lt_locals_def - locals_imp = lt_locals_imp - locals_mac = lt_locals_mac - locals_testclasses = lt_testclasses - EXCEPTIONS - not_existing = 1 - model_only = 2 - locals_not_generated = 3 - locals_not_initialised = 4 - OTHERS = 5. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from generate_locals' ). - ENDIF. + lo_object_oriented_object->generate_locals( + is_key = ls_clskey + iv_force = seox_true + it_local_definitions = lt_locals_def + it_local_implementations = lt_locals_imp + it_local_macros = lt_locals_mac + it_local_test_classes = lt_testclasses + ). ENDIF. - TRY. - deserialize_abap_source_new( - is_clskey = ls_clskey - it_source = lt_source ). - CATCH cx_sy_dyn_call_error. - deserialize_abap_source_old( - is_clskey = ls_clskey - it_source = lt_source ). - ENDTRY. + lo_object_oriented_object->deserialize_source( + is_key = ls_clskey + it_source = lt_source + ). io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' CHANGING cg_data = lt_descriptions ). - DELETE FROM seocompotx WHERE clsname = ls_clskey-clsname. - INSERT seocompotx FROM TABLE lt_descriptions. - lcl_objects_activation=>add_item( ms_item ). + lo_object_oriented_object->update_descriptions( + is_key = ls_clskey + it_descriptions = lt_descriptions + ). + lo_object_oriented_object->add_to_activation_list( is_item = ms_item ). ENDMETHOD. "deserialize METHOD deserialize_abap_source_old. @@ -1185,19 +1305,55 @@ CLASS ltd_spy_oo_object DEFINITION FOR TESTING. PUBLIC SECTION. INTERFACES: lif_object_oriented_object. DATA: - mv_package TYPE devclass, - mv_overwrite TYPE seox_boolean, - mr_properties TYPE REF TO data. + mv_package TYPE devclass, + mv_overwrite TYPE seox_boolean, + ms_interface_properties TYPE vseointerf, + ms_class_properties TYPE vseoclass, + ms_locals_key TYPE seoclskey, + mt_local_definitions TYPE rswsourcet, + mt_local_implementations TYPE rswsourcet, + mt_local_macros TYPE rswsourcet, + mt_local_test_classes TYPE rswsourcet, + mv_force TYPE seoflag, + ms_deserialize_key TYPE seoclskey, + mt_source TYPE ty_string_tt, + ms_item_to_activate TYPE ty_item, + mt_descriptions TYPE ty_seocompotx_tt, + ms_description_key TYPE seoclskey. ENDCLASS. CLASS ltd_spy_oo_object IMPLEMENTATION. METHOD lif_object_oriented_object~create. - FIELD-SYMBOLS: TYPE any. - ASSIGN is_properties to . - " = is_properties. - GET reference of into mr_properties. - mv_package = iv_package. - mv_overwrite = iv_overwrite. + IF cl_abap_typedescr=>describe_by_data( is_properties )->absolute_name = cl_abap_typedescr=>describe_by_data( ms_interface_properties )->absolute_name. + ms_interface_properties = is_properties. + ELSE. + ms_class_properties = is_properties. + ENDIF. + mv_package = iv_package. + mv_overwrite = iv_overwrite. ENDMETHOD. + METHOD lif_object_oriented_object~generate_locals. + ms_locals_key = is_key. + mt_local_definitions = it_local_definitions. + mt_local_implementations = it_local_implementations. + mt_local_macros = it_local_macros. + mt_local_test_classes = it_local_test_classes. + mv_force = iv_force. + ENDMETHOD. + + METHOD lif_object_oriented_object~deserialize_source. + ms_deserialize_key = is_key. + mt_source = it_source. + ENDMETHOD. + + METHOD lif_object_oriented_object~add_to_activation_list. + ms_item_to_activate = is_item. + ENDMETHOD. + + METHOD lif_object_oriented_object~update_descriptions. + ms_description_key = is_key. + mt_descriptions = it_descriptions. + ENDMETHOD. + ENDCLASS. CLASS ltd_fake_object_files DEFINITION FOR TESTING @@ -1206,25 +1362,25 @@ CLASS ltd_fake_object_files DEFINITION FOR TESTING METHODS constructor. METHODS read_abap REDEFINITION. DATA: - lt_sources TYPE seop_source_string, - lt_local_definitions TYPE seop_source_string, - lt_local_implementations TYPE seop_source_string, - lt_local_macros TYPE seop_source_string, - lt_test_classes TYPE seop_source_string. + mt_sources TYPE seop_source_string, + mt_local_definitions TYPE seop_source_string, + mt_local_implementations TYPE seop_source_string, + mt_local_macros TYPE seop_source_string, + mt_local_test_classes TYPE seop_source_string. ENDCLASS. CLASS ltd_fake_object_files IMPLEMENTATION. METHOD read_abap. CASE iv_extra. WHEN 'locals_def'. - rt_abap = lt_local_definitions. + rt_abap = mt_local_definitions. WHEN 'locals_imp'. - rt_abap = lt_local_implementations. + rt_abap = mt_local_implementations. WHEN 'macros'. - rt_abap = lt_local_macros. + rt_abap = mt_local_macros. WHEN 'testclasses'. - rt_abap = lt_test_classes. + rt_abap = mt_local_test_classes. WHEN OTHERS. - rt_abap = lt_sources. + rt_abap = mt_sources. RETURN. ENDCASE. @@ -1233,11 +1389,11 @@ CLASS ltd_fake_object_files IMPLEMENTATION. METHOD constructor. DATA ls_empty_item TYPE ty_item. super->constructor( ls_empty_item ). - APPEND 'source' TO me->lt_sources. - APPEND 'definition' TO me->lt_local_definitions. - APPEND 'implementation' TO me->lt_local_implementations. - APPEND 'macro' TO me->lt_local_macros. - APPEND 'test' TO me->lt_test_classes. + APPEND 'source' TO me->mt_sources. + APPEND 'definition' TO me->mt_local_definitions. + APPEND 'implementation' TO me->mt_local_implementations. + APPEND 'macro' TO me->mt_local_macros. + APPEND 'test' TO me->mt_local_test_classes. ENDMETHOD. ENDCLASS. @@ -1245,35 +1401,48 @@ ENDCLASS. CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. PRIVATE SECTION. METHODS: - create FOR TESTING RAISING cx_static_check. + deserialize FOR TESTING RAISING cx_static_check. ENDCLASS. CLASS ltc_class_deserialization IMPLEMENTATION. - METHOD create. + METHOD deserialize. DATA spy_oo_object TYPE REF TO ltd_spy_oo_object. DATA fake_object_files TYPE REF TO ltd_fake_object_files. + DATA xml_input TYPE REF TO lcl_xml_input. + DATA xml_out TYPE REF TO lcl_xml_output. + DATA: ls_class_properties TYPE vseoclass. + DATA lo_class TYPE REF TO lif_object. + DATA ls_description TYPE seocompotx. + DATA lt_descriptions TYPE TABLE OF seocompotx. + CREATE OBJECT fake_object_files. CREATE OBJECT spy_oo_object. lth_oo_factory_injector=>inject( spy_oo_object ). - DATA lo_class TYPE REF TO lif_object. + DATA(ls_item) = VALUE ty_item( devclass = 'package_name' obj_name = 'zcl_class' obj_type = 'CLAS' ). + CREATE OBJECT lo_class TYPE lcl_object_clas EXPORTING - is_item = VALUE #( devclass = 'CLAS' obj_name = 'zclass' obj_type = 'CLAS' ) + is_item = ls_item iv_language = sy-langu. lo_class->mo_files = fake_object_files. - DATA xml_input TYPE REF TO lcl_xml_input. - DATA xml_out TYPE REF TO lcl_xml_output. - DATA: ls_class_properties TYPE vseoclass. - ls_class_properties-clsname = 'class_name'. + + ls_class_properties-clsname = 'zcl_class'. CREATE OBJECT xml_out. xml_out->add( - EXPORTING - iv_name = 'VSEOCLASS' - ig_data = ls_class_properties + iv_name = 'VSEOCLASS' + ig_data = ls_class_properties + ). + + ls_description-clsname = 'zcl_class'. + ls_description-cmpname = 'a_method'. + APPEND ls_description TO lt_descriptions. + xml_out->add( + iv_name = 'DESCRIPTIONS' + ig_data = lt_descriptions ). CREATE OBJECT xml_input @@ -1284,22 +1453,84 @@ CLASS ltc_class_deserialization IMPLEMENTATION. io_xml = xml_input ). - lcl_objects_activation=>clear( ). - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mr_properties + act = spy_oo_object->ms_class_properties exp = ls_class_properties ). - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mv_overwrite - exp = abap_true - ). + cl_abap_unit_assert=>assert_true( spy_oo_object->mv_overwrite ). cl_abap_unit_assert=>assert_equals( act = spy_oo_object->mv_package exp = 'package_name' ). + + "Local generation + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->ms_locals_key + exp = 'zcl_class' + ). + cl_abap_unit_assert=>assert_true( spy_oo_object->mv_force ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mt_local_definitions + exp = fake_object_files->mt_local_definitions + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mt_local_implementations + exp = fake_object_files->mt_local_implementations + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mt_local_macros + exp = fake_object_files->mt_local_macros + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mt_local_test_classes + exp = fake_object_files->mt_local_test_classes + ). + + "Deserialization source + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mt_source + exp = fake_object_files->mt_sources + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->ms_deserialize_key + exp = 'zcl_class' + ). + + "Update descriptions + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mt_descriptions + exp = lt_descriptions + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->ms_description_key + exp = 'zcl_class' + ). + + "Descriptions + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->mt_descriptions + exp = lt_descriptions + ). + + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->ms_description_key + exp = 'zcl_class' + ). + + "Activation + cl_abap_unit_assert=>assert_equals( + act = spy_oo_object->ms_item_to_activate + exp = ls_item + ). + ENDMETHOD. ENDCLASS. \ No newline at end of file From c0cb1f2a9556844881cd8d3477138160f7772fdd Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Wed, 21 Dec 2016 15:29:27 +0100 Subject: [PATCH 04/40] Breaking into several tests --- src/zabapgit_object_clas.prog.abap | 295 ++++++++++++++++++----------- 1 file changed, 187 insertions(+), 108 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 0fe33e381..29562e8d7 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -1401,136 +1401,215 @@ ENDCLASS. CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. PRIVATE SECTION. METHODS: - deserialize FOR TESTING RAISING cx_static_check. + setup, + given_a_class_properties + RAISING + lcx_exception, + when_deserializing + RAISING + lcx_exception, + then_should_create_class, + then_it_should_generate_locals, + then_should_deserialize_source, + given_the_descriptions + IMPORTING + it_descriptions TYPE ty_seocompotx_tt + RAISING + lcx_exception, + then_shuld_update_descriptions + IMPORTING + it_descriptions TYPE ty_seocompotx_tt, + then_it_should_add_activation, + should_create_class FOR TESTING RAISING cx_static_check, + should_generate_locals FOR TESTING RAISING cx_static_check, + should_deserialize_source FOR TESTING RAISING cx_static_check, + should_update_descriptions FOR TESTING RAISING cx_static_check, + should_add_to_activation FOR TESTING RAISING cx_static_check. + + DATA: + mo_spy_oo_object TYPE REF TO ltd_spy_oo_object, + mo_fake_object_files TYPE REF TO ltd_fake_object_files, + mo_xml_input TYPE REF TO lcl_xml_input, + mo_xml_out TYPE REF TO lcl_xml_output, + mo_class TYPE REF TO lif_object, + ms_class_properties TYPE vseoclass, + ls_item TYPE ty_item. ENDCLASS. CLASS ltc_class_deserialization IMPLEMENTATION. + METHOD setup. + CREATE OBJECT mo_fake_object_files. + CREATE OBJECT mo_spy_oo_object. + CREATE OBJECT mo_xml_out. + lth_oo_factory_injector=>inject( mo_spy_oo_object ). - METHOD deserialize. - DATA spy_oo_object TYPE REF TO ltd_spy_oo_object. - DATA fake_object_files TYPE REF TO ltd_fake_object_files. - DATA xml_input TYPE REF TO lcl_xml_input. - DATA xml_out TYPE REF TO lcl_xml_output. - DATA: ls_class_properties TYPE vseoclass. - DATA lo_class TYPE REF TO lif_object. - DATA ls_description TYPE seocompotx. - DATA lt_descriptions TYPE TABLE OF seocompotx. + ls_item-devclass = 'package_name'. + ls_item-obj_name = 'zcl_class'. + ls_item-obj_type = 'CLAS'. - CREATE OBJECT fake_object_files. - CREATE OBJECT spy_oo_object. - - lth_oo_factory_injector=>inject( spy_oo_object ). - - DATA(ls_item) = VALUE ty_item( devclass = 'package_name' obj_name = 'zcl_class' obj_type = 'CLAS' ). - - CREATE OBJECT lo_class TYPE lcl_object_clas + CREATE OBJECT mo_class TYPE lcl_object_clas EXPORTING is_item = ls_item iv_language = sy-langu. - lo_class->mo_files = fake_object_files. + mo_class->mo_files = mo_fake_object_files. + ENDMETHOD. + METHOD should_create_class. + ms_class_properties-clsname = ls_item-obj_name. - ls_class_properties-clsname = 'zcl_class'. - CREATE OBJECT xml_out. - xml_out->add( - iv_name = 'VSEOCLASS' - ig_data = ls_class_properties - ). + given_a_class_properties( ). - ls_description-clsname = 'zcl_class'. + when_deserializing( ). + + then_should_create_class( ). + ENDMETHOD. + + METHOD should_generate_locals. + given_a_class_properties( ). + + when_deserializing( ). + + then_it_should_generate_locals( ). + ENDMETHOD. + + METHOD should_deserialize_source. + given_a_class_properties( ). + + when_deserializing( ). + + then_should_deserialize_source( ). + ENDMETHOD. + + METHOD should_update_descriptions. + DATA: + ls_description TYPE seocompotx, + lt_descriptions TYPE ty_seocompotx_tt. + + given_a_class_properties( ). + + ls_description-clsname = ls_item-obj_name. ls_description-cmpname = 'a_method'. APPEND ls_description TO lt_descriptions. - xml_out->add( - iv_name = 'DESCRIPTIONS' - ig_data = lt_descriptions - ). + given_the_descriptions( lt_descriptions ). - CREATE OBJECT xml_input - EXPORTING - iv_xml = xml_out->render( ). - lo_class->deserialize( - iv_package = 'package_name' - io_xml = xml_input - ). + when_deserializing( ). - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->ms_class_properties - exp = ls_class_properties - ). + then_shuld_update_descriptions( lt_descriptions ). + ENDMETHOD. - cl_abap_unit_assert=>assert_true( spy_oo_object->mv_overwrite ). + METHOD should_add_to_activation. + given_a_class_properties( ). - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mv_package - exp = 'package_name' - ). - - "Local generation - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->ms_locals_key - exp = 'zcl_class' - ). - cl_abap_unit_assert=>assert_true( spy_oo_object->mv_force ). - - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mt_local_definitions - exp = fake_object_files->mt_local_definitions - ). - - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mt_local_implementations - exp = fake_object_files->mt_local_implementations - ). - - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mt_local_macros - exp = fake_object_files->mt_local_macros - ). - - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mt_local_test_classes - exp = fake_object_files->mt_local_test_classes - ). - - "Deserialization source - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mt_source - exp = fake_object_files->mt_sources - ). - - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->ms_deserialize_key - exp = 'zcl_class' - ). - - "Update descriptions - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mt_descriptions - exp = lt_descriptions - ). - - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->ms_description_key - exp = 'zcl_class' - ). - - "Descriptions - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->mt_descriptions - exp = lt_descriptions - ). - - cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->ms_description_key - exp = 'zcl_class' - ). + when_deserializing( ). "Activation +then_it_should_add_activation( ). + ENDMETHOD. + + METHOD given_a_class_properties. + mo_xml_out->add( + iv_name = 'VSEOCLASS' + ig_data = ms_class_properties + ). + ENDMETHOD. + + + METHOD when_deserializing. + CREATE OBJECT mo_xml_input + EXPORTING + iv_xml = mo_xml_out->render( ). + mo_class->deserialize( + iv_package = 'package_name' + io_xml = mo_xml_input + ). + ENDMETHOD. + + + METHOD then_should_create_class. + cl_abap_unit_assert=>assert_equals( - act = spy_oo_object->ms_item_to_activate - exp = ls_item + act = mo_spy_oo_object->ms_class_properties + exp = ms_class_properties + ). + + cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_package + exp = 'package_name' ). ENDMETHOD. + + METHOD then_it_should_generate_locals. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_locals_key + exp = ls_item-obj_name + ). + cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_force ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_definitions + exp = mo_fake_object_files->mt_local_definitions + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_implementations + exp = mo_fake_object_files->mt_local_implementations + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_macros + exp = mo_fake_object_files->mt_local_macros + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_test_classes + exp = mo_fake_object_files->mt_local_test_classes + ). + ENDMETHOD. + + + METHOD then_should_deserialize_source. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_source + exp = mo_fake_object_files->mt_sources + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_deserialize_key + exp = ls_item-obj_name + ). + ENDMETHOD. + + + METHOD given_the_descriptions. + mo_xml_out->add( + iv_name = 'DESCRIPTIONS' + ig_data = it_descriptions + ). + ENDMETHOD. + + + METHOD then_shuld_update_descriptions. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_descriptions + exp = it_descriptions + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_description_key + exp = ls_item-obj_name + ). + ENDMETHOD. + + + METHOD then_it_should_add_activation. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_item_to_activate + exp = ls_item + ). + ENDMETHOD. + ENDCLASS. \ No newline at end of file From 56675067e49cc296a15ecd7257d4c50b13e3a92e Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Wed, 21 Dec 2016 16:03:27 +0100 Subject: [PATCH 05/40] added interface tests --- src/zabapgit_object_clas.prog.abap | 259 ++++++++++++++++++++--------- 1 file changed, 178 insertions(+), 81 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 29562e8d7..feba06bc0 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -1398,42 +1398,98 @@ CLASS ltd_fake_object_files IMPLEMENTATION. ENDCLASS. -CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. - PRIVATE SECTION. - METHODS: - setup, - given_a_class_properties - RAISING - lcx_exception, - when_deserializing - RAISING - lcx_exception, - then_should_create_class, - then_it_should_generate_locals, +CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT . + PROTECTED SECTION. + DATA: + mo_spy_oo_object TYPE REF TO ltd_spy_oo_object, + mo_fake_object_files TYPE REF TO ltd_fake_object_files, + mo_xml_input TYPE REF TO lcl_xml_input, + mo_xml_out TYPE REF TO lcl_xml_output, + mo_oo_object TYPE REF TO lif_object, + ms_item TYPE ty_item. + METHODS: when_deserializing + RAISING + lcx_exception, then_should_deserialize_source, given_the_descriptions IMPORTING it_descriptions TYPE ty_seocompotx_tt RAISING lcx_exception, - then_shuld_update_descriptions - IMPORTING + then_shuld_update_descriptions + IMPORTING it_descriptions TYPE ty_seocompotx_tt, - then_it_should_add_activation, + then_it_should_add_activation. + +ENDCLASS. +CLASS ltc_oo_test IMPLEMENTATION. + + METHOD then_it_should_add_activation. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_item_to_activate + exp = ms_item + ). + ENDMETHOD. + + METHOD then_shuld_update_descriptions. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_descriptions + exp = it_descriptions + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_description_key + exp = ms_item-obj_name + ). + ENDMETHOD. + + METHOD given_the_descriptions. + mo_xml_out->add( + iv_name = 'DESCRIPTIONS' + ig_data = it_descriptions + ). + ENDMETHOD. + + METHOD then_should_deserialize_source. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_source + exp = mo_fake_object_files->mt_sources + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_deserialize_key + exp = ms_item-obj_name + ). + ENDMETHOD. + + METHOD when_deserializing. + CREATE OBJECT mo_xml_input + EXPORTING + iv_xml = mo_xml_out->render( ). + mo_oo_object->deserialize( + iv_package = 'package_name' + io_xml = mo_xml_input + ). + ENDMETHOD. +ENDCLASS. + +CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT +INHERITING FROM ltc_oo_test. + PRIVATE SECTION. + METHODS: + setup, + given_a_class_properties + RAISING + lcx_exception, + then_should_create_class, + then_it_should_generate_locals, should_create_class FOR TESTING RAISING cx_static_check, should_generate_locals FOR TESTING RAISING cx_static_check, should_deserialize_source FOR TESTING RAISING cx_static_check, should_update_descriptions FOR TESTING RAISING cx_static_check, should_add_to_activation FOR TESTING RAISING cx_static_check. - DATA: - mo_spy_oo_object TYPE REF TO ltd_spy_oo_object, - mo_fake_object_files TYPE REF TO ltd_fake_object_files, - mo_xml_input TYPE REF TO lcl_xml_input, - mo_xml_out TYPE REF TO lcl_xml_output, - mo_class TYPE REF TO lif_object, - ms_class_properties TYPE vseoclass, - ls_item TYPE ty_item. + ms_class_properties TYPE vseoclass. ENDCLASS. CLASS ltc_class_deserialization IMPLEMENTATION. @@ -1443,19 +1499,19 @@ CLASS ltc_class_deserialization IMPLEMENTATION. CREATE OBJECT mo_xml_out. lth_oo_factory_injector=>inject( mo_spy_oo_object ). - ls_item-devclass = 'package_name'. - ls_item-obj_name = 'zcl_class'. - ls_item-obj_type = 'CLAS'. + ms_item-devclass = 'package_name'. + ms_item-obj_name = 'zcl_class'. + ms_item-obj_type = 'CLAS'. - CREATE OBJECT mo_class TYPE lcl_object_clas + CREATE OBJECT mo_oo_object TYPE lcl_object_clas EXPORTING - is_item = ls_item + is_item = ms_item iv_language = sy-langu. - mo_class->mo_files = mo_fake_object_files. + mo_oo_object->mo_files = mo_fake_object_files. ENDMETHOD. METHOD should_create_class. - ms_class_properties-clsname = ls_item-obj_name. + ms_class_properties-clsname = ms_item-obj_name. given_a_class_properties( ). @@ -1487,14 +1543,14 @@ CLASS ltc_class_deserialization IMPLEMENTATION. given_a_class_properties( ). - ls_description-clsname = ls_item-obj_name. + ls_description-clsname = ms_item-obj_name. ls_description-cmpname = 'a_method'. APPEND ls_description TO lt_descriptions. given_the_descriptions( lt_descriptions ). when_deserializing( ). - then_shuld_update_descriptions( lt_descriptions ). + then_shuld_update_descriptions( lt_descriptions ). ENDMETHOD. METHOD should_add_to_activation. @@ -1502,8 +1558,7 @@ CLASS ltc_class_deserialization IMPLEMENTATION. when_deserializing( ). - "Activation -then_it_should_add_activation( ). + then_it_should_add_activation( ). ENDMETHOD. METHOD given_a_class_properties. @@ -1513,24 +1568,11 @@ then_it_should_add_activation( ). ). ENDMETHOD. - - METHOD when_deserializing. - CREATE OBJECT mo_xml_input - EXPORTING - iv_xml = mo_xml_out->render( ). - mo_class->deserialize( - iv_package = 'package_name' - io_xml = mo_xml_input - ). - ENDMETHOD. - - METHOD then_should_create_class. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_class_properties - exp = ms_class_properties - ). + act = mo_spy_oo_object->ms_class_properties + exp = ms_class_properties + ). cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). @@ -1538,14 +1580,13 @@ then_it_should_add_activation( ). act = mo_spy_oo_object->mv_package exp = 'package_name' ). - ENDMETHOD. METHOD then_it_should_generate_locals. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_locals_key - exp = ls_item-obj_name + exp = ms_item-obj_name ). cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_force ). @@ -1569,46 +1610,102 @@ then_it_should_add_activation( ). exp = mo_fake_object_files->mt_local_test_classes ). ENDMETHOD. +ENDCLASS. +CLASS ltc_interface_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT +INHERITING FROM ltc_oo_test. + PRIVATE SECTION. + METHODS: + setup, + given_an_interface_properties + RAISING + lcx_exception, + then_should_create_interface, + create_interface FOR TESTING RAISING cx_static_check, + update_descriptions FOR TESTING RAISING cx_static_check, + add_to_activation FOR TESTING RAISING cx_static_check, + deserialize_source FOR TESTING RAISING cx_static_check. + DATA: + ms_interface_properties TYPE vseointerf. +ENDCLASS. +CLASS ltc_interface_deserialization IMPLEMENTATION. + METHOD setup. + CREATE OBJECT mo_fake_object_files. + CREATE OBJECT mo_spy_oo_object. + CREATE OBJECT mo_xml_out. + lth_oo_factory_injector=>inject( mo_spy_oo_object ). - METHOD then_should_deserialize_source. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_source - exp = mo_fake_object_files->mt_sources - ). + ms_item-devclass = 'package_name'. + ms_item-obj_name = 'zif_interface'. + ms_item-obj_type = 'INTF'. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_deserialize_key - exp = ls_item-obj_name - ). + CREATE OBJECT mo_oo_object TYPE lcl_object_intf + EXPORTING + is_item = ms_item + iv_language = sy-langu. + mo_oo_object->mo_files = mo_fake_object_files. ENDMETHOD. + METHOD create_interface. + ms_interface_properties-clsname = ms_item-obj_name. + given_an_interface_properties( ). - METHOD given_the_descriptions. + when_deserializing( ). + + then_should_create_interface( ). + ENDMETHOD. + + METHOD update_descriptions. + DATA: + ls_description TYPE seocompotx, + lt_descriptions TYPE ty_seocompotx_tt. + + given_an_interface_properties( ). + + ls_description-clsname = ms_item-obj_name. + ls_description-cmpname = 'a_method'. + APPEND ls_description TO lt_descriptions. + given_the_descriptions( lt_descriptions ). + + when_deserializing( ). + + then_shuld_update_descriptions( lt_descriptions ). + ENDMETHOD. + + METHOD add_to_activation. + given_an_interface_properties( ). + + when_deserializing( ). + + then_it_should_add_activation( ). + ENDMETHOD. + + METHOD deserialize_source. + given_an_interface_properties( ). + + when_deserializing( ). + + then_should_deserialize_source( ). + ENDMETHOD. + + METHOD given_an_interface_properties. mo_xml_out->add( - iv_name = 'DESCRIPTIONS' - ig_data = it_descriptions - ). - ENDMETHOD. - - - METHOD then_shuld_update_descriptions. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_descriptions - exp = it_descriptions - ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_description_key - exp = ls_item-obj_name + iv_name = 'VSEOINTERF' + ig_data = ms_interface_properties ). ENDMETHOD. - - METHOD then_it_should_add_activation. + METHOD then_should_create_interface. cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_item_to_activate - exp = ls_item + act = mo_spy_oo_object->ms_interface_properties + exp = ms_interface_properties + ). + + cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_package + exp = 'package_name' ). ENDMETHOD. From dd23247095ccb89ead51cf90f2bc1b57acd38601 Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Thu, 22 Dec 2016 16:07:25 +0100 Subject: [PATCH 06/40] Sotr TextPool Docu --- src/zabapgit_definitions.prog.abap | 114 ++++---- src/zabapgit_object_clas.prog.abap | 416 +++++++++++++++++++++-------- src/zabapgit_objects.prog.abap | 7 - 3 files changed, 370 insertions(+), 167 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 5f0b0e1bd..3bfde6835 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -18,8 +18,8 @@ TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF ty_file_signature WITH DEFAU TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF ty_file_signature WITH UNIQUE KEY path filename. TYPES: BEGIN OF ty_file. - INCLUDE TYPE ty_file_signature. -TYPES: data TYPE xstring, + INCLUDE TYPE ty_file_signature. +TYPES: data TYPE xstring, END OF ty_file. TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY. @@ -61,11 +61,11 @@ TYPES: BEGIN OF ty_web_asset, TYPES tt_web_assets TYPE STANDARD TABLE OF ty_web_asset WITH DEFAULT KEY. TYPES: BEGIN OF ty_repo_file, - path TYPE string, - filename TYPE string, - is_changed TYPE abap_bool, - rstate TYPE char1, - lstate TYPE char1, + path TYPE string, + filename TYPE string, + is_changed TYPE abap_bool, + rstate TYPE char1, + lstate TYPE char1, END OF ty_repo_file. TYPES tt_repo_files TYPE STANDARD TABLE OF ty_repo_file WITH DEFAULT KEY. @@ -101,14 +101,14 @@ TYPES: BEGIN OF ty_tadir, TYPES: ty_tadir_tt TYPE STANDARD TABLE OF ty_tadir WITH DEFAULT KEY. TYPES: BEGIN OF ty_result, - obj_type TYPE tadir-object, - obj_name TYPE tadir-obj_name, - path TYPE string, - filename TYPE string, - package TYPE devclass, - match TYPE sap_bool, - lstate TYPE char1, - rstate TYPE char1, + obj_type TYPE tadir-object, + obj_name TYPE tadir-obj_name, + path TYPE string, + filename TYPE string, + package TYPE devclass, + match TYPE sap_bool, + lstate TYPE char1, + rstate TYPE char1, END OF ty_result. TYPES: ty_results_tt TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY. @@ -116,6 +116,20 @@ TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY. TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY. +TYPES: BEGIN OF ty_tpool. + INCLUDE TYPE textpool. +TYPES: split TYPE c LENGTH 8. +TYPES: END OF ty_tpool. + +TYPES: ty_tpool_tt TYPE STANDARD TABLE OF ty_tpool WITH DEFAULT KEY. + +TYPES: BEGIN OF ty_sotr, + header TYPE sotr_head, + entries TYPE sotr_text_tt, + END OF ty_sotr. + +TYPES: ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY. + CONSTANTS: BEGIN OF gc_state, " https://git-scm.com/docs/git-status unchanged TYPE char1 VALUE '', added TYPE char1 VALUE 'A', @@ -172,43 +186,43 @@ CONSTANTS: BEGIN OF gc_action, repo_refresh_checksums TYPE string VALUE 'repo_refresh_checksums', repo_toggle_fav TYPE string VALUE 'repo_toggle_fav', - abapgit_home TYPE string VALUE 'abapgit_home', - abapgit_wiki TYPE string VALUE 'abapgit_wiki', - abapgit_install TYPE string VALUE 'abapgit_install', - abapgit_install_pi TYPE string VALUE 'abapgit_install_pi', + abapgit_home TYPE string VALUE 'abapgit_home', + abapgit_wiki TYPE string VALUE 'abapgit_wiki', + abapgit_install TYPE string VALUE 'abapgit_install', + abapgit_install_pi TYPE string VALUE 'abapgit_install_pi', - zip_import TYPE string VALUE 'zip_import', - zip_export TYPE string VALUE 'zip_export', - zip_package TYPE string VALUE 'zip_package', - zip_transport TYPE string VALUE 'zip_transport', - zip_object TYPE string VALUE 'zip_object', + zip_import TYPE string VALUE 'zip_import', + zip_export TYPE string VALUE 'zip_export', + zip_package TYPE string VALUE 'zip_package', + zip_transport TYPE string VALUE 'zip_transport', + zip_object TYPE string VALUE 'zip_object', - git_pull TYPE string VALUE 'git_pull', - git_reset TYPE string VALUE 'git_reset', - git_branch_create TYPE string VALUE 'git_branch_create', - git_branch_switch TYPE string VALUE 'git_branch_switch', - git_branch_delete TYPE string VALUE 'git_branch_delete', - git_commit TYPE string VALUE 'git_commit', + git_pull TYPE string VALUE 'git_pull', + git_reset TYPE string VALUE 'git_reset', + git_branch_create TYPE string VALUE 'git_branch_create', + git_branch_switch TYPE string VALUE 'git_branch_switch', + git_branch_delete TYPE string VALUE 'git_branch_delete', + git_commit TYPE string VALUE 'git_commit', - db_delete TYPE string VALUE 'db_delete', - db_update TYPE string VALUE 'db_update', - db_display TYPE string VALUE 'db_display', - db_edit TYPE string VALUE 'db_edit', - bg_update TYPE string VALUE 'bg_update', + db_delete TYPE string VALUE 'db_delete', + db_update TYPE string VALUE 'db_update', + db_display TYPE string VALUE 'db_display', + db_edit TYPE string VALUE 'db_edit', + bg_update TYPE string VALUE 'bg_update', - go_main TYPE string VALUE 'go_main', - go_explore TYPE string VALUE 'go_explore', - go_db TYPE string VALUE 'go_db', - go_background TYPE string VALUE 'go_background', - go_background_run TYPE string VALUE 'go_background_run', - go_diff TYPE string VALUE 'go_diff', - go_stage TYPE string VALUE 'go_stage', - go_commit TYPE string VALUE 'go_commit', - go_branch_overview TYPE string VALUE 'go_branch_overview', - go_playground TYPE string VALUE 'go_playground', - go_debuginfo TYPE string VALUE 'go_debuginfo', - go_settings TYPE STRING VALUE 'go_settings', - go_tutorial TYPE STRING VALUE 'go_tutorial', - jump TYPE string VALUE 'jump', - jump_pkg TYPE string VALUE 'jump_pkg', + go_main TYPE string VALUE 'go_main', + go_explore TYPE string VALUE 'go_explore', + go_db TYPE string VALUE 'go_db', + go_background TYPE string VALUE 'go_background', + go_background_run TYPE string VALUE 'go_background_run', + go_diff TYPE string VALUE 'go_diff', + go_stage TYPE string VALUE 'go_stage', + go_commit TYPE string VALUE 'go_commit', + go_branch_overview TYPE string VALUE 'go_branch_overview', + go_playground TYPE string VALUE 'go_playground', + go_debuginfo TYPE string VALUE 'go_debuginfo', + go_settings TYPE string VALUE 'go_settings', + go_tutorial TYPE string VALUE 'go_tutorial', + jump TYPE string VALUE 'jump', + jump_pkg TYPE string VALUE 'jump_pkg', END OF gc_action. \ No newline at end of file diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index feba06bc0..b055c09ee 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -34,6 +34,13 @@ INTERFACE lif_object_oriented_object. RAISING lcx_exception cx_sy_dyn_call_error, + insert_text_pool + IMPORTING + iv_class_name TYPE seoclsname + it_text_pool TYPE textpool_table + iv_language TYPE spras + RAISING + lcx_exception, update_descriptions IMPORTING is_key TYPE seoclskey @@ -41,6 +48,19 @@ INTERFACE lif_object_oriented_object. add_to_activation_list IMPORTING is_item TYPE ty_item + RAISING + lcx_exception, + create_sotr + IMPORTING + iv_package TYPE devclass + it_sotr TYPE ty_sotr_tt + RAISING + lcx_exception, + create_documentation + IMPORTING + it_lines TYPE tlinetab + iv_object_name TYPE dokhl-object + iv_language TYPE spras RAISING lcx_exception. ENDINTERFACE. @@ -150,6 +170,20 @@ CLASS lcl_object_oriented_base IMPLEMENTATION. DELETE FROM seocompotx WHERE clsname = is_key-clsname. INSERT seocompotx FROM TABLE it_descriptions. ENDMETHOD. + METHOD lif_object_oriented_object~insert_text_pool. + "Subclass responsibility + RETURN. + ENDMETHOD. + + METHOD lif_object_oriented_object~create_sotr. + "Subclass responsibility + RETURN. + ENDMETHOD. + + METHOD lif_object_oriented_object~create_documentation. + + ENDMETHOD. + ENDCLASS. @@ -158,7 +192,10 @@ CLASS lcl_object_oriented_class DEFINITION PUBLIC SECTION. METHODS: lif_object_oriented_object~create REDEFINITION, - lif_object_oriented_object~generate_locals REDEFINITION. + lif_object_oriented_object~generate_locals REDEFINITION, + lif_object_oriented_object~insert_text_pool REDEFINITION, + lif_object_oriented_object~create_sotr REDEFINITION. + ENDCLASS. CLASS lcl_object_oriented_class IMPLEMENTATION. METHOD lif_object_oriented_object~create. @@ -199,6 +236,83 @@ CLASS lcl_object_oriented_class IMPLEMENTATION. lcx_exception=>raise( 'error from generate_locals' ). ENDIF. ENDMETHOD. + METHOD lif_object_oriented_object~insert_text_pool. + DATA: lv_cp TYPE program. + + lv_cp = cl_oo_classname_service=>get_classpool_name( iv_class_name ). + + INSERT TEXTPOOL lv_cp + FROM it_text_pool + LANGUAGE iv_language + STATE 'I'. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from INSERT TEXTPOOL' ). + ENDIF. + + lcl_objects_activation=>add( iv_type = 'REPT' + iv_name = lv_cp ). + ENDMETHOD. + + METHOD lif_object_oriented_object~create_sotr. + DATA: lt_sotr TYPE ty_sotr_tt, + lt_objects TYPE sotr_objects, + ls_paket TYPE sotr_pack, + lv_object LIKE LINE OF lt_objects. + + FIELD-SYMBOLS: LIKE LINE OF lt_sotr. + + LOOP AT it_sotr ASSIGNING . + CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS' + EXPORTING + object_vector = -header-objid_vec + IMPORTING + objects = lt_objects + EXCEPTIONS + object_not_found = 1 + OTHERS = 2. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from SOTR_OBJECT_GET_OBJECTS' ). + ENDIF. + + READ TABLE lt_objects INDEX 1 INTO lv_object. + ASSERT sy-subrc = 0. + + ls_paket-paket = iv_package. + + CALL FUNCTION 'SOTR_CREATE_CONCEPT' + EXPORTING + paket = ls_paket + crea_lan = -header-crea_lan + alias_name = -header-alias_name + object = lv_object + entries = -entries + concept_default = -header-concept + EXCEPTIONS + package_missing = 1 + crea_lan_missing = 2 + object_missing = 3 + paket_does_not_exist = 4 + alias_already_exist = 5 + object_type_not_found = 6 + langu_missing = 7 + identical_context_not_allowed = 8 + text_too_long = 9 + error_in_update = 10 + no_master_langu = 11 + error_in_concept_id = 12 + alias_not_allowed = 13 + tadir_entry_creation_failed = 14 + internal_error = 15 + error_in_correction = 16 + user_cancelled = 17 + no_entry_found = 18 + OTHERS = 19. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from SOTR_CREATE_CONCEPT' ). + ENDIF. + ENDLOOP. + ENDMETHOD. + ENDCLASS. CLASS lcl_object_oriented_interface DEFINITION @@ -279,16 +393,8 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. ALIASES mo_files FOR lif_object~mo_files. PRIVATE SECTION. - TYPES: BEGIN OF ty_sotr, - header TYPE sotr_head, - entries TYPE sotr_text_tt, - END OF ty_sotr. - - TYPES: ty_sotr_tt TYPE STANDARD TABLE OF ty_sotr WITH DEFAULT KEY. - - - DATA mv_skip_testclass TYPE abap_bool. + DATA mo_object_oriented_object TYPE REF TO lif_object_oriented_object. METHODS deserialize_abap IMPORTING io_xml TYPE REF TO lcl_xml_input @@ -1001,6 +1107,9 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDMETHOD. "serialize_xml METHOD lif_object~deserialize. + + mo_object_oriented_object = lcl_object_oriented_factory=>make( iv_object_type = ms_item-obj_type ). + deserialize_abap( io_xml = io_xml iv_package = iv_package ). @@ -1015,7 +1124,7 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDMETHOD. "deserialize METHOD deserialize_sotr. - + "OTR stands for Online Text Repository DATA: lt_sotr TYPE ty_sotr_tt, lt_objects TYPE sotr_objects, ls_paket TYPE sotr_pack, @@ -1031,65 +1140,16 @@ CLASS lcl_object_clas IMPLEMENTATION. RETURN. ENDIF. - LOOP AT lt_sotr ASSIGNING . - CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS' - EXPORTING - object_vector = -header-objid_vec - IMPORTING - objects = lt_objects - EXCEPTIONS - object_not_found = 1 - OTHERS = 2. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from SOTR_OBJECT_GET_OBJECTS' ). - ENDIF. - - READ TABLE lt_objects INDEX 1 INTO lv_object. - ASSERT sy-subrc = 0. - - ls_paket-paket = iv_package. - - CALL FUNCTION 'SOTR_CREATE_CONCEPT' - EXPORTING - paket = ls_paket - crea_lan = -header-crea_lan - alias_name = -header-alias_name - object = lv_object - entries = -entries - concept_default = -header-concept - EXCEPTIONS - package_missing = 1 - crea_lan_missing = 2 - object_missing = 3 - paket_does_not_exist = 4 - alias_already_exist = 5 - object_type_not_found = 6 - langu_missing = 7 - identical_context_not_allowed = 8 - text_too_long = 9 - error_in_update = 10 - no_master_langu = 11 - error_in_concept_id = 12 - alias_not_allowed = 13 - tadir_entry_creation_failed = 14 - internal_error = 15 - error_in_correction = 16 - user_cancelled = 17 - no_entry_found = 18 - OTHERS = 19. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from SOTR_CREATE_CONCEPT' ). - ENDIF. - - ENDLOOP. - + mo_object_oriented_object->create_sotr( + iv_package = iv_package + it_sotr = lt_sotr + ). ENDMETHOD. METHOD deserialize_docu. DATA: lt_lines TYPE tlinetab, - lv_object TYPE dokhl-object. - + lv_object type dokhl-object. io_xml->read( EXPORTING iv_name = 'LINES' CHANGING cg_data = lt_lines ). @@ -1099,20 +1159,11 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDIF. lv_object = ms_item-obj_name. - CALL FUNCTION 'DOCU_UPD' - EXPORTING - id = 'CL' - langu = mv_language - object = lv_object - TABLES - line = lt_lines - EXCEPTIONS - ret_code = 1 - OTHERS = 2. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from DOCU_UPD' ). - ENDIF. + mo_object_oriented_object->create_documentation( + it_lines = lt_lines + iv_object_name = lv_object + iv_language = mv_language ). ENDMETHOD. "deserialize_doku METHOD deserialize_textpool. @@ -1132,19 +1183,12 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDIF. lv_clsname = ms_item-obj_name. - lv_cp = cl_oo_classname_service=>get_classpool_name( lv_clsname ). - - INSERT TEXTPOOL lv_cp - FROM lt_tpool - LANGUAGE mv_language - STATE 'I'. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from INSERT TEXTPOOL' ). - ENDIF. - - lcl_objects_activation=>add( iv_type = 'REPT' - iv_name = lv_cp ). + mo_object_oriented_object->insert_text_pool( + iv_class_name = lv_clsname + it_text_pool = lt_tpool + iv_language = mv_language + ). ENDMETHOD. "deserialize_textpool METHOD deserialize_abap. @@ -1176,16 +1220,12 @@ CLASS lcl_object_clas IMPLEMENTATION. ls_clskey-clsname = ms_item-obj_name. - DATA lo_object_oriented_object TYPE REF TO lif_object_oriented_object. - lo_object_oriented_object = lcl_object_oriented_factory=>make( iv_object_type = ms_item-obj_type ). - - CASE ms_item-obj_type. WHEN 'CLAS'. io_xml->read( EXPORTING iv_name = 'VSEOCLASS' CHANGING cg_data = ls_vseoclass ). - lo_object_oriented_object->create( + mo_object_oriented_object->create( EXPORTING iv_package = iv_package CHANGING @@ -1196,7 +1236,7 @@ CLASS lcl_object_clas IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'VSEOINTERF' CHANGING cg_data = ls_vseointerf ). - lo_object_oriented_object->create( + mo_object_oriented_object->create( EXPORTING iv_package = iv_package CHANGING @@ -1208,7 +1248,7 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDCASE. IF ms_item-obj_type = 'CLAS'. - lo_object_oriented_object->generate_locals( + mo_object_oriented_object->generate_locals( is_key = ls_clskey iv_force = seox_true it_local_definitions = lt_locals_def @@ -1218,7 +1258,7 @@ CLASS lcl_object_clas IMPLEMENTATION. ). ENDIF. - lo_object_oriented_object->deserialize_source( + mo_object_oriented_object->deserialize_source( is_key = ls_clskey it_source = lt_source ). @@ -1226,12 +1266,12 @@ CLASS lcl_object_clas IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' CHANGING cg_data = lt_descriptions ). - lo_object_oriented_object->update_descriptions( + mo_object_oriented_object->update_descriptions( is_key = ls_clskey it_descriptions = lt_descriptions ). - lo_object_oriented_object->add_to_activation_list( is_item = ms_item ). + mo_object_oriented_object->add_to_activation_list( is_item = ms_item ). ENDMETHOD. "deserialize METHOD deserialize_abap_source_old. @@ -1319,7 +1359,16 @@ CLASS ltd_spy_oo_object DEFINITION FOR TESTING. mt_source TYPE ty_string_tt, ms_item_to_activate TYPE ty_item, mt_descriptions TYPE ty_seocompotx_tt, - ms_description_key TYPE seoclskey. + ms_description_key TYPE seoclskey, + mv_text_pool_class_name TYPE seoclsname, + mt_text_pool TYPE textpool_table, + mv_text_pool_inserted TYPE abap_bool, + mt_sotr TYPE ty_sotr_tt, + mt_sotr_package TYPE devclass, + mv_docu_object_name TYPE dokhl-object, + mv_docu_language TYPE spras, + mt_docu_lines TYPE tlinetab. + ENDCLASS. CLASS ltd_spy_oo_object IMPLEMENTATION. METHOD lif_object_oriented_object~create. @@ -1354,6 +1403,27 @@ CLASS ltd_spy_oo_object IMPLEMENTATION. mt_descriptions = it_descriptions. ENDMETHOD. + METHOD lif_object_oriented_object~insert_text_pool. + mv_text_pool_inserted = abap_true. + mv_text_pool_class_name = iv_class_name. + mt_text_pool = it_text_pool. + cl_abap_unit_assert=>assert_equals( + act = iv_language + exp = sy-langu + ). + ENDMETHOD. + + METHOD lif_object_oriented_object~create_sotr. + mt_sotr = it_sotr. + mt_sotr_package = iv_package. + ENDMETHOD. + + METHOD lif_object_oriented_object~create_documentation. + mv_docu_object_name = iv_object_name. + mv_docu_language = iv_language. + mt_docu_lines = it_lines. + ENDMETHOD. + ENDCLASS. CLASS ltd_fake_object_files DEFINITION FOR TESTING @@ -1419,11 +1489,43 @@ CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT . then_shuld_update_descriptions IMPORTING it_descriptions TYPE ty_seocompotx_tt, - then_it_should_add_activation. + then_it_should_add_activation, + given_documentation_in_xml_as + IMPORTING + it_lines TYPE tlinetab + RAISING + lcx_exception, + then_docu_should_be_created + IMPORTING + it_lines TYPE tlinetab. ENDCLASS. CLASS ltc_oo_test IMPLEMENTATION. + METHOD then_docu_should_be_created. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_docu_lines + exp = it_lines + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_docu_object_name + exp = ms_item-obj_name + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_docu_language + exp = sy-langu + ). + ENDMETHOD. + + METHOD given_documentation_in_xml_as. + mo_xml_out->add( + iv_name = 'LINES' + ig_data = it_lines + ). + ENDMETHOD. + METHOD then_it_should_add_activation. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_item_to_activate @@ -1433,9 +1535,9 @@ CLASS ltc_oo_test IMPLEMENTATION. METHOD then_shuld_update_descriptions. cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_descriptions - exp = it_descriptions - ). + act = mo_spy_oo_object->mt_descriptions + exp = it_descriptions + ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_description_key @@ -1487,7 +1589,11 @@ INHERITING FROM ltc_oo_test. should_generate_locals FOR TESTING RAISING cx_static_check, should_deserialize_source FOR TESTING RAISING cx_static_check, should_update_descriptions FOR TESTING RAISING cx_static_check, - should_add_to_activation FOR TESTING RAISING cx_static_check. + should_add_to_activation FOR TESTING RAISING cx_static_check, + no_text_pool_no_insert FOR TESTING RAISING cx_static_check, + insert_text_pool FOR TESTING RAISING cx_static_check, + create_stor_from_xml FOR TESTING RAISING cx_static_check, + create_documentation FOR TESTING RAISING cx_static_check. DATA: ms_class_properties TYPE vseoclass. ENDCLASS. @@ -1610,6 +1716,80 @@ CLASS ltc_class_deserialization IMPLEMENTATION. exp = mo_fake_object_files->mt_local_test_classes ). ENDMETHOD. + METHOD no_text_pool_no_insert. + given_a_class_properties( ). + + when_deserializing( ). + + cl_abap_unit_assert=>assert_false( mo_spy_oo_object->mv_text_pool_inserted ). + ENDMETHOD. + + METHOD insert_text_pool. + given_a_class_properties( ). + + DATA lt_pool_external TYPE textpool_table. + DATA ls_pool_external TYPE ty_tpool. + ls_pool_external-id = 'ID'. + ls_pool_external-key = 'KEY'. + APPEND ls_pool_external TO lt_pool_external. + mo_xml_out->add( + iv_name = 'TPOOL' + ig_data = lt_pool_external + ). + + when_deserializing( ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_text_pool + exp = lt_pool_external + ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_text_pool_class_name + exp = 'zcl_class' + ). + ENDMETHOD. + + METHOD create_stor_from_xml. + DATA: + lt_sotr TYPE ty_sotr_tt, + ls_sotr LIKE LINE OF lt_sotr. + + given_a_class_properties( ). + + ls_sotr-header-concept = 'HEADER'. + APPEND ls_sotr TO lt_sotr. + mo_xml_out->add( + iv_name = 'SOTR' + ig_data = lt_sotr + ). + + when_deserializing( ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_sotr + exp = lt_sotr + ). + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_sotr_package + exp = 'package_name' + ). + ENDMETHOD. + + METHOD create_documentation. + DATA: lt_lines TYPE tlinetab, + ls_line TYPE LINE OF tlinetab. + ls_line-tdline = 'Class Line Doc'. + APPEND ls_line TO lt_lines. + + given_a_class_properties( ). + + given_documentation_in_xml_as( lt_lines ). + + when_deserializing( ). + + then_docu_should_be_created( lt_lines ). + ENDMETHOD. ENDCLASS. CLASS ltc_interface_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT @@ -1624,7 +1804,8 @@ INHERITING FROM ltc_oo_test. create_interface FOR TESTING RAISING cx_static_check, update_descriptions FOR TESTING RAISING cx_static_check, add_to_activation FOR TESTING RAISING cx_static_check, - deserialize_source FOR TESTING RAISING cx_static_check. + deserialize_source FOR TESTING RAISING cx_static_check, + create_documentation FOR TESTING RAISING cx_static_check. DATA: ms_interface_properties TYPE vseointerf. ENDCLASS. @@ -1697,9 +1878,9 @@ CLASS ltc_interface_deserialization IMPLEMENTATION. METHOD then_should_create_interface. cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_interface_properties - exp = ms_interface_properties - ). + act = mo_spy_oo_object->ms_interface_properties + exp = ms_interface_properties + ). cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). @@ -1709,4 +1890,19 @@ CLASS ltc_interface_deserialization IMPLEMENTATION. ). ENDMETHOD. + METHOD create_documentation. + DATA: lt_lines TYPE tlinetab, + ls_line TYPE LINE OF tlinetab. + ls_line-tdline = 'Interface Line Doc'. + APPEND ls_line TO lt_lines. + + given_an_interface_properties( ). + + given_documentation_in_xml_as( lt_lines ). + + when_deserializing( ). + + then_docu_should_be_created( lt_lines ). + ENDMETHOD. + ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index a76058992..37f534e4d 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -859,13 +859,6 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super. TYPES: ty_spaces_tt TYPE STANDARD TABLE OF i WITH DEFAULT KEY. - TYPES: BEGIN OF ty_tpool. - INCLUDE TYPE textpool. - TYPES: split TYPE c LENGTH 8. - TYPES: END OF ty_tpool. - - TYPES: ty_tpool_tt TYPE STANDARD TABLE OF ty_tpool WITH DEFAULT KEY. - TYPES: BEGIN OF ty_dynpro, header TYPE rpy_dyhead, containers TYPE dycatt_tab, From 7fdcf7aa73b5dda70e7952d6d217cafbc120d5da Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Thu, 22 Dec 2016 16:23:40 +0100 Subject: [PATCH 07/40] Refactoring into INTF class since we have tests --- src/zabapgit_object_clas.prog.abap | 163 +++++++++++++++++------------ 1 file changed, 95 insertions(+), 68 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index b055c09ee..20525d7cc 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -391,21 +391,20 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. PUBLIC SECTION. INTERFACES lif_object. ALIASES mo_files FOR lif_object~mo_files. - - PRIVATE SECTION. - DATA mv_skip_testclass TYPE abap_bool. - DATA mo_object_oriented_object TYPE REF TO lif_object_oriented_object. - + PROTECTED SECTION. METHODS deserialize_abap IMPORTING io_xml TYPE REF TO lcl_xml_input iv_package TYPE devclass RAISING lcx_exception. - METHODS deserialize_textpool + METHODS deserialize_docu IMPORTING io_xml TYPE REF TO lcl_xml_input RAISING lcx_exception. + DATA mo_object_oriented_object TYPE REF TO lif_object_oriented_object. + PRIVATE SECTION. + DATA mv_skip_testclass TYPE abap_bool. - METHODS deserialize_docu + METHODS deserialize_textpool IMPORTING io_xml TYPE REF TO lcl_xml_input RAISING lcx_exception. @@ -480,16 +479,6 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. ENDCLASS. "lcl_object_dtel DEFINITION -*----------------------------------------------------------------------* -* CLASS lcl_object_intf DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_object_intf DEFINITION INHERITING FROM lcl_object_clas FINAL. -* todo, CLAS + INTF to be refactored, see: -* https://github.com/larshp/abapGit/issues/21 -ENDCLASS. "lcl_object_intf DEFINITION - *----------------------------------------------------------------------* * CLASS lcl_object_clas IMPLEMENTATION *----------------------------------------------------------------------* @@ -1113,12 +1102,10 @@ CLASS lcl_object_clas IMPLEMENTATION. deserialize_abap( io_xml = io_xml iv_package = iv_package ). - IF ms_item-obj_type = 'CLAS'. - deserialize_textpool( io_xml ). + deserialize_textpool( io_xml ). - deserialize_sotr( io_xml = io_xml - iv_package = iv_package ). - ENDIF. + deserialize_sotr( io_xml = io_xml + iv_package = iv_package ). deserialize_docu( io_xml ). ENDMETHOD. "deserialize @@ -1149,7 +1136,7 @@ CLASS lcl_object_clas IMPLEMENTATION. METHOD deserialize_docu. DATA: lt_lines TYPE tlinetab, - lv_object type dokhl-object. + lv_object TYPE dokhl-object. io_xml->read( EXPORTING iv_name = 'LINES' CHANGING cg_data = lt_lines ). @@ -1194,7 +1181,6 @@ CLASS lcl_object_clas IMPLEMENTATION. METHOD deserialize_abap. DATA: ls_vseoclass TYPE vseoclass, - ls_vseointerf TYPE vseointerf, lt_source TYPE seop_source_string, lt_locals_def TYPE seop_source_string, lt_locals_imp TYPE seop_source_string, @@ -1220,43 +1206,23 @@ CLASS lcl_object_clas IMPLEMENTATION. ls_clskey-clsname = ms_item-obj_name. - CASE ms_item-obj_type. - WHEN 'CLAS'. - io_xml->read( EXPORTING iv_name = 'VSEOCLASS' - CHANGING cg_data = ls_vseoclass ). + io_xml->read( EXPORTING iv_name = 'VSEOCLASS' + CHANGING cg_data = ls_vseoclass ). - mo_object_oriented_object->create( - EXPORTING - iv_package = iv_package - CHANGING - is_properties = ls_vseoclass - ). - - WHEN 'INTF'. - io_xml->read( EXPORTING iv_name = 'VSEOINTERF' - CHANGING cg_data = ls_vseointerf ). - - mo_object_oriented_object->create( - EXPORTING - iv_package = iv_package - CHANGING - is_properties = ls_vseointerf - ). - - WHEN OTHERS. - ASSERT 0 = 1. - ENDCASE. - - IF ms_item-obj_type = 'CLAS'. - mo_object_oriented_object->generate_locals( - is_key = ls_clskey - iv_force = seox_true - it_local_definitions = lt_locals_def - it_local_implementations = lt_locals_imp - it_local_macros = lt_locals_mac - it_local_test_classes = lt_testclasses - ). - ENDIF. + mo_object_oriented_object->create( + EXPORTING + iv_package = iv_package + CHANGING + is_properties = ls_vseoclass + ). + mo_object_oriented_object->generate_locals( + is_key = ls_clskey + iv_force = seox_true + it_local_definitions = lt_locals_def + it_local_implementations = lt_locals_imp + it_local_macros = lt_locals_mac + it_local_test_classes = lt_testclasses + ). mo_object_oriented_object->deserialize_source( is_key = ls_clskey @@ -1341,6 +1307,67 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDCLASS. "lcl_object_CLAS IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS lcl_object_intf DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcl_object_intf DEFINITION INHERITING FROM lcl_object_clas FINAL. +* todo, CLAS + INTF to be refactored, see: +* https://github.com/larshp/abapGit/issues/21 + PUBLIC SECTION. + METHODS: + lif_object~deserialize REDEFINITION. + PROTECTED SECTION. + METHODS: + deserialize_abap REDEFINITION. +ENDCLASS. "lcl_object_intf DEFINITION +CLASS lcl_object_intf IMPLEMENTATION. + METHOD lif_object~deserialize. + mo_object_oriented_object = lcl_object_oriented_factory=>make( iv_object_type = ms_item-obj_type ). + + deserialize_abap( io_xml = io_xml + iv_package = iv_package ). + + deserialize_docu( io_xml ). + ENDMETHOD. + METHOD deserialize_abap. + DATA: ls_vseointerf TYPE vseointerf, + lt_source TYPE seop_source_string, + lt_descriptions TYPE ty_seocompotx_tt, + ls_clskey TYPE seoclskey. + ls_clskey-clsname = ms_item-obj_name. + + lt_source = mo_files->read_abap( ). + + io_xml->read( EXPORTING iv_name = 'VSEOINTERF' + CHANGING cg_data = ls_vseointerf ). + + mo_object_oriented_object->create( + EXPORTING + iv_package = iv_package + CHANGING + is_properties = ls_vseointerf + ). + + mo_object_oriented_object->deserialize_source( + is_key = ls_clskey + it_source = lt_source + ). + + io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' + CHANGING cg_data = lt_descriptions ). + + mo_object_oriented_object->update_descriptions( + is_key = ls_clskey + it_descriptions = lt_descriptions + ). + + mo_object_oriented_object->add_to_activation_list( is_item = ms_item ). + ENDMETHOD. +ENDCLASS. + + CLASS ltd_spy_oo_object DEFINITION FOR TESTING. PUBLIC SECTION. INTERFACES: lif_object_oriented_object. @@ -1490,14 +1517,14 @@ CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT . IMPORTING it_descriptions TYPE ty_seocompotx_tt, then_it_should_add_activation, - given_documentation_in_xml_as - IMPORTING - it_lines TYPE tlinetab - RAISING - lcx_exception, - then_docu_should_be_created - IMPORTING - it_lines TYPE tlinetab. + given_documentation_in_xml_as + IMPORTING + it_lines TYPE tlinetab + RAISING + lcx_exception, + then_docu_should_be_created + IMPORTING + it_lines TYPE tlinetab. ENDCLASS. CLASS ltc_oo_test IMPLEMENTATION. From eae228744923741d24c538e6d500b3f5631f2e3f Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Thu, 22 Dec 2016 16:40:22 +0100 Subject: [PATCH 08/40] Final cleanup --- src/zabapgit_object_clas.prog.abap | 261 +++++++++-------------------- 1 file changed, 83 insertions(+), 178 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 20525d7cc..49c2b8edf 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -181,7 +181,19 @@ CLASS lcl_object_oriented_base IMPLEMENTATION. ENDMETHOD. METHOD lif_object_oriented_object~create_documentation. - + CALL FUNCTION 'DOCU_UPD' + EXPORTING + id = 'CL' + langu = iv_language + object = iv_object_name + TABLES + line = it_lines + EXCEPTIONS + ret_code = 1 + OTHERS = 2. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from DOCU_UPD' ). + ENDIF. ENDMETHOD. ENDCLASS. @@ -418,17 +430,6 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. RETURNING VALUE(rt_source) TYPE ty_string_tt RAISING lcx_exception. - METHODS deserialize_abap_source_old - IMPORTING is_clskey TYPE seoclskey - it_source TYPE ty_string_tt - RAISING lcx_exception. - - METHODS deserialize_abap_source_new - IMPORTING is_clskey TYPE seoclskey - it_source TYPE ty_string_tt - RAISING lcx_exception - cx_sy_dyn_call_error. - METHODS serialize_abap_new IMPORTING is_clskey TYPE seoclskey RETURNING VALUE(rt_source) TYPE ty_string_tt @@ -1129,8 +1130,7 @@ CLASS lcl_object_clas IMPLEMENTATION. mo_object_oriented_object->create_sotr( iv_package = iv_package - it_sotr = lt_sotr - ). + it_sotr = lt_sotr ). ENDMETHOD. METHOD deserialize_docu. @@ -1174,37 +1174,36 @@ CLASS lcl_object_clas IMPLEMENTATION. mo_object_oriented_object->insert_text_pool( iv_class_name = lv_clsname it_text_pool = lt_tpool - iv_language = mv_language - ). + iv_language = mv_language ). ENDMETHOD. "deserialize_textpool METHOD deserialize_abap. - DATA: ls_vseoclass TYPE vseoclass, - lt_source TYPE seop_source_string, - lt_locals_def TYPE seop_source_string, - lt_locals_imp TYPE seop_source_string, - lt_locals_mac TYPE seop_source_string, - lt_testclasses TYPE seop_source_string, - lt_descriptions TYPE ty_seocompotx_tt, - ls_clskey TYPE seoclskey. + DATA: ls_vseoclass TYPE vseoclass, + lt_source TYPE seop_source_string, + lt_local_definitions TYPE seop_source_string, + lt_local_implementations TYPE seop_source_string, + lt_local_macros TYPE seop_source_string, + lt_test_classes TYPE seop_source_string, + lt_descriptions TYPE ty_seocompotx_tt, + ls_class_key TYPE seoclskey. lt_source = mo_files->read_abap( ). - lt_locals_def = mo_files->read_abap( iv_extra = 'locals_def' - iv_error = abap_false ). "#EC NOTEXT + lt_local_definitions = mo_files->read_abap( iv_extra = 'locals_def' + iv_error = abap_false ). "#EC NOTEXT - lt_locals_imp = mo_files->read_abap( iv_extra = 'locals_imp' - iv_error = abap_false ). "#EC NOTEXT + lt_local_implementations = mo_files->read_abap( iv_extra = 'locals_imp' + iv_error = abap_false ). "#EC NOTEXT - lt_locals_mac = mo_files->read_abap( iv_extra = 'macros' - iv_error = abap_false ). "#EC NOTEXT + lt_local_macros = mo_files->read_abap( iv_extra = 'macros' + iv_error = abap_false ). "#EC NOTEXT - lt_testclasses = mo_files->read_abap( iv_extra = 'testclasses' - iv_error = abap_false ). "#EC NOTEXT + lt_test_classes = mo_files->read_abap( iv_extra = 'testclasses' + iv_error = abap_false ). "#EC NOTEXT - ls_clskey-clsname = ms_item-obj_name. + ls_class_key-clsname = ms_item-obj_name. io_xml->read( EXPORTING iv_name = 'VSEOCLASS' CHANGING cg_data = ls_vseoclass ). @@ -1213,94 +1212,29 @@ CLASS lcl_object_clas IMPLEMENTATION. EXPORTING iv_package = iv_package CHANGING - is_properties = ls_vseoclass - ). + is_properties = ls_vseoclass ). mo_object_oriented_object->generate_locals( - is_key = ls_clskey + is_key = ls_class_key iv_force = seox_true - it_local_definitions = lt_locals_def - it_local_implementations = lt_locals_imp - it_local_macros = lt_locals_mac - it_local_test_classes = lt_testclasses - ). + it_local_definitions = lt_local_definitions + it_local_implementations = lt_local_implementations + it_local_macros = lt_local_macros + it_local_test_classes = lt_test_classes ). mo_object_oriented_object->deserialize_source( - is_key = ls_clskey - it_source = lt_source - ). + is_key = ls_class_key + it_source = lt_source ). io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' CHANGING cg_data = lt_descriptions ). mo_object_oriented_object->update_descriptions( - is_key = ls_clskey - it_descriptions = lt_descriptions - ). + is_key = ls_class_key + it_descriptions = lt_descriptions ). mo_object_oriented_object->add_to_activation_list( is_item = ms_item ). ENDMETHOD. "deserialize - METHOD deserialize_abap_source_old. -* for backwards compatability down to 702 - - DATA: lo_source TYPE REF TO cl_oo_source. - - - CREATE OBJECT lo_source - EXPORTING - clskey = is_clskey - EXCEPTIONS - class_not_existing = 1 - OTHERS = 2. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from CL_OO_SOURCE' ). - ENDIF. - - TRY. - lo_source->access_permission( seok_access_modify ). - lo_source->set_source( it_source ). - lo_source->save( ). - lo_source->access_permission( seok_access_free ). - CATCH cx_oo_access_permission. - lcx_exception=>raise( 'permission error' ). - CATCH cx_oo_source_save_failure. - lcx_exception=>raise( 'save failure' ). - ENDTRY. - - ENDMETHOD. - - METHOD deserialize_abap_source_new. - - DATA: lo_factory TYPE REF TO object, - lo_source TYPE REF TO object. - - - CALL METHOD ('CL_OO_FACTORY')=>('CREATE_INSTANCE') - RECEIVING - result = lo_factory. - - CALL METHOD lo_factory->('CREATE_CLIF_SOURCE') - EXPORTING - clif_name = is_clskey-clsname - RECEIVING - result = lo_source. - - TRY. - CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~LOCK'). - CATCH cx_oo_access_permission. - lcx_exception=>raise( 'source_new, access permission exception' ). - ENDTRY. - - CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SET_SOURCE') - EXPORTING - source = it_source. - - CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~SAVE'). - - CALL METHOD lo_source->('IF_OO_CLIF_SOURCE~UNLOCK'). - - ENDMETHOD. - METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. @@ -1347,23 +1281,20 @@ CLASS lcl_object_intf IMPLEMENTATION. EXPORTING iv_package = iv_package CHANGING - is_properties = ls_vseointerf - ). + is_properties = ls_vseointerf ). mo_object_oriented_object->deserialize_source( is_key = ls_clskey - it_source = lt_source - ). + it_source = lt_source ). io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' CHANGING cg_data = lt_descriptions ). mo_object_oriented_object->update_descriptions( is_key = ls_clskey - it_descriptions = lt_descriptions - ). + it_descriptions = lt_descriptions ). - mo_object_oriented_object->add_to_activation_list( is_item = ms_item ). + mo_object_oriented_object->add_to_activation_list( is_item = ms_item ). ENDMETHOD. ENDCLASS. @@ -1399,7 +1330,9 @@ CLASS ltd_spy_oo_object DEFINITION FOR TESTING. ENDCLASS. CLASS ltd_spy_oo_object IMPLEMENTATION. METHOD lif_object_oriented_object~create. - IF cl_abap_typedescr=>describe_by_data( is_properties )->absolute_name = cl_abap_typedescr=>describe_by_data( ms_interface_properties )->absolute_name. + DATA lv_properties_structure_name TYPE string. + lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( is_properties )->absolute_name. + IF lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( ms_interface_properties )->absolute_name. ms_interface_properties = is_properties. ELSE. ms_class_properties = is_properties. @@ -1436,8 +1369,7 @@ CLASS ltd_spy_oo_object IMPLEMENTATION. mt_text_pool = it_text_pool. cl_abap_unit_assert=>assert_equals( act = iv_language - exp = sy-langu - ). + exp = sy-langu ). ENDMETHOD. METHOD lif_object_oriented_object~create_sotr. @@ -1532,63 +1464,53 @@ CLASS ltc_oo_test IMPLEMENTATION. METHOD then_docu_should_be_created. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_docu_lines - exp = it_lines - ). + exp = it_lines ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_docu_object_name - exp = ms_item-obj_name - ). + exp = ms_item-obj_name ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_docu_language - exp = sy-langu - ). + exp = sy-langu ). ENDMETHOD. METHOD given_documentation_in_xml_as. mo_xml_out->add( iv_name = 'LINES' - ig_data = it_lines - ). + ig_data = it_lines ). ENDMETHOD. METHOD then_it_should_add_activation. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_item_to_activate - exp = ms_item - ). + exp = ms_item ). ENDMETHOD. METHOD then_shuld_update_descriptions. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_descriptions - exp = it_descriptions - ). + exp = it_descriptions ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_description_key - exp = ms_item-obj_name - ). + exp = ms_item-obj_name ). ENDMETHOD. METHOD given_the_descriptions. mo_xml_out->add( iv_name = 'DESCRIPTIONS' - ig_data = it_descriptions - ). + ig_data = it_descriptions ). ENDMETHOD. METHOD then_should_deserialize_source. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_source - exp = mo_fake_object_files->mt_sources - ). + exp = mo_fake_object_files->mt_sources ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_deserialize_key - exp = ms_item-obj_name - ). + exp = ms_item-obj_name ). ENDMETHOD. METHOD when_deserializing. @@ -1597,8 +1519,7 @@ CLASS ltc_oo_test IMPLEMENTATION. iv_xml = mo_xml_out->render( ). mo_oo_object->deserialize( iv_package = 'package_name' - io_xml = mo_xml_input - ). + io_xml = mo_xml_input ). ENDMETHOD. ENDCLASS. @@ -1697,51 +1618,43 @@ CLASS ltc_class_deserialization IMPLEMENTATION. METHOD given_a_class_properties. mo_xml_out->add( iv_name = 'VSEOCLASS' - ig_data = ms_class_properties - ). + ig_data = ms_class_properties ). ENDMETHOD. METHOD then_should_create_class. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_class_properties - exp = ms_class_properties - ). + exp = ms_class_properties ). cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_package - exp = 'package_name' - ). + exp = 'package_name' ). ENDMETHOD. METHOD then_it_should_generate_locals. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_locals_key - exp = ms_item-obj_name - ). + exp = ms_item-obj_name ). cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_force ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_local_definitions - exp = mo_fake_object_files->mt_local_definitions - ). + exp = mo_fake_object_files->mt_local_definitions ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_local_implementations - exp = mo_fake_object_files->mt_local_implementations - ). + exp = mo_fake_object_files->mt_local_implementations ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_local_macros - exp = mo_fake_object_files->mt_local_macros - ). + exp = mo_fake_object_files->mt_local_macros ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_local_test_classes - exp = mo_fake_object_files->mt_local_test_classes - ). + exp = mo_fake_object_files->mt_local_test_classes ). ENDMETHOD. METHOD no_text_pool_no_insert. given_a_class_properties( ). @@ -1752,29 +1665,27 @@ CLASS ltc_class_deserialization IMPLEMENTATION. ENDMETHOD. METHOD insert_text_pool. - given_a_class_properties( ). - - DATA lt_pool_external TYPE textpool_table. - DATA ls_pool_external TYPE ty_tpool. + DATA: lt_pool_external TYPE textpool_table, + ls_pool_external TYPE ty_tpool. ls_pool_external-id = 'ID'. ls_pool_external-key = 'KEY'. APPEND ls_pool_external TO lt_pool_external. + + given_a_class_properties( ). + mo_xml_out->add( iv_name = 'TPOOL' - ig_data = lt_pool_external - ). + ig_data = lt_pool_external ). when_deserializing( ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_text_pool - exp = lt_pool_external - ). + exp = lt_pool_external ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_text_pool_class_name - exp = 'zcl_class' - ). + exp = 'zcl_class' ). ENDMETHOD. METHOD create_stor_from_xml. @@ -1788,19 +1699,16 @@ CLASS ltc_class_deserialization IMPLEMENTATION. APPEND ls_sotr TO lt_sotr. mo_xml_out->add( iv_name = 'SOTR' - ig_data = lt_sotr - ). + ig_data = lt_sotr ). when_deserializing( ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_sotr - exp = lt_sotr - ). + exp = lt_sotr ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_sotr_package - exp = 'package_name' - ). + exp = 'package_name' ). ENDMETHOD. METHOD create_documentation. @@ -1899,22 +1807,19 @@ CLASS ltc_interface_deserialization IMPLEMENTATION. METHOD given_an_interface_properties. mo_xml_out->add( iv_name = 'VSEOINTERF' - ig_data = ms_interface_properties - ). + ig_data = ms_interface_properties ). ENDMETHOD. METHOD then_should_create_interface. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_interface_properties - exp = ms_interface_properties - ). + exp = ms_interface_properties ). cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_package - exp = 'package_name' - ). + exp = 'package_name' ). ENDMETHOD. METHOD create_documentation. From 8384bd8994215ed3bc0b7969da9b9d36220fe35f Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Fri, 23 Dec 2016 11:19:03 +0100 Subject: [PATCH 09/40] code review --- src/zabapgit_object_clas.prog.abap | 541 ----------------------------- src/zabapgit_unit_test.prog.abap | 540 ++++++++++++++++++++++++++++ 2 files changed, 540 insertions(+), 541 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 49c2b8edf..f2f27ef32 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -1296,545 +1296,4 @@ CLASS lcl_object_intf IMPLEMENTATION. mo_object_oriented_object->add_to_activation_list( is_item = ms_item ). ENDMETHOD. -ENDCLASS. - - -CLASS ltd_spy_oo_object DEFINITION FOR TESTING. - PUBLIC SECTION. - INTERFACES: lif_object_oriented_object. - DATA: - mv_package TYPE devclass, - mv_overwrite TYPE seox_boolean, - ms_interface_properties TYPE vseointerf, - ms_class_properties TYPE vseoclass, - ms_locals_key TYPE seoclskey, - mt_local_definitions TYPE rswsourcet, - mt_local_implementations TYPE rswsourcet, - mt_local_macros TYPE rswsourcet, - mt_local_test_classes TYPE rswsourcet, - mv_force TYPE seoflag, - ms_deserialize_key TYPE seoclskey, - mt_source TYPE ty_string_tt, - ms_item_to_activate TYPE ty_item, - mt_descriptions TYPE ty_seocompotx_tt, - ms_description_key TYPE seoclskey, - mv_text_pool_class_name TYPE seoclsname, - mt_text_pool TYPE textpool_table, - mv_text_pool_inserted TYPE abap_bool, - mt_sotr TYPE ty_sotr_tt, - mt_sotr_package TYPE devclass, - mv_docu_object_name TYPE dokhl-object, - mv_docu_language TYPE spras, - mt_docu_lines TYPE tlinetab. - -ENDCLASS. -CLASS ltd_spy_oo_object IMPLEMENTATION. - METHOD lif_object_oriented_object~create. - DATA lv_properties_structure_name TYPE string. - lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( is_properties )->absolute_name. - IF lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( ms_interface_properties )->absolute_name. - ms_interface_properties = is_properties. - ELSE. - ms_class_properties = is_properties. - ENDIF. - mv_package = iv_package. - mv_overwrite = iv_overwrite. - ENDMETHOD. - METHOD lif_object_oriented_object~generate_locals. - ms_locals_key = is_key. - mt_local_definitions = it_local_definitions. - mt_local_implementations = it_local_implementations. - mt_local_macros = it_local_macros. - mt_local_test_classes = it_local_test_classes. - mv_force = iv_force. - ENDMETHOD. - - METHOD lif_object_oriented_object~deserialize_source. - ms_deserialize_key = is_key. - mt_source = it_source. - ENDMETHOD. - - METHOD lif_object_oriented_object~add_to_activation_list. - ms_item_to_activate = is_item. - ENDMETHOD. - - METHOD lif_object_oriented_object~update_descriptions. - ms_description_key = is_key. - mt_descriptions = it_descriptions. - ENDMETHOD. - - METHOD lif_object_oriented_object~insert_text_pool. - mv_text_pool_inserted = abap_true. - mv_text_pool_class_name = iv_class_name. - mt_text_pool = it_text_pool. - cl_abap_unit_assert=>assert_equals( - act = iv_language - exp = sy-langu ). - ENDMETHOD. - - METHOD lif_object_oriented_object~create_sotr. - mt_sotr = it_sotr. - mt_sotr_package = iv_package. - ENDMETHOD. - - METHOD lif_object_oriented_object~create_documentation. - mv_docu_object_name = iv_object_name. - mv_docu_language = iv_language. - mt_docu_lines = it_lines. - ENDMETHOD. - -ENDCLASS. - -CLASS ltd_fake_object_files DEFINITION FOR TESTING - INHERITING FROM lcl_objects_files. - PUBLIC SECTION. - METHODS constructor. - METHODS read_abap REDEFINITION. - DATA: - mt_sources TYPE seop_source_string, - mt_local_definitions TYPE seop_source_string, - mt_local_implementations TYPE seop_source_string, - mt_local_macros TYPE seop_source_string, - mt_local_test_classes TYPE seop_source_string. -ENDCLASS. -CLASS ltd_fake_object_files IMPLEMENTATION. - METHOD read_abap. - CASE iv_extra. - WHEN 'locals_def'. - rt_abap = mt_local_definitions. - WHEN 'locals_imp'. - rt_abap = mt_local_implementations. - WHEN 'macros'. - rt_abap = mt_local_macros. - WHEN 'testclasses'. - rt_abap = mt_local_test_classes. - WHEN OTHERS. - rt_abap = mt_sources. - RETURN. - ENDCASE. - - cl_abap_unit_assert=>assert_false( iv_error ). - ENDMETHOD. - METHOD constructor. - DATA ls_empty_item TYPE ty_item. - super->constructor( ls_empty_item ). - APPEND 'source' TO me->mt_sources. - APPEND 'definition' TO me->mt_local_definitions. - APPEND 'implementation' TO me->mt_local_implementations. - APPEND 'macro' TO me->mt_local_macros. - APPEND 'test' TO me->mt_local_test_classes. - ENDMETHOD. - -ENDCLASS. - -CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT . - PROTECTED SECTION. - DATA: - mo_spy_oo_object TYPE REF TO ltd_spy_oo_object, - mo_fake_object_files TYPE REF TO ltd_fake_object_files, - mo_xml_input TYPE REF TO lcl_xml_input, - mo_xml_out TYPE REF TO lcl_xml_output, - mo_oo_object TYPE REF TO lif_object, - ms_item TYPE ty_item. - METHODS: when_deserializing - RAISING - lcx_exception, - then_should_deserialize_source, - given_the_descriptions - IMPORTING - it_descriptions TYPE ty_seocompotx_tt - RAISING - lcx_exception, - then_shuld_update_descriptions - IMPORTING - it_descriptions TYPE ty_seocompotx_tt, - then_it_should_add_activation, - given_documentation_in_xml_as - IMPORTING - it_lines TYPE tlinetab - RAISING - lcx_exception, - then_docu_should_be_created - IMPORTING - it_lines TYPE tlinetab. - -ENDCLASS. -CLASS ltc_oo_test IMPLEMENTATION. - - METHOD then_docu_should_be_created. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_docu_lines - exp = it_lines ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mv_docu_object_name - exp = ms_item-obj_name ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mv_docu_language - exp = sy-langu ). - ENDMETHOD. - - METHOD given_documentation_in_xml_as. - mo_xml_out->add( - iv_name = 'LINES' - ig_data = it_lines ). - ENDMETHOD. - - METHOD then_it_should_add_activation. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_item_to_activate - exp = ms_item ). - ENDMETHOD. - - METHOD then_shuld_update_descriptions. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_descriptions - exp = it_descriptions ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_description_key - exp = ms_item-obj_name ). - ENDMETHOD. - - METHOD given_the_descriptions. - mo_xml_out->add( - iv_name = 'DESCRIPTIONS' - ig_data = it_descriptions ). - ENDMETHOD. - - METHOD then_should_deserialize_source. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_source - exp = mo_fake_object_files->mt_sources ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_deserialize_key - exp = ms_item-obj_name ). - ENDMETHOD. - - METHOD when_deserializing. - CREATE OBJECT mo_xml_input - EXPORTING - iv_xml = mo_xml_out->render( ). - mo_oo_object->deserialize( - iv_package = 'package_name' - io_xml = mo_xml_input ). - ENDMETHOD. -ENDCLASS. - -CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT -INHERITING FROM ltc_oo_test. - PRIVATE SECTION. - METHODS: - setup, - given_a_class_properties - RAISING - lcx_exception, - then_should_create_class, - then_it_should_generate_locals, - should_create_class FOR TESTING RAISING cx_static_check, - should_generate_locals FOR TESTING RAISING cx_static_check, - should_deserialize_source FOR TESTING RAISING cx_static_check, - should_update_descriptions FOR TESTING RAISING cx_static_check, - should_add_to_activation FOR TESTING RAISING cx_static_check, - no_text_pool_no_insert FOR TESTING RAISING cx_static_check, - insert_text_pool FOR TESTING RAISING cx_static_check, - create_stor_from_xml FOR TESTING RAISING cx_static_check, - create_documentation FOR TESTING RAISING cx_static_check. - DATA: - ms_class_properties TYPE vseoclass. -ENDCLASS. - -CLASS ltc_class_deserialization IMPLEMENTATION. - METHOD setup. - CREATE OBJECT mo_fake_object_files. - CREATE OBJECT mo_spy_oo_object. - CREATE OBJECT mo_xml_out. - lth_oo_factory_injector=>inject( mo_spy_oo_object ). - - ms_item-devclass = 'package_name'. - ms_item-obj_name = 'zcl_class'. - ms_item-obj_type = 'CLAS'. - - CREATE OBJECT mo_oo_object TYPE lcl_object_clas - EXPORTING - is_item = ms_item - iv_language = sy-langu. - mo_oo_object->mo_files = mo_fake_object_files. - ENDMETHOD. - - METHOD should_create_class. - ms_class_properties-clsname = ms_item-obj_name. - - given_a_class_properties( ). - - when_deserializing( ). - - then_should_create_class( ). - ENDMETHOD. - - METHOD should_generate_locals. - given_a_class_properties( ). - - when_deserializing( ). - - then_it_should_generate_locals( ). - ENDMETHOD. - - METHOD should_deserialize_source. - given_a_class_properties( ). - - when_deserializing( ). - - then_should_deserialize_source( ). - ENDMETHOD. - - METHOD should_update_descriptions. - DATA: - ls_description TYPE seocompotx, - lt_descriptions TYPE ty_seocompotx_tt. - - given_a_class_properties( ). - - ls_description-clsname = ms_item-obj_name. - ls_description-cmpname = 'a_method'. - APPEND ls_description TO lt_descriptions. - given_the_descriptions( lt_descriptions ). - - when_deserializing( ). - - then_shuld_update_descriptions( lt_descriptions ). - ENDMETHOD. - - METHOD should_add_to_activation. - given_a_class_properties( ). - - when_deserializing( ). - - then_it_should_add_activation( ). - ENDMETHOD. - - METHOD given_a_class_properties. - mo_xml_out->add( - iv_name = 'VSEOCLASS' - ig_data = ms_class_properties ). - ENDMETHOD. - - METHOD then_should_create_class. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_class_properties - exp = ms_class_properties ). - - cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mv_package - exp = 'package_name' ). - ENDMETHOD. - - - METHOD then_it_should_generate_locals. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_locals_key - exp = ms_item-obj_name ). - cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_force ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_local_definitions - exp = mo_fake_object_files->mt_local_definitions ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_local_implementations - exp = mo_fake_object_files->mt_local_implementations ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_local_macros - exp = mo_fake_object_files->mt_local_macros ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_local_test_classes - exp = mo_fake_object_files->mt_local_test_classes ). - ENDMETHOD. - METHOD no_text_pool_no_insert. - given_a_class_properties( ). - - when_deserializing( ). - - cl_abap_unit_assert=>assert_false( mo_spy_oo_object->mv_text_pool_inserted ). - ENDMETHOD. - - METHOD insert_text_pool. - DATA: lt_pool_external TYPE textpool_table, - ls_pool_external TYPE ty_tpool. - ls_pool_external-id = 'ID'. - ls_pool_external-key = 'KEY'. - APPEND ls_pool_external TO lt_pool_external. - - given_a_class_properties( ). - - mo_xml_out->add( - iv_name = 'TPOOL' - ig_data = lt_pool_external ). - - when_deserializing( ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_text_pool - exp = lt_pool_external ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mv_text_pool_class_name - exp = 'zcl_class' ). - ENDMETHOD. - - METHOD create_stor_from_xml. - DATA: - lt_sotr TYPE ty_sotr_tt, - ls_sotr LIKE LINE OF lt_sotr. - - given_a_class_properties( ). - - ls_sotr-header-concept = 'HEADER'. - APPEND ls_sotr TO lt_sotr. - mo_xml_out->add( - iv_name = 'SOTR' - ig_data = lt_sotr ). - - when_deserializing( ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_sotr - exp = lt_sotr ). - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mt_sotr_package - exp = 'package_name' ). - ENDMETHOD. - - METHOD create_documentation. - DATA: lt_lines TYPE tlinetab, - ls_line TYPE LINE OF tlinetab. - ls_line-tdline = 'Class Line Doc'. - APPEND ls_line TO lt_lines. - - given_a_class_properties( ). - - given_documentation_in_xml_as( lt_lines ). - - when_deserializing( ). - - then_docu_should_be_created( lt_lines ). - ENDMETHOD. -ENDCLASS. - -CLASS ltc_interface_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT -INHERITING FROM ltc_oo_test. - PRIVATE SECTION. - METHODS: - setup, - given_an_interface_properties - RAISING - lcx_exception, - then_should_create_interface, - create_interface FOR TESTING RAISING cx_static_check, - update_descriptions FOR TESTING RAISING cx_static_check, - add_to_activation FOR TESTING RAISING cx_static_check, - deserialize_source FOR TESTING RAISING cx_static_check, - create_documentation FOR TESTING RAISING cx_static_check. - DATA: - ms_interface_properties TYPE vseointerf. -ENDCLASS. -CLASS ltc_interface_deserialization IMPLEMENTATION. - METHOD setup. - CREATE OBJECT mo_fake_object_files. - CREATE OBJECT mo_spy_oo_object. - CREATE OBJECT mo_xml_out. - lth_oo_factory_injector=>inject( mo_spy_oo_object ). - - ms_item-devclass = 'package_name'. - ms_item-obj_name = 'zif_interface'. - ms_item-obj_type = 'INTF'. - - CREATE OBJECT mo_oo_object TYPE lcl_object_intf - EXPORTING - is_item = ms_item - iv_language = sy-langu. - mo_oo_object->mo_files = mo_fake_object_files. - ENDMETHOD. - - METHOD create_interface. - ms_interface_properties-clsname = ms_item-obj_name. - given_an_interface_properties( ). - - when_deserializing( ). - - then_should_create_interface( ). - ENDMETHOD. - - METHOD update_descriptions. - DATA: - ls_description TYPE seocompotx, - lt_descriptions TYPE ty_seocompotx_tt. - - given_an_interface_properties( ). - - ls_description-clsname = ms_item-obj_name. - ls_description-cmpname = 'a_method'. - APPEND ls_description TO lt_descriptions. - given_the_descriptions( lt_descriptions ). - - when_deserializing( ). - - then_shuld_update_descriptions( lt_descriptions ). - ENDMETHOD. - - METHOD add_to_activation. - given_an_interface_properties( ). - - when_deserializing( ). - - then_it_should_add_activation( ). - ENDMETHOD. - - METHOD deserialize_source. - given_an_interface_properties( ). - - when_deserializing( ). - - then_should_deserialize_source( ). - ENDMETHOD. - - METHOD given_an_interface_properties. - mo_xml_out->add( - iv_name = 'VSEOINTERF' - ig_data = ms_interface_properties ). - ENDMETHOD. - - METHOD then_should_create_interface. - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->ms_interface_properties - exp = ms_interface_properties ). - - cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). - - cl_abap_unit_assert=>assert_equals( - act = mo_spy_oo_object->mv_package - exp = 'package_name' ). - ENDMETHOD. - - METHOD create_documentation. - DATA: lt_lines TYPE tlinetab, - ls_line TYPE LINE OF tlinetab. - ls_line-tdline = 'Interface Line Doc'. - APPEND ls_line TO lt_lines. - - given_an_interface_properties( ). - - given_documentation_in_xml_as( lt_lines ). - - when_deserializing( ). - - then_docu_should_be_created( lt_lines ). - ENDMETHOD. - ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index dd6c4a514..40318dec2 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -2205,4 +2205,544 @@ CLASS ltcl_persistence_settings IMPLEMENTATION. ENDMETHOD. +ENDCLASS. + + +CLASS ltd_spy_oo_object DEFINITION FOR TESTING. + PUBLIC SECTION. + INTERFACES: lif_object_oriented_object. + DATA: + mv_package TYPE devclass, + mv_overwrite TYPE seox_boolean, + ms_interface_properties TYPE vseointerf, + ms_class_properties TYPE vseoclass, + ms_locals_key TYPE seoclskey, + mt_local_definitions TYPE rswsourcet, + mt_local_implementations TYPE rswsourcet, + mt_local_macros TYPE rswsourcet, + mt_local_test_classes TYPE rswsourcet, + mv_force TYPE seoflag, + ms_deserialize_key TYPE seoclskey, + mt_source TYPE ty_string_tt, + ms_item_to_activate TYPE ty_item, + mt_descriptions TYPE ty_seocompotx_tt, + ms_description_key TYPE seoclskey, + mv_text_pool_class_name TYPE seoclsname, + mt_text_pool TYPE textpool_table, + mv_text_pool_inserted TYPE abap_bool, + mt_sotr TYPE ty_sotr_tt, + mt_sotr_package TYPE devclass, + mv_docu_object_name TYPE dokhl-object, + mv_docu_language TYPE spras, + mt_docu_lines TYPE tlinetab. + +ENDCLASS. +CLASS ltd_spy_oo_object IMPLEMENTATION. + METHOD lif_object_oriented_object~create. + DATA lv_properties_structure_name TYPE string. + lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( is_properties )->absolute_name. + IF lv_properties_structure_name = cl_abap_typedescr=>describe_by_data( ms_interface_properties )->absolute_name. + ms_interface_properties = is_properties. + ELSE. + ms_class_properties = is_properties. + ENDIF. + mv_package = iv_package. + mv_overwrite = iv_overwrite. + ENDMETHOD. + METHOD lif_object_oriented_object~generate_locals. + ms_locals_key = is_key. + mt_local_definitions = it_local_definitions. + mt_local_implementations = it_local_implementations. + mt_local_macros = it_local_macros. + mt_local_test_classes = it_local_test_classes. + mv_force = iv_force. + ENDMETHOD. + + METHOD lif_object_oriented_object~deserialize_source. + ms_deserialize_key = is_key. + mt_source = it_source. + ENDMETHOD. + + METHOD lif_object_oriented_object~add_to_activation_list. + ms_item_to_activate = is_item. + ENDMETHOD. + + METHOD lif_object_oriented_object~update_descriptions. + ms_description_key = is_key. + mt_descriptions = it_descriptions. + ENDMETHOD. + + METHOD lif_object_oriented_object~insert_text_pool. + mv_text_pool_inserted = abap_true. + mv_text_pool_class_name = iv_class_name. + mt_text_pool = it_text_pool. + cl_abap_unit_assert=>assert_equals( + act = iv_language + exp = sy-langu ). + ENDMETHOD. + + METHOD lif_object_oriented_object~create_sotr. + mt_sotr = it_sotr. + mt_sotr_package = iv_package. + ENDMETHOD. + + METHOD lif_object_oriented_object~create_documentation. + mv_docu_object_name = iv_object_name. + mv_docu_language = iv_language. + mt_docu_lines = it_lines. + ENDMETHOD. + +ENDCLASS. + +CLASS ltd_fake_object_files DEFINITION FOR TESTING + INHERITING FROM lcl_objects_files. + PUBLIC SECTION. + METHODS constructor. + METHODS read_abap REDEFINITION. + DATA: + mt_sources TYPE seop_source_string, + mt_local_definitions TYPE seop_source_string, + mt_local_implementations TYPE seop_source_string, + mt_local_macros TYPE seop_source_string, + mt_local_test_classes TYPE seop_source_string. +ENDCLASS. +CLASS ltd_fake_object_files IMPLEMENTATION. + METHOD read_abap. + CASE iv_extra. + WHEN 'locals_def'. + rt_abap = mt_local_definitions. + WHEN 'locals_imp'. + rt_abap = mt_local_implementations. + WHEN 'macros'. + rt_abap = mt_local_macros. + WHEN 'testclasses'. + rt_abap = mt_local_test_classes. + WHEN OTHERS. + rt_abap = mt_sources. + RETURN. + ENDCASE. + + cl_abap_unit_assert=>assert_false( iv_error ). + ENDMETHOD. + METHOD constructor. + DATA ls_empty_item TYPE ty_item. + super->constructor( ls_empty_item ). + APPEND 'source' TO me->mt_sources. + APPEND 'definition' TO me->mt_local_definitions. + APPEND 'implementation' TO me->mt_local_implementations. + APPEND 'macro' TO me->mt_local_macros. + APPEND 'test' TO me->mt_local_test_classes. + ENDMETHOD. + +ENDCLASS. + +CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT . + PROTECTED SECTION. + DATA: + mo_spy_oo_object TYPE REF TO ltd_spy_oo_object, + mo_fake_object_files TYPE REF TO ltd_fake_object_files, + mo_xml_input TYPE REF TO lcl_xml_input, + mo_xml_out TYPE REF TO lcl_xml_output, + mo_oo_object TYPE REF TO lif_object, + ms_item TYPE ty_item. + METHODS: when_deserializing + RAISING + lcx_exception, + then_should_deserialize_source, + given_the_descriptions + IMPORTING + it_descriptions TYPE ty_seocompotx_tt + RAISING + lcx_exception, + then_shuld_update_descriptions + IMPORTING + it_descriptions TYPE ty_seocompotx_tt, + then_it_should_add_activation, + given_documentation_in_xml_as + IMPORTING + it_lines TYPE tlinetab + RAISING + lcx_exception, + then_docu_should_be_created + IMPORTING + it_lines TYPE tlinetab. + +ENDCLASS. +CLASS ltc_oo_test IMPLEMENTATION. + + METHOD then_docu_should_be_created. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_docu_lines + exp = it_lines ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_docu_object_name + exp = ms_item-obj_name ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_docu_language + exp = sy-langu ). + ENDMETHOD. + + METHOD given_documentation_in_xml_as. + mo_xml_out->add( + iv_name = 'LINES' + ig_data = it_lines ). + ENDMETHOD. + + METHOD then_it_should_add_activation. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_item_to_activate + exp = ms_item ). + ENDMETHOD. + + METHOD then_shuld_update_descriptions. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_descriptions + exp = it_descriptions ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_description_key + exp = ms_item-obj_name ). + ENDMETHOD. + + METHOD given_the_descriptions. + mo_xml_out->add( + iv_name = 'DESCRIPTIONS' + ig_data = it_descriptions ). + ENDMETHOD. + + METHOD then_should_deserialize_source. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_source + exp = mo_fake_object_files->mt_sources ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_deserialize_key + exp = ms_item-obj_name ). + ENDMETHOD. + + METHOD when_deserializing. + CREATE OBJECT mo_xml_input + EXPORTING + iv_xml = mo_xml_out->render( ). + mo_oo_object->deserialize( + iv_package = 'package_name' + io_xml = mo_xml_input ). + ENDMETHOD. +ENDCLASS. + +CLASS ltcl_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT +INHERITING FROM ltc_oo_test. + PRIVATE SECTION. + METHODS: + setup, + given_a_class_properties + RAISING + lcx_exception, + then_should_create_class, + then_it_should_generate_locals, + should_create_class FOR TESTING RAISING cx_static_check, + should_generate_locals FOR TESTING RAISING cx_static_check, + should_deserialize_source FOR TESTING RAISING cx_static_check, + should_update_descriptions FOR TESTING RAISING cx_static_check, + should_add_to_activation FOR TESTING RAISING cx_static_check, + no_text_pool_no_insert FOR TESTING RAISING cx_static_check, + insert_text_pool FOR TESTING RAISING cx_static_check, + create_stor_from_xml FOR TESTING RAISING cx_static_check, + create_documentation FOR TESTING RAISING cx_static_check. + DATA: + ms_class_properties TYPE vseoclass. +ENDCLASS. + +CLASS ltcl_class_deserialization IMPLEMENTATION. + METHOD setup. + CREATE OBJECT mo_fake_object_files. + CREATE OBJECT mo_spy_oo_object. + CREATE OBJECT mo_xml_out. + lth_oo_factory_injector=>inject( mo_spy_oo_object ). + + ms_item-devclass = 'package_name'. + ms_item-obj_name = 'zcl_class'. + ms_item-obj_type = 'CLAS'. + + CREATE OBJECT mo_oo_object TYPE lcl_object_clas + EXPORTING + is_item = ms_item + iv_language = sy-langu. + mo_oo_object->mo_files = mo_fake_object_files. + ENDMETHOD. + + METHOD should_create_class. + ms_class_properties-clsname = ms_item-obj_name. + + given_a_class_properties( ). + + when_deserializing( ). + + then_should_create_class( ). + ENDMETHOD. + + METHOD should_generate_locals. + given_a_class_properties( ). + + when_deserializing( ). + + then_it_should_generate_locals( ). + ENDMETHOD. + + METHOD should_deserialize_source. + given_a_class_properties( ). + + when_deserializing( ). + + then_should_deserialize_source( ). + ENDMETHOD. + + METHOD should_update_descriptions. + DATA: + ls_description TYPE seocompotx, + lt_descriptions TYPE ty_seocompotx_tt. + + given_a_class_properties( ). + + ls_description-clsname = ms_item-obj_name. + ls_description-cmpname = 'a_method'. + APPEND ls_description TO lt_descriptions. + given_the_descriptions( lt_descriptions ). + + when_deserializing( ). + + then_shuld_update_descriptions( lt_descriptions ). + ENDMETHOD. + + METHOD should_add_to_activation. + given_a_class_properties( ). + + when_deserializing( ). + + then_it_should_add_activation( ). + ENDMETHOD. + + METHOD given_a_class_properties. + mo_xml_out->add( + iv_name = 'VSEOCLASS' + ig_data = ms_class_properties ). + ENDMETHOD. + + METHOD then_should_create_class. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_class_properties + exp = ms_class_properties ). + + cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_package + exp = 'package_name' ). + ENDMETHOD. + + + METHOD then_it_should_generate_locals. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_locals_key + exp = ms_item-obj_name ). + cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_force ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_definitions + exp = mo_fake_object_files->mt_local_definitions ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_implementations + exp = mo_fake_object_files->mt_local_implementations ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_macros + exp = mo_fake_object_files->mt_local_macros ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_local_test_classes + exp = mo_fake_object_files->mt_local_test_classes ). + ENDMETHOD. + METHOD no_text_pool_no_insert. + given_a_class_properties( ). + + when_deserializing( ). + + cl_abap_unit_assert=>assert_false( mo_spy_oo_object->mv_text_pool_inserted ). + ENDMETHOD. + + METHOD insert_text_pool. + DATA: lt_pool_external TYPE textpool_table, + ls_pool_external TYPE ty_tpool. + ls_pool_external-id = 'ID'. + ls_pool_external-key = 'KEY'. + APPEND ls_pool_external TO lt_pool_external. + + given_a_class_properties( ). + + mo_xml_out->add( + iv_name = 'TPOOL' + ig_data = lt_pool_external ). + + when_deserializing( ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_text_pool + exp = lt_pool_external ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_text_pool_class_name + exp = 'zcl_class' ). + ENDMETHOD. + + METHOD create_stor_from_xml. + DATA: + lt_sotr TYPE ty_sotr_tt, + ls_sotr LIKE LINE OF lt_sotr. + + given_a_class_properties( ). + + ls_sotr-header-concept = 'HEADER'. + APPEND ls_sotr TO lt_sotr. + mo_xml_out->add( + iv_name = 'SOTR' + ig_data = lt_sotr ). + + when_deserializing( ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_sotr + exp = lt_sotr ). + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mt_sotr_package + exp = 'package_name' ). + ENDMETHOD. + + METHOD create_documentation. + DATA: lt_lines TYPE tlinetab, + ls_line TYPE LINE OF tlinetab. + ls_line-tdline = 'Class Line Doc'. + APPEND ls_line TO lt_lines. + + given_a_class_properties( ). + + given_documentation_in_xml_as( lt_lines ). + + when_deserializing( ). + + then_docu_should_be_created( lt_lines ). + ENDMETHOD. +ENDCLASS. + +CLASS ltcl_interface_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT +INHERITING FROM ltc_oo_test. + PRIVATE SECTION. + METHODS: + setup, + given_an_interface_properties + RAISING + lcx_exception, + then_should_create_interface, + create_interface FOR TESTING RAISING cx_static_check, + update_descriptions FOR TESTING RAISING cx_static_check, + add_to_activation FOR TESTING RAISING cx_static_check, + deserialize_source FOR TESTING RAISING cx_static_check, + create_documentation FOR TESTING RAISING cx_static_check. + DATA: + ms_interface_properties TYPE vseointerf. +ENDCLASS. +CLASS ltcl_interface_deserialization IMPLEMENTATION. + METHOD setup. + CREATE OBJECT mo_fake_object_files. + CREATE OBJECT mo_spy_oo_object. + CREATE OBJECT mo_xml_out. + lth_oo_factory_injector=>inject( mo_spy_oo_object ). + + ms_item-devclass = 'package_name'. + ms_item-obj_name = 'zif_interface'. + ms_item-obj_type = 'INTF'. + + CREATE OBJECT mo_oo_object TYPE lcl_object_intf + EXPORTING + is_item = ms_item + iv_language = sy-langu. + mo_oo_object->mo_files = mo_fake_object_files. + ENDMETHOD. + + METHOD create_interface. + ms_interface_properties-clsname = ms_item-obj_name. + given_an_interface_properties( ). + + when_deserializing( ). + + then_should_create_interface( ). + ENDMETHOD. + + METHOD update_descriptions. + DATA: + ls_description TYPE seocompotx, + lt_descriptions TYPE ty_seocompotx_tt. + + given_an_interface_properties( ). + + ls_description-clsname = ms_item-obj_name. + ls_description-cmpname = 'a_method'. + APPEND ls_description TO lt_descriptions. + given_the_descriptions( lt_descriptions ). + + when_deserializing( ). + + then_shuld_update_descriptions( lt_descriptions ). + ENDMETHOD. + + METHOD add_to_activation. + given_an_interface_properties( ). + + when_deserializing( ). + + then_it_should_add_activation( ). + ENDMETHOD. + + METHOD deserialize_source. + given_an_interface_properties( ). + + when_deserializing( ). + + then_should_deserialize_source( ). + ENDMETHOD. + + METHOD given_an_interface_properties. + mo_xml_out->add( + iv_name = 'VSEOINTERF' + ig_data = ms_interface_properties ). + ENDMETHOD. + + METHOD then_should_create_interface. + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->ms_interface_properties + exp = ms_interface_properties ). + + cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). + + cl_abap_unit_assert=>assert_equals( + act = mo_spy_oo_object->mv_package + exp = 'package_name' ). + ENDMETHOD. + + METHOD create_documentation. + DATA: lt_lines TYPE tlinetab, + ls_line TYPE LINE OF tlinetab. + ls_line-tdline = 'Interface Line Doc'. + APPEND ls_line TO lt_lines. + + given_an_interface_properties( ). + + given_documentation_in_xml_as( lt_lines ). + + when_deserializing( ). + + then_docu_should_be_created( lt_lines ). + ENDMETHOD. ENDCLASS. \ No newline at end of file From 66635c89290c3b5a8d8d9b5c5c374ed17b464132 Mon Sep 17 00:00:00 2001 From: larshp Date: Mon, 26 Dec 2016 19:16:53 +0000 Subject: [PATCH 10/40] TABL: clear invalid field value --- src/zabapgit_object_tabl.prog.abap | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 8f70c2f35..857953079 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -170,6 +170,10 @@ CLASS lcl_object_tabl IMPLEMENTATION. ls_dd02v-as4date, ls_dd02v-as4time. + IF ls_dd02v-prozpuff = ''. + CLEAR ls_dd02v-prozpuff. " reset numeric field, so XML does not crash + ENDIF. + CLEAR: ls_dd09l-as4user, ls_dd09l-as4date, ls_dd09l-as4time. From 392c691b337e1c5400adebcf4831e62785c1e89c Mon Sep 17 00:00:00 2001 From: larshp Date: Mon, 26 Dec 2016 19:39:52 +0000 Subject: [PATCH 11/40] TABL: clear more --- src/zabapgit_object_tabl.prog.abap | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 857953079..1875fa2c9 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -170,8 +170,15 @@ CLASS lcl_object_tabl IMPLEMENTATION. ls_dd02v-as4date, ls_dd02v-as4time. +* reset numeric field, so XML does not crash IF ls_dd02v-prozpuff = ''. - CLEAR ls_dd02v-prozpuff. " reset numeric field, so XML does not crash + CLEAR ls_dd02v-prozpuff. + ENDIF. + IF ls_dd02v-datmin = ''. + CLEAR ls_dd02v-datmin. + ENDIF. + IF ls_dd02v-datmax = ''. + CLEAR ls_dd02v-datmax. ENDIF. CLEAR: ls_dd09l-as4user, From 585f30d589217ded878067a927e2f7b1957c91cf Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 29 Dec 2016 09:11:00 +0000 Subject: [PATCH 12/40] FUGR: fix texpool METHOD deserialize_textpool moved --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_clas.prog.abap | 7 +++--- src/zabapgit_object_fugr.prog.abap | 3 +++ src/zabapgit_object_prog.prog.abap | 29 ++----------------------- src/zabapgit_objects.prog.abap | 34 ++++++++++++++++++++++++------ 5 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 410f97ba6..af05a2383 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.24.7'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.24.8'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index f2f27ef32..7dec96873 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -416,7 +416,7 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. PRIVATE SECTION. DATA mv_skip_testclass TYPE abap_bool. - METHODS deserialize_textpool + METHODS deserialize_tpool IMPORTING io_xml TYPE REF TO lcl_xml_input RAISING lcx_exception. @@ -1103,7 +1103,7 @@ CLASS lcl_object_clas IMPLEMENTATION. deserialize_abap( io_xml = io_xml iv_package = iv_package ). - deserialize_textpool( io_xml ). + deserialize_tpool( io_xml ). deserialize_sotr( io_xml = io_xml iv_package = iv_package ). @@ -1153,7 +1153,7 @@ CLASS lcl_object_clas IMPLEMENTATION. iv_language = mv_language ). ENDMETHOD. "deserialize_doku - METHOD deserialize_textpool. + METHOD deserialize_tpool. DATA: lv_cp TYPE program, lv_clsname TYPE seoclsname, @@ -1175,6 +1175,7 @@ CLASS lcl_object_clas IMPLEMENTATION. iv_class_name = lv_clsname it_text_pool = lt_tpool iv_language = mv_language ). + ENDMETHOD. "deserialize_textpool METHOD deserialize_abap. diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index 97aaf4f86..d09713ae7 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -317,6 +317,9 @@ CLASS lcl_object_fugr IMPLEMENTATION. it_tpool = lt_tpool iv_package = iv_package ). + deserialize_textpool( iv_program = + it_tpool = lt_tpool ). + ENDLOOP. ENDMETHOD. "deserialize_includes diff --git a/src/zabapgit_object_prog.prog.abap b/src/zabapgit_object_prog.prog.abap index d3b29e3c8..c3a32baee 100644 --- a/src/zabapgit_object_prog.prog.abap +++ b/src/zabapgit_object_prog.prog.abap @@ -13,12 +13,6 @@ CLASS lcl_object_prog DEFINITION INHERITING FROM lcl_objects_program FINAL. INTERFACES lif_object. ALIASES mo_files FOR lif_object~mo_files. - PRIVATE SECTION. - - METHODS deserialize_textpool - IMPORTING it_tpool TYPE textpool_table - RAISING lcx_exception. - ENDCLASS. "lcl_object_prog DEFINITION *----------------------------------------------------------------------* @@ -95,26 +89,6 @@ CLASS lcl_object_prog IMPLEMENTATION. ENDMETHOD. "delete - METHOD deserialize_textpool. - - READ TABLE it_tpool WITH KEY id = 'R' TRANSPORTING NO FIELDS. - IF ( sy-subrc = 0 AND lines( it_tpool ) = 1 ) OR lines( it_tpool ) = 0. - RETURN. " no action for includes - ENDIF. - - INSERT TEXTPOOL ms_item-obj_name - FROM it_tpool - LANGUAGE mv_language - STATE 'I'. - IF sy-subrc <> 0. - lcx_exception=>raise( 'error from INSERT TEXTPOOL' ). - ENDIF. - - lcl_objects_activation=>add( iv_type = 'REPT' - iv_name = ms_item-obj_name ). - - ENDMETHOD. "deserialize_textpool - METHOD lif_object~serialize. serialize_program( io_xml = io_xml @@ -157,7 +131,8 @@ CLASS lcl_object_prog IMPLEMENTATION. deserialize_cua( iv_program_name = lv_program_name is_cua = ls_cua ). - deserialize_textpool( lt_tpool ). + deserialize_textpool( iv_program = ms_item-obj_name + it_tpool = lt_tpool ). ENDMETHOD. "lif_serialize~deserialize diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index dbaa27977..601fb0c4c 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -898,6 +898,11 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super. IMPORTING it_dynpros TYPE ty_dynpro_tt RAISING lcx_exception. + METHODS deserialize_textpool + IMPORTING iv_program TYPE programm + it_tpool TYPE textpool_table + RAISING lcx_exception. + METHODS deserialize_cua IMPORTING iv_program_name TYPE programm is_cua TYPE ty_cua @@ -1036,12 +1041,9 @@ CLASS lcl_objects_program IMPLEMENTATION. ENDIF. ENDIF. - IF lines( lt_tpool ) = 1. - READ TABLE lt_tpool INDEX 1 INTO ls_tpool. - ASSERT sy-subrc = 0. - IF ls_tpool-id = 'R' AND ls_tpool-key = '' AND ls_tpool-length = 0. - DELETE lt_tpool INDEX 1. - ENDIF. + READ TABLE lt_tpool WITH KEY id = 'R' INTO ls_tpool. + IF sy-subrc = 0 AND ls_tpool-key = '' AND ls_tpool-length = 0. + DELETE lt_tpool INDEX sy-tabix. ENDIF. lo_xml->add( iv_name = 'TPOOL' @@ -1416,6 +1418,26 @@ CLASS lcl_objects_program IMPLEMENTATION. ENDMETHOD. "read_tpool + METHOD deserialize_textpool. + + READ TABLE it_tpool WITH KEY id = 'R' TRANSPORTING NO FIELDS. + IF ( sy-subrc = 0 AND lines( it_tpool ) = 1 ) OR lines( it_tpool ) = 0. + RETURN. " no action for includes + ENDIF. + + INSERT TEXTPOOL iv_program + FROM it_tpool + LANGUAGE mv_language + STATE 'I'. + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from INSERT TEXTPOOL' ). + ENDIF. + + lcl_objects_activation=>add( iv_type = 'REPT' + iv_name = iv_program ). + + ENDMETHOD. "deserialize_textpool + METHOD deserialize_cua. DATA: ls_tr_key TYPE trkey. From 426efa80031128a8fa55ab9ea663bd8c4cd00186 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 29 Dec 2016 09:37:14 +0000 Subject: [PATCH 13/40] FUGR: fix cua --- src/zabapgit.prog.abap | 2 +- src/zabapgit_objects.prog.abap | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index af05a2383..5adf0bddf 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.24.8'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.24.9'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 601fb0c4c..6ac06cf57 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -1443,7 +1443,17 @@ CLASS lcl_objects_program IMPLEMENTATION. DATA: ls_tr_key TYPE trkey. - IF is_cua-adm IS INITIAL. + IF lines( is_cua-sta ) = 0 + AND lines( is_cua-fun ) = 0 + AND lines( is_cua-men ) = 0 + AND lines( is_cua-mtx ) = 0 + AND lines( is_cua-act ) = 0 + AND lines( is_cua-but ) = 0 + AND lines( is_cua-pfk ) = 0 + AND lines( is_cua-set ) = 0 + AND lines( is_cua-doc ) = 0 + AND lines( is_cua-tit ) = 0 + AND lines( is_cua-biv ) = 0. RETURN. ENDIF. @@ -1457,14 +1467,14 @@ CLASS lcl_objects_program IMPLEMENTATION. ENDIF. ls_tr_key-obj_type = ms_item-obj_type. - ls_tr_key-obj_name = iv_program_name. + ls_tr_key-obj_name = ms_item-obj_name. ls_tr_key-sub_type = 'CUAD'. - ls_tr_key-sub_name = ms_item-obj_name. + ls_tr_key-sub_name = iv_program_name. sy-tcode = 'SE41' ##write_ok. " evil hack, workaround to handle fixes in note 2159455 CALL FUNCTION 'RS_CUA_INTERNAL_WRITE' EXPORTING - program = ms_item-obj_name + program = iv_program_name language = mv_language tr_key = ls_tr_key adm = is_cua-adm @@ -1489,7 +1499,7 @@ CLASS lcl_objects_program IMPLEMENTATION. ENDIF. lcl_objects_activation=>add( iv_type = 'CUAD' - iv_name = ms_item-obj_name ). + iv_name = iv_program_name ). ENDMETHOD. "deserialize_cua From 72fcc7bd245111250ff231f392bd51dc0886c6f3 Mon Sep 17 00:00:00 2001 From: nununo Date: Thu, 29 Dec 2016 10:38:21 +0100 Subject: [PATCH 14/40] ASSERT_TRUE and ASSERT_FALSE replaced ...with ASSERT_EQUAL for backward compatibility with 702. --- src/zabapgit_unit_test.prog.abap | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 40318dec2..a65998076 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -2322,7 +2322,8 @@ CLASS ltd_fake_object_files IMPLEMENTATION. RETURN. ENDCASE. - cl_abap_unit_assert=>assert_false( iv_error ). + cl_abap_unit_assert=>assert_equals( act = iv_error + exp = abap_false ). ENDMETHOD. METHOD constructor. DATA ls_empty_item TYPE ty_item. @@ -2535,7 +2536,8 @@ CLASS ltcl_class_deserialization IMPLEMENTATION. act = mo_spy_oo_object->ms_class_properties exp = ms_class_properties ). - cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). + cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_overwrite + exp = abap_true ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_package @@ -2547,7 +2549,9 @@ CLASS ltcl_class_deserialization IMPLEMENTATION. cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->ms_locals_key exp = ms_item-obj_name ). - cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_force ). + + cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_force + exp = abap_true ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mt_local_definitions @@ -2570,7 +2574,8 @@ CLASS ltcl_class_deserialization IMPLEMENTATION. when_deserializing( ). - cl_abap_unit_assert=>assert_false( mo_spy_oo_object->mv_text_pool_inserted ). + cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_text_pool_inserted + exp = abap_false ). ENDMETHOD. METHOD insert_text_pool. @@ -2724,7 +2729,8 @@ CLASS ltcl_interface_deserialization IMPLEMENTATION. act = mo_spy_oo_object->ms_interface_properties exp = ms_interface_properties ). - cl_abap_unit_assert=>assert_true( mo_spy_oo_object->mv_overwrite ). + cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_overwrite + exp = abap_true ). cl_abap_unit_assert=>assert_equals( act = mo_spy_oo_object->mv_package From 3106d2dd5877eaf6e7a9397f556f4e88f2c2dd4c Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 29 Dec 2016 11:03:15 +0000 Subject: [PATCH 15/40] ENHO: serialization class enh --- src/zabapgit_object_enho.prog.abap | 51 ++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 95ba504f9..d65113f62 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -2,6 +2,11 @@ *& Include ZABAPGIT_OBJECT_ENHO *&---------------------------------------------------------------------* +* todo, this include could use some refactoring + +* todo, CL_ENH_TOOL_CLASS inherits from CL_ENH_TOOL_CLIF so this +* should also be reflected in the code in this include + *----------------------------------------------------------------------* * CLASS lcl_object_enho DEFINITION *----------------------------------------------------------------------* @@ -40,6 +45,11 @@ CLASS lcl_object_enho DEFINITION INHERITING FROM lcl_objects_super FINAL. iv_tool TYPE enhtooltype ii_enh_tool TYPE REF TO if_enh_tool RAISING lcx_exception. + METHODS serialize_class + IMPORTING io_xml TYPE REF TO lcl_xml_output + iv_tool TYPE enhtooltype + ii_enh_tool TYPE REF TO if_enh_tool + RAISING lcx_exception. METHODS hook_impl_serialize EXPORTING et_spaces TYPE ty_spaces_tt @@ -162,8 +172,11 @@ CLASS lcl_object_enho IMPLEMENTATION. serialize_hook( io_xml = io_xml iv_tool = lv_tool ii_enh_tool = li_enh_tool ). + WHEN cl_enh_tool_class=>tooltype. + serialize_class( io_xml = io_xml + iv_tool = lv_tool + ii_enh_tool = li_enh_tool ). * ToDo: -* WHEN cl_enh_tool_class=>tooltype. * WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr * WHEN cl_enh_tool_intf=>tooltype. * WHEN cl_wdr_cfg_enhancement=>tooltype. @@ -192,8 +205,9 @@ CLASS lcl_object_enho IMPLEMENTATION. WHEN cl_enh_tool_hook_impl=>tooltype. deserialize_hook( io_xml = io_xml iv_package = iv_package ). + WHEN cl_enh_tool_class=>tooltype. + BREAK-POINT. * ToDo: -* WHEN cl_enh_tool_class=>tooltype. * WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr * WHEN cl_enh_tool_intf=>tooltype. * WHEN cl_wdr_cfg_enhancement=>tooltype. @@ -345,6 +359,39 @@ CLASS lcl_object_enho IMPLEMENTATION. ENDMETHOD. "serialize_badi + METHOD serialize_class. + + DATA: lo_enh_class TYPE REF TO cl_enh_tool_class, + lt_owr TYPE enhmeth_tabkeys, + lt_pre TYPE enhmeth_tabkeys, + lt_post TYPE enhmeth_tabkeys, + lt_source TYPE rswsourcet, + lv_shorttext TYPE string. + + + lo_enh_class ?= ii_enh_tool. + + lv_shorttext = lo_enh_class->if_enh_object_docu~get_shorttext( ). + lt_owr = lo_enh_class->get_owr_methods( ). + lt_pre = lo_enh_class->get_pre_methods( ). + lt_post = lo_enh_class->get_post_methods( ). + lt_source = lo_enh_class->get_eimp_include( ). + + io_xml->add( iv_name = 'TOOL' + ig_data = iv_tool ). + io_xml->add( ig_data = lv_shorttext + iv_name = 'SHORTTEXT' ). + io_xml->add( iv_name = 'OWR_METHODS' + ig_data = lt_owr ). + io_xml->add( iv_name = 'PRE_METHODS' + ig_data = lt_pre ). + io_xml->add( iv_name = 'POST_METHODS' + ig_data = lt_post ). + + mo_files->add_abap( lt_source ). + + ENDMETHOD. + METHOD serialize_hook. DATA: lv_shorttext TYPE string, From b64c2723d9556d4f371415687e9be9a2f7f4744c Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 29 Dec 2016 11:57:30 +0000 Subject: [PATCH 16/40] ENHO: class deserialization --- src/zabapgit_object_enho.prog.abap | 80 +++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index d65113f62..5335c9a09 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -34,6 +34,15 @@ CLASS lcl_object_enho DEFINITION INHERITING FROM lcl_objects_super FINAL. IMPORTING io_xml TYPE REF TO lcl_xml_input iv_package TYPE devclass RAISING lcx_exception. + METHODS deserialize_class + IMPORTING io_xml TYPE REF TO lcl_xml_input + iv_package TYPE devclass + RAISING lcx_exception. + METHODS hook_impl_deserialize + IMPORTING it_spaces TYPE ty_spaces_tt + CHANGING ct_impl TYPE enh_hook_impl_it + RAISING lcx_exception. + METHODS serialize_badi IMPORTING io_xml TYPE REF TO lcl_xml_output @@ -50,15 +59,10 @@ CLASS lcl_object_enho DEFINITION INHERITING FROM lcl_objects_super FINAL. iv_tool TYPE enhtooltype ii_enh_tool TYPE REF TO if_enh_tool RAISING lcx_exception. - METHODS hook_impl_serialize EXPORTING et_spaces TYPE ty_spaces_tt CHANGING ct_impl TYPE enh_hook_impl_it RAISING lcx_exception. - METHODS hook_impl_deserialize - IMPORTING it_spaces TYPE ty_spaces_tt - CHANGING ct_impl TYPE enh_hook_impl_it - RAISING lcx_exception. ENDCLASS. "lcl_object_enho DEFINITION @@ -206,7 +210,8 @@ CLASS lcl_object_enho IMPLEMENTATION. deserialize_hook( io_xml = io_xml iv_package = iv_package ). WHEN cl_enh_tool_class=>tooltype. - BREAK-POINT. + deserialize_class( io_xml = io_xml + iv_package = iv_package ). * ToDo: * WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr * WHEN cl_enh_tool_intf=>tooltype. @@ -267,6 +272,65 @@ CLASS lcl_object_enho IMPLEMENTATION. ENDMETHOD. "deserialize_badi + METHOD deserialize_class. + + DATA: lo_enh_class TYPE REF TO cl_enh_tool_class, + lt_owr TYPE enhmeth_tabkeys, + lt_pre TYPE enhmeth_tabkeys, + lt_post TYPE enhmeth_tabkeys, + lt_source TYPE rswsourcet, + li_tool TYPE REF TO if_enh_tool, + lv_shorttext TYPE string, + lv_class TYPE seoclsname, + lv_enhname TYPE enhname, + lv_package TYPE devclass. + + + io_xml->read( EXPORTING iv_name = 'SHORTTEXT' + CHANGING cg_data = lv_shorttext ). + io_xml->read( EXPORTING iv_name = 'OWR_METHODS' + CHANGING cg_data = lt_owr ). + io_xml->read( EXPORTING iv_name = 'PRE_METHODS' + CHANGING cg_data = lt_pre ). + io_xml->read( EXPORTING iv_name = 'POST_METHODS' + CHANGING cg_data = lt_post ). + io_xml->read( EXPORTING iv_name = 'CLASS' + CHANGING cg_data = lv_class ). + lt_source = mo_files->read_abap( ). + + lv_enhname = ms_item-obj_name. + lv_package = iv_package. + TRY. + cl_enh_factory=>create_enhancement( + EXPORTING + enhname = lv_enhname + enhtype = '' + enhtooltype = cl_enh_tool_class=>tooltype + IMPORTING + enhancement = li_tool + CHANGING + devclass = lv_package ). + lo_enh_class ?= li_tool. + + lo_enh_class->if_enh_object_docu~set_shorttext( lv_shorttext ). + lo_enh_class->set_class( lv_class ). + lo_enh_class->set_owr_methods( version = 'I' + owr_methods = lt_owr ). + lo_enh_class->set_pre_methods( version = 'I' + pre_methods = lt_pre ). + lo_enh_class->set_post_methods( version = 'I' + post_methods = lt_post ). + lo_enh_class->set_eimp_include( version = 'I' + eimp_source = lt_source ). + + lo_enh_class->if_enh_object~save( ). + lo_enh_class->if_enh_object~unlock( ). + CATCH cx_enh_root INTO DATA(lx_error). + lcx_exception=>raise( 'error deserializing ENHO class' ). + ENDTRY. + + ENDMETHOD. + METHOD deserialize_hook. DATA: lv_shorttext TYPE string, @@ -366,6 +430,7 @@ CLASS lcl_object_enho IMPLEMENTATION. lt_pre TYPE enhmeth_tabkeys, lt_post TYPE enhmeth_tabkeys, lt_source TYPE rswsourcet, + lv_class TYPE seoclsname, lv_shorttext TYPE string. @@ -376,11 +441,14 @@ CLASS lcl_object_enho IMPLEMENTATION. lt_pre = lo_enh_class->get_pre_methods( ). lt_post = lo_enh_class->get_post_methods( ). lt_source = lo_enh_class->get_eimp_include( ). + lo_enh_class->get_class( IMPORTING class_name = lv_class ). io_xml->add( iv_name = 'TOOL' ig_data = iv_tool ). io_xml->add( ig_data = lv_shorttext iv_name = 'SHORTTEXT' ). + io_xml->add( iv_name = 'CLASS' + ig_data = lv_class ). io_xml->add( iv_name = 'OWR_METHODS' ig_data = lt_owr ). io_xml->add( iv_name = 'PRE_METHODS' From b52cfb09df6ed956873404fa594caef9e7a09e72 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 29 Dec 2016 12:12:44 +0000 Subject: [PATCH 17/40] ENHO: downport, remove test code --- src/zabapgit_object_enho.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 5335c9a09..669023316 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -325,7 +325,7 @@ CLASS lcl_object_enho IMPLEMENTATION. lo_enh_class->if_enh_object~save( ). lo_enh_class->if_enh_object~unlock( ). - CATCH cx_enh_root INTO DATA(lx_error). + CATCH cx_enh_root. lcx_exception=>raise( 'error deserializing ENHO class' ). ENDTRY. From 81c2025fac01513b23bb79d5f85762966294d01b Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 29 Dec 2016 12:45:16 +0000 Subject: [PATCH 18/40] cleanup and style changes pretty printer remove unused variables cleanup --- src/zabapgit_definitions.prog.abap | 8 +- src/zabapgit_file_status.prog.abap | 6 +- src/zabapgit_git.prog.abap | 9 +- src/zabapgit_git_helpers.prog.abap | 6 +- src/zabapgit_gui_asset_manager.prog.abap | 16 +- src/zabapgit_html.prog.abap | 2 +- src/zabapgit_migrations.prog.abap | 16 +- src/zabapgit_object_clas.prog.abap | 17 +- src/zabapgit_object_shi3.prog.abap | 8 +- src/zabapgit_object_tabl_valid.prog.abap | 6 - src/zabapgit_object_tran.prog.abap | 3 +- src/zabapgit_object_wdyn.prog.abap | 768 +++++++++++----------- src/zabapgit_objects.prog.abap | 9 +- src/zabapgit_objects_impl.prog.abap | 31 +- src/zabapgit_page.prog.abap | 1 - src/zabapgit_page_debug.prog.abap | 8 +- src/zabapgit_page_diff.prog.abap | 7 +- src/zabapgit_page_main.prog.abap | 12 +- src/zabapgit_persistence.prog.abap | 12 +- src/zabapgit_repo_impl.prog.abap | 5 +- src/zabapgit_sap_package.prog.abap | 3 +- src/zabapgit_services_abapgit.prog.abap | 18 +- src/zabapgit_services_db.prog.abap | 3 +- src/zabapgit_services_git.prog.abap | 11 +- src/zabapgit_services_repo.prog.abap | 36 +- src/zabapgit_syntax_highlighter.prog.abap | 8 +- src/zabapgit_unit_test.prog.abap | 9 +- 27 files changed, 504 insertions(+), 534 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 9726e9803..f28edbcde 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -14,8 +14,11 @@ TYPES: BEGIN OF ty_file_signature, sha1 TYPE ty_sha1, END OF ty_file_signature. -TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF ty_file_signature WITH DEFAULT KEY. -TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF ty_file_signature WITH UNIQUE KEY path filename. +TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF + ty_file_signature WITH DEFAULT KEY. + +TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF + ty_file_signature WITH UNIQUE KEY path filename. TYPES: BEGIN OF ty_file. INCLUDE TYPE ty_file_signature. @@ -24,7 +27,6 @@ TYPES: data TYPE xstring, TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY. TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY. -TYPES: tt_w3urls TYPE STANDARD TABLE OF w3url WITH DEFAULT KEY. TYPES: BEGIN OF ty_comment, username TYPE string, diff --git a/src/zabapgit_file_status.prog.abap b/src/zabapgit_file_status.prog.abap index 7aee25688..d30919b97 100644 --- a/src/zabapgit_file_status.prog.abap +++ b/src/zabapgit_file_status.prog.abap @@ -193,7 +193,8 @@ CLASS lcl_file_status IMPLEMENTATION. " Match against current state READ TABLE it_state INTO ls_file_sig - WITH KEY path = is_local-file-path filename = is_local-file-filename + WITH KEY path = is_local-file-path + filename = is_local-file-filename BINARY SEARCH. IF sy-subrc = 0. @@ -203,7 +204,8 @@ CLASS lcl_file_status IMPLEMENTATION. IF ls_file_sig-sha1 <> is_remote-sha1. rs_result-rstate = gc_state-modified. ENDIF. - rs_result-match = boolc( rs_result-lstate IS INITIAL AND rs_result-rstate IS INITIAL ). + rs_result-match = boolc( rs_result-lstate IS INITIAL + AND rs_result-rstate IS INITIAL ). ELSE. " This is a strange situation. As both local and remote exist " the state should also be present. Maybe this is a first run of the code. diff --git a/src/zabapgit_git.prog.abap b/src/zabapgit_git.prog.abap index 08ebd1c45..60f81a2db 100644 --- a/src/zabapgit_git.prog.abap +++ b/src/zabapgit_git.prog.abap @@ -337,7 +337,8 @@ CLASS lcl_git_transport IMPLEMENTATION. LOOP AT lt_branches FROM 1 ASSIGNING . IF sy-tabix = 1. - lv_capa = 'side-band-64k no-progress multi_ack agent=' && lcl_http=>get_agent( ) ##NO_TEXT. + lv_capa = 'side-band-64k no-progress multi_ack agent=' + && lcl_http=>get_agent( ) ##NO_TEXT. lv_line = 'want' && ` ` && -sha1 && ` ` && lv_capa && gc_newline. "#EC NOTEXT ELSE. @@ -348,14 +349,16 @@ CLASS lcl_git_transport IMPLEMENTATION. ENDLOOP. IF iv_deepen = abap_true. - lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( 'deepen 1' && gc_newline ). "#EC NOTEXT + lv_buffer = lv_buffer && lcl_git_utils=>pkt_string( 'deepen 1' + && gc_newline ). "#EC NOTEXT ENDIF. lv_buffer = lv_buffer && '0000' && '0009done' && gc_newline. - lv_xstring = lo_client->send_receive_close( lcl_convert=>string_to_xstring_utf8( lv_buffer ) ). + lv_xstring = lo_client->send_receive_close( + lcl_convert=>string_to_xstring_utf8( lv_buffer ) ). parse( IMPORTING ev_pack = lv_pack CHANGING cv_data = lv_xstring ). diff --git a/src/zabapgit_git_helpers.prog.abap b/src/zabapgit_git_helpers.prog.abap index bbcb29962..41fe042a5 100644 --- a/src/zabapgit_git_helpers.prog.abap +++ b/src/zabapgit_git_helpers.prog.abap @@ -273,9 +273,9 @@ CLASS lcl_git_branch_list IMPLEMENTATION. ENDIF. IF iv_branch_name CP 'refs/pull/*' - OR iv_branch_name CP 'refs/merge-requests/*' - OR iv_branch_name CP 'refs/keep-around/*' - OR iv_branch_name CP 'refs/tmp/*'. + OR iv_branch_name CP 'refs/merge-requests/*' + OR iv_branch_name CP 'refs/keep-around/*' + OR iv_branch_name CP 'refs/tmp/*'. rv_ignore = abap_true. ENDIF. diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 2ff246994..bafd1f66b 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -108,11 +108,7 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. TABLES binary_tab = lt_w3mime EXCEPTIONS - failed = 1. - - IF sy-subrc IS NOT INITIAL. - RETURN. - ENDIF. + failed = 1 ##FM_SUBRC_OK. ENDMETHOD. " get_mime_asset. @@ -136,10 +132,6 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_images. - DEFINE _inline. - APPEND &1 TO lt_data. - END-OF-DEFINITION. - METHOD get_inline_asset. DATA: lt_data TYPE ty_string_tt, @@ -158,11 +150,11 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. CALL FUNCTION 'SCMS_STRING_TO_XSTRING' EXPORTING - text = lv_str + text = lv_str IMPORTING - buffer = rv_data + buffer = rv_data EXCEPTIONS - OTHERS = 1. + OTHERS = 1. ASSERT sy-subrc = 0. ENDMETHOD. " get_inline_asset. diff --git a/src/zabapgit_html.prog.abap b/src/zabapgit_html.prog.abap index 784e91e9f..96009519e 100644 --- a/src/zabapgit_html.prog.abap +++ b/src/zabapgit_html.prog.abap @@ -93,7 +93,7 @@ CLASS lcl_html_helper IMPLEMENTATION. FIND FIRST OCCURRENCE OF '}' IN iv_str MATCH OFFSET lv_close_offs. " Find close } @beginning IF ( mv_within_style > 0 OR mv_within_js > 0 ) - AND sy-subrc = 0 AND lv_close_offs = 0 AND mv_indent > 0. + AND sy-subrc = 0 AND lv_close_offs = 0 AND mv_indent > 0. lv_shift_back = 1. ENDIF. diff --git a/src/zabapgit_migrations.prog.abap b/src/zabapgit_migrations.prog.abap index a8f3f0aa0..1ecd6dae0 100644 --- a/src/zabapgit_migrations.prog.abap +++ b/src/zabapgit_migrations.prog.abap @@ -46,7 +46,7 @@ CLASS lcl_migrations IMPLEMENTATION. " Ignore empty repos or repos with file checksums IF lines( ->get_local_checksums( ) ) = 0 - OR lines( ->get_local_checksums_per_file( ) ) > 0 . + OR lines( ->get_local_checksums_per_file( ) ) > 0. DELETE lt_repos INDEX lv_index. CONTINUE. ENDIF. @@ -61,13 +61,13 @@ CLASS lcl_migrations IMPLEMENTATION. SHIFT lv_repo_list BY 2 PLACES LEFT. " Remove leading ', ' - lv_question = 'abapGit wants to rebuild missing local checksums' - && ' (changes from 2016-12-11).' - && ' Generally this is safe except if there are both local ' - && ' and remote changes at the same time. If unsure, please' - && ' skip and update repos individually' - && ' by "Advances/Update local checksums" command.' - && | Repos affected: { lv_repo_list }|. + lv_question = 'abapGit wants to rebuild missing local checksums' + && ' (changes from 2016-12-11).' + && ' Generally this is safe except if there are both local ' + && ' and remote changes at the same time. If unsure, please' + && ' skip and update repos individually' + && ' by "Advances/Update local checksums" command.' + && | Repos affected: { lv_repo_list }|. lv_answer = lcl_popups=>popup_to_confirm( titlebar = 'Warning' diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 7dec96873..3a9c2e359 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -1114,11 +1114,7 @@ CLASS lcl_object_clas IMPLEMENTATION. METHOD deserialize_sotr. "OTR stands for Online Text Repository DATA: lt_sotr TYPE ty_sotr_tt, - lt_objects TYPE sotr_objects, - ls_paket TYPE sotr_pack, - lv_object LIKE LINE OF lt_objects. - - FIELD-SYMBOLS: LIKE LINE OF lt_sotr. + lt_objects TYPE sotr_objects. io_xml->read( EXPORTING iv_name = 'SOTR' @@ -1155,8 +1151,7 @@ CLASS lcl_object_clas IMPLEMENTATION. METHOD deserialize_tpool. - DATA: lv_cp TYPE program, - lv_clsname TYPE seoclsname, + DATA: lv_clsname TYPE seoclsname, lt_tpool_ext TYPE ty_tpool_tt, lt_tpool TYPE textpool_table. @@ -1279,10 +1274,10 @@ CLASS lcl_object_intf IMPLEMENTATION. CHANGING cg_data = ls_vseointerf ). mo_object_oriented_object->create( - EXPORTING - iv_package = iv_package - CHANGING - is_properties = ls_vseointerf ). + EXPORTING + iv_package = iv_package + CHANGING + is_properties = ls_vseointerf ). mo_object_oriented_object->deserialize_source( is_key = ls_clskey diff --git a/src/zabapgit_object_shi3.prog.abap b/src/zabapgit_object_shi3.prog.abap index d7789e964..382b08bcd 100644 --- a/src/zabapgit_object_shi3.prog.abap +++ b/src/zabapgit_object_shi3.prog.abap @@ -158,6 +158,7 @@ CLASS lcl_object_shi3 IMPLEMENTATION. lt_texts TYPE TABLE OF hier_texts, lt_refs TYPE TABLE OF hier_ref. + CALL FUNCTION 'STREE_STRUCTURE_READ' EXPORTING structure_id = mv_tree_id @@ -167,10 +168,6 @@ CLASS lcl_object_shi3 IMPLEMENTATION. TABLES description = lt_titles. - IF sy-subrc <> 0. - lcx_exception=>raise( 'Error from STREE_STRUCTURE_READ, SHI3' ). - ENDIF. - CALL FUNCTION 'STREE_HIERARCHY_READ' EXPORTING structure_id = mv_tree_id @@ -182,9 +179,6 @@ CLASS lcl_object_shi3 IMPLEMENTATION. list_of_nodes = lt_nodes list_of_references = lt_refs list_of_texts = lt_texts. - IF sy-subrc <> 0. - lcx_exception=>raise( 'Error from STREE_HIERARCHY_READ, SHI3' ). - ENDIF. strip_stamps( CHANGING cs_head = ls_head ct_nodes = lt_nodes ). diff --git a/src/zabapgit_object_tabl_valid.prog.abap b/src/zabapgit_object_tabl_valid.prog.abap index 58d0aa20a..a79812452 100644 --- a/src/zabapgit_object_tabl_valid.prog.abap +++ b/src/zabapgit_object_tabl_valid.prog.abap @@ -187,9 +187,6 @@ CLASS lct_table_validation IMPLEMENTATION. ENDMETHOD. METHOD no_fields_no_message. - DATA: - ls_current_table_field LIKE LINE OF mt_current_table_fields. - create_xmls( ). mv_validation_message = mo_table_validator->validate( @@ -199,7 +196,6 @@ CLASS lct_table_validation IMPLEMENTATION. cl_abap_unit_assert=>assert_initial( mv_validation_message ). ENDMETHOD. - METHOD create_xmls. CREATE OBJECT mo_previous_version_out_xml. mo_previous_version_out_xml->add( @@ -220,6 +216,4 @@ CLASS lct_table_validation IMPLEMENTATION. iv_xml = mo_current_version_out_xml->render( ). ENDMETHOD. - - ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_object_tran.prog.abap b/src/zabapgit_object_tran.prog.abap index 9eba8a64a..9c0b283fc 100644 --- a/src/zabapgit_object_tran.prog.abap +++ b/src/zabapgit_object_tran.prog.abap @@ -243,8 +243,7 @@ CLASS lcl_object_tran IMPLEMENTATION. communication_failure = 2 resource_failure = 3 OTHERS = 4 - ##fm_subrc_ok - . "#EC CI_SUBRC + ##fm_subrc_ok. "#EC CI_SUBRC ENDMETHOD. "jump diff --git a/src/zabapgit_object_wdyn.prog.abap b/src/zabapgit_object_wdyn.prog.abap index 9f2152da2..faef8e810 100644 --- a/src/zabapgit_object_wdyn.prog.abap +++ b/src/zabapgit_object_wdyn.prog.abap @@ -7,129 +7,129 @@ *----------------------------------------------------------------------* * *----------------------------------------------------------------------* -class lcl_object_wdyn definition inheriting from lcl_objects_super final. +CLASS lcl_object_wdyn DEFINITION INHERITING FROM lcl_objects_super FINAL. - public section. - interfaces lif_object. - aliases mo_files for lif_object~mo_files. + PUBLIC SECTION. + INTERFACES lif_object. + ALIASES mo_files FOR lif_object~mo_files. - private section. + PRIVATE SECTION. - data: - mt_components type table of wdy_ctlr_compo_vrs, - mt_sources type table of wdy_ctlr_compo_source_vrs. + DATA: + mt_components TYPE TABLE OF wdy_ctlr_compo_vrs, + mt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs. - methods: + METHODS: get_limu_objects - returning value(rt_objects) type wdy_md_transport_keys, + RETURNING VALUE(rt_objects) TYPE wdy_md_transport_keys, read - returning value(rs_component) type wdy_component_metadata - raising lcx_exception, + RETURNING VALUE(rs_component) TYPE wdy_component_metadata + RAISING lcx_exception, read_controller - importing is_key type wdy_md_controller_key - returning value(rs_controller) type wdy_md_controller_meta_data - raising lcx_exception, + IMPORTING is_key TYPE wdy_md_controller_key + RETURNING VALUE(rs_controller) TYPE wdy_md_controller_meta_data + RAISING lcx_exception, read_definition - importing is_key type wdy_md_component_key - returning value(rs_definition) type wdy_md_component_meta_data - raising lcx_exception, + IMPORTING is_key TYPE wdy_md_component_key + RETURNING VALUE(rs_definition) TYPE wdy_md_component_meta_data + RAISING lcx_exception, read_view - importing is_key type wdy_md_view_key - returning value(rs_view) type wdy_md_view_meta_data - raising lcx_exception, + IMPORTING is_key TYPE wdy_md_view_key + RETURNING VALUE(rs_view) TYPE wdy_md_view_meta_data + RAISING lcx_exception, recover_controller - importing is_controller type wdy_md_controller_meta_data - raising lcx_exception, + IMPORTING is_controller TYPE wdy_md_controller_meta_data + RAISING lcx_exception, recover_definition - importing is_definition type wdy_md_component_meta_data - raising lcx_exception, + IMPORTING is_definition TYPE wdy_md_component_meta_data + RAISING lcx_exception, recover_view - importing is_view type wdy_md_view_meta_data - raising lcx_exception, + IMPORTING is_view TYPE wdy_md_view_meta_data + RAISING lcx_exception, delta_controller - importing is_controller type wdy_md_controller_meta_data - returning value(rs_delta) type svrs2_xversionable_object - raising lcx_exception, + IMPORTING is_controller TYPE wdy_md_controller_meta_data + RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object + RAISING lcx_exception, delta_definition - importing is_definition type wdy_md_component_meta_data - returning value(rs_delta) type svrs2_xversionable_object - raising lcx_exception, + IMPORTING is_definition TYPE wdy_md_component_meta_data + RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object + RAISING lcx_exception, delta_view - importing is_view type wdy_md_view_meta_data - returning value(rs_delta) type svrs2_xversionable_object - raising lcx_exception, + IMPORTING is_view TYPE wdy_md_view_meta_data + RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object + RAISING lcx_exception, add_fm_param_exporting - importing i_name type string - i_value type any - changing ct_param type abap_func_parmbind_tab, + IMPORTING i_name TYPE string + i_value TYPE any + CHANGING ct_param TYPE abap_func_parmbind_tab, add_fm_param_tables - importing i_name type string - changing ct_value type any table - ct_param type abap_func_parmbind_tab, + IMPORTING i_name TYPE string + CHANGING ct_value TYPE ANY TABLE + ct_param TYPE abap_func_parmbind_tab, add_fm_exception - importing i_name type string - i_value type i - changing ct_exception type abap_func_excpbind_tab. + IMPORTING i_name TYPE string + i_value TYPE i + CHANGING ct_exception TYPE abap_func_excpbind_tab. -endclass. "lcl_object_wdyn DEFINITION +ENDCLASS. "lcl_object_wdyn DEFINITION *----------------------------------------------------------------------* * CLASS lcl_object_wdyn IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* -class lcl_object_wdyn implementation. +CLASS lcl_object_wdyn IMPLEMENTATION. - method lif_object~has_changed_since. + METHOD lif_object~has_changed_since. rv_changed = abap_true. - endmethod. "lif_object~has_changed_since + ENDMETHOD. "lif_object~has_changed_since - method lif_object~changed_by. + METHOD lif_object~changed_by. rv_user = c_user_unknown. " todo - endmethod. "lif_object~changed_by + ENDMETHOD. "lif_object~changed_by - method lif_object~get_metadata. + METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). - endmethod. "lif_object~get_metadata + ENDMETHOD. "lif_object~get_metadata - method lif_object~exists. + METHOD lif_object~exists. - data: lv_component_name type wdy_component-component_name. + DATA: lv_component_name TYPE wdy_component-component_name. - select single component_name from wdy_component - into lv_component_name - where component_name = ms_item-obj_name - and version = 'A'. "#EC CI_GENBUFF + SELECT SINGLE component_name FROM wdy_component + INTO lv_component_name + WHERE component_name = ms_item-obj_name + AND version = 'A'. "#EC CI_GENBUFF rv_bool = boolc( sy-subrc = 0 ). - endmethod. "lif_object~exists + ENDMETHOD. "lif_object~exists - method delta_definition. + METHOD delta_definition. - data: ls_key type wdy_md_component_key, - lv_found type abap_bool, - ls_obj_new type svrs2_versionable_object, - li_component type ref to if_wdy_md_component, - ls_obj_old type svrs2_versionable_object. + DATA: ls_key TYPE wdy_md_component_key, + lv_found TYPE abap_bool, + ls_obj_new TYPE svrs2_versionable_object, + li_component TYPE REF TO if_wdy_md_component, + ls_obj_old TYPE svrs2_versionable_object. ls_key-component_name = is_definition-definition-component_name. lv_found = cl_wdy_md_component=>check_existency( ls_key-component_name ). - if lv_found = abap_false. - try. + IF lv_found = abap_false. + TRY. cl_wdy_md_component=>create_complete( - exporting + EXPORTING name = ls_key-component_name - importing + IMPORTING component = li_component ). li_component->save_to_database( ). li_component->unlock( ). - catch cx_wdy_md_exception. + CATCH cx_wdy_md_exception. lcx_exception=>raise( 'error creating dummy component' ). - endtry. - endif. + ENDTRY. + ENDIF. ls_obj_new-objtype = wdyn_limu_component_definition. ls_obj_new-objname = ls_key-component_name. @@ -137,7 +137,7 @@ class lcl_object_wdyn implementation. ls_obj_old-objtype = wdyn_limu_component_definition. ls_obj_old-objname = ls_key-component_name. - append is_definition-definition to ls_obj_old-wdyd-defin. + APPEND is_definition-definition TO ls_obj_old-wdyd-defin. ls_obj_old-wdyd-descr = is_definition-descriptions. ls_obj_old-wdyd-cusag = is_definition-component_usages. ls_obj_old-wdyd-intrf = is_definition-interface_implementings. @@ -145,34 +145,34 @@ class lcl_object_wdyn implementation. ls_obj_old-wdyd-ctuse = is_definition-ext_ctlr_usages. ls_obj_old-wdyd-ctmap = is_definition-ext_ctx_mappings. - call function 'SVRS_MAKE_OBJECT_DELTA' - exporting + CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA' + EXPORTING obj_old = ls_obj_new obj_new = ls_obj_old - changing + CHANGING delta = rs_delta - exceptions + EXCEPTIONS inconsistent_objects = 1. - if sy-subrc <> 0. + IF sy-subrc <> 0. lcx_exception=>raise( 'error from SVRS_MAKE_OBJECT_DELTA' ). - endif. + ENDIF. - endmethod. "delta_definition + ENDMETHOD. "delta_definition - method delta_controller. + METHOD delta_controller. - data: li_controller type ref to if_wdy_md_controller, - lv_found type abap_bool, - ls_key type wdy_md_controller_key, - ls_obj_new type svrs2_versionable_object, - ls_obj_old type svrs2_versionable_object. + DATA: li_controller TYPE REF TO if_wdy_md_controller, + lv_found TYPE abap_bool, + ls_key TYPE wdy_md_controller_key, + ls_obj_new TYPE svrs2_versionable_object, + ls_obj_old TYPE svrs2_versionable_object. - field-symbols: like line of mt_components, - like line of mt_sources, - type any table, - type any table, - type any table, - type any table. + FIELD-SYMBOLS: LIKE LINE OF mt_components, + LIKE LINE OF mt_sources, + TYPE ANY TABLE, + TYPE ANY TABLE, + TYPE ANY TABLE, + TYPE ANY TABLE. ls_key-component_name = is_controller-definition-component_name. @@ -181,18 +181,18 @@ class lcl_object_wdyn implementation. lv_found = cl_wdy_md_controller=>check_existency( component_name = ls_key-component_name controller_name = ls_key-controller_name ). - if lv_found = abap_false. - try. + IF lv_found = abap_false. + TRY. li_controller ?= cl_wdy_md_controller=>create_complete( component_name = ls_key-component_name controller_name = ls_key-controller_name controller_type = is_controller-definition-controller_type ). li_controller->save_to_database( ). li_controller->unlock( ). - catch cx_wdy_md_exception. + CATCH cx_wdy_md_exception. lcx_exception=>raise( 'error creating dummy controller' ). - endtry. - endif. + ENDTRY. + ENDIF. ls_obj_new-objtype = wdyn_limu_component_controller. ls_obj_new-objname = ls_key. @@ -200,18 +200,18 @@ class lcl_object_wdyn implementation. ls_obj_old-objtype = wdyn_limu_component_controller. ls_obj_old-objname = ls_key. - append is_controller-definition to ls_obj_old-wdyc-defin. + APPEND is_controller-definition TO ls_obj_old-wdyc-defin. - loop at mt_components assigning - where component_name = ls_key-component_name - and controller_name = ls_key-controller_name. - append to ls_obj_old-wdyc-ccomp. - endloop. - loop at mt_sources assigning - where component_name = ls_key-component_name - and controller_name = ls_key-controller_name. - append to ls_obj_old-wdyc-ccoms. - endloop. + LOOP AT mt_components ASSIGNING + WHERE component_name = ls_key-component_name + AND controller_name = ls_key-controller_name. + APPEND TO ls_obj_old-wdyc-ccomp. + ENDLOOP. + LOOP AT mt_sources ASSIGNING + WHERE component_name = ls_key-component_name + AND controller_name = ls_key-controller_name. + APPEND TO ls_obj_old-wdyc-ccoms. + ENDLOOP. ls_obj_old-wdyc-descr = is_controller-descriptions. ls_obj_old-wdyc-cusag = is_controller-controller_usages. @@ -223,45 +223,47 @@ class lcl_object_wdyn implementation. ls_obj_old-wdyc-cmapp = is_controller-context_mappings. * Version 702 doesn't have these two attributes so we * use them dynamically for downward compatibility - assign component 'CONTROLLER_EXCEPTIONS' of structure is_controller to . - if sy-subrc = 0. - assign component 'EXCP' of structure ls_obj_old-wdyc to . - if sy-subrc = 0. + ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE is_controller + TO . + IF sy-subrc = 0. + ASSIGN COMPONENT 'EXCP' OF STRUCTURE ls_obj_old-wdyc TO . + IF sy-subrc = 0. = . - endif. - endif. - assign component 'CONTROLLER_EXCEPTIONS_TEXTS' of structure is_controller to . - if sy-subrc = 0. - assign component 'EXCPT' of structure ls_obj_old-wdyc to . - if sy-subrc = 0. + ENDIF. + ENDIF. + ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS_TEXTS' OF STRUCTURE is_controller + TO . + IF sy-subrc = 0. + ASSIGN COMPONENT 'EXCPT' OF STRUCTURE ls_obj_old-wdyc TO . + IF sy-subrc = 0. = . - endif. - endif. + ENDIF. + ENDIF. ls_obj_old-wdyc-fgrps = is_controller-fieldgroups. - call function 'SVRS_MAKE_OBJECT_DELTA' - exporting + CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA' + EXPORTING obj_old = ls_obj_new obj_new = ls_obj_old - changing + CHANGING delta = rs_delta - exceptions + EXCEPTIONS inconsistent_objects = 1. - if sy-subrc <> 0. + IF sy-subrc <> 0. lcx_exception=>raise( 'error from SVRS_MAKE_OBJECT_DELTA' ). - endif. + ENDIF. - endmethod. "delta_controller + ENDMETHOD. "delta_controller - method delta_view. + METHOD delta_view. - data: ls_key type wdy_md_view_key, - ls_obj_new type svrs2_versionable_object, - ls_obj_old type svrs2_versionable_object, - lv_found type abap_bool, - li_view type ref to if_wdy_md_abstract_view. + DATA: ls_key TYPE wdy_md_view_key, + ls_obj_new TYPE svrs2_versionable_object, + ls_obj_old TYPE svrs2_versionable_object, + lv_found TYPE abap_bool, + li_view TYPE REF TO if_wdy_md_abstract_view. - field-symbols: like line of ls_obj_old-wdyv-defin. + FIELD-SYMBOLS: LIKE LINE OF ls_obj_old-wdyv-defin. ls_key-component_name = is_view-definition-component_name. @@ -270,18 +272,18 @@ class lcl_object_wdyn implementation. lv_found = cl_wdy_md_abstract_view=>check_existency( component_name = ls_key-component_name name = ls_key-view_name ). - if lv_found = abap_false. - try. + IF lv_found = abap_false. + TRY. li_view = cl_wdy_md_abstract_view=>create( component_name = is_view-definition-component_name view_name = is_view-definition-view_name type = is_view-definition-type ). li_view->save_to_database( ). li_view->unlock( ). - catch cx_wdy_md_exception. + CATCH cx_wdy_md_exception. lcx_exception=>raise( 'error creating dummy view' ). - endtry. - endif. + ENDTRY. + ENDIF. ls_obj_new-objtype = wdyn_limu_component_view. ls_obj_new-objname = ls_key. @@ -289,8 +291,8 @@ class lcl_object_wdyn implementation. ls_obj_old-objtype = wdyn_limu_component_view. ls_obj_old-objname = ls_key. - append initial line to ls_obj_old-wdyv-defin assigning . - move-corresponding is_view-definition to . + APPEND INITIAL LINE TO ls_obj_old-wdyv-defin ASSIGNING . + MOVE-CORRESPONDING is_view-definition TO . ls_obj_old-wdyv-descr = is_view-descriptions. ls_obj_old-wdyv-vcont = is_view-view_containers. @@ -310,44 +312,44 @@ class lcl_object_wdyn implementation. ls_obj_old-wdyv-vshpl = is_view-vsh_placeholders. ls_obj_old-wdyv-views = is_view-viewset_properties. - call function 'SVRS_MAKE_OBJECT_DELTA' - exporting + CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA' + EXPORTING obj_old = ls_obj_new obj_new = ls_obj_old - changing + CHANGING delta = rs_delta - exceptions + EXCEPTIONS inconsistent_objects = 1. - if sy-subrc <> 0. + IF sy-subrc <> 0. lcx_exception=>raise( 'error from SVRS_MAKE_OBJECT_DELTA' ). - endif. + ENDIF. - endmethod. "delta_view + ENDMETHOD. "delta_view - method recover_definition. + METHOD recover_definition. - data: ls_key type wdy_md_component_key, - lv_corrnr type trkorr, - ls_delta type svrs2_xversionable_object. + DATA: ls_key TYPE wdy_md_component_key, + lv_corrnr TYPE trkorr, + ls_delta TYPE svrs2_xversionable_object. ls_delta = delta_definition( is_definition ). ls_key-component_name = is_definition-definition-component_name. cl_wdy_md_component=>recover_version( - exporting + EXPORTING component_key = ls_key delta = ls_delta-wdyd - changing + CHANGING corrnr = lv_corrnr ). - endmethod. "recover_definition + ENDMETHOD. "recover_definition - method recover_controller. + METHOD recover_controller. - data: ls_key type wdy_controller_key, - lv_corrnr type trkorr, - ls_delta type svrs2_xversionable_object. + DATA: ls_key TYPE wdy_controller_key, + lv_corrnr TYPE trkorr, + ls_delta TYPE svrs2_xversionable_object. ls_delta = delta_controller( is_controller ). @@ -355,19 +357,19 @@ class lcl_object_wdyn implementation. ls_key-controller_name = is_controller-definition-controller_name. cl_wdy_md_controller=>recover_version( - exporting + EXPORTING controller_key = ls_key delta = ls_delta-wdyc - changing + CHANGING corrnr = lv_corrnr ). - endmethod. "recover_controller + ENDMETHOD. "recover_controller - method recover_view. + METHOD recover_view. - data: ls_key type wdy_md_view_key, - lv_corrnr type trkorr, - ls_delta type svrs2_xversionable_object. + DATA: ls_key TYPE wdy_md_view_key, + lv_corrnr TYPE trkorr, + ls_delta TYPE svrs2_xversionable_object. ls_delta = delta_view( is_view ). @@ -375,137 +377,137 @@ class lcl_object_wdyn implementation. ls_key-view_name = is_view-definition-view_name. cl_wdy_md_abstract_view=>recover_version( - exporting + EXPORTING view_key = ls_key delta = ls_delta-wdyv - changing + CHANGING corrnr = lv_corrnr ). - endmethod. "recover_view + ENDMETHOD. "recover_view - method read_controller. + METHOD read_controller. - data: lt_components type table of wdy_ctlr_compo_vrs, - lt_sources type table of wdy_ctlr_compo_source_vrs, - lt_definition type table of wdy_controller, - lt_psmodilog type table of smodilog, - lt_psmodisrc type table of smodisrc, - lt_fm_param type abap_func_parmbind_tab, - lt_fm_exception type abap_func_excpbind_tab. + DATA: lt_components TYPE TABLE OF wdy_ctlr_compo_vrs, + lt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs, + lt_definition TYPE TABLE OF wdy_controller, + lt_psmodilog TYPE TABLE OF smodilog, + lt_psmodisrc TYPE TABLE OF smodisrc, + lt_fm_param TYPE abap_func_parmbind_tab, + lt_fm_exception TYPE abap_func_excpbind_tab. - field-symbols: type any table, - type any table. + FIELD-SYMBOLS: TYPE ANY TABLE, + TYPE ANY TABLE. * Calling FM dynamically because version 702 has less parameters * FM parameters - add_fm_param_exporting( exporting i_name = 'CONTROLLER_KEY' + add_fm_param_exporting( EXPORTING i_name = 'CONTROLLER_KEY' i_value = is_key - changing ct_param = lt_fm_param ). - add_fm_param_exporting( exporting i_name = 'GET_ALL_TRANSLATIONS' + CHANGING ct_param = lt_fm_param ). + add_fm_param_exporting( EXPORTING i_name = 'GET_ALL_TRANSLATIONS' i_value = abap_false - changing ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'DEFINITION' - changing ct_value = lt_definition + CHANGING ct_param = lt_fm_param ). + add_fm_param_tables( EXPORTING i_name = 'DEFINITION' + CHANGING ct_value = lt_definition ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'DESCRIPTIONS' - changing ct_value = rs_controller-descriptions + add_fm_param_tables( EXPORTING i_name = 'DESCRIPTIONS' + CHANGING ct_value = rs_controller-descriptions ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTROLLER_USAGES' - changing ct_value = rs_controller-controller_usages + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_USAGES' + CHANGING ct_value = rs_controller-controller_usages ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTROLLER_COMPONENTS' - changing ct_value = lt_components + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_COMPONENTS' + CHANGING ct_value = lt_components ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTROLLER_COMPONENT_SOURCES' - changing ct_value = lt_sources + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_COMPONENT_SOURCES' + CHANGING ct_value = lt_sources ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTROLLER_COMPONENT_TEXTS' - changing ct_value = rs_controller-controller_component_texts + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_COMPONENT_TEXTS' + CHANGING ct_value = rs_controller-controller_component_texts ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTROLLER_PARAMETERS' - changing ct_value = rs_controller-controller_parameters + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_PARAMETERS' + CHANGING ct_value = rs_controller-controller_parameters ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTROLLER_PARAMETER_TEXTS' - changing ct_value = rs_controller-controller_parameter_texts + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_PARAMETER_TEXTS' + CHANGING ct_value = rs_controller-controller_parameter_texts ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTEXT_NODES' - changing ct_value = rs_controller-context_nodes + add_fm_param_tables( EXPORTING i_name = 'CONTEXT_NODES' + CHANGING ct_value = rs_controller-context_nodes ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTEXT_ATTRIBUTES' - changing ct_value = rs_controller-context_attributes + add_fm_param_tables( EXPORTING i_name = 'CONTEXT_ATTRIBUTES' + CHANGING ct_value = rs_controller-context_attributes ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'CONTEXT_MAPPINGS' - changing ct_value = rs_controller-context_mappings + add_fm_param_tables( EXPORTING i_name = 'CONTEXT_MAPPINGS' + CHANGING ct_value = rs_controller-context_mappings ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'FIELDGROUPS' - changing ct_value = rs_controller-fieldgroups + add_fm_param_tables( EXPORTING i_name = 'FIELDGROUPS' + CHANGING ct_value = rs_controller-fieldgroups ct_param = lt_fm_param ). * Version 702 doesn't have these two attributes so we * use them dynamically for downward compatibility - assign component 'CONTROLLER_EXCEPTIONS' of structure rs_controller to . - if sy-subrc = 0. - add_fm_param_tables( exporting i_name = 'CONTROLLER_EXCEPTIONS' - changing ct_value = + ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE rs_controller TO . + IF sy-subrc = 0. + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_EXCEPTIONS' + CHANGING ct_value = ct_param = lt_fm_param ). - endif. - assign component 'CONTROLLER_EXCEPTION_TEXTS' of structure rs_controller to . - if sy-subrc = 0. - add_fm_param_tables( exporting i_name = 'CONTROLLER_EXCEPTION_TEXTS' - changing ct_value = + ENDIF. + ASSIGN COMPONENT 'CONTROLLER_EXCEPTION_TEXTS' OF STRUCTURE rs_controller TO . + IF sy-subrc = 0. + add_fm_param_tables( EXPORTING i_name = 'CONTROLLER_EXCEPTION_TEXTS' + CHANGING ct_value = ct_param = lt_fm_param ). - endif. - add_fm_param_tables( exporting i_name = 'PSMODILOG' - changing ct_value = lt_psmodilog + ENDIF. + add_fm_param_tables( EXPORTING i_name = 'PSMODILOG' + CHANGING ct_value = lt_psmodilog ct_param = lt_fm_param ). - add_fm_param_tables( exporting i_name = 'PSMODISRC' - changing ct_value = lt_psmodisrc + add_fm_param_tables( EXPORTING i_name = 'PSMODISRC' + CHANGING ct_value = lt_psmodisrc ct_param = lt_fm_param ). * FM exceptions - add_fm_exception( exporting i_name = 'NOT_EXISTING' + add_fm_exception( EXPORTING i_name = 'NOT_EXISTING' i_value = 1 - changing ct_exception = lt_fm_exception ). - add_fm_exception( exporting i_name = 'OTHERS' + CHANGING ct_exception = lt_fm_exception ). + add_fm_exception( EXPORTING i_name = 'OTHERS' i_value = 2 - changing ct_exception = lt_fm_exception ). + CHANGING ct_exception = lt_fm_exception ). - call function 'WDYC_GET_OBJECT' - parameter-table + CALL FUNCTION 'WDYC_GET_OBJECT' + PARAMETER-TABLE lt_fm_param - exception-table + EXCEPTION-TABLE lt_fm_exception. - if sy-subrc <> 0. + IF sy-subrc <> 0. lcx_exception=>raise( 'error from WDYC_GET_OBJECT' ). - endif. + ENDIF. - append lines of lt_components to mt_components. - append lines of lt_sources to mt_sources. + APPEND LINES OF lt_components TO mt_components. + APPEND LINES OF lt_sources TO mt_sources. - read table lt_definition index 1 into rs_controller-definition. - if sy-subrc <> 0. + READ TABLE lt_definition INDEX 1 INTO rs_controller-definition. + IF sy-subrc <> 0. lcx_exception=>raise( 'WDYC, definition not found' ). - endif. + ENDIF. - clear: rs_controller-definition-author, + CLEAR: rs_controller-definition-author, rs_controller-definition-createdon, rs_controller-definition-changedby, rs_controller-definition-changedon. - endmethod. "read_controller + ENDMETHOD. "read_controller - method read_definition. + METHOD read_definition. - data: lt_definition type table of wdy_component, - lt_psmodilog type table of smodilog, - lt_psmodisrc type table of smodisrc. + DATA: lt_definition TYPE TABLE OF wdy_component, + lt_psmodilog TYPE TABLE OF smodilog, + lt_psmodisrc TYPE TABLE OF smodisrc. - call function 'WDYD_GET_OBJECT' - exporting + CALL FUNCTION 'WDYD_GET_OBJECT' + EXPORTING component_key = is_key get_all_translations = abap_false - tables + TABLES definition = lt_definition descriptions = rs_definition-descriptions component_usages = rs_definition-component_usages @@ -515,43 +517,43 @@ class lcl_object_wdyn implementation. ext_ctx_mappings = rs_definition-ext_ctx_mappings psmodilog = lt_psmodilog " not optional in all versions psmodisrc = lt_psmodisrc " not optional in all versions - exceptions + EXCEPTIONS not_existing = 1 - others = 2. - if sy-subrc = 1. - return. - elseif sy-subrc <> 0. + OTHERS = 2. + IF sy-subrc = 1. + RETURN. + ELSEIF sy-subrc <> 0. lcx_exception=>raise( 'error from WDYD_GET_OBJECT' ). - endif. + ENDIF. - read table lt_definition index 1 into rs_definition-definition. - if sy-subrc <> 0. + READ TABLE lt_definition INDEX 1 INTO rs_definition-definition. + IF sy-subrc <> 0. lcx_exception=>raise( 'WDYD, definition not found' ). - endif. + ENDIF. - clear: rs_definition-definition-author, + CLEAR: rs_definition-definition-author, rs_definition-definition-createdon, rs_definition-definition-changedby, rs_definition-definition-changedon, rs_definition-definition-gendate, rs_definition-definition-gentime. - endmethod. "read_definition + ENDMETHOD. "read_definition - method read_view. + METHOD read_view. - data: lt_definition type table of wdy_view_vrs, - lt_psmodilog type table of smodilog, - lt_psmodisrc type table of smodisrc. + DATA: lt_definition TYPE TABLE OF wdy_view_vrs, + lt_psmodilog TYPE TABLE OF smodilog, + lt_psmodisrc TYPE TABLE OF smodisrc. - field-symbols: like line of lt_definition. + FIELD-SYMBOLS: LIKE LINE OF lt_definition. - call function 'WDYV_GET_OBJECT' - exporting + CALL FUNCTION 'WDYV_GET_OBJECT' + EXPORTING view_key = is_key get_all_translations = abap_false - tables + TABLES definition = lt_definition descriptions = rs_view-descriptions view_containers = rs_view-view_containers @@ -572,149 +574,149 @@ class lcl_object_wdyn implementation. viewset_properties = rs_view-viewset_properties psmodilog = lt_psmodilog psmodisrc = lt_psmodisrc - exceptions + EXCEPTIONS not_existing = 1 - others = 2. - if sy-subrc <> 0. + OTHERS = 2. + IF sy-subrc <> 0. lcx_exception=>raise( 'error from WDYV_GET_OBJECT' ). - endif. + ENDIF. - read table lt_definition index 1 assigning . - assert sy-subrc = 0. - move-corresponding to rs_view-definition. + READ TABLE lt_definition INDEX 1 ASSIGNING . + ASSERT sy-subrc = 0. + MOVE-CORRESPONDING TO rs_view-definition. - clear: rs_view-definition-author, + CLEAR: rs_view-definition-author, rs_view-definition-createdon, rs_view-definition-changedby, rs_view-definition-changedon. - endmethod. "read_view + ENDMETHOD. "read_view - method get_limu_objects. + METHOD get_limu_objects. - data: lv_name type wdy_component_name. + DATA: lv_name TYPE wdy_component_name. lv_name = ms_item-obj_name. - call function 'WDYN_GET_LIMU_OBJECTS' - exporting + CALL FUNCTION 'WDYN_GET_LIMU_OBJECTS' + EXPORTING component_name = lv_name - importing + IMPORTING limu_objects = rt_objects. - endmethod. "get_limu_objects + ENDMETHOD. "get_limu_objects - method read. + METHOD read. - data: lt_objects type wdy_md_transport_keys, - ls_controller_key type wdy_md_controller_key, - ls_component_key type wdy_md_component_key, - ls_view_key type wdy_md_view_key. + DATA: lt_objects TYPE wdy_md_transport_keys, + ls_controller_key TYPE wdy_md_controller_key, + ls_component_key TYPE wdy_md_component_key, + ls_view_key TYPE wdy_md_view_key. - field-symbols: like line of lt_objects, - like line of rs_component-ctlr_metadata, - type any table, - type any table. + FIELD-SYMBOLS: LIKE LINE OF lt_objects, + LIKE LINE OF rs_component-ctlr_metadata, + TYPE ANY TABLE, + TYPE ANY TABLE. - clear mt_components. - clear mt_sources. + CLEAR mt_components. + CLEAR mt_sources. lt_objects = get_limu_objects( ). - loop at lt_objects assigning . - case -sub_type. - when wdyn_limu_component_controller. + LOOP AT lt_objects ASSIGNING . + CASE -sub_type. + WHEN wdyn_limu_component_controller. ls_controller_key = -sub_name. - append read_controller( ls_controller_key ) to rs_component-ctlr_metadata. - when wdyn_limu_component_definition. + APPEND read_controller( ls_controller_key ) TO rs_component-ctlr_metadata. + WHEN wdyn_limu_component_definition. ls_component_key = -sub_name. rs_component-comp_metadata = read_definition( ls_component_key ). - when wdyn_limu_component_view. + WHEN wdyn_limu_component_view. ls_view_key = -sub_name. - append read_view( ls_view_key ) to rs_component-view_metadata. - when others. - assert 0 = 1. - endcase. - endloop. + APPEND read_view( ls_view_key ) TO rs_component-view_metadata. + WHEN OTHERS. + ASSERT 0 = 1. + ENDCASE. + ENDLOOP. - sort rs_component-ctlr_metadata by - definition-component_name ascending - definition-controller_name ascending. + SORT rs_component-ctlr_metadata BY + definition-component_name ASCENDING + definition-controller_name ASCENDING. - loop at rs_component-ctlr_metadata assigning . - sort -descriptions. - sort -controller_usages. - sort -controller_components. - sort -controller_component_texts. - sort -controller_parameters. - sort -controller_parameter_texts. - sort -context_nodes. - sort -context_attributes. - sort -context_mappings. - sort -fieldgroups. + LOOP AT rs_component-ctlr_metadata ASSIGNING . + SORT -descriptions. + SORT -controller_usages. + SORT -controller_components. + SORT -controller_component_texts. + SORT -controller_parameters. + SORT -controller_parameter_texts. + SORT -context_nodes. + SORT -context_attributes. + SORT -context_mappings. + SORT -fieldgroups. * Version 702 doesn't have these two attributes so we * use them dynamically for downward compatibility - assign component 'CONTROLLER_EXCEPTIONS' of structure to . - if sy-subrc = 0. - sort . - endif. - assign component 'CONTROLLER_EXCEPTION_TEXTS' of structure to . - if sy-subrc = 0. - sort . - endif. - endloop. + ASSIGN COMPONENT 'CONTROLLER_EXCEPTIONS' OF STRUCTURE TO . + IF sy-subrc = 0. + SORT . + ENDIF. + ASSIGN COMPONENT 'CONTROLLER_EXCEPTION_TEXTS' OF STRUCTURE TO . + IF sy-subrc = 0. + SORT . + ENDIF. + ENDLOOP. - sort mt_components by - component_name ascending - controller_name ascending - cmpname ascending. + SORT mt_components BY + component_name ASCENDING + controller_name ASCENDING + cmpname ASCENDING. - sort mt_sources by - component_name ascending - controller_name ascending - cmpname ascending - line_number ascending. + SORT mt_sources BY + component_name ASCENDING + controller_name ASCENDING + cmpname ASCENDING + line_number ASCENDING. - endmethod. "read + ENDMETHOD. "read - method add_fm_param_exporting. + METHOD add_fm_param_exporting. - data: ls_param like line of ct_param. + DATA: ls_param LIKE LINE OF ct_param. ls_param-kind = abap_func_exporting. ls_param-name = i_name. - get reference of i_value into ls_param-value. + GET REFERENCE OF i_value INTO ls_param-value. - insert ls_param into table ct_param. + INSERT ls_param INTO TABLE ct_param. - endmethod. "add_fm_param_exporting + ENDMETHOD. "add_fm_param_exporting - method add_fm_param_tables. + METHOD add_fm_param_tables. - data: ls_param like line of ct_param. + DATA: ls_param LIKE LINE OF ct_param. ls_param-kind = abap_func_tables. ls_param-name = i_name. - get reference of ct_value into ls_param-value. + GET REFERENCE OF ct_value INTO ls_param-value. - insert ls_param into table ct_param. + INSERT ls_param INTO TABLE ct_param. - endmethod. "add_fm_param_tables + ENDMETHOD. "add_fm_param_tables - method add_fm_exception. + METHOD add_fm_exception. - data: ls_exception like line of ct_exception. + DATA: ls_exception LIKE LINE OF ct_exception. ls_exception-name = i_name. ls_exception-value = i_value. - insert ls_exception into table ct_exception. + INSERT ls_exception INTO TABLE ct_exception. - endmethod. "add_fm_exception + ENDMETHOD. "add_fm_exception - method lif_object~serialize. + METHOD lif_object~serialize. - data: ls_component type wdy_component_metadata. + DATA: ls_component TYPE wdy_component_metadata. ls_component = read( ). @@ -726,55 +728,55 @@ class lcl_object_wdyn implementation. io_xml->add( ig_data = mt_sources iv_name = 'SOURCES' ). - endmethod. "serialize + ENDMETHOD. "serialize - method lif_object~deserialize. + METHOD lif_object~deserialize. - data: ls_component type wdy_component_metadata. + DATA: ls_component TYPE wdy_component_metadata. - field-symbols: like line of ls_component-view_metadata, - like line of ls_component-ctlr_metadata. + FIELD-SYMBOLS: LIKE LINE OF ls_component-view_metadata, + LIKE LINE OF ls_component-ctlr_metadata. - io_xml->read( exporting iv_name = 'COMPONENT' - changing cg_data = ls_component ). - io_xml->read( exporting iv_name = 'COMPONENTS' - changing cg_data = mt_components ). - io_xml->read( exporting iv_name = 'SOURCES' - changing cg_data = mt_sources ). + io_xml->read( EXPORTING iv_name = 'COMPONENT' + CHANGING cg_data = ls_component ). + io_xml->read( EXPORTING iv_name = 'COMPONENTS' + CHANGING cg_data = mt_components ). + io_xml->read( EXPORTING iv_name = 'SOURCES' + CHANGING cg_data = mt_sources ). ls_component-comp_metadata-definition-author = sy-uname. ls_component-comp_metadata-definition-createdon = sy-datum. recover_definition( ls_component-comp_metadata ). - loop at ls_component-ctlr_metadata assigning . + LOOP AT ls_component-ctlr_metadata ASSIGNING . -definition-author = sy-uname. -definition-createdon = sy-datum. recover_controller( ). - endloop. - loop at ls_component-view_metadata assigning . + ENDLOOP. + LOOP AT ls_component-view_metadata ASSIGNING . -definition-author = sy-uname. -definition-createdon = sy-datum. recover_view( ). - endloop. + ENDLOOP. lcl_objects_activation=>add_item( ms_item ). - endmethod. "deserialize + ENDMETHOD. "deserialize - method lif_object~delete. + METHOD lif_object~delete. - data: lo_component type ref to cl_wdy_wb_component, - lo_request type ref to cl_wb_request, - li_state type ref to if_wb_program_state, - lv_object_name type seu_objkey. + DATA: lo_component TYPE REF TO cl_wdy_wb_component, + lo_request TYPE REF TO cl_wb_request, + li_state TYPE REF TO if_wb_program_state, + lv_object_name TYPE seu_objkey. - create object lo_component. + CREATE OBJECT lo_component. lv_object_name = ms_item-obj_name. - create object lo_request - exporting + CREATE OBJECT lo_request + EXPORTING p_object_type = 'YC' p_object_name = lv_object_name p_operation = swbm_c_op_delete_no_dialog. @@ -783,21 +785,21 @@ class lcl_object_wdyn implementation. p_wb_request = lo_request p_wb_program_state = li_state ). - endmethod. "delete + ENDMETHOD. "delete - method lif_object~jump. + METHOD lif_object~jump. - call function 'RS_TOOL_ACCESS' - exporting + CALL FUNCTION 'RS_TOOL_ACCESS' + EXPORTING operation = 'SHOW' object_name = ms_item-obj_name object_type = ms_item-obj_type in_new_window = abap_true. - endmethod. "jump + ENDMETHOD. "jump - method lif_object~compare_to_remote_version. - create object ro_comparison_result type lcl_null_comparison_result. - endmethod. "lif_object~compare_to_remote_version + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. + ENDMETHOD. "lif_object~compare_to_remote_version -endclass. "lcl_object_wdyn IMPLEMENTATION \ No newline at end of file +ENDCLASS. "lcl_object_wdyn IMPLEMENTATION \ No newline at end of file diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 6ac06cf57..b7a282a24 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -187,7 +187,7 @@ ENDCLASS. "lcl_objects_activation IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* -CLASS lcl_objects_files DEFINITION . +CLASS lcl_objects_files DEFINITION. PUBLIC SECTION. METHODS: @@ -1705,9 +1705,9 @@ 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. +* CLASS-METHODS is_language_installed +* IMPORTING iv_language TYPE langu +* RETURNING VALUE(rv_yes) TYPE abap_bool. PRIVATE SECTION. @@ -1747,7 +1747,6 @@ CLASS lcl_objects DEFINITION FINAL. RAISING lcx_exception. CLASS-METHODS warning_overwrite - IMPORTING io_repo TYPE REF TO lcl_repo CHANGING ct_results TYPE ty_results_tt RAISING lcx_exception. diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index c90be83ba..f8bd9fe2f 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -207,17 +207,17 @@ 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 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. @@ -616,8 +616,7 @@ CLASS lcl_objects IMPLEMENTATION. lt_results = prioritize_deser( lt_results ). - warning_overwrite( EXPORTING io_repo = io_repo - CHANGING ct_results = lt_results ). + warning_overwrite( CHANGING ct_results = lt_results ). LOOP AT lt_results ASSIGNING WHERE obj_type IS NOT INITIAL AND NOT ( lstate = gc_state-added AND rstate IS INITIAL ). @@ -656,9 +655,9 @@ CLASS lcl_objects IMPLEMENTATION. is_metadata = lo_xml->get_metadata( ) ). compare_remote_to_local( - io_object = li_obj - it_remote = lt_remote - is_result = ). + io_object = li_obj + it_remote = lt_remote + is_result = ). li_obj->mo_files = lo_files. diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 0f5d31f6f..49068e805 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -53,7 +53,6 @@ CLASS lcl_gui_page_super DEFINITION ABSTRACT. RAISING lcx_exception. METHODS header - IMPORTING io_include_style TYPE REF TO lcl_html_helper OPTIONAL RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS footer diff --git a/src/zabapgit_page_debug.prog.abap b/src/zabapgit_page_debug.prog.abap index e7bd0446a..9900f333a 100644 --- a/src/zabapgit_page_debug.prog.abap +++ b/src/zabapgit_page_debug.prog.abap @@ -8,11 +8,11 @@ CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super PRIVATE SECTION. METHODS scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS render_debug_info - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS render_supported_object_types - RETURNING VALUE(rv_html) TYPE string. + RETURNING VALUE(rv_html) TYPE string. ENDCLASS. "lcl_gui_page_debuginfo @@ -69,7 +69,7 @@ CLASS lcl_gui_page_debuginfo IMPLEMENTATION. TABLES wt_object_text = lt_objects EXCEPTIONS - OTHERS = 1. + OTHERS = 1 ##FM_SUBRC_OK. LOOP AT lt_objects ASSIGNING WHERE pgmid = 'R3TR'. ls_item-obj_type = -object. diff --git a/src/zabapgit_page_diff.prog.abap b/src/zabapgit_page_diff.prog.abap index 79ed392c0..1d3715ac7 100644 --- a/src/zabapgit_page_diff.prog.abap +++ b/src/zabapgit_page_diff.prog.abap @@ -93,10 +93,9 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ELSEIF is_object IS NOT INITIAL. " Diff for whole object LOOP AT lt_status ASSIGNING - WHERE obj_type = is_object-obj_type - AND obj_name = is_object-obj_name - AND match IS INITIAL. - + WHERE obj_type = is_object-obj_type + AND obj_name = is_object-obj_name + AND match IS INITIAL. append_diff( it_remote = lt_remote it_local = lt_local is_status = ). diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 7ab201350..f7bf81023 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -137,14 +137,12 @@ CLASS lcl_gui_page_main IMPLEMENTATION. IF lines( lt_repos ) = 0 AND lx_error IS INITIAL. ro_html->add( render_explore( ) ). + ELSEIF mv_show IS INITIAL. + CREATE OBJECT lo_tutorial. + ro_html->add( lo_tutorial->lif_gui_page~render( ) ). ELSE. - IF mv_show IS INITIAL. - CREATE OBJECT lo_tutorial. - ro_html->add( lo_tutorial->lif_gui_page~render( ) ). - ELSE. - lo_repo = lcl_app=>repo_srv( )->get( mv_show ). - ro_html->add( render_repo( lo_repo ) ). - ENDIF. + lo_repo = lcl_app=>repo_srv( )->get( mv_show ). + ro_html->add( render_repo( lo_repo ) ). ENDIF. ro_html->add( footer( ) ). diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index dfd246b72..d5498f8c0 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -1432,14 +1432,12 @@ CLASS lcl_settings DEFINITION FINAL. METHODS get_run_critical_tests RETURNING VALUE(rv_run) TYPE abap_bool. - PROTECTED SECTION. PRIVATE SECTION. DATA mv_proxy_url TYPE string. DATA mv_proxy_port TYPE string. DATA mv_run_critical_tests TYPE abap_bool. - ENDCLASS. CLASS lcl_settings IMPLEMENTATION. @@ -1484,10 +1482,6 @@ CLASS lcl_persistence_settings DEFINITION FINAL. RETURNING VALUE(ro_settings) TYPE REF TO lcl_settings. - PROTECTED SECTION. - - PRIVATE SECTION. - ENDCLASS. CLASS lcl_persistence_settings IMPLEMENTATION. @@ -1520,8 +1514,7 @@ CLASS lcl_persistence_settings IMPLEMENTATION. ro_settings->set_proxy_url( lcl_app=>db( )->read( iv_type = 'SETTINGS' - iv_value = 'PROXY_URL' - ) ). + iv_value = 'PROXY_URL' ) ). CATCH lcx_not_found. ro_settings->set_proxy_url( '' ). ENDTRY. @@ -1529,8 +1522,7 @@ CLASS lcl_persistence_settings IMPLEMENTATION. ro_settings->set_proxy_port( lcl_app=>db( )->read( iv_type = 'SETTINGS' - iv_value = 'PROXY_PORT' - ) ). + iv_value = 'PROXY_PORT' ) ). CATCH lcx_not_found. ro_settings->set_proxy_port( '' ). ENDTRY. diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 4953a8fa1..364f8a55b 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -549,8 +549,9 @@ CLASS lcl_repo IMPLEMENTATION. WITH KEY item = ls_item. " type+name+package key " There is something in cache and the object is unchanged IF sy-subrc = 0 - AND abap_false = lcl_objects=>has_changed_since( is_item = ls_item - iv_timestamp = mv_last_serialization ). + AND abap_false = lcl_objects=>has_changed_since( + is_item = ls_item + iv_timestamp = mv_last_serialization ). LOOP AT lt_cache ASSIGNING WHERE item = ls_item. APPEND TO rt_files. ENDLOOP. diff --git a/src/zabapgit_sap_package.prog.abap b/src/zabapgit_sap_package.prog.abap index f9c214669..d9a0ad838 100644 --- a/src/zabapgit_sap_package.prog.abap +++ b/src/zabapgit_sap_package.prog.abap @@ -117,7 +117,8 @@ CLASS lcl_sap_package IMPLEMENTATION. SORT lt_res_sort BY obj_type ASCENDING obj_name ASCENDING. LOOP AT it_results ASSIGNING WHERE NOT obj_type IS INITIAL. - IF NOT ( -obj_type = ls_item-obj_type AND -obj_name = ls_item-obj_name ). + IF NOT ( -obj_type = ls_item-obj_type + AND -obj_name = ls_item-obj_name ). APPEND INITIAL LINE TO lt_item_idx ASSIGNING . -obj_type = -obj_type. -obj_name = -obj_name. diff --git a/src/zabapgit_services_abapgit.prog.abap b/src/zabapgit_services_abapgit.prog.abap index 00e8dd053..94f76577f 100644 --- a/src/zabapgit_services_abapgit.prog.abap +++ b/src/zabapgit_services_abapgit.prog.abap @@ -5,12 +5,18 @@ CLASS lcl_services_abapgit DEFINITION FINAL. PUBLIC SECTION. - CONSTANTS c_abapgit_homepage TYPE string VALUE 'http://www.abapgit.org' ##NO_TEXT. - CONSTANTS c_abapgit_wikipage TYPE string VALUE 'https://github.com/larshp/abapGit/wiki'. - CONSTANTS c_package_abapgit TYPE devclass VALUE '$ABAPGIT'. - CONSTANTS c_package_plugins TYPE devclass VALUE '$ABAPGIT_PLUGINS'. - CONSTANTS c_abapgit_url TYPE string VALUE 'https://github.com/larshp/abapGit.git'. - CONSTANTS c_plugins_url TYPE string VALUE 'https://github.com/larshp/abapGit-plugins.git'. + CONSTANTS c_abapgit_homepage TYPE string + VALUE 'http://www.abapgit.org' ##NO_TEXT. + CONSTANTS c_abapgit_wikipage TYPE string + VALUE 'https://github.com/larshp/abapGit/wiki'. + CONSTANTS c_package_abapgit TYPE devclass + VALUE '$ABAPGIT'. + CONSTANTS c_package_plugins TYPE devclass + VALUE '$ABAPGIT_PLUGINS'. + CONSTANTS c_abapgit_url TYPE string + VALUE 'https://github.com/larshp/abapGit.git'. + CONSTANTS c_plugins_url TYPE string + VALUE 'https://github.com/larshp/abapGit-plugins.git'. CLASS-METHODS open_abapgit_homepage RAISING lcx_exception. diff --git a/src/zabapgit_services_db.prog.abap b/src/zabapgit_services_db.prog.abap index 502afec72..e32884e55 100644 --- a/src/zabapgit_services_db.prog.abap +++ b/src/zabapgit_services_db.prog.abap @@ -32,8 +32,7 @@ CLASS lcl_services_db IMPLEMENTATION. text_button_2 = 'Cancel' icon_button_2 = 'ICON_CANCEL' default_button = '2' - display_cancel_button = abap_false - ). "#EC NOTEXT + display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '2'. RAISE EXCEPTION TYPE lcx_cancel. diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index cc24467b2..ee3d03d13 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -34,9 +34,9 @@ CLASS lcl_services_git DEFINITION FINAL. RAISING lcx_exception lcx_cancel. CLASS-METHODS commit - IMPORTING io_repo TYPE REF TO lcl_repo_online - is_commit TYPE ty_commit_fields - io_stage TYPE REF TO lcl_stage + IMPORTING io_repo TYPE REF TO lcl_repo_online + is_commit TYPE ty_commit_fields + io_stage TYPE REF TO lcl_stage RAISING lcx_exception lcx_cancel. ENDCLASS. " lcl_services_git @@ -63,8 +63,7 @@ CLASS lcl_services_git IMPLEMENTATION. text_button_2 = 'Cancel' icon_button_2 = 'ICON_CANCEL' default_button = '2' - display_cancel_button = abap_false - ). "#EC NOTEXT + display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '2'. RAISE EXCEPTION TYPE lcx_cancel. @@ -124,7 +123,7 @@ CLASS lcl_services_git IMPLEMENTATION. METHOD switch_branch. - DATA: lo_repo TYPE REF TO lcl_repo_online, + DATA: lo_repo TYPE REF TO lcl_repo_online, ls_branch TYPE lcl_git_branch_list=>ty_git_branch. diff --git a/src/zabapgit_services_repo.prog.abap b/src/zabapgit_services_repo.prog.abap index 2c9863854..59e9157a3 100644 --- a/src/zabapgit_services_repo.prog.abap +++ b/src/zabapgit_services_repo.prog.abap @@ -21,7 +21,7 @@ CLASS lcl_services_repo DEFINITION FINAL. RAISING lcx_exception lcx_cancel. CLASS-METHODS new_offline - RAISING lcx_exception lcx_cancel. + RAISING lcx_exception lcx_cancel. CLASS-METHODS remote_attach IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key @@ -53,7 +53,7 @@ CLASS lcl_services_repo IMPLEMENTATION. METHOD clone. - DATA: lo_repo TYPE REF TO lcl_repo_online, + DATA: lo_repo TYPE REF TO lcl_repo_online, ls_popup TYPE lcl_popups=>ty_popup. @@ -105,8 +105,7 @@ CLASS lcl_services_repo IMPLEMENTATION. text_button_2 = 'Cancel' icon_button_2 = 'ICON_CANCEL' default_button = '2' - display_cancel_button = abap_false - ). "#EC NOTEXT + display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '2'. RAISE EXCEPTION TYPE lcx_cancel. @@ -149,8 +148,7 @@ CLASS lcl_services_repo IMPLEMENTATION. text_button_2 = 'Cancel' icon_button_2 = 'ICON_CANCEL' default_button = '2' - display_cancel_button = abap_false - ). "#EC NOTEXT + display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '2'. RAISE EXCEPTION TYPE lcx_cancel. @@ -199,8 +197,7 @@ CLASS lcl_services_repo IMPLEMENTATION. text_button_2 = 'Cancel' icon_button_2 = 'ICON_CANCEL' default_button = '2' - display_cancel_button = abap_false - ). "#EC NOTEXT + display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '2'. RAISE EXCEPTION TYPE lcx_cancel. @@ -215,8 +212,8 @@ CLASS lcl_services_repo IMPLEMENTATION. METHOD remote_attach. - DATA: ls_popup TYPE lcl_popups=>ty_popup, - lo_repo TYPE REF TO lcl_repo_online. + DATA: ls_popup TYPE lcl_popups=>ty_popup, + lo_repo TYPE REF TO lcl_repo_online. ls_popup = lcl_popups=>repo_popup( iv_title = 'Attach repo to remote ...' @@ -239,8 +236,8 @@ CLASS lcl_services_repo IMPLEMENTATION. METHOD remote_change. - DATA: ls_popup TYPE lcl_popups=>ty_popup, - lo_repo TYPE REF TO lcl_repo_online. + DATA: ls_popup TYPE lcl_popups=>ty_popup, + lo_repo TYPE REF TO lcl_repo_online. lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). @@ -267,7 +264,8 @@ CLASS lcl_services_repo IMPLEMENTATION. lv_question TYPE string, lo_repo TYPE REF TO lcl_repo. - lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). + + lo_repo = lcl_app=>repo_srv( )->get( iv_key ). lv_question = 'This will rebuild and overwrite local repo checksums.'. @@ -288,7 +286,7 @@ CLASS lcl_services_repo IMPLEMENTATION. text_button_2 = 'Cancel' icon_button_2 = 'ICON_CANCEL' default_button = '2' - display_cancel_button = abap_false ). "#EC NOTEXT + display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '2'. RAISE EXCEPTION TYPE lcx_cancel. @@ -308,11 +306,11 @@ CLASS lcl_services_repo IMPLEMENTATION. CALL FUNCTION 'RS_TOOL_ACCESS' EXPORTING - OPERATION = 'SHOW' - IN_NEW_WINDOW = 'X' - OBJECT_NAME = iv_package - OBJECT_TYPE = 'DEVC' - WITH_OBJECTLIST = 'X'. + operation = 'SHOW' + in_new_window = 'X' + object_name = iv_package + object_type = 'DEVC' + with_objectlist = 'X'. ENDMETHOD. " open_se80. diff --git a/src/zabapgit_syntax_highlighter.prog.abap b/src/zabapgit_syntax_highlighter.prog.abap index c80816ab0..050c9e107 100644 --- a/src/zabapgit_syntax_highlighter.prog.abap +++ b/src/zabapgit_syntax_highlighter.prog.abap @@ -197,8 +197,7 @@ CLASS lcl_syntax_highlighter IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF mt_rules, - TYPE match_result, - TYPE ty_match. + TYPE match_result. CLEAR et_matches. @@ -651,8 +650,7 @@ CLASS ltcl_syntax_cases DEFINITION FINAL METHODS: do_test IMPORTING iv_line TYPE string - iv_filename TYPE string - RETURNING VALUE(ro_instance) TYPE REF TO lcl_syntax_highlighter, + iv_filename TYPE string, test_abap_01 FOR TESTING, test_abap_02 FOR TESTING, test_abap_03 FOR TESTING, @@ -702,7 +700,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. lo TYPE REF TO lcl_syntax_highlighter. - lo = lcl_syntax_highlighter=>create( iv_filename ). + lo = lcl_syntax_highlighter=>create( iv_filename ). lo->parse_line( EXPORTING iv_line = iv_line IMPORTING et_matches = lt_matches_act ). diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index a65998076..cf7ecbfa9 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -1839,7 +1839,6 @@ CLASS ltcl_file_status IMPLEMENTATION. DATA: lt_local TYPE ty_files_item_tt, lt_remote TYPE ty_files_tt, lt_state TYPE ty_file_signatures_tt, - lt_tadir TYPE ty_tadir_tt, lt_results TYPE ty_results_tt, lt_results_exp TYPE ty_results_tt. @@ -2185,21 +2184,21 @@ CLASS ltcl_persistence_settings IMPLEMENTATION. lcl_app=>db( )->delete( iv_type = 'SETTINGS' iv_value = 'PROXY_URL' ). - CATCH cx_static_check. + CATCH cx_static_check ##NO_HANDLER. "If entry didn't exist, that's okay ENDTRY. TRY. lcl_app=>db( )->delete( iv_type = 'SETTINGS' iv_value = 'PROXY_PORT' ). - CATCH cx_static_check. + CATCH cx_static_check ##NO_HANDLER. "If entry didn't exist, that's okay ENDTRY. TRY. lcl_app=>db( )->delete( iv_type = 'SETTINGS' iv_value = 'CRIT_TESTS' ). - CATCH cx_static_check. + CATCH cx_static_check ##NO_HANDLER. "If entry didn't exist, that's okay ENDTRY. @@ -2337,7 +2336,7 @@ CLASS ltd_fake_object_files IMPLEMENTATION. ENDCLASS. -CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT . +CLASS ltc_oo_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. PROTECTED SECTION. DATA: mo_spy_oo_object TYPE REF TO ltd_spy_oo_object, From 9725d3bf380293089de6ee9071513192b51d44e8 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 29 Dec 2016 13:33:08 +0000 Subject: [PATCH 19/40] fix issue 500 --- src/zabapgit_objects_impl.prog.abap | 45 +++++++++++++++-------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index f8bd9fe2f..674afa5d7 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -238,26 +238,29 @@ CLASS lcl_objects IMPLEMENTATION. METHOD path_to_package. DATA: lv_length TYPE i, + lv_parent TYPE devclass, + lv_new TYPE string, lv_path TYPE string. - lv_length = strlen( iv_start ) - 1. + lv_length = strlen( iv_start ). lv_path = iv_path+lv_length. + lv_parent = iv_top. + rv_package = iv_top. - CONCATENATE iv_top lv_path INTO rv_package. + WHILE lv_path CA '/'. + SPLIT lv_path AT '/' INTO lv_new lv_path. - TRANSLATE rv_package USING '/_'. + CONCATENATE rv_package '_' lv_new INTO rv_package. + TRANSLATE rv_package TO UPPER CASE. - lv_length = strlen( rv_package ) - 1. + IF lcl_sap_package=>exists( rv_package ) = abap_false. + lcl_sap_package=>create_child( iv_parent = lv_parent + iv_child = rv_package ). + ENDIF. - rv_package = rv_package(lv_length). - - TRANSLATE rv_package TO UPPER CASE. - - IF lcl_sap_package=>exists( rv_package ) = abap_false. - lcl_sap_package=>create_child( iv_parent = iv_top - iv_child = rv_package ). - ENDIF. + lv_parent = rv_package. + ENDWHILE. ENDMETHOD. @@ -589,15 +592,15 @@ CLASS lcl_objects IMPLEMENTATION. METHOD deserialize. - DATA: ls_item TYPE ty_item, - lv_cancel TYPE abap_bool, - li_obj TYPE REF TO lif_object, - lt_remote TYPE ty_files_tt, - lv_package TYPE devclass, - 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. + DATA: ls_item TYPE ty_item, + lv_cancel TYPE abap_bool, + li_obj TYPE REF TO lif_object, + lt_remote TYPE ty_files_tt, + lv_package TYPE devclass, + 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. FIELD-SYMBOLS: TYPE ty_result, LIKE LINE OF lt_late. From 4c10fb71771fc5473137ece34888e32508b41db4 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 29 Dec 2016 15:10:28 +0100 Subject: [PATCH 20/40] fix syntax error in build --- src/zabapgit_gui_asset_manager.prog.abap | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index bafd1f66b..2ab28c7ac 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -132,11 +132,20 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_images. + DEFINE _inline. + APPEND &1 TO lt_data. + END-OF-DEFINITION. + METHOD get_inline_asset. DATA: lt_data TYPE ty_string_tt, lv_str TYPE string. + IF 0 = 1. + * used via abapmerge + _inline 'foo'. + ENDIF. + CASE iv_asset_name. WHEN 'CSS_COMMON'. " @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'. @@ -403,4 +412,4 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_inline_images. -ENDCLASS. "lcl_gui_asset_manager \ No newline at end of file +ENDCLASS. "lcl_gui_asset_manager From edc3cb9b14b73812d31a6a319192731923076ae8 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 29 Dec 2016 15:12:13 +0100 Subject: [PATCH 21/40] Update zabapgit_gui_asset_manager.prog.abap --- src/zabapgit_gui_asset_manager.prog.abap | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 2ab28c7ac..2af85ad0e 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -140,11 +140,7 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. DATA: lt_data TYPE ty_string_tt, lv_str TYPE string. - - IF 0 = 1. - * used via abapmerge - _inline 'foo'. - ENDIF. + CASE iv_asset_name. WHEN 'CSS_COMMON'. From 31599291089dd2462a4725f6e980f780341bec17 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 29 Dec 2016 15:13:51 +0100 Subject: [PATCH 22/40] Update zabapgit_gui_asset_manager.prog.abap --- src/zabapgit_gui_asset_manager.prog.abap | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 2af85ad0e..9ddb8a9b0 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -133,14 +133,14 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_images. DEFINE _inline. - APPEND &1 TO lt_data. - END-OF-DEFINITION. + APPEND &1 TO lt_data. + END-OF-DEFINITION. METHOD get_inline_asset. DATA: lt_data TYPE ty_string_tt, lv_str TYPE string. - + CASE iv_asset_name. WHEN 'CSS_COMMON'. From 14a002523fa555fafff380903a577a872e5dc6fa Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 30 Dec 2016 09:19:00 +0100 Subject: [PATCH 23/40] fix newline --- src/zabapgit_gui_asset_manager.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 9ddb8a9b0..8c94df8a6 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -408,4 +408,4 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_inline_images. -ENDCLASS. "lcl_gui_asset_manager +ENDCLASS. "lcl_gui_asset_manager \ No newline at end of file From f1ca40bc724e90010c79f191695d5f9e00d0ddc5 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 30 Dec 2016 11:44:44 +0000 Subject: [PATCH 24/40] VIEW: clear redundant fields, close #491 --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_view.prog.abap | 32 +++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 5adf0bddf..373594a21 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.24.9'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.24.10'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index 31481e426..4f0ccdd31 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -24,9 +24,9 @@ CLASS lcl_object_view IMPLEMENTATION. METHOD lif_object~has_changed_since. - DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + DATA: lv_date TYPE dats, + lv_time TYPE tims, + lv_ts TYPE timestamp. SELECT SINGLE as4date as4time FROM dd25l " View INTO (lv_date, lv_time) @@ -115,6 +115,8 @@ CLASS lcl_object_view IMPLEMENTATION. lt_dd28j TYPE TABLE OF dd28j, lt_dd28v TYPE TABLE OF dd28v. + FIELD-SYMBOLS: LIKE LINE OF lt_dd27p. + lv_name = ms_item-obj_name. @@ -149,6 +151,30 @@ CLASS lcl_object_view IMPLEMENTATION. ls_dd09l-as4date, ls_dd09l-as4time. + LOOP AT lt_dd27p ASSIGNING . + CLEAR: -ddtext, + -reptext, + -scrtext_s, + -scrtext_m, + -scrtext_l, + -outputlen, + -decimals, + -lowercase, + -convexit, + -signflag, + -flength, + -domname, + -datatype, + -entitytab, + -inttype, + -intlen, + -headlen, + -scrlen1, + -scrlen2, + -scrlen3, + -memoryid. + ENDLOOP. + io_xml->add( iv_name = 'DD25V' ig_data = ls_dd25v ). io_xml->add( iv_name = 'DD09L' From 93310976649eeed7eee3161af6d25b8a5157000e Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 30 Dec 2016 13:03:54 +0000 Subject: [PATCH 25/40] TABL: clear additional fields --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_tabl.prog.abap | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 373594a21..97ad2743f 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.24.10'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.24.11'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 1875fa2c9..45bec76a8 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -229,7 +229,10 @@ CLASS lcl_object_tabl IMPLEMENTATION. -convexit, -entitytab, -dommaster, - -domname3l. + -domname3l, + -decimals, + -lowercase, + -signflag. ENDIF. IF -shlporigin = 'D'. From 44a6b88092e1b54039736355a78f39d7f920bafc Mon Sep 17 00:00:00 2001 From: larshp Date: Mon, 2 Jan 2017 14:58:27 +0000 Subject: [PATCH 26/40] 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. From 21bf0a3bd3c6b5ff679ca3256ddf157dae5b8185 Mon Sep 17 00:00:00 2001 From: larshp Date: Tue, 3 Jan 2017 08:04:18 +0000 Subject: [PATCH 27/40] background mode lock, #447 --- src/zabapgit_background.prog.abap | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/zabapgit_background.prog.abap b/src/zabapgit_background.prog.abap index b183c992d..01d643c7c 100644 --- a/src/zabapgit_background.prog.abap +++ b/src/zabapgit_background.prog.abap @@ -166,6 +166,8 @@ CLASS lcl_background IMPLEMENTATION. METHOD run. + CONSTANTS: c_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'. + DATA: lo_per TYPE REF TO lcl_persistence_background, lo_repo TYPE REF TO lcl_repo_online, lt_list TYPE lcl_persistence_background=>tt_background, @@ -174,6 +176,20 @@ CLASS lcl_background IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_list. + CALL FUNCTION 'ENQUEUE_EZABAPGIT' + EXPORTING + mode_zabapgit = 'E' + type = c_enq_type + _scope = '3' + EXCEPTIONS + foreign_lock = 1 + system_failure = 2 + OTHERS = 3. + IF sy-subrc <> 0. + WRITE: / 'Another intance of the program is already running'. + RETURN. + ENDIF. + CREATE OBJECT lo_per. lt_list = lo_per->list( ). @@ -204,6 +220,10 @@ CLASS lcl_background IMPLEMENTATION. WRITE: / 'Nothing configured' ##NO_TEXT. ENDIF. + CALL FUNCTION 'DEQUEUE_EZABAPGIT' + EXPORTING + type = c_enq_type. + ENDMETHOD. ENDCLASS. \ No newline at end of file From 3bfb008e26287e16e7f9be945c21ac9487cd44a9 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 4 Jan 2017 17:29:29 +0000 Subject: [PATCH 28/40] fix exists, fix alignment --- src/zabapgit_object_enho.prog.abap | 115 +++++++++++++++-------------- 1 file changed, 59 insertions(+), 56 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 669023316..015b5b042 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -134,16 +134,19 @@ CLASS lcl_object_enho IMPLEMENTATION. METHOD lif_object~exists. - DATA: ls_tadir TYPE tadir. + DATA: lv_enh_id TYPE enhname. + + + lv_enh_id = ms_item-obj_name. + TRY. + cl_enh_factory=>get_enhancement( + enhancement_id = lv_enh_id + bypassing_buffer = abap_true ). + rv_bool = abap_true. + CATCH cx_enh_root. + rv_bool = abap_false. + ENDTRY. -* todo, it should look up in the ENHO database tables or call some methods -* to see if the object exists, looking in TADIR will not work - ls_tadir = lcl_tadir=>read_single( - iv_object = ms_item-obj_type - iv_obj_name = ms_item-obj_name ). - IF ls_tadir IS NOT INITIAL. - rv_bool = abap_true. - ENDIF. ENDMETHOD. "lif_object~exists METHOD lif_object~serialize. @@ -169,16 +172,16 @@ CLASS lcl_object_enho IMPLEMENTATION. CASE lv_tool. WHEN cl_enh_tool_badi_impl=>tooltype. - serialize_badi( io_xml = io_xml - iv_tool = lv_tool + serialize_badi( io_xml = io_xml + iv_tool = lv_tool ii_enh_tool = li_enh_tool ). WHEN cl_enh_tool_hook_impl=>tooltype. - serialize_hook( io_xml = io_xml - iv_tool = lv_tool + serialize_hook( io_xml = io_xml + iv_tool = lv_tool ii_enh_tool = li_enh_tool ). WHEN cl_enh_tool_class=>tooltype. - serialize_class( io_xml = io_xml - iv_tool = lv_tool + serialize_class( io_xml = io_xml + iv_tool = lv_tool ii_enh_tool = li_enh_tool ). * ToDo: * WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr @@ -239,24 +242,24 @@ CLASS lcl_object_enho IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'SHORTTEXT' - CHANGING cg_data = lv_shorttext ). + CHANGING cg_data = lv_shorttext ). io_xml->read( EXPORTING iv_name = 'SPOT_NAME' - CHANGING cg_data = lv_spot_name ). + CHANGING cg_data = lv_spot_name ). io_xml->read( EXPORTING iv_name = 'IMPL' - CHANGING cg_data = lt_impl ). + CHANGING cg_data = lt_impl ). lv_enhname = ms_item-obj_name. lv_package = iv_package. TRY. cl_enh_factory=>create_enhancement( EXPORTING - enhname = lv_enhname - enhtype = cl_abstract_enh_tool_redef=>credefinition - enhtooltype = cl_enh_tool_badi_impl=>tooltype + enhname = lv_enhname + enhtype = cl_abstract_enh_tool_redef=>credefinition + enhtooltype = cl_enh_tool_badi_impl=>tooltype IMPORTING - enhancement = li_tool + enhancement = li_tool CHANGING - devclass = lv_package ). + devclass = lv_package ). lo_badi ?= li_tool. lo_badi->set_spot_name( lv_spot_name ). @@ -287,15 +290,15 @@ CLASS lcl_object_enho IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'SHORTTEXT' - CHANGING cg_data = lv_shorttext ). + CHANGING cg_data = lv_shorttext ). io_xml->read( EXPORTING iv_name = 'OWR_METHODS' - CHANGING cg_data = lt_owr ). + CHANGING cg_data = lt_owr ). io_xml->read( EXPORTING iv_name = 'PRE_METHODS' - CHANGING cg_data = lt_pre ). - io_xml->read( EXPORTING iv_name = 'POST_METHODS' - CHANGING cg_data = lt_post ). - io_xml->read( EXPORTING iv_name = 'CLASS' - CHANGING cg_data = lv_class ). + CHANGING cg_data = lt_pre ). + io_xml->read( EXPORTING iv_name = 'POST_METHODS' + CHANGING cg_data = lt_post ). + io_xml->read( EXPORTING iv_name = 'CLASS' + CHANGING cg_data = lv_class ). lt_source = mo_files->read_abap( ). lv_enhname = ms_item-obj_name. @@ -303,24 +306,24 @@ CLASS lcl_object_enho IMPLEMENTATION. TRY. cl_enh_factory=>create_enhancement( EXPORTING - enhname = lv_enhname - enhtype = '' - enhtooltype = cl_enh_tool_class=>tooltype + enhname = lv_enhname + enhtype = '' + enhtooltype = cl_enh_tool_class=>tooltype IMPORTING - enhancement = li_tool + enhancement = li_tool CHANGING - devclass = lv_package ). + devclass = lv_package ). lo_enh_class ?= li_tool. lo_enh_class->if_enh_object_docu~set_shorttext( lv_shorttext ). lo_enh_class->set_class( lv_class ). - lo_enh_class->set_owr_methods( version = 'I' + lo_enh_class->set_owr_methods( version = 'I' owr_methods = lt_owr ). - lo_enh_class->set_pre_methods( version = 'I' + lo_enh_class->set_pre_methods( version = 'I' pre_methods = lt_pre ). - lo_enh_class->set_post_methods( version = 'I' + lo_enh_class->set_post_methods( version = 'I' post_methods = lt_post ). - lo_enh_class->set_eimp_include( version = 'I' + lo_enh_class->set_eimp_include( version = 'I' eimp_source = lt_source ). lo_enh_class->if_enh_object~save( ). @@ -346,29 +349,29 @@ CLASS lcl_object_enho IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'SHORTTEXT' - CHANGING cg_data = lv_shorttext ). + CHANGING cg_data = lv_shorttext ). io_xml->read( EXPORTING iv_name = 'ORIGINAL_OBJECT' - CHANGING cg_data = ls_original_object ). + CHANGING cg_data = ls_original_object ). io_xml->read( EXPORTING iv_name = 'ENHANCEMENTS' - CHANGING cg_data = lt_enhancements ). + CHANGING cg_data = lt_enhancements ). io_xml->read( EXPORTING iv_name = 'SPACES' - CHANGING cg_data = lt_spaces ). + CHANGING cg_data = lt_spaces ). hook_impl_deserialize( EXPORTING it_spaces = lt_spaces - CHANGING ct_impl = lt_enhancements ). + CHANGING ct_impl = lt_enhancements ). lv_enhname = ms_item-obj_name. lv_package = iv_package. TRY. cl_enh_factory=>create_enhancement( EXPORTING - enhname = lv_enhname - enhtype = cl_abstract_enh_tool_redef=>credefinition - enhtooltype = cl_enh_tool_hook_impl=>tooltype + enhname = lv_enhname + enhtype = cl_abstract_enh_tool_redef=>credefinition + enhtooltype = cl_enh_tool_hook_impl=>tooltype IMPORTING - enhancement = li_tool + enhancement = li_tool CHANGING - devclass = lv_package ). + devclass = lv_package ). lo_hook_impl ?= li_tool. lo_hook_impl->if_enh_object_docu~set_shorttext( lv_shorttext ). @@ -383,13 +386,13 @@ CLASS lcl_object_enho IMPLEMENTATION. LOOP AT lt_enhancements ASSIGNING . lo_hook_impl->add_hook_impl( - overwrite = -overwrite - method = -method - enhmode = -enhmode - full_name = -full_name - source = -source - spot = -spotname - parent_full_name = -parent_full_name ). + overwrite = -overwrite + method = -method + enhmode = -enhmode + full_name = -full_name + source = -source + spot = -spotname + parent_full_name = -parent_full_name ). ENDLOOP. lo_hook_impl->if_enh_object~save( ). lo_hook_impl->if_enh_object~unlock( ). From 47e7f91299fdf0824100164913127e73f85c4f02 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 4 Jan 2017 17:37:38 +0000 Subject: [PATCH 29/40] v1.24.12 --- src/zabapgit.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 97ad2743f..2cb662771 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.24.11'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.24.12'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) From b58e608a3f5f75173cbbd4c32d4ca88d976fc1b7 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 4 Jan 2017 18:57:22 +0000 Subject: [PATCH 30/40] Fix dumps Fields containing invalid values Ignore if descriptions are not found --- src/zabapgit_object_clas.prog.abap | 2 +- src/zabapgit_object_dtel.prog.abap | 7 ++++++- src/zabapgit_object_fugr.prog.abap | 5 +---- src/zabapgit_object_para.prog.abap | 5 +---- src/zabapgit_object_tabl.prog.abap | 29 +++++++++++++++++------------ 5 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 3a9c2e359..f75117961 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -962,7 +962,7 @@ CLASS lcl_object_clas IMPLEMENTATION. no_entry_found = 1 OTHERS = 2. IF sy-subrc <> 0. - lcx_exception=>raise( 'error from SOTR_GET_CONCEPT' ). + CONTINUE. ENDIF. CLEAR: ls_header-paket, diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index d37f0aa08..52caae569 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -159,6 +159,11 @@ CLASS lcl_object_dtel IMPLEMENTATION. ls_dd04v-entitytab. ENDIF. + IF ls_dd04v-routputlen = ''. +* numeric field, make sure it is initial or XML serilization will dump + CLEAR ls_dd04v-routputlen. + ENDIF. + io_xml->add( iv_name = 'DD04V' ig_data = ls_dd04v ). io_xml->add( iv_name = 'TPARA' @@ -233,7 +238,7 @@ CLASS lcl_object_dtel IMPLEMENTATION. langu = IMPORTING dd04v_wa = ls_dd04v -* tpara_wa = ls_tpara +* tpara_wa = ls_tpara EXCEPTIONS illegal_input = 1 OTHERS = 2. diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index d09713ae7..5f8619bc6 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -398,10 +398,7 @@ CLASS lcl_object_fugr IMPLEMENTATION. SELECT SINGLE areat INTO lv_areat FROM tlibt WHERE spras = mv_language - AND area = ms_item-obj_name. "#EC CI_GENBUFF - IF sy-subrc <> 0. - lcx_exception=>raise( 'not found in TLIBT' ). - ENDIF. + AND area = ms_item-obj_name. "#EC CI_GENBUFF "#EC CI_SUBRC lt_functab = functions( ). lt_includes = includes( ). diff --git a/src/zabapgit_object_para.prog.abap b/src/zabapgit_object_para.prog.abap index 585093d68..e13cb24f7 100644 --- a/src/zabapgit_object_para.prog.abap +++ b/src/zabapgit_object_para.prog.abap @@ -60,10 +60,7 @@ CLASS lcl_object_para IMPLEMENTATION. SELECT SINGLE * FROM tparat INTO ls_tparat WHERE paramid = ms_item-obj_name - AND sprache = mv_language. "#EC CI_GENBUFF - IF sy-subrc <> 0. - lcx_exception=>raise( 'PARA no english description' ). - ENDIF. + AND sprache = mv_language. "#EC CI_GENBUFF "#EC CI_SUBRC io_xml->add( iv_name = 'TPARA' ig_data = ls_tpara ). diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 2d01ab4fc..c956017d5 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -122,17 +122,18 @@ CLASS lcl_object_tabl IMPLEMENTATION. METHOD lif_object~serialize. - DATA: lv_name TYPE ddobjname, - ls_dd02v TYPE dd02v, - ls_dd09l TYPE dd09l, - lt_dd03p TYPE TABLE OF dd03p, - lt_dd05m TYPE TABLE OF dd05m, - lt_dd08v TYPE TABLE OF dd08v, - lt_dd12v TYPE dd12vtab, - lt_dd17v TYPE dd17vtab, - lt_dd35v TYPE TABLE OF dd35v, - lv_index LIKE sy-index, - lt_dd36m TYPE dd36mttyp. + DATA: lv_name TYPE ddobjname, + ls_dd02v TYPE dd02v, + ls_dd09l TYPE dd09l, + lt_dd03p TYPE TABLE OF dd03p, + lt_dd05m TYPE TABLE OF dd05m, + lt_dd08v TYPE TABLE OF dd08v, + lt_dd12v TYPE dd12vtab, + lt_dd17v TYPE dd17vtab, + lt_dd35v TYPE TABLE OF dd35v, + lv_index LIKE sy-index, + lv_masklen TYPE c LENGTH 4, + lt_dd36m TYPE dd36mttyp. FIELD-SYMBOLS: LIKE LINE OF lt_dd12v, LIKE LINE OF lt_dd05m, @@ -181,6 +182,9 @@ CLASS lcl_object_tabl IMPLEMENTATION. IF ls_dd02v-datmax = ''. CLEAR ls_dd02v-datmax. ENDIF. + IF ls_dd02v-datavg = ''. + CLEAR ls_dd02v-datavg. + ENDIF. CLEAR: ls_dd09l-as4user, ls_dd09l-as4date, @@ -207,7 +211,8 @@ CLASS lcl_object_tabl IMPLEMENTATION. -scrtext_m, -scrtext_l. - IF -masklen = '' OR NOT -masklen CO '0123456789'. + lv_masklen = -masklen. + IF lv_masklen = '' OR NOT lv_masklen CO '0123456789'. * make sure the field contains valid data, or the XML will dump CLEAR -masklen. ENDIF. From f173b8e30dfe4e370eee6ffdd845f4d78612e262 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Wed, 4 Jan 2017 23:37:45 +0200 Subject: [PATCH 31/40] fix #516 --- src/zabapgit_page.prog.abap | 2 +- src/zabapgit_view_repo.prog.abap | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 49068e805..f4491616b 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -88,7 +88,6 @@ CLASS lcl_gui_page_super IMPLEMENTATION. lv_icon = 'img/repo_online' ##NO_TEXT. ENDIF. - ro_html->add( || ). ro_html->add( '' ). ro_html->add( '' ). - ro_html->add( '
' ). @@ -225,6 +224,7 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ro_html->add( 'abapGit' ). "#EC NOTEXT ro_html->add( '' ). ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT diff --git a/src/zabapgit_view_repo.prog.abap b/src/zabapgit_view_repo.prog.abap index e71d0064a..da446e9ba 100644 --- a/src/zabapgit_view_repo.prog.abap +++ b/src/zabapgit_view_repo.prog.abap @@ -321,7 +321,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ro_html->add( '' ). ro_html->add( lo_toolbar->render( ) ). ro_html->add( '
' ). + ro_html->add( '' ). ro_html->add( '' ). From 47e70827473b5d7d5eda7601290bad6cdab86682 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 5 Jan 2017 06:33:04 +0000 Subject: [PATCH 32/40] CLAS SMIM VCLS: minor fixes --- src/zabapgit_object_clas.prog.abap | 2 +- src/zabapgit_object_smim.prog.abap | 2 +- src/zabapgit_object_vcls.prog.abap | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index f75117961..1adb24ba0 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -770,7 +770,7 @@ CLASS lcl_object_clas IMPLEMENTATION. ELSEIF lines( rt_source ) = 1. READ TABLE rt_source INDEX 1 INTO lv_line1. ASSERT sy-subrc = 0. - IF lv_line1(3) = '*"*' OR lv_line1 IS INITIAL. + IF lv_line1 IS INITIAL OR lv_line1(3) = '*"*'. mv_skip_testclass = abap_true. ENDIF. ELSEIF lines( rt_source ) = 0. diff --git a/src/zabapgit_object_smim.prog.abap b/src/zabapgit_object_smim.prog.abap index b03edb856..109ace172 100644 --- a/src/zabapgit_object_smim.prog.abap +++ b/src/zabapgit_object_smim.prog.abap @@ -191,7 +191,7 @@ CLASS lcl_object_smim IMPLEMENTATION. not_found = 3 permission_failure = 4 OTHERS = 5 ). - IF sy-subrc <> 0. + IF sy-subrc <> 0 AND sy-subrc <> 3. lcx_exception=>raise( 'error from mime api->get:' && sy-msgv1 ). ENDIF. diff --git a/src/zabapgit_object_vcls.prog.abap b/src/zabapgit_object_vcls.prog.abap index 0fad2048b..05094edfd 100644 --- a/src/zabapgit_object_vcls.prog.abap +++ b/src/zabapgit_object_vcls.prog.abap @@ -39,13 +39,19 @@ CLASS lcl_object_vcls IMPLEMENTATION. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~exists. - DATA lv_vclname TYPE vcl_name. - SELECT SINGLE vclname INTO lv_vclname FROM vcldir + DATA lv_changedate TYPE vcldir-changedate. + + SELECT SINGLE changedate INTO lv_changedate FROM vcldir WHERE vclname = ms_item-obj_name. rv_bool = boolc( sy-subrc = 0 ). + IF lv_changedate IS INITIAL. +* same logic as in function module VIEWCLUSTER_GET_DEFINITION + rv_bool = abap_false. + ENDIF. + ENDMETHOD. "lif_object~exists METHOD lif_object~serialize. From 695fd015cb0b5da70ee0bffb569e97faecce0951 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 5 Jan 2017 11:43:22 +0000 Subject: [PATCH 33/40] CLAS: fix dump --- src/zabapgit_object_clas.prog.abap | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 1adb24ba0..5b3b71791 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -770,7 +770,9 @@ CLASS lcl_object_clas IMPLEMENTATION. ELSEIF lines( rt_source ) = 1. READ TABLE rt_source INDEX 1 INTO lv_line1. ASSERT sy-subrc = 0. - IF lv_line1 IS INITIAL OR lv_line1(3) = '*"*'. + IF lv_line1 IS INITIAL + OR ( strlen( lv_line1 ) >= 3 AND lv_line1(3) = '*"*' ) + OR ( strlen( lv_line1 ) = 1 AND lv_line1(1) = '*' ). mv_skip_testclass = abap_true. ENDIF. ELSEIF lines( rt_source ) = 0. From 3370eecc728256cbc27dda4a691a5c1a441cd576 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 5 Jan 2017 13:26:28 +0000 Subject: [PATCH 34/40] v1.24.13 --- src/zabapgit.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 2cb662771..d2963f3b4 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.24.12'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.24.13'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) From a6f623a4a1bd049b990bb9da14fb179d1a200b72 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 5 Jan 2017 14:51:22 +0000 Subject: [PATCH 35/40] ENHO SMIM: fix dumps --- src/zabapgit_object_enho.prog.abap | 19 +++++++++++++++++++ src/zabapgit_object_smim.prog.abap | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 015b5b042..16c70ae25 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -409,12 +409,31 @@ CLASS lcl_object_enho IMPLEMENTATION. lv_shorttext TYPE string, lt_impl TYPE enh_badi_impl_data_it. + FIELD-SYMBOLS: LIKE LINE OF lt_impl, + LIKE LINE OF -filter_values, + LIKE LINE OF -filters. + + lo_badi_impl ?= ii_enh_tool. lv_shorttext = lo_badi_impl->if_enh_object_docu~get_shorttext( ). lv_spot_name = lo_badi_impl->get_spot_name( ). lt_impl = lo_badi_impl->get_implementations( ). + LOOP AT lt_impl ASSIGNING . +* make sure the XML serialization does not dump, field type = N + LOOP AT -filter_values ASSIGNING . + IF -filter_numeric_value1 CA space. + CLEAR -filter_numeric_value1. + ENDIF. + ENDLOOP. + LOOP AT -filters ASSIGNING . + IF -filter_numeric_value1 CA space. + CLEAR -filter_numeric_value1. + ENDIF. + ENDLOOP. + ENDLOOP. + io_xml->add( iv_name = 'TOOL' ig_data = iv_tool ). io_xml->add( ig_data = lv_shorttext diff --git a/src/zabapgit_object_smim.prog.abap b/src/zabapgit_object_smim.prog.abap index 109ace172..7fe035bc1 100644 --- a/src/zabapgit_object_smim.prog.abap +++ b/src/zabapgit_object_smim.prog.abap @@ -191,7 +191,7 @@ CLASS lcl_object_smim IMPLEMENTATION. not_found = 3 permission_failure = 4 OTHERS = 5 ). - IF sy-subrc <> 0 AND sy-subrc <> 3. + IF sy-subrc <> 0 AND sy-subrc <> 2 AND sy-subrc <> 3. lcx_exception=>raise( 'error from mime api->get:' && sy-msgv1 ). ENDIF. From 47f4843e5810822f2688cdc4c9a03c6631c94a59 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 5 Jan 2017 17:15:36 +0000 Subject: [PATCH 36/40] W3XX: fix dump CX_SY_REGEX_TOO_COMPLEX --- src/zabapgit_unit_test.prog.abap | 4 +++ src/zabapgit_util.prog.abap | 44 ++++++++++++++++++++------------ 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index cf7ecbfa9..2d63e98a7 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -1819,6 +1819,10 @@ CLASS ltcl_path IMPLEMENTATION. lv_filename = lcl_path=>get_filename_from_syspath( '\\server$\file.txt' ). assert_equals( act = lv_filename exp = 'file.txt' ). + lv_filename = lcl_path=>get_filename_from_syspath( + 'C:\foo\bar\moo.boo\dev\qas\_blah\goog\muuh\sap\hello\world\lorem\ipsum\s_foo.gif' ). + assert_equals( act = lv_filename exp = 's_foo.gif' ). + ENDMETHOD. " get_filename_from_syspath. ENDCLASS. "ltcl_path diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 282848d42..7ae234ff9 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -440,10 +440,22 @@ CLASS lcl_path IMPLEMENTATION. METHOD get_filename_from_syspath. - " filename | c:\filename | /dir/filename | \\server\filename - FIND FIRST OCCURRENCE OF REGEX '^(?:/(?:.+/)*|(?:\w:|\\)\\(?:.+\\)*)?([^\\/]+)$' - IN iv_path - SUBMATCHES rv_filename. + DATA: lv_split TYPE c LENGTH 1, + lv_index TYPE i, + lt_split TYPE TABLE OF string. + +" filename | c:\filename | /dir/filename | \\server\filename + IF iv_path CA '/'. + lv_split = '/'. + ELSE. + lv_split = '\'. + ENDIF. + + SPLIT iv_path AT lv_split INTO TABLE lt_split. + + lv_index = lines( lt_split ). + + READ TABLE lt_split INDEX lv_index INTO rv_filename. ENDMETHOD. " get_filename_from_syspath. @@ -535,13 +547,13 @@ CLASS lcl_diff DEFINITION FINAL. END OF c_diff. TYPES: BEGIN OF ty_diff, - new_line TYPE c LENGTH 6, - new TYPE string, - result TYPE c LENGTH 1, - old_line TYPE c LENGTH 6, - old TYPE string, - short TYPE abap_bool, - beacon TYPE i, + new_line TYPE c LENGTH 6, + new TYPE string, + result TYPE c LENGTH 1, + old_line TYPE c LENGTH 6, + old TYPE string, + short TYPE abap_bool, + beacon TYPE i, END OF ty_diff. TYPES: ty_diffs_tt TYPE STANDARD TABLE OF ty_diff WITH DEFAULT KEY. @@ -760,9 +772,9 @@ CLASS lcl_diff IMPLEMENTATION. METHOD constructor. - DATA: lt_delta TYPE vxabapt255_tab, - lt_new TYPE abaptxt255_tab, - lt_old TYPE abaptxt255_tab. + DATA: lt_delta TYPE vxabapt255_tab, + lt_new TYPE abaptxt255_tab, + lt_old TYPE abaptxt255_tab. unpack( EXPORTING iv_new = iv_new @@ -828,10 +840,10 @@ CLASS lcl_diff IMPLEMENTATION. ENDCASE. ELSE. CLEAR ls_new. - READ TABLE it_new INTO ls_new INDEX lv_nindex. "#EC CI_SUBRC + READ TABLE it_new INTO ls_new INDEX lv_nindex. "#EC CI_SUBRC lv_nindex = lv_nindex + 1. CLEAR ls_old. - READ TABLE it_old INTO ls_old INDEX lv_oindex. "#EC CI_SUBRC + READ TABLE it_old INTO ls_old INDEX lv_oindex. "#EC CI_SUBRC lv_oindex = lv_oindex + 1. _append ls_new '' ls_old. ENDIF. From 51db93b499711f6ae5b3f82bfeda86dcfe87991c Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 7 Jan 2017 09:50:37 +0200 Subject: [PATCH 37/40] html refactoring, render sequence refactoring - refactor lcl_html_helper (renamed to lcl_html, additional methods) - icons rendered with lcl_html->icon - some common html chunks moved to lcl_gui_chunk_lib - lcl_gui_page_super renamed to lcl_gui_page - page structure rendering concentrated in lcl_gui_page->render --- src/zabapgit_css_common.w3mi.data.css | 15 +- src/zabapgit_definitions.prog.abap | 2 +- src/zabapgit_gui_pages.prog.abap | 5 +- src/zabapgit_html.prog.abap | 124 ++++++-- src/zabapgit_html_chunks.prog.abap | 200 ++++++++++++ src/zabapgit_html_chunks.prog.xml | 48 +++ src/zabapgit_page.prog.abap | 336 ++++++-------------- src/zabapgit_page_background.prog.abap | 66 ++-- src/zabapgit_page_branch_overview.prog.abap | 25 +- src/zabapgit_page_commit.prog.abap | 33 +- src/zabapgit_page_db.prog.abap | 64 ++-- src/zabapgit_page_debug.prog.abap | 27 +- src/zabapgit_page_diff.prog.abap | 32 +- src/zabapgit_page_explore.prog.abap | 23 +- src/zabapgit_page_main.prog.abap | 55 ++-- src/zabapgit_page_merge.prog.abap | 19 +- src/zabapgit_page_settings.prog.abap | 33 +- src/zabapgit_page_stage.prog.abap | 52 ++- src/zabapgit_unit_test.prog.abap | 2 +- src/zabapgit_util.prog.abap | 2 +- src/zabapgit_view_repo.prog.abap | 73 ++--- src/zabapgit_view_tutorial.prog.abap | 25 +- 22 files changed, 743 insertions(+), 518 deletions(-) create mode 100644 src/zabapgit_html_chunks.prog.abap create mode 100644 src/zabapgit_html_chunks.prog.xml diff --git a/src/zabapgit_css_common.w3mi.data.css b/src/zabapgit_css_common.w3mi.data.css index 924b1d664..26a3de560 100644 --- a/src/zabapgit_css_common.w3mi.data.css +++ b/src/zabapgit_css_common.w3mi.data.css @@ -33,15 +33,21 @@ form input:focus, textarea:focus { border: 1px solid #8cadd9; } -/* MODIFIERS */ +/* COLOR PALETTE */ .grey { color: lightgrey !important; } -.emphasis { font-weight: bold !important; } .attention { color: red !important; } +.blue { color: #5e8dc9; !important; } +.red { color: red !important; } + +/* MODIFIERS */ +.emphasis { font-weight: bold !important; } .crossout { text-decoration: line-through !important; } .right { text-align:right; } .paddings { padding: 0.5em 0.5em; } .pad-sides { padding: 0 0.3em; } .pad4px { padding: 4px; } +.w100 { width: 100%; } +.w40 { width: 40%; } /* STRUCTURE DIVS, HEADER & FOOTER */ td.headpad { padding-top: 11px; } @@ -172,6 +178,7 @@ div.menu_vertical a { .dropdown_content td { text-align: left; padding: 2px; } .dropdown_content td a { padding: 0em 0.2em; } .dropdown_content td.icon { padding: 0 3px 0 6px; } +.dropdown_content td.text { width: 100%; } .dropdown_content a:hover { background-color: #f1f1f1 } .dropdown:hover .dropbtn { color: #79a0d2; } @@ -248,11 +255,12 @@ div.repo { div.repo_container { position: relative; } -.repo_tab { +table.repo_tab { border: 1px solid #DDD; border-radius: 3px; background: #fff; margin-top: 0.5em; + width: 100%; } .repo_tab td { border-top: 1px solid #eee; @@ -463,6 +471,7 @@ div.diff_head span.state-block span.none { table.diff_tab { font-family: Consolas, Courier, monospace; font-size: 10pt; + width: 100%; } table.diff_tab td,th { color: #444; diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 925053ea8..e8612e1b6 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -159,7 +159,7 @@ CONSTANTS: BEGIN OF gc_event_state, END OF gc_event_state. CONSTANTS: BEGIN OF gc_html_opt, - emphas TYPE c VALUE 'E', + strong TYPE c VALUE 'E', cancel TYPE c VALUE 'C', crossout TYPE c VALUE 'X', END OF gc_html_opt. diff --git a/src/zabapgit_gui_pages.prog.abap b/src/zabapgit_gui_pages.prog.abap index 910211fd0..2d5b77f67 100644 --- a/src/zabapgit_gui_pages.prog.abap +++ b/src/zabapgit_gui_pages.prog.abap @@ -4,17 +4,18 @@ * All UI pages -* Super class +* Super class & common html chunks +INCLUDE zabapgit_html_chunks. INCLUDE zabapgit_page. * Utils and helpers INCLUDE zabapgit_html_action_utils. INCLUDE zabapgit_repo_browser_util. +INCLUDE zabapgit_syntax_highlighter. * Components and templates INCLUDE zabapgit_view_repo. INCLUDE zabapgit_view_tutorial. -INCLUDE zabapgit_syntax_highlighter. * Pages INCLUDE zabapgit_page_commit. diff --git a/src/zabapgit_html.prog.abap b/src/zabapgit_html.prog.abap index 96009519e..5b0f065a5 100644 --- a/src/zabapgit_html.prog.abap +++ b/src/zabapgit_html.prog.abap @@ -7,9 +7,9 @@ DEFINE _add. END-OF-DEFINITION. *----------------------------------------------------------------------* -* CLASS lcl_html_helper DEFINITION +* CLASS lcl_html DEFINITION *----------------------------------------------------------------------* -CLASS lcl_html_helper DEFINITION FINAL. +CLASS lcl_html DEFINITION FINAL. PUBLIC SECTION. CONSTANTS: c_indent_size TYPE i VALUE 2. @@ -21,27 +21,49 @@ CLASS lcl_html_helper DEFINITION FINAL. METHODS add IMPORTING iv_chunk TYPE any. METHODS reset. - METHODS add_anchor IMPORTING iv_txt TYPE string - iv_act TYPE string - iv_opt TYPE clike OPTIONAL - iv_typ TYPE char1 DEFAULT gc_action_type-sapevent + METHODS add_a IMPORTING iv_txt TYPE string + iv_act TYPE string + iv_typ TYPE char1 DEFAULT gc_action_type-sapevent + iv_opt TYPE clike OPTIONAL + iv_class TYPE string OPTIONAL + iv_id TYPE string OPTIONAL + iv_style TYPE string OPTIONAL. + + METHODS add_icon IMPORTING iv_name TYPE string + iv_hint TYPE string OPTIONAL + iv_alt TYPE string OPTIONAL + iv_class TYPE string OPTIONAL. + + CLASS-METHODS a IMPORTING iv_txt TYPE string + iv_act TYPE string + iv_typ TYPE char1 DEFAULT gc_action_type-sapevent + iv_opt TYPE clike OPTIONAL + iv_class TYPE string OPTIONAL + iv_id TYPE string OPTIONAL + iv_style TYPE string OPTIONAL + RETURNING VALUE(rv_str) TYPE string. + + CLASS-METHODS icon IMPORTING iv_name TYPE string + iv_hint TYPE string OPTIONAL + iv_alt TYPE string OPTIONAL iv_class TYPE string OPTIONAL - iv_id TYPE string OPTIONAL - iv_style TYPE string OPTIONAL. + RETURNING VALUE(rv_str) TYPE string. PRIVATE SECTION. METHODS _add_str IMPORTING iv_str TYPE csequence. - METHODS _add_htm IMPORTING io_html TYPE REF TO lcl_html_helper. + METHODS _add_htm IMPORTING io_html TYPE REF TO lcl_html. -ENDCLASS. "lcl_html_helper DEFINITION +ENDCLASS. "lcl_html DEFINITION *----------------------------------------------------------------------* -* CLASS lcl_html_helper IMPLEMENTATION +* CLASS lcl_html IMPLEMENTATION *----------------------------------------------------------------------* -CLASS lcl_html_helper IMPLEMENTATION. +CLASS lcl_html IMPLEMENTATION. + METHOD add. + DATA lo_type TYPE REF TO cl_abap_typedescr. - DATA lo_html TYPE REF TO lcl_html_helper. + DATA lo_html TYPE REF TO lcl_html. lo_type = cl_abap_typedescr=>describe_by_data( iv_chunk ). @@ -71,6 +93,7 @@ CLASS lcl_html_helper IMPLEMENTATION. ENDMETHOD. "reset METHOD _add_str. + CONSTANTS lc_single_tags_re TYPE string " HTML5 singleton tags VALUE '<(area|base|br|col|command|embed|hr|img|input|link|meta|param|source|!)'. @@ -145,7 +168,20 @@ CLASS lcl_html_helper IMPLEMENTATION. ENDMETHOD. "_add_htm - METHOD add_anchor. + METHOD add_a. + + _add_str( a( iv_txt = iv_txt + iv_act = iv_act + iv_typ = iv_typ + iv_opt = iv_opt + iv_class = iv_class + iv_id = iv_id + iv_style = iv_style ) ). + + ENDMETHOD. "add_a + + METHOD a. + DATA: lv_class TYPE string, lv_href TYPE string, lv_id TYPE string, @@ -153,7 +189,7 @@ CLASS lcl_html_helper IMPLEMENTATION. lv_class = iv_class. - IF iv_opt CA gc_html_opt-emphas. + IF iv_opt CA gc_html_opt-strong. lv_class = lv_class && ' emphasis' ##NO_TEXT. ENDIF. IF iv_opt CA gc_html_opt-cancel. @@ -186,11 +222,42 @@ CLASS lcl_html_helper IMPLEMENTATION. lv_style = | style="{ iv_style }"|. ENDIF. - _add_str( |{ iv_txt }| ). + rv_str = |{ iv_txt }|. - ENDMETHOD. "add_action + ENDMETHOD. "a -ENDCLASS. "lcl_html_helper IMPLEMENTATION + METHOD add_icon. + + _add_str( icon( iv_name = iv_name + iv_class = iv_class + iv_alt = iv_alt + iv_hint = iv_hint ) ). + + ENDMETHOD. "add_icon + + METHOD icon. + + DATA: lv_hint TYPE string, + lv_alt TYPE string, + lv_class TYPE string. + + IF iv_hint IS NOT INITIAL. + lv_hint = | title="{ iv_hint }"|. + ENDIF. + IF iv_class IS NOT INITIAL. + lv_class = | class="{ iv_class }"|. + ENDIF. + IF iv_alt IS INITIAL. + lv_alt = | alt|. " To pass html validation + ELSE. + lv_alt = | alt="{ iv_alt }"|. + ENDIF. + + rv_str = | |. + + ENDMETHOD. "icon + +ENDCLASS. "lcl_html IMPLEMENTATION *----------------------------------------------------------------------* * CLASS lcl_html_toolbar DEFINITION @@ -219,7 +286,7 @@ CLASS lcl_html_toolbar DEFINITION FINAL. iv_with_icons TYPE abap_bool OPTIONAL iv_add_minizone TYPE abap_bool OPTIONAL RETURNING - VALUE(ro_html) TYPE REF TO lcl_html_helper. + VALUE(ro_html) TYPE REF TO lcl_html. PRIVATE SECTION. TYPES: BEGIN OF ty_item, @@ -295,7 +362,10 @@ CLASS lcl_html_toolbar IMPLEMENTATION. IF iv_no_separator = abap_true. lv_class = lv_class && ' menu_end' ##NO_TEXT. ENDIF. - ro_html->add( |{ iv_as_droplist_with_label }| ). + + ro_html->add_a( iv_txt = iv_as_droplist_with_label + iv_class = lv_class + iv_act = '' ). ENDIF. IF iv_add_minizone = abap_true. @@ -327,15 +397,15 @@ CLASS lcl_html_toolbar IMPLEMENTATION. IF iv_with_icons = abap_true. ro_html->add( '' ). - ro_html->add( |{ -ico }| ). - ro_html->add( '' ). + ro_html->add( |{ lcl_html=>icon( -ico ) }| ). + ro_html->add( '' ). ENDIF. - ro_html->add_anchor( iv_txt = -txt - iv_act = -act - iv_opt = -opt - iv_typ = -typ - iv_class = lv_class ). + ro_html->add_a( iv_txt = -txt + iv_act = -act + iv_opt = -opt + iv_typ = -typ + iv_class = lv_class ). IF iv_with_icons = abap_true. ro_html->add( '' ). diff --git a/src/zabapgit_html_chunks.prog.abap b/src/zabapgit_html_chunks.prog.abap new file mode 100644 index 000000000..ed387db81 --- /dev/null +++ b/src/zabapgit_html_chunks.prog.abap @@ -0,0 +1,200 @@ +*&---------------------------------------------------------------------* +*& Include ZABAPGIT_HTML_CHUNKS +*&---------------------------------------------------------------------* + +CLASS lcl_gui_chunk_lib DEFINITION FINAL. + + PUBLIC SECTION. + + CLASS-METHODS render_error + IMPORTING ix_error TYPE REF TO lcx_exception OPTIONAL + iv_error TYPE string OPTIONAL + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. + + CLASS-METHODS render_repo_top + IMPORTING io_repo TYPE REF TO lcl_repo + iv_show_package TYPE abap_bool DEFAULT abap_true + iv_show_branch TYPE abap_bool DEFAULT abap_true + iv_interactive_branch TYPE abap_bool DEFAULT abap_false + iv_branch TYPE string OPTIONAL + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. + + CLASS-METHODS render_item_state + IMPORTING iv1 TYPE char1 + iv2 TYPE char1 + RETURNING VALUE(rv_html) TYPE string. + + CLASS-METHODS render_branch_span + IMPORTING iv_branch TYPE string + io_repo TYPE REF TO lcl_repo_online + iv_interactive TYPE abap_bool + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. + +ENDCLASS. "lcl_gui_chunk_lib + +CLASS lcl_gui_chunk_lib IMPLEMENTATION. + + METHOD render_repo_top. + + DATA: lo_repo_online TYPE REF TO lcl_repo_online, + lo_pback TYPE REF TO lcl_persistence_background, + lv_hint TYPE string, + lv_icon TYPE string. + + + CREATE OBJECT ro_html. + CREATE OBJECT lo_pback. + + IF io_repo->is_offline( ) = abap_true. + lv_icon = 'repo_offline' ##NO_TEXT. + lv_hint = 'Offline repository' ##NO_TEXT. + ELSE. + lv_icon = 'repo_online' ##NO_TEXT. + lv_hint = 'On-line repository' ##NO_TEXT. + ENDIF. + + ro_html->add( '' ). + + ro_html->add( '' ). + + ro_html->add( '' ). + ro_html->add( '
' ). + ro_html->add_icon( iv_name = lv_icon iv_hint = lv_hint ). + ro_html->add( |{ io_repo->get_name( ) }| ). + IF io_repo->is_offline( ) = abap_false. + lo_repo_online ?= io_repo. + ro_html->add( |{ lo_repo_online->get_url( ) }| ). + ENDIF. + ro_html->add( '' ). + + IF abap_true = lcl_app=>user( )->is_favorite_repo( io_repo->get_key( ) ). + lv_icon = 'star' ##NO_TEXT. + ELSE. + lv_icon = 'star-grey' ##NO_TEXT. + ENDIF. + ro_html->add_a( iv_act = |{ gc_action-repo_toggle_fav }?{ io_repo->get_key( ) }| + iv_txt = lcl_html=>icon( iv_name = lv_icon + iv_class = 'pad-sides' + iv_hint = 'Click to toggle favorite' ) ). + + IF lo_pback->exists( io_repo->get_key( ) ) = abap_true. + ro_html->add( 'BG' ). + ENDIF. + + IF io_repo->is_write_protected( ) = abap_true. + ro_html->add_icon( iv_name = 'lock' iv_hint = 'Locked from pulls' ). + ENDIF. + + IF io_repo->is_offline( ) = abap_false. + lo_repo_online ?= io_repo. + IF iv_show_branch = abap_true. + IF iv_branch IS INITIAL. + ro_html->add( render_branch_span( iv_branch = lo_repo_online->get_branch_name( ) + io_repo = lo_repo_online + iv_interactive = iv_interactive_branch ) ). + ELSE. + ro_html->add( render_branch_span( iv_branch = iv_branch + io_repo = lo_repo_online + iv_interactive = iv_interactive_branch ) ). + ENDIF. + ENDIF. + ENDIF. + + IF iv_show_package = abap_true. + ro_html->add_icon( iv_name = 'pkg' iv_hint = 'SAP package' ). + ro_html->add( '' ). + ro_html->add_a( iv_txt = io_repo->get_package( ) + iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ). + ro_html->add( '' ). + ENDIF. + + ro_html->add( '
' ). + + ENDMETHOD. + + METHOD render_item_state. + + DATA: lv_system TYPE string. + + FIELD-SYMBOLS TYPE char1. + + + rv_html = ''. + + DO 2 TIMES. + CASE sy-index. + WHEN 1. + ASSIGN iv1 TO . + lv_system = 'Local:'. + WHEN 2. + ASSIGN iv2 TO . + lv_system = 'Remote:'. + ENDCASE. + + CASE . + WHEN gc_state-unchanged. "None or unchanged + IF iv1 = gc_state-added OR iv2 = gc_state-added. + rv_html = rv_html && |X|. + ELSE. + rv_html = rv_html && | |. + ENDIF. + WHEN gc_state-modified. "Changed + rv_html = rv_html && |M|. + WHEN gc_state-added. "Added new + rv_html = rv_html && |A|. + WHEN gc_state-mixed. "Multiple changes (multifile) + rv_html = rv_html && ||. + WHEN gc_state-deleted. "Deleted + rv_html = rv_html && |D|. + ENDCASE. + ENDDO. + + rv_html = rv_html && ''. + + ENDMETHOD. "render_item_state + + METHOD render_branch_span. + + DATA: lv_text TYPE string, + lv_class TYPE string. + + lv_text = lcl_git_branch_list=>get_display_name( iv_branch ). + + IF iv_branch = io_repo->get_head_branch_name( ) OR iv_branch = lcl_git_branch_list=>head_name. + lv_class = 'branch branch_head'. + ELSEIF lcl_git_branch_list=>get_type( iv_branch ) = lcl_git_branch_list=>c_type-branch. + lv_class = 'branch branch_branch'. + ELSE. + lv_class = 'branch'. + ENDIF. + + CREATE OBJECT ro_html. + ro_html->add( || ). + ro_html->add_icon( iv_name = 'branch' iv_hint = 'Current branch' ). + IF iv_interactive = abap_true. + ro_html->add_a( iv_act = |{ gc_action-git_branch_switch }?{ io_repo->get_key( ) }| + iv_txt = lv_text ). + ELSE. + ro_html->add( lv_text ). + ENDIF. + ro_html->add( '' ). + + ENDMETHOD. "render_branch_span + + METHOD render_error. + + CREATE OBJECT ro_html. + + ro_html->add( '
' ). + IF ix_error IS BOUND. + ro_html->add( |Error: { ix_error->mv_text }| ). + ELSE. + ro_html->add( |Error: { iv_error }| ). + ENDIF. + ro_html->add( '
' ). + + ENDMETHOD. "render_error + +ENDCLASS. "lcl_gui_chunk_lib \ No newline at end of file diff --git a/src/zabapgit_html_chunks.prog.xml b/src/zabapgit_html_chunks.prog.xml new file mode 100644 index 000000000..e668d34ba --- /dev/null +++ b/src/zabapgit_html_chunks.prog.xml @@ -0,0 +1,48 @@ + + + + + + ZABAPGIT_HTML_CHUNKS + A + + + X + + + + + + I + + + + 0000-00-00 + + 0000-00-00 + + + + + E + + + 0000-00-00 + + 0000-00-00 + + + X + + + + R + + Include ZABAPGIT_HTML_CHUNKS + 28 + + + + + + diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index f4491616b..251e8d72b 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -17,240 +17,85 @@ INTERFACE lif_gui_page. RAISING lcx_exception lcx_cancel. METHODS render - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. ENDINTERFACE. -CLASS lcl_gui_page_super DEFINITION ABSTRACT. +CLASS lcl_gui_page DEFINITION ABSTRACT. PUBLIC SECTION. - INTERFACES lif_gui_page ABSTRACT METHODS render. - - CLASS-METHODS render_error - IMPORTING ix_error TYPE REF TO lcx_exception - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + INTERFACES lif_gui_page. PROTECTED SECTION. - METHODS render_repo_top - IMPORTING io_repo TYPE REF TO lcl_repo - iv_show_package TYPE abap_bool DEFAULT abap_true - iv_show_branch TYPE abap_bool DEFAULT abap_true - iv_interactive_branch TYPE abap_bool DEFAULT abap_false - iv_branch TYPE string OPTIONAL - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper - RAISING lcx_exception. - METHODS render_item_state - IMPORTING iv1 TYPE char1 - iv2 TYPE char1 - RETURNING VALUE(rv_html) TYPE string. + TYPES: BEGIN OF ty_control, + redirect_url TYPE string, + page_title TYPE string, + page_menu TYPE REF TO lcl_html_toolbar, + END OF ty_control. - METHODS render_branch_span - IMPORTING iv_branch TYPE string - io_repo TYPE REF TO lcl_repo_online - iv_interactive TYPE abap_bool - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper - RAISING lcx_exception. + DATA: ms_control TYPE ty_control. - METHODS header - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. - - METHODS footer - IMPORTING io_include_script TYPE REF TO lcl_html_helper OPTIONAL - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + METHODS html_head + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS title - IMPORTING iv_title TYPE string - io_menu TYPE REF TO lcl_html_toolbar OPTIONAL - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. + + METHODS scripts + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. + + METHODS footer + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS redirect - IMPORTING iv_url TYPE string - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. -ENDCLASS. + METHODS render_content ABSTRACT + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. -CLASS lcl_gui_page_super IMPLEMENTATION. +ENDCLASS. "lcl_gui_page - METHOD render_repo_top. +CLASS lcl_gui_page IMPLEMENTATION. - DATA: lo_repo_online TYPE REF TO lcl_repo_online, - lo_pback TYPE REF TO lcl_persistence_background, - lv_icon TYPE string. - - - CREATE OBJECT ro_html. - CREATE OBJECT lo_pback. - - IF io_repo->is_offline( ) = abap_true. - lv_icon = 'img/repo_offline' ##NO_TEXT. - ELSE. - lv_icon = 'img/repo_online' ##NO_TEXT. - ENDIF. - - ro_html->add( '' ). - - ro_html->add( '' ). - - ro_html->add( '' ). - ro_html->add( '
' ). - ro_html->add( || ). - ro_html->add( |{ io_repo->get_name( ) }| ). - IF io_repo->is_offline( ) = abap_false. - lo_repo_online ?= io_repo. - ro_html->add( |{ lo_repo_online->get_url( ) }| ). - ENDIF. - ro_html->add( '' ). - - IF abap_true = lcl_app=>user( )->is_favorite_repo( io_repo->get_key( ) ). - lv_icon = 'img/star' ##NO_TEXT. - ELSE. - lv_icon = 'img/star-grey' ##NO_TEXT. - ENDIF. - lv_icon = ||. - ro_html->add_anchor( iv_act = |{ gc_action-repo_toggle_fav }?{ io_repo->get_key( ) }| - iv_txt = lv_icon ). - - IF lo_pback->exists( io_repo->get_key( ) ) = abap_true. - ro_html->add( 'BG' ). - ENDIF. - - IF io_repo->is_write_protected( ) = abap_true. - ro_html->add( '' ). - ENDIF. - - IF io_repo->is_offline( ) = abap_false. - lo_repo_online ?= io_repo. - IF iv_show_branch = abap_true. - IF iv_branch IS INITIAL. - ro_html->add( render_branch_span( iv_branch = lo_repo_online->get_branch_name( ) - io_repo = lo_repo_online - iv_interactive = iv_interactive_branch ) ). - ELSE. - ro_html->add( render_branch_span( iv_branch = iv_branch - io_repo = lo_repo_online - iv_interactive = iv_interactive_branch ) ). - ENDIF. - ENDIF. - ENDIF. - - IF iv_show_package = abap_true. - ro_html->add( '' ). - ro_html->add( '' ). - ro_html->add_anchor( iv_txt = io_repo->get_package( ) - iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ). - ro_html->add( '' ). - ENDIF. - - ro_html->add( '
' ). - - ENDMETHOD. - - METHOD render_item_state. - - DATA: lv_system TYPE string. - - FIELD-SYMBOLS TYPE char1. - - - rv_html = ''. - - DO 2 TIMES. - CASE sy-index. - WHEN 1. - ASSIGN iv1 TO . - lv_system = 'Local:'. - WHEN 2. - ASSIGN iv2 TO . - lv_system = 'Remote:'. - ENDCASE. - - CASE . - WHEN gc_state-unchanged. "None or unchanged - IF iv1 = gc_state-added OR iv2 = gc_state-added. - rv_html = rv_html && |X|. - ELSE. - rv_html = rv_html && | |. - ENDIF. - WHEN gc_state-modified. "Changed - rv_html = rv_html && |M|. - WHEN gc_state-added. "Added new - rv_html = rv_html && |A|. - WHEN gc_state-mixed. "Multiple changes (multifile) - rv_html = rv_html && ||. - WHEN gc_state-deleted. "Deleted - rv_html = rv_html && |D|. - ENDCASE. - ENDDO. - - rv_html = rv_html && ''. - - ENDMETHOD. "render_item_state - - METHOD render_branch_span. - DATA: lv_text TYPE string, - lv_class TYPE string. - - lv_text = lcl_git_branch_list=>get_display_name( iv_branch ). - - IF iv_branch = io_repo->get_head_branch_name( ) OR iv_branch = lcl_git_branch_list=>head_name. - lv_class = 'branch branch_head'. - ELSEIF lcl_git_branch_list=>get_type( iv_branch ) = lcl_git_branch_list=>c_type-branch. - lv_class = 'branch branch_branch'. - ELSE. - lv_class = 'branch'. - ENDIF. - - CREATE OBJECT ro_html. - ro_html->add( || ). - ro_html->add( '' ). - IF iv_interactive = abap_true. - ro_html->add_anchor( iv_act = |{ gc_action-git_branch_switch }?{ io_repo->get_key( ) }| - iv_txt = lv_text ). - ELSE. - ro_html->add( lv_text ). - ENDIF. - ro_html->add( '' ). - - ENDMETHOD. "render_branch_span - - METHOD header. + METHOD html_head. CREATE OBJECT ro_html. - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT - ro_html->add( 'abapGit' ). "#EC NOTEXT - ro_html->add( '' ). + ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ENDMETHOD. "render html header + ro_html->add( 'abapGit' ). "#EC NOTEXT + ro_html->add( '' ). + ro_html->add( '' ). "#EC NOTEXT + + ro_html->add( '' ). "#EC NOTEXT + + ENDMETHOD. "html_head METHOD title. CREATE OBJECT ro_html. ro_html->add( '' ). "#EC NOTEXT + + ENDMETHOD. "footer + + METHOD redirect. + + CREATE OBJECT ro_html. + + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( || ). "#EC NOTEXT + ro_html->add( ''). "#EC NOTEXT + ro_html->add( ''). "#EC NOTEXT + + ENDMETHOD. + + METHOD scripts. + ASSERT 1 = 1. " Dummy + ENDMETHOD. "scripts + + METHOD lif_gui_page~on_event. + ev_state = gc_event_state-not_handled. + ENDMETHOD. "lif_gui_page~on_event + + METHOD lif_gui_page~render. + + DATA lo_script TYPE REF TO lcl_html. + + " Redirect + IF ms_control-redirect_url IS NOT INITIAL. + ro_html = redirect( ). + RETURN. + ENDIF. + + " Real page + CREATE OBJECT ro_html. + + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( html_head( ) ). + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( title( ) ). + ro_html->add( render_content( ) ). + ro_html->add( footer( ) ). ro_html->add( '' ). "#EC NOTEXT - IF io_include_script IS BOUND. + lo_script = scripts( ). + + IF lo_script IS BOUND AND lo_script->mv_html IS NOT INITIAL. ro_html->add( '' ). ENDIF. ro_html->add( ''). "#EC NOTEXT - ENDMETHOD. "render html footer & logo + ENDMETHOD. " lif_gui_page~render. - METHOD render_error. - - CREATE OBJECT ro_html. - - ro_html->add( '
' ). - ro_html->add( |Error: { ix_error->mv_text }| ). - ro_html->add( '
' ). - - ENDMETHOD. "render_error - - METHOD redirect. - - CREATE OBJECT ro_html. - - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( || ). "#EC NOTEXT - ro_html->add( ''). "#EC NOTEXT - - ENDMETHOD. - - METHOD lif_gui_page~on_event. - ev_state = gc_event_state-not_handled. - ENDMETHOD. "lif_gui_page~on_event - -ENDCLASS. \ No newline at end of file +ENDCLASS. "lcl_gui_page \ No newline at end of file diff --git a/src/zabapgit_page_background.prog.abap b/src/zabapgit_page_background.prog.abap index 56e9fd0c0..691bcbf1b 100644 --- a/src/zabapgit_page_background.prog.abap +++ b/src/zabapgit_page_background.prog.abap @@ -3,12 +3,14 @@ *&---------------------------------------------------------------------* CLASS lcl_gui_page_background_run DEFINITION FINAL - INHERITING FROM lcl_gui_page_super. + INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS: - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + METHODS constructor. + METHODS lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mt_text TYPE TABLE OF string. @@ -19,6 +21,11 @@ ENDCLASS. CLASS lcl_gui_page_background_run IMPLEMENTATION. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'BACKGROUND_RUN'. + ENDMETHOD. " constructor. + METHOD lif_gui_page~on_event. RETURN. ENDMETHOD. @@ -47,46 +54,44 @@ CLASS lcl_gui_page_background_run IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DATA: lv_text LIKE LINE OF mt_text. - run( ). CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'BACKGROUND_RUN' ) ). ro_html->add( '
' ). LOOP AT mt_text INTO lv_text. ro_html->add( '
' && lv_text && '

' ). ENDLOOP. ro_html->add( '
' ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. CLASS lcl_gui_page_background DEFINITION FINAL - INHERITING FROM lcl_gui_page_super. + INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: - constructor - IMPORTING - iv_key TYPE lcl_persistence_repo=>ty_repo-key, - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + constructor IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key, + lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mv_key TYPE lcl_persistence_repo=>ty_repo-key. METHODS: + build_menu + RETURNING VALUE(ro_menu) TYPE REF TO lcl_html_toolbar, render_data - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. ENDCLASS. @@ -94,10 +99,21 @@ ENDCLASS. CLASS lcl_gui_page_background IMPLEMENTATION. METHOD constructor. + super->constructor( ). + mv_key = iv_key. + ms_control-page_title = 'BACKGROUND'. + ms_control-page_menu = build_menu( ). + ENDMETHOD. + METHOD build_menu. + CREATE OBJECT ro_menu. + ro_menu->add( iv_txt = 'Run background logic' + iv_act = gc_action-go_background_run ) ##NO_TEXT. + ENDMETHOD. "build_menu + METHOD lif_gui_page~on_event. DATA ls_bg_task TYPE lcl_persistence_background=>ty_background. @@ -162,7 +178,7 @@ CLASS lcl_gui_page_background IMPLEMENTATION. lv_afixed = ' checked' ##NO_TEXT. ENDCASE. - ro_html->add( render_repo_top( lo_repo ) ). + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( lo_repo ) ). ro_html->add( '
' ). ro_html->add( 'Method
' ) ##NO_TEXT. @@ -222,22 +238,12 @@ CLASS lcl_gui_page_background IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. - DATA lo_toolbar TYPE REF TO lcl_html_toolbar. - - - CREATE OBJECT lo_toolbar. CREATE OBJECT ro_html. - lo_toolbar->add( iv_txt = 'Run background logic' - iv_act = gc_action-go_background_run ) ##NO_TEXT. - - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'BACKGROUND' io_menu = lo_toolbar ) ). ro_html->add( render_data( ) ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_page_branch_overview.prog.abap b/src/zabapgit_page_branch_overview.prog.abap index 0873eea5c..297dc2990 100644 --- a/src/zabapgit_page_branch_overview.prog.abap +++ b/src/zabapgit_page_branch_overview.prog.abap @@ -302,15 +302,17 @@ ENDCLASS. *********************** -CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: constructor IMPORTING io_repo TYPE REF TO lcl_repo_online RAISING lcx_exception, - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, @@ -333,13 +335,13 @@ CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page refresh RAISING lcx_exception, body - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, form_select IMPORTING iv_name TYPE string - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_merge - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, decode_merge IMPORTING it_postdata TYPE cnht_post_data_tab @@ -360,6 +362,8 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'BRANCH_OVERVIEW'. + ms_control-page_menu = build_menu( ). mo_repo = io_repo. refresh( ). ENDMETHOD. @@ -416,7 +420,7 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( render_repo_top( + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = mo_repo iv_show_package = abap_false iv_show_branch = abap_false ) ). @@ -577,17 +581,14 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'BRANCH_OVERVIEW' io_menu = build_menu( ) ) ). ro_html->add( '
' ). ro_html->add( body( ) ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 434b154c1..4914b6d7d 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -2,7 +2,7 @@ *& Include ZABAPGIT_PAGE_COMMIT *&---------------------------------------------------------------------* -CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. @@ -16,24 +16,26 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. IMPORTING io_repo TYPE REF TO lcl_repo_online io_stage TYPE REF TO lcl_stage RAISING lcx_exception, - lif_gui_page~render REDEFINITION, lif_gui_page~on_event REDEFINITION. + PROTECTED SECTION. + METHODS: + render_content REDEFINITION, + scripts REDEFINITION. + PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, mo_stage TYPE REF TO lcl_stage. METHODS: render_menu - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_stage - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_form - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper - RAISING lcx_exception, - scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. ENDCLASS. @@ -44,6 +46,8 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. mo_repo = io_repo. mo_stage = io_stage. + + ms_control-page_title = 'COMMIT'. ENDMETHOD. METHOD lif_gui_page~on_event. @@ -68,15 +72,12 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'COMMIT' ) ). - ro_html->add( '
' ). - ro_html->add( render_repo_top( + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = mo_repo iv_show_package = abap_false iv_branch = mo_stage->get_branch_name( ) ) ). @@ -86,9 +87,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ro_html->add( render_stage( ) ). ro_html->add( '
' ). - ro_html->add( footer( io_include_script = scripts( ) ) ). - - ENDMETHOD. "lif_gui_page~render + ENDMETHOD. "render_content METHOD render_stage. @@ -201,7 +200,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. lo_toolbar->add( iv_act = 'submitFormById(''commit_form'');' iv_txt = 'Commit' iv_typ = gc_action_type-onclick - iv_opt = gc_html_opt-emphas ) ##NO_TEXT. + iv_opt = gc_html_opt-strong ) ##NO_TEXT. lo_toolbar->add( iv_act = 'commit_cancel' iv_txt = 'Cancel' diff --git a/src/zabapgit_page_db.prog.abap b/src/zabapgit_page_db.prog.abap index 6f8ccf02c..bb637d5a9 100644 --- a/src/zabapgit_page_db.prog.abap +++ b/src/zabapgit_page_db.prog.abap @@ -2,14 +2,15 @@ *& Include ZABAPGIT_PAGE_DB *&---------------------------------------------------------------------* -CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. - METHODS: constructor IMPORTING is_key TYPE lcl_persistence_db=>ty_content. + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. @@ -20,9 +21,10 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_key = is_key. + ms_control-page_title = 'CONFIG DISPLAY'. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str, ls_action TYPE lcl_persistence_db=>ty_content, @@ -44,8 +46,6 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. format = cl_abap_format=>e_html_attr ). CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'CONFIG DISPLAY' ) ). ro_html->add( '
' ). ro_html->add( '
' ). @@ -56,26 +56,25 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. | { ms_key-value }
| ). ro_html->add( '' ). - ro_html->add_anchor( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ). + ro_html->add_a( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ). ro_html->add( '' ). ro_html->add( |
{ lv_data }
| ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. -CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. - METHODS: constructor IMPORTING is_key TYPE lcl_persistence_db=>ty_content. + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. @@ -86,9 +85,10 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_key = is_key. + ms_control-page_title = 'CONFIG EDIT'. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str, lo_toolbar TYPE REF TO lcl_html_toolbar. @@ -112,9 +112,6 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. CREATE OBJECT ro_html. CREATE OBJECT lo_toolbar. - ro_html->add( header( ) ). - ro_html->add( title( 'CONFIG EDIT' ) ). - ro_html->add( '
' ). " Banners @@ -135,7 +132,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. lo_toolbar->add( iv_act = 'submitFormById(''db_form'');' iv_txt = 'Save' iv_typ = gc_action_type-onclick - iv_opt = gc_html_opt-emphas ) ##NO_TEXT. + iv_opt = gc_html_opt-strong ) ##NO_TEXT. ro_html->add( '
' ). ro_html->add( lo_toolbar->render( ) ). @@ -143,16 +140,17 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. ro_html->add( '
' ). "db_entry - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. -CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + METHODS constructor. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. METHODS explain_content @@ -160,12 +158,16 @@ CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. RETURNING VALUE(rv_text) TYPE string RAISING lcx_exception. - ENDCLASS. CLASS lcl_gui_page_db IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'DATABASE PERSISTENCY'. + ENDMETHOD. " constructor. + + METHOD render_content. DATA: lt_data TYPE lcl_persistence_db=>tt_content, lv_action TYPE string, @@ -179,9 +181,6 @@ CLASS lcl_gui_page_db IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'DATABASE PERSISTENCY' ) ). - ro_html->add( '
' ). ro_html->add( '' ). @@ -220,9 +219,7 @@ CLASS lcl_gui_page_db IMPLEMENTATION. ro_html->add( '
' ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - - ENDMETHOD. "lif_gui_page~render + ENDMETHOD. "render_content METHOD explain_content. DATA: lv_result TYPE match_result, @@ -241,9 +238,10 @@ CLASS lcl_gui_page_db IMPLEMENTATION. FIND FIRST OCCURRENCE OF REGEX '' IN is_data-data_str IGNORING CASE MATCH COUNT lv_cnt. IF lv_cnt > 0. - rv_text = |On-line, Name: { lcl_url=>name( rv_text ) }|. + rv_text = |On-line, Name: { + lcl_url=>name( rv_text ) }|. ELSE. - rv_text = |Off-line, Name: { rv_text }|. + rv_text = |Off-line, Name: { rv_text }|. ENDIF. WHEN 'BACKGROUND'. diff --git a/src/zabapgit_page_debug.prog.abap b/src/zabapgit_page_debug.prog.abap index 9900f333a..6d2dfa9f3 100644 --- a/src/zabapgit_page_debug.prog.abap +++ b/src/zabapgit_page_debug.prog.abap @@ -2,15 +2,18 @@ *& Include ZABAPGIT_PAGE_DEBUG *&---------------------------------------------------------------------* -CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + METHODS constructor. + + PROTECTED SECTION. + METHODS: + render_content REDEFINITION, + scripts REDEFINITION. PRIVATE SECTION. - METHODS scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS render_debug_info - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_supported_object_types RETURNING VALUE(rv_html) TYPE string. @@ -18,21 +21,21 @@ ENDCLASS. "lcl_gui_page_debuginfo CLASS lcl_gui_page_debuginfo IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'DEBUG INFO'. + ENDMETHOD. " constructor. + + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'DEBUG INFO' ) ). - ro_html->add( '
' ). ro_html->add( render_debug_info( ) ). ro_html->add( render_supported_object_types( ) ). ro_html->add( '
' ). - ro_html->add( footer( io_include_script = scripts( ) ) ). - - ENDMETHOD. + ENDMETHOD. "render_content METHOD render_debug_info. diff --git a/src/zabapgit_page_diff.prog.abap b/src/zabapgit_page_diff.prog.abap index 1d3715ac7..c67ed6523 100644 --- a/src/zabapgit_page_diff.prog.abap +++ b/src/zabapgit_page_diff.prog.abap @@ -2,7 +2,7 @@ *& Include ZABAPGIT_PAGE_DIFF *&---------------------------------------------------------------------* -CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. @@ -28,26 +28,27 @@ CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super. is_object TYPE ty_item OPTIONAL RAISING lcx_exception. - METHODS lif_gui_page~render REDEFINITION. + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mt_diff_files TYPE tt_file_diff. METHODS render_diff IMPORTING is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_diff_head IMPORTING is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_table_head - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_lines IMPORTING is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_beacon IMPORTING is_diff_line TYPE lcl_diff=>ty_diff is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS get_line_hl IMPORTING iv_mod TYPE char1 iv_result TYPE lcl_diff=>ty_diff-result @@ -73,6 +74,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_status. super->constructor( ). + ms_control-page_title = 'DIFF'. ASSERT is_file IS INITIAL OR is_object IS INITIAL. " just one passed @@ -174,7 +176,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ENDMETHOD. "append_diff METHOD render_diff_head. - DATA: lo_html TYPE REF TO lcl_html_helper, + DATA: lo_html TYPE REF TO lcl_html, ls_stats TYPE lcl_diff=>ty_count. CREATE OBJECT lo_html. @@ -191,7 +193,8 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. lo_html->add( |- { ls_stats-delete }| ). lo_html->add( |~ { ls_stats-update }| ). lo_html->add( |{ is_diff-filename }| ). "#EC NOTEXT - lo_html->add( render_item_state( iv1 = is_diff-lstate iv2 = is_diff-rstate ) ). + lo_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_diff-lstate + iv2 = is_diff-rstate ) ). lo_html->add( '
' ). "#EC NOTEXT ro_html = lo_html. @@ -221,7 +224,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. " Content ro_html->add( '
' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '
' ). "#EC NOTEXT ro_html->add( render_table_head( ) ). ro_html->add( render_lines( is_diff ) ). ro_html->add( '
' ). "#EC NOTEXT @@ -342,15 +345,12 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ENDMETHOD. " get_line_hl. - METHOD lif_gui_page~render. + METHOD render_content. DATA ls_diff_file LIKE LINE OF mt_diff_files. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'DIFF' ) ). - LOOP AT mt_diff_files INTO ls_diff_file. lcl_progress=>show( iv_key = 'Diff' iv_current = sy-tabix @@ -360,8 +360,6 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ro_html->add( render_diff( ls_diff_file ) ). ENDLOOP. - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. "lcl_gui_page_diff \ No newline at end of file diff --git a/src/zabapgit_page_explore.prog.abap b/src/zabapgit_page_explore.prog.abap index eab5b0c95..e46baba68 100644 --- a/src/zabapgit_page_explore.prog.abap +++ b/src/zabapgit_page_explore.prog.abap @@ -2,19 +2,28 @@ *& Include ZABAPGIT_PAGE_EXPLORE *&---------------------------------------------------------------------* -CLASS lcl_gui_page_explore DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_explore DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + + CONSTANTS c_explore_url TYPE string + VALUE 'http://larshp.github.io/abapGit/explore.html'. + + METHODS constructor. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. ENDCLASS. "lcl_gui_page_explore DEFINITION CLASS lcl_gui_page_explore IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-redirect_url = c_explore_url. + ENDMETHOD. "constructor - CREATE OBJECT ro_html. - ro_html->add( redirect( 'http://larshp.github.io/abapGit/explore.html' ) ). - - ENDMETHOD. + METHOD render_content. + ASSERT 1 = 1. " Dummy + ENDMETHOD. "render_content. ENDCLASS. "lcl_gui_page_explore IMPLEMENTATION \ No newline at end of file diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index f7bf81023..032348029 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -2,15 +2,17 @@ *& Include ZABAPGIT_PAGE_MAIN *&---------------------------------------------------------------------* -CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: constructor RAISING lcx_exception, - lif_gui_page~render REDEFINITION, lif_gui_page~on_event REDEFINITION. + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. CONSTANTS: BEGIN OF c_actions, show TYPE string VALUE 'show' ##NO_TEXT, @@ -27,16 +29,16 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super. RAISING lcx_exception, render_toc IMPORTING it_repo_list TYPE lcl_repo_srv=>ty_repo_tt - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, build_main_menu RETURNING VALUE(ro_menu) TYPE REF TO lcl_html_toolbar, render_explore - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_repo IMPORTING io_repo TYPE REF TO lcl_repo - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. ENDCLASS. @@ -46,6 +48,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'HOME'. + ms_control-page_menu = build_main_menu( ). ENDMETHOD. " constructor METHOD lif_gui_page~on_event. @@ -112,7 +116,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. * RENDERING ********************************************************************** - METHOD lif_gui_page~render. + METHOD render_content. DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt, lx_error TYPE REF TO lcx_exception, @@ -123,14 +127,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'HOME' - io_menu = build_main_menu( ) ) ). - TRY. lt_repos = lcl_app=>repo_srv( )->list( ). CATCH lcx_exception INTO lx_error. - ro_html->add( render_error( lx_error ) ). + ro_html->add( lcl_gui_chunk_lib=>render_error( ix_error = lx_error ) ). ENDTRY. ro_html->add( render_toc( lt_repos ) ). @@ -139,15 +139,13 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ro_html->add( render_explore( ) ). ELSEIF mv_show IS INITIAL. CREATE OBJECT lo_tutorial. - ro_html->add( lo_tutorial->lif_gui_page~render( ) ). + ro_html->add( lo_tutorial->render( ) ). ELSE. lo_repo = lcl_app=>repo_srv( )->get( mv_show ). ro_html->add( render_repo( lo_repo ) ). ENDIF. - ro_html->add( footer( ) ). - - ENDMETHOD. "render + ENDMETHOD. "render_content METHOD retrieve_active_repo. @@ -235,7 +233,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. LOOP AT it_repo_list INTO lo_repo. lv_key = lo_repo->get_key( ). IF lv_key = mv_show. - lv_opt = gc_html_opt-emphas. + lv_opt = gc_html_opt-strong. ELSE. CLEAR lv_opt. ENDIF. @@ -256,9 +254,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ENDIF. IF lo_repo->is_offline( ) = abap_true. - lv_icon = ''. + lv_icon = 'repo_offline'. ELSE. - lv_icon = ''. + lv_icon = 'repo_online'. ENDIF. lo_allbar->add( iv_txt = lv_repo_title @@ -279,22 +277,24 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ********************************************************************** - ro_html->add( '' ). - ro_html->add( '' ). + ro_html->add( '
' ). + ro_html->add( || ). - ro_html->add( '' ). ro_html->add( ''). ro_html->add(''). ro_html->add(''). @@ -200,7 +203,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. ig_file = is_file ). ro_html->add( '' ). ro_html->add( '' ). WHEN 'remote'. ro_html->add( '' ). @@ -211,38 +214,33 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. ENDMETHOD. "render_file - METHOD lif_gui_page~render. + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'STAGE' ) ). - ro_html->add( '
' ). - ro_html->add( render_repo_top( mo_repo ) ). + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( mo_repo ) ). ro_html->add( render_menu( ) ). ro_html->add( render_list( ) ). ro_html->add( '
' ). - ro_html->add( footer( scripts( ) ) ). - - ENDMETHOD. "lif_gui_page~render + ENDMETHOD. "render_content METHOD render_menu. CREATE OBJECT ro_html. ro_html->add( '
' ). - ro_html->add_anchor( iv_act = 'gHelper.submit();' - iv_typ = gc_action_type-onclick - iv_id = 'act_commit' - iv_style = 'display: none' - iv_txt = 'Commit' - iv_opt = gc_html_opt-emphas ) ##NO_TEXT. + ro_html->add_a( iv_act = 'gHelper.submit();' + iv_typ = gc_action_type-onclick + iv_id = 'act_commit' + iv_style = 'display: none' + iv_txt = 'Commit' + iv_opt = gc_html_opt-strong ) ##NO_TEXT. IF lines( ms_files-local ) > 0. - ro_html->add_anchor( iv_act = |{ c_action-stage_all }| - iv_id = 'act_commit_all' - iv_txt = 'Add all and commit') ##NO_TEXT. + ro_html->add_a( iv_act = |{ c_action-stage_all }| + iv_id = 'act_commit_all' + iv_txt = 'Add all and commit') ##NO_TEXT. ENDIF. ro_html->add( '
' ). diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 2d63e98a7..8fb06bc0c 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -1237,7 +1237,7 @@ ENDCLASS. "lcl_abap_unit IMPLEMENTATION CLASS ltcl_html_helper DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. PRIVATE SECTION. - DATA: mo_html TYPE REF TO lcl_html_helper. + DATA: mo_html TYPE REF TO lcl_html. METHODS: indent1 FOR TESTING RAISING lcx_exception, diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 7ae234ff9..20478551d 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -1043,7 +1043,7 @@ CLASS lcl_log DEFINITION FINAL. count RETURNING VALUE(rv_count) TYPE i, to_html - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, clear, has_rc "For unit tests mainly IMPORTING iv_rc TYPE balsort diff --git a/src/zabapgit_view_repo.prog.abap b/src/zabapgit_view_repo.prog.abap index da446e9ba..cf2cbdd8c 100644 --- a/src/zabapgit_view_repo.prog.abap +++ b/src/zabapgit_view_repo.prog.abap @@ -2,8 +2,10 @@ *& Include ZABAPGIT_VIEW_REPO *&---------------------------------------------------------------------* -CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_view_repo_content DEFINITION FINAL. PUBLIC SECTION. + INTERFACES lif_gui_page. + ALIASES render FOR lif_gui_page~render. CONSTANTS: BEGIN OF c_actions, change_dir TYPE string VALUE 'change_dir' ##NO_TEXT, @@ -12,9 +14,6 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su toggle_changes TYPE string VALUE 'toggle_changes' ##NO_TEXT, END OF c_actions. - METHODS: lif_gui_page~render REDEFINITION, - lif_gui_page~on_event REDEFINITION. - METHODS constructor IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception. @@ -31,21 +30,21 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su render_head_menu IMPORTING iv_lstate TYPE char1 iv_rstate TYPE char1 - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_grid_menu - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_item IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_item_files IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_item_command IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, get_item_class IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item RETURNING VALUE(rv_html) TYPE string, @@ -55,7 +54,7 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su render_empty_package RETURNING VALUE(rv_html) TYPE string, render_parent_dir - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. METHODS: @@ -150,7 +149,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ro_html->add( render_grid_menu( ) ). " Repo content table - ro_html->add( '
{ + lcl_html=>icon( iv_name = 'star' iv_alt = 'Favs' iv_hint = 'Favorites' ) + }' ). " Maximize width + ro_html->add( '' ). " Maximize width IF lo_favbar->count( ) > 0. ro_html->add( lo_favbar->render( iv_sort = abap_true ) ). ELSE. - ro_html->add( `No favorites so far. For more info please check ` ). - ro_html->add_anchor( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial ). - ro_html->add( '' ). + ro_html->add( |No favorites so far. For more info please check { + lcl_html=>a( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial ) + }| ). ENDIF. ro_html->add( '' ). ro_html->add( lo_allbar->render( - iv_as_droplist_with_label = '' + iv_as_droplist_with_label = lcl_html=>icon( iv_name = 'burger' iv_class = 'pad4px' ) iv_sort = abap_true iv_with_icons = abap_true iv_add_minizone = abap_true ) ). @@ -330,8 +330,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( |
| ). - ro_html->add( render_repo_top( io_repo = io_repo iv_interactive_branch = abap_true ) ). - ro_html->add( mo_repo_content->lif_gui_page~render( ) ). + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = io_repo + iv_interactive_branch = abap_true ) ). + ro_html->add( mo_repo_content->render( ) ). ro_html->add( '
' ). ENDMETHOD. "render_repo diff --git a/src/zabapgit_page_merge.prog.abap b/src/zabapgit_page_merge.prog.abap index c415d02eb..e51157d7a 100644 --- a/src/zabapgit_page_merge.prog.abap +++ b/src/zabapgit_page_merge.prog.abap @@ -315,7 +315,7 @@ ENDCLASS. ********************************* -CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: @@ -324,8 +324,10 @@ CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page_super. iv_source TYPE string iv_target TYPE string RAISING lcx_exception, - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, @@ -346,6 +348,8 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'MERGE'. + ms_control-page_menu = build_menu( ). mo_repo = io_repo. @@ -381,7 +385,7 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DEFINE _show_file. READ TABLE &1 ASSIGNING @@ -410,10 +414,8 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'MERGE' io_menu = build_menu( ) ) ). ro_html->add( '
' ). - ro_html->add( render_repo_top( + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = mo_repo iv_show_package = abap_false iv_show_branch = abap_false ) ). @@ -473,8 +475,7 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. ro_html->add( ms_merge-conflict ). ro_html->add( '' ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap index 4f11a9d5c..fecba3154 100644 --- a/src/zabapgit_page_settings.prog.abap +++ b/src/zabapgit_page_settings.prog.abap @@ -2,17 +2,20 @@ *& Include ZABAPGIT_PAGE_SETTINGS *&---------------------------------------------------------------------* -CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - - METHODS lif_gui_page~render REDEFINITION. - METHODS lif_gui_page~on_event REDEFINITION. CONSTANTS: BEGIN OF c_action, save_settings TYPE string VALUE 'save_settings', END OF c_action. + METHODS constructor. + METHODS lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. DATA: @@ -20,13 +23,13 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super. mv_error TYPE abap_bool. METHODS render_proxy - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_development_internals - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_form_begin - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_form_end - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS build_settings IMPORTING it_post_fields TYPE tihttpnvp. @@ -45,24 +48,24 @@ ENDCLASS. CLASS lcl_gui_page_settings IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'SETTINGS'. + ENDMETHOD. " constructor. + + METHOD render_content. CREATE OBJECT ro_html. read_settings( ). - ro_html->add( header( ) ). - ro_html->add( title( 'Settings' ) ). - ro_html->add( render_form_begin( ) ). ro_html->add( render_proxy( ) ). ro_html->add( |
| ). ro_html->add( render_development_internals( ) ). ro_html->add( render_form_end( ) ). - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content METHOD render_proxy. diff --git a/src/zabapgit_page_stage.prog.abap b/src/zabapgit_page_stage.prog.abap index 9c1893be2..e460b7c1b 100644 --- a/src/zabapgit_page_stage.prog.abap +++ b/src/zabapgit_page_stage.prog.abap @@ -2,7 +2,7 @@ *& Include ZABAPGIT_PAGE_STAGE *&---------------------------------------------------------------------* -CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. CONSTANTS: BEGIN OF c_action, @@ -14,9 +14,13 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super. constructor IMPORTING io_repo TYPE REF TO lcl_repo_online RAISING lcx_exception, - lif_gui_page~render REDEFINITION, lif_gui_page~on_event REDEFINITION. + PROTECTED SECTION. + METHODS: + render_content REDEFINITION, + scripts REDEFINITION. + PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, ms_files TYPE ty_stage_files, @@ -25,15 +29,13 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super. METHODS: render_list - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_file IMPORTING is_file TYPE ty_file iv_context TYPE string - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_menu - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, - scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS process_stage_list IMPORTING it_postdata TYPE cnht_post_data_tab @@ -46,6 +48,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'STAGE'. mo_repo = io_repo. ms_files = lcl_stage_logic=>get( mo_repo ). @@ -150,8 +153,8 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. ro_html->add('
LOCAL' ). IF lines( ms_files-local ) > 1. - ro_html->add_anchor( iv_txt = |{ lines( ms_files-local ) } diffs| - iv_act = |{ gc_action-go_diff }?key={ mo_repo->get_key( ) }| ). + ro_html->add_a( iv_txt = |{ lines( ms_files-local ) } diffs| + iv_act = |{ gc_action-go_diff }?key={ mo_repo->get_key( ) }| ). ENDIF. ro_html->add('
add' ). - ro_html->add_anchor( iv_txt = 'diff' iv_act = |{ gc_action-go_diff }?{ lv_param }| ). + ro_html->add_a( iv_txt = 'diff' iv_act = |{ gc_action-go_diff }?{ lv_param }| ). ro_html->add( 'ignoreremove
' ). + ro_html->add( '
' ). IF lcl_path=>is_root( mv_cur_dir ) = abap_false. ro_html->add( render_parent_dir( ) ). @@ -169,7 +168,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. CATCH lcx_exception INTO lx_error. ro_html->add( render_head_menu( iv_lstate = lv_lstate iv_rstate = lv_rstate ) ). - ro_html->add( lcl_gui_page_super=>render_error( lx_error ) ). + ro_html->add( lcl_gui_chunk_lib=>render_error( ix_error = lx_error ) ). ENDTRY. ENDMETHOD. "lif_gui_page~render @@ -233,7 +232,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. lv_wp_opt = gc_html_opt-crossout. lv_pull_opt = gc_html_opt-crossout. ELSE. - lv_pull_opt = gc_html_opt-emphas. + lv_pull_opt = gc_html_opt-strong. ENDIF. " Build branch drop-down ======================== @@ -283,12 +282,12 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. IF iv_lstate IS NOT INITIAL. " Something new at local lo_toolbar->add( iv_txt = 'Stage' iv_act = |{ gc_action-go_stage }?{ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). ENDIF. IF iv_rstate IS NOT INITIAL OR iv_lstate IS NOT INITIAL. " Any changes lo_toolbar->add( iv_txt = 'Show diff' iv_act = |{ gc_action-go_diff }?key={ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). ENDIF. CATCH lcx_exception ##NO_HANDLER. " authorization error or repository does not exist @@ -299,10 +298,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ELSE. lo_toolbar->add( iv_txt = 'Import ZIP' iv_act = |{ gc_action-zip_import }?{ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). lo_toolbar->add( iv_txt = 'Export ZIP' iv_act = |{ gc_action-zip_export }?{ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). ENDIF. lo_toolbar->add( iv_txt = 'Advanced' @@ -312,7 +311,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. " Render ========================================== ro_html->add( '
' ). - ro_html->add( '
' ). + ro_html->add( '
' ). IF mv_show_folders = abap_true. ro_html->add( || ). @@ -349,17 +348,17 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. CASE is_item-obj_type. WHEN 'PROG' OR 'CLAS' OR 'FUGR'. - rv_html = ||. + rv_html = lcl_html=>icon( 'code' ). WHEN 'W3MI' OR 'W3HT'. - rv_html = ||. + rv_html = lcl_html=>icon( 'bin' ). WHEN ''. rv_html = space. " no icon WHEN OTHERS. - rv_html = ||. + rv_html = lcl_html=>icon( 'obj' ). ENDCASE. IF is_item-is_dir = abap_true. - rv_html = ||. + rv_html = lcl_html=>icon( 'dir' ). ENDIF. ENDMETHOD. "get_item_icon @@ -436,7 +435,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ro_html->add( '
' ). ro_html->add( |{ is_item-changes } changes| ). - ro_html->add( render_item_state( iv1 = is_item-lstate iv2 = is_item-rstate ) ). + ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_item-lstate + iv2 = is_item-rstate ) ). ro_html->add( '
' ). ELSEIF is_item-changes > 0. @@ -448,9 +448,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ig_object = is_item ). ro_html->add( '
' ). - ro_html->add_anchor( iv_txt = |view diff ({ is_item-changes })| - iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). - ro_html->add( render_item_state( iv1 = is_item-lstate iv2 = is_item-rstate ) ). + ro_html->add_a( iv_txt = |view diff ({ is_item-changes })| + iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). + ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_item-lstate + iv2 = is_item-rstate ) ). ro_html->add( '
' ). ELSE. @@ -461,10 +462,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. lv_difflink = lcl_html_action_utils=>file_encode( iv_key = mo_repo->get_key( ) ig_file = ls_file ). - ro_html->add_anchor( - iv_txt = 'view diff' - iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). - ro_html->add( render_item_state( iv1 = ls_file-lstate iv2 = ls_file-rstate ) ). + ro_html->add_a( iv_txt = 'view diff' + iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). + ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = ls_file-lstate + iv2 = ls_file-rstate ) ). ELSE. ro_html->add( ' ' ). ENDIF. @@ -490,7 +491,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( '' ). - ro_html->add( || ). + ro_html->add( || ). ro_html->add( || ). IF mo_repo->is_offline( ) = abap_false. ro_html->add( || ). " Dummy for online @@ -503,14 +504,14 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. DATA: lv_path TYPE string, lv_encode TYPE string, - lo_html TYPE REF TO lcl_html_helper. + lo_html TYPE REF TO lcl_html. lv_path = iv_path. REPLACE FIRST OCCURRENCE OF mv_cur_dir IN lv_path WITH ''. lv_encode = lcl_html_action_utils=>dir_encode( lv_path ). CREATE OBJECT lo_html. - lo_html->add_anchor( iv_txt = lv_path iv_act = |{ c_actions-change_dir }?{ lv_encode }| ). + lo_html->add_a( iv_txt = lv_path iv_act = |{ c_actions-change_dir }?{ lv_encode }| ). rv_html = lo_html->mv_html. ENDMETHOD. "build_dir_jump_link @@ -518,14 +519,14 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. METHOD build_obj_jump_link. DATA: lv_encode TYPE string, - lo_html TYPE REF TO lcl_html_helper. + lo_html TYPE REF TO lcl_html. lv_encode = lcl_html_action_utils=>jump_encode( iv_obj_type = is_item-obj_type iv_obj_name = is_item-obj_name ). CREATE OBJECT lo_html. - lo_html->add_anchor( iv_txt = |{ is_item-obj_name }| - iv_act = |{ gc_action-jump }?{ lv_encode }| ). + lo_html->add_a( iv_txt = |{ is_item-obj_name }| + iv_act = |{ gc_action-jump }?{ lv_encode }| ). rv_html = lo_html->mv_html. ENDMETHOD. "build_obj_jump_link diff --git a/src/zabapgit_view_tutorial.prog.abap b/src/zabapgit_view_tutorial.prog.abap index d7ea7f729..1cc2c0105 100644 --- a/src/zabapgit_view_tutorial.prog.abap +++ b/src/zabapgit_view_tutorial.prog.abap @@ -2,18 +2,23 @@ *& Include ZABAPGIT_PAGE_TUTORIAL *&---------------------------------------------------------------------* -CLASS lcl_gui_view_tutorial DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_view_tutorial DEFINITION FINAL. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + INTERFACES lif_gui_page. + ALIASES render FOR lif_gui_page~render. PRIVATE SECTION. METHODS render_content - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. ENDCLASS. "lcl_gui_view_tutorial CLASS lcl_gui_view_tutorial IMPLEMENTATION. + METHOD lif_gui_page~on_event. + ev_state = gc_event_state-not_handled. + ENDMETHOD. " lif_gui_page~on_event. + METHOD lif_gui_page~render. CREATE OBJECT ro_html. @@ -34,10 +39,10 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION. _add '

Adding and cloning repos

'. _add '

    '. _add `
  • To clone a remote repo (e.g. from github) click `. - ro_html->add_anchor( iv_txt = '+ Clone' iv_act = gc_action-repo_clone ). + ro_html->add_a( iv_txt = '+ Clone' iv_act = gc_action-repo_clone ). _add ' from the top menu. This will copy a remote repo to your system.
  • '. _add `
  • To add a local package as a repo click `. - ro_html->add_anchor( iv_txt = '+ Offline' iv_act = gc_action-repo_newoffline ). + ro_html->add_a( iv_txt = '+ Offline' iv_act = gc_action-repo_newoffline ). _add ' from the top menu. This will track a repo which already exist in'. _add ' the system with abapGit. You''ll be able to attach it to remote origin'. _add ' or just serialize as a zip file
  • '. @@ -45,18 +50,20 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION. _add '

    Repository list and favorites

    '. _add '

      '. - _add '
    • To choose a repo press at the favorite bar.
    • '. - _add '
    • To favorite a repo click icon at repo toolbar.
    • '. + ro_html->add( |
    • To choose a repo press { + lcl_html=>icon( 'burger' ) } at the favorite bar.
    • | ). + ro_html->add( |
    • To favorite a repo click { + lcl_html=>icon( 'star-grey' ) } icon at repo toolbar.
    • | ). _add '

    '. _add '

    abapGit related repositories

    '. _add '

      '. _add '
    • '. - ro_html->add_anchor( iv_txt = 'install abapGit repo' iv_act = gc_action-abapgit_install ). + ro_html->add_a( iv_txt = 'install abapGit repo' iv_act = gc_action-abapgit_install ). _add ' - To keep abapGit up-to-date (or also to contribute) you need to'. _add 'install it as a repository.
    • '. _add '
    • '. - ro_html->add_anchor( iv_txt = 'install abapGit plugins' iv_act = gc_action-abapgit_install_pi ). + ro_html->add_a( iv_txt = 'install abapGit plugins' iv_act = gc_action-abapgit_install_pi ). _add ' - you can also install plugins to extend supported object types
    • '. _add '

    '. From 69f844a79947b8c1d41e2142c96557bcf70e6a62 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 7 Jan 2017 10:15:56 +0200 Subject: [PATCH 38/40] lcl_gui_page method visibility tweak --- src/zabapgit_page.prog.abap | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 251e8d72b..dc3791308 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -36,15 +36,22 @@ CLASS lcl_gui_page DEFINITION ABSTRACT. DATA: ms_control TYPE ty_control. + METHODS render_content ABSTRACT + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. + + METHODS scripts + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. + + PRIVATE SECTION. + METHODS html_head RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS title RETURNING VALUE(ro_html) TYPE REF TO lcl_html. - METHODS scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html - RAISING lcx_exception. METHODS footer RETURNING VALUE(ro_html) TYPE REF TO lcl_html. @@ -52,10 +59,6 @@ CLASS lcl_gui_page DEFINITION ABSTRACT. METHODS redirect RETURNING VALUE(ro_html) TYPE REF TO lcl_html. - METHODS render_content ABSTRACT - RETURNING VALUE(ro_html) TYPE REF TO lcl_html - RAISING lcx_exception. - ENDCLASS. "lcl_gui_page CLASS lcl_gui_page IMPLEMENTATION. From da43f60fdae081e975fc71c67f900f95ba9c03ba Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 7 Jan 2017 11:19:58 +0200 Subject: [PATCH 39/40] webfonts #525 --- src/zabapgit_css_common.w3mi.data.css | 1 + src/zabapgit_gui_asset_manager.prog.abap | 166 ++--------------------- src/zabapgit_html.prog.abap | 15 +- src/zabapgit_html_chunks.prog.abap | 24 ++-- src/zabapgit_page.prog.abap | 2 + src/zabapgit_page_main.prog.abap | 9 +- src/zabapgit_view_repo.prog.abap | 8 +- src/zabapgit_view_tutorial.prog.abap | 4 +- 8 files changed, 48 insertions(+), 181 deletions(-) diff --git a/src/zabapgit_css_common.w3mi.data.css b/src/zabapgit_css_common.w3mi.data.css index 26a3de560..80fd4ebf1 100644 --- a/src/zabapgit_css_common.w3mi.data.css +++ b/src/zabapgit_css_common.w3mi.data.css @@ -35,6 +35,7 @@ form input:focus, textarea:focus { /* COLOR PALETTE */ .grey { color: lightgrey !important; } +.darkgrey { color: #808080 !important; } .attention { color: red !important; } .blue { color: #5e8dc9; !important; } .red { color: red !important; } diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 8c94df8a6..c1419eb12 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -13,6 +13,9 @@ CLASS lcl_gui_asset_manager DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_gui. METHODS get_images RETURNING VALUE(rt_images) TYPE tt_web_assets. + CLASS-METHODS get_webfont_link + RETURNING VALUE(rv_link) TYPE string. + PRIVATE SECTION. METHODS get_inline_asset @@ -252,160 +255,15 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. && 'cpUAAAAASUVORK5CYII='. APPEND ls_image TO rt_images. -* http://fa2png.io/r/octicons/ -* colour: #808080 -* size: 16 -* https://www.base64-image.de/ can be used to convert images to base64 - - ls_image-url = 'img/sync' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQYGY3BIWuUAQAG' - && '4Pc7N72xsbGBYNE8tYpVZKDZX2CcYLEZ9yQxOQSz3D/YmkUsVovRQ2SYNJnlkFfH7VZu' - && 'wefJgrGHXnjrpQeu5B93smCwr6qqqp54433mDI5Ucds1u577o+p35hyoqe2cMThWVatJ' - && '7KiZrZxz18SJqqtJPFXPssRgw0oSH9WNXMCQU76qzSxx2cxxTlk3yhKb6mcSQy7kvjpM' - && 'Ylt98tpjN3POyFTdSuKSqppayxkjE/Uhc36p+m7PhhXr7vmmfhhnzpHPJqqqquqdcRY8' - && 'spq47sAXMyde2c3/+wvX7Y18BexhBwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/toc' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgIAO39T0AAAABnRSTlMABBCRlMXJzV0oAAAAN0lEQVQIW2NgwABuaWlB' - && 'YWlpDgwJDAxiAgxACshgYwAz0tLY2NISSBWBMYAmg4ADyBZhARCJAQBBchGypGCbQgAA' - && 'AABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/repo_online' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEUAAABQbJxQbJxQ' - && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' - && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' - && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' - && 'bJz+TJ01AAAANnRSTlMAAQIDBAcJCgwSFBocHygqMTM1NkRHSU1QUWFiZGlweHuDiImL' - && 'lZiio6a5vsfT3uTo6e3x9fsxY2JuAAAAgUlEQVQYGXXB6RaBUBSA0e+IEuIiMs9zhlDn' - && '/R/NZWmt/LA3f1RcoaB50SydCbn20wjedkPu3sKSpMGH21PhLdZ0BATZ+cCXtxtDHGLV' - && 'pgFW9QqJj2U0wvJvMF+5jiNGI3HK9dMQSouH6sRoFGoWd8l1dEDRWlWPQsFS98KPvvDH' - && 'C3HLClrWc70ZAAAAAElFTkSuQmCC'. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/repo_offline' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICuaWnmAAAAG3RSTlMAAgQFBgsQFxweIiMtN3yI' - && 'nqOvt9Hp6/Hz9fktMNR/AAAAXElEQVQYV5WO2xJAMAxES1q3ugfF/v9/0qLyyL4k58xk' - && 'J0p9D7N5oeqZgSwy7fDZnHNdEE1gWK116tksl7hPimGFFPWYl7MU0zksRCl8TStKg1AJ' - && '0XNC8Zm4/c0BUVQHi0llOUYAAAAASUVORK5CYII='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/pkg' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA30lEQVQoU43OIUuDcRSF' - && '8fvqhuB0mFwaKLbVBVdkX0GTFss+wYL2H4rJIIgyQQSzZcUPoGHZ9CKCmAwTMS8Y/ga3' - && 'BWVjT7hwOQ+HEzEbMhU7jrTd69q2KhtFRU2nrvS927dm3pyqPXcuNRVD7sxiRIQlDSc+' - && 'PGjZUFDWkYekLfdoV2XYua4rSZ61pZBkEUq2XPty41XuXJIiZGNhPDVZiFCYIMSor+Db' - && '7RQhYnQnCsNvNmGgPFFYMQh1PU9aqrLxyGUNx/p66r9mUc2hFx3JhU9vDtQU4y9KGjaV' - && '/gXT+AGZVIinhU2EAwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/branch' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAqFBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgID/OyosAAAAN3RSTlMAAQIDBAYICQ8TFRweJScoKSo3Oj1FRk1dYWJjZmhzdIaJ' - && 'j5GVm6CwsrS5vsHDyszV19ne7/X583teZAAAAIFJREFUGFdVytkagVAYheFvFzJlnqc0' - && 'EEoR+u//zhxI7dbZ9z4LMJ1op9DmjpntdXiBigHbLiAYqukBVr63+YGRSazgCY/iEooP' - && 'xKZxr0EnSbo14B1Rg4msKzj150fJrQpERPLBv7mIfNxlq+zRbZsu0JYpGlcdwjY9Twfr' - && 'nAbNsr6IKQxJI/U5CgAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/link' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVwFMKAAAAHnRSTlMAAwQFBgcK' - && 'FR4gIiMmP0JHSm+RmKDByM/R09rg+/0jN/q+AAAAX0lEQVQYV43Nxw6AIBAE0FGw916Z' - && '//9MRQ0S4sG5bPZlCxqSCyBGXgFUJKUA4A8PUOKONzuQOxOZIjcLkrMvxGQg3skSCFYL' - && 'Kl1Ds5LWz+33yyf4rQOSf6CjnV6rHeAA87gJtKzI8ocAAAAASUVORK5CYII='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/code' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA' - && 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAAA1SURBVAhbY2AODQ0NEWBgYGVg' - && 'YGByhNAMKgIMrKyhAQxMDhA+QwCCZgVqIIUP1Q+yJzTUAAAfUAq+Os55uAAAAABJRU5E' - && 'rkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/bin' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA' - && 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAABBSURBVAhbXcqxDYAwAMRAK8h9' - && 'hmAARoANvuD3X4UCiojqZMlsbe8JAuN6ZZ9ozThRCVmsJe9H0HwdXf19W9v2eAA6Fws2' - && 'RotPsQAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/obj' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgIDcWqnoAAAACnRSTlMABD1AZI+RlcPFIaFe1gAA' - && 'AEVJREFUCFtjYF+1atVKAQYGLgYGBuaJEJrBUgBCM0+A0AwLgLQIgyOIZmwCSgNptgAG' - && '1gQQfzKDhgCSPFw9Kg2yZ9WqAgBWJBENLk6V3AAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/lock' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACIiIiIiIiI' - && 'iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjNaTNB' - && 'AAAAEnRSTlMABgdBVXt8iYuRsNXZ3uDi6Pmu6tfUAAAASUlEQVQYV63KSxJAQBAE0TQ0' - && 'Znym1f0PayE0QdjJ5asCgGTu1hClqjppvaRXB60swBeA2QNUAIq+ICvKx367nqAn/P8Y' - && 't2jg3Q5rgASaF3KNRwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/dir' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEUAAABmksxmksxm' - && 'ksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxm' - && 'ksxmksxmksxmksxMwQo8AAAAF3RSTlMABhIYIy1fZmhpe3+IiYuMkZvD7e/x93sipD4A' - && 'AAA+SURBVBhXY2BABzwiokAgzAYXEGdiBAIWIYQAPzcQCApzgwEXM4M4KuBDFxAYKAEx' - && 'VAFeBlYOTiTAzoThewD5hBAcnWM4gwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/burger' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAHlBMVEUAAABtktltktlt' - && 'ktltktltktltktltktltktltktk7ccVDAAAACXRSTlMAFDBLY2SFoPGv/DFMAAAAJ0lE' - && 'QVQIW2NggIHKmWAwmaETwpjGoBoKBo4MmIAkxXApuGK4dgwAAJa5IzLs+gRBAAAAAElF' - && 'TkSuQmCC'. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/star' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAABejclejcle' - && 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle' - && 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle' - && 'jclejclejclejclejclejclejclejclejcn2yvsVAAAALXRSTlMAAQIFBwkKCw0QERUY' - && 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC' - && 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV' - && 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o' - && 'ahA3YV7OfwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ls_image-url = 'img/star-grey' ##NO_TEXT. - ls_image-base64 = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAADQ0NDQ0NDQ' - && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ' - && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ' - && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NC2QdifAAAALXRSTlMAAQIFBwkKCw0QERUY' - && 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC' - && 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV' - && 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o' - && 'ahA3YV7OfwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_images. - - ENDMETHOD. " get_inline_images. + METHOD get_webfont_link. + + rv_link = ''. "#EC NOTEXT + + ENDMETHOD. " get_webfont_link + ENDCLASS. "lcl_gui_asset_manager \ No newline at end of file diff --git a/src/zabapgit_html.prog.abap b/src/zabapgit_html.prog.abap index 5b0f065a5..1bddb868f 100644 --- a/src/zabapgit_html.prog.abap +++ b/src/zabapgit_html.prog.abap @@ -238,22 +238,23 @@ CLASS lcl_html IMPLEMENTATION. METHOD icon. DATA: lv_hint TYPE string, - lv_alt TYPE string, + lv_name TYPE string, + lv_color TYPE string, lv_class TYPE string. + SPLIT iv_name AT '/' INTO lv_name lv_color. + IF iv_hint IS NOT INITIAL. lv_hint = | title="{ iv_hint }"|. ENDIF. IF iv_class IS NOT INITIAL. - lv_class = | class="{ iv_class }"|. + lv_class = | { iv_class }|. ENDIF. - IF iv_alt IS INITIAL. - lv_alt = | alt|. " To pass html validation - ELSE. - lv_alt = | alt="{ iv_alt }"|. + IF lv_color IS NOT INITIAL. + lv_color = | { lv_color }|. ENDIF. - rv_str = | |. + rv_str = ||. ENDMETHOD. "icon diff --git a/src/zabapgit_html_chunks.prog.abap b/src/zabapgit_html_chunks.prog.abap index ed387db81..79d4b4fed 100644 --- a/src/zabapgit_html_chunks.prog.abap +++ b/src/zabapgit_html_chunks.prog.abap @@ -48,10 +48,10 @@ CLASS lcl_gui_chunk_lib IMPLEMENTATION. CREATE OBJECT lo_pback. IF io_repo->is_offline( ) = abap_true. - lv_icon = 'repo_offline' ##NO_TEXT. + lv_icon = 'plug/darkgrey' ##NO_TEXT. lv_hint = 'Offline repository' ##NO_TEXT. ELSE. - lv_icon = 'repo_online' ##NO_TEXT. + lv_icon = 'cloud-upload/blue' ##NO_TEXT. lv_hint = 'On-line repository' ##NO_TEXT. ENDIF. @@ -69,9 +69,9 @@ CLASS lcl_gui_chunk_lib IMPLEMENTATION. ro_html->add( '
{ mv_cur_dir }
{ lcl_html=>icon( 'dir' ) }{ build_dir_jump_link( '..' ) }' ). IF abap_true = lcl_app=>user( )->is_favorite_repo( io_repo->get_key( ) ). - lv_icon = 'star' ##NO_TEXT. + lv_icon = 'star/blue' ##NO_TEXT. ELSE. - lv_icon = 'star-grey' ##NO_TEXT. + lv_icon = 'star/grey' ##NO_TEXT. ENDIF. ro_html->add_a( iv_act = |{ gc_action-repo_toggle_fav }?{ io_repo->get_key( ) }| iv_txt = lcl_html=>icon( iv_name = lv_icon @@ -83,7 +83,7 @@ CLASS lcl_gui_chunk_lib IMPLEMENTATION. ENDIF. IF io_repo->is_write_protected( ) = abap_true. - ro_html->add_icon( iv_name = 'lock' iv_hint = 'Locked from pulls' ). + ro_html->add_icon( iv_name = 'lock/darkgrey' iv_hint = 'Locked from pulls' ). ENDIF. IF io_repo->is_offline( ) = abap_false. @@ -102,7 +102,7 @@ CLASS lcl_gui_chunk_lib IMPLEMENTATION. ENDIF. IF iv_show_package = abap_true. - ro_html->add_icon( iv_name = 'pkg' iv_hint = 'SAP package' ). + ro_html->add_icon( iv_name = 'package/darkgrey' iv_hint = 'SAP package' ). ro_html->add( '' ). ro_html->add_a( iv_txt = io_repo->get_package( ) iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ). @@ -172,7 +172,7 @@ CLASS lcl_gui_chunk_lib IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( || ). - ro_html->add_icon( iv_name = 'branch' iv_hint = 'Current branch' ). + ro_html->add_icon( iv_name = 'git-branch/darkgrey' iv_hint = 'Current branch' ). IF iv_interactive = abap_true. ro_html->add_a( iv_act = |{ gc_action-git_branch_switch }?{ io_repo->get_key( ) }| iv_txt = lv_text ). @@ -185,14 +185,18 @@ CLASS lcl_gui_chunk_lib IMPLEMENTATION. METHOD render_error. + DATA lv_error TYPE string. + CREATE OBJECT ro_html. - ro_html->add( '
' ). IF ix_error IS BOUND. - ro_html->add( |Error: { ix_error->mv_text }| ). + lv_error = ix_error->mv_text. ELSE. - ro_html->add( |Error: { iv_error }| ). + lv_error = iv_error. ENDIF. + + ro_html->add( '
' ). + ro_html->add( |{ lcl_html=>icon( 'alert/red' ) } Error: { lv_error }| ). ro_html->add( '
' ). ENDMETHOD. "render_error diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index dc3791308..078a1ea27 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -76,6 +76,8 @@ CLASS lcl_gui_page IMPLEMENTATION. ro_html->add( '' ). ro_html->add( '' ). "#EC NOTEXT + ro_html->add( lcl_gui_asset_manager=>get_webfont_link( ) ). " Web fonts + ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. "html_head diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 032348029..1cad667f1 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -131,6 +131,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. lt_repos = lcl_app=>repo_srv( )->list( ). CATCH lcx_exception INTO lx_error. ro_html->add( lcl_gui_chunk_lib=>render_error( ix_error = lx_error ) ). + RETURN. ENDTRY. ro_html->add( render_toc( lt_repos ) ). @@ -254,9 +255,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ENDIF. IF lo_repo->is_offline( ) = abap_true. - lv_icon = 'repo_offline'. + lv_icon = 'plug/darkgrey'. ELSE. - lv_icon = 'repo_online'. + lv_icon = 'cloud-upload/blue'. ENDIF. lo_allbar->add( iv_txt = lv_repo_title @@ -279,7 +280,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ro_html->add( '' ). ro_html->add( || ). ro_html->add( '
{ - lcl_html=>icon( iv_name = 'star' iv_alt = 'Favs' iv_hint = 'Favorites' ) + lcl_html=>icon( iv_name = 'star/blue' iv_alt = 'Favs' iv_hint = 'Favorites' ) }' ). " Maximize width @@ -294,7 +295,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ro_html->add( '' ). ro_html->add( lo_allbar->render( - iv_as_droplist_with_label = lcl_html=>icon( iv_name = 'burger' iv_class = 'pad4px' ) + iv_as_droplist_with_label = lcl_html=>icon( iv_name = 'three-bars/blue' iv_class = 'pad4px' ) iv_sort = abap_true iv_with_icons = abap_true iv_add_minizone = abap_true ) ). diff --git a/src/zabapgit_view_repo.prog.abap b/src/zabapgit_view_repo.prog.abap index cf2cbdd8c..3de6e6655 100644 --- a/src/zabapgit_view_repo.prog.abap +++ b/src/zabapgit_view_repo.prog.abap @@ -348,17 +348,17 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. CASE is_item-obj_type. WHEN 'PROG' OR 'CLAS' OR 'FUGR'. - rv_html = lcl_html=>icon( 'code' ). + rv_html = lcl_html=>icon( 'file-code/darkgrey' ). WHEN 'W3MI' OR 'W3HT'. - rv_html = lcl_html=>icon( 'bin' ). + rv_html = lcl_html=>icon( 'file-binary/darkgrey' ). WHEN ''. rv_html = space. " no icon WHEN OTHERS. - rv_html = lcl_html=>icon( 'obj' ). + rv_html = lcl_html=>icon( 'file/darkgrey' ). ENDCASE. IF is_item-is_dir = abap_true. - rv_html = lcl_html=>icon( 'dir' ). + rv_html = lcl_html=>icon( 'file-directory/darkgrey' ). ENDIF. ENDMETHOD. "get_item_icon diff --git a/src/zabapgit_view_tutorial.prog.abap b/src/zabapgit_view_tutorial.prog.abap index 1cc2c0105..bdb915b91 100644 --- a/src/zabapgit_view_tutorial.prog.abap +++ b/src/zabapgit_view_tutorial.prog.abap @@ -51,9 +51,9 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION. _add '

Repository list and favorites

'. _add '

    '. ro_html->add( |
  • To choose a repo press { - lcl_html=>icon( 'burger' ) } at the favorite bar.
  • | ). + lcl_html=>icon( 'three-bars/blue' ) } at the favorite bar.| ). ro_html->add( |
  • To favorite a repo click { - lcl_html=>icon( 'star-grey' ) } icon at repo toolbar.
  • | ). + lcl_html=>icon( 'star/darkgrey' ) } icon at repo toolbar.| ). _add '

'. _add '

abapGit related repositories

'. From f8234b1deb7ad3d4183396ecb097fe7a64e46775 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 7 Jan 2017 10:23:23 +0000 Subject: [PATCH 40/40] ACID DOMA DTEL FUGR TYPE Fix more dumps and handle invalid data --- src/zabapgit_object_acid.prog.abap | 4 ++- src/zabapgit_object_doma.prog.abap | 17 ++++++++++--- src/zabapgit_object_dtel.prog.abap | 3 +++ src/zabapgit_object_fugr.prog.abap | 41 +++++++++++++++++------------- src/zabapgit_object_type.prog.abap | 2 +- 5 files changed, 45 insertions(+), 22 deletions(-) diff --git a/src/zabapgit_object_acid.prog.abap b/src/zabapgit_object_acid.prog.abap index efc47f9e1..e65983ce0 100644 --- a/src/zabapgit_object_acid.prog.abap +++ b/src/zabapgit_object_acid.prog.abap @@ -71,7 +71,9 @@ CLASS lcl_object_acid IMPLEMENTATION. lo_aab = create_object( ). - lo_aab->get_descript( IMPORTING ex_descript = lv_description ). + lo_aab->get_descript( + IMPORTING ex_descript = lv_description + EXCEPTIONS no_description_found = 1 ). io_xml->add( iv_name = 'DESCRIPTION' ig_data = lv_description ). diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index 4e216e9de..cd24e26e9 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -129,9 +129,10 @@ CLASS lcl_object_doma IMPLEMENTATION. METHOD lif_object~serialize. - DATA: lv_name TYPE ddobjname, - ls_dd01v TYPE dd01v, - lt_dd07v TYPE TABLE OF dd07v. + DATA: lv_name TYPE ddobjname, + ls_dd01v TYPE dd01v, + lv_masklen TYPE c LENGTH 4, + lt_dd07v TYPE TABLE OF dd07v. lv_name = ms_item-obj_name. @@ -155,6 +156,16 @@ CLASS lcl_object_doma IMPLEMENTATION. ls_dd01v-as4date, ls_dd01v-as4time. +* make sure XML serialization does not dump if the field contains invalid data +* note that this is a N field, so '' is not valid + IF ls_dd01v-authclass = ''. + CLEAR ls_dd01v-authclass. + ENDIF. + lv_masklen = ls_dd01v-masklen. + IF lv_masklen = '' OR NOT lv_masklen CO '0123456789'. + CLEAR ls_dd01v-masklen. + ENDIF. + io_xml->add( iv_name = 'DD01V' ig_data = ls_dd01v ). io_xml->add( iv_name = 'DD07V_TAB' diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index 52caae569..508d59316 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -163,6 +163,9 @@ CLASS lcl_object_dtel IMPLEMENTATION. * numeric field, make sure it is initial or XML serilization will dump CLEAR ls_dd04v-routputlen. ENDIF. + IF ls_dd04v-authclass = ''. + CLEAR ls_dd04v-authclass. + ENDIF. io_xml->add( iv_name = 'DD04V' ig_data = ls_dd04v ). diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index 5f8619bc6..2b988430b 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -490,6 +490,9 @@ CLASS lcl_object_fugr IMPLEMENTATION. lcx_exception=>raise( 'Error from RS_FUNCTION_POOL_CONTENTS' ). ENDIF. + SORT rt_functab BY funcname ASCENDING. + DELETE ADJACENT DUPLICATES FROM rt_functab COMPARING funcname. + ENDMETHOD. "functions METHOD main_name. @@ -533,10 +536,10 @@ CLASS lcl_object_fugr IMPLEMENTATION. DATA: lt_source TYPE TABLE OF rssource, lt_functab TYPE ty_rs38l_incl_tt, - lt_new_source TYPE rsfb_source. + lt_new_source TYPE rsfb_source, + ls_ret LIKE LINE OF rt_functions. - FIELD-SYMBOLS: LIKE LINE OF lt_functab, - LIKE LINE OF rt_functions. + FIELD-SYMBOLS: LIKE LINE OF lt_functab. lt_functab = functions( ). @@ -544,8 +547,8 @@ CLASS lcl_object_fugr IMPLEMENTATION. LOOP AT lt_functab ASSIGNING . * fm RPY_FUNCTIONMODULE_READ does not support source code * lines longer than 72 characters - APPEND INITIAL LINE TO rt_functions ASSIGNING . - MOVE-CORRESPONDING TO . + CLEAR ls_ret. + MOVE-CORRESPONDING TO ls_ret. CLEAR lt_new_source. CLEAR lt_source. @@ -554,18 +557,18 @@ CLASS lcl_object_fugr IMPLEMENTATION. EXPORTING functionname = -funcname IMPORTING - global_flag = -global_flag - remote_call = -remote_call - update_task = -update_task - short_text = -short_text - remote_basxml_supported = -remote_basxml + global_flag = ls_ret-global_flag + remote_call = ls_ret-remote_call + update_task = ls_ret-update_task + short_text = ls_ret-short_text + remote_basxml_supported = ls_ret-remote_basxml TABLES - import_parameter = -import - changing_parameter = -changing - export_parameter = -export - tables_parameter = -tables - exception_list = -exception - documentation = -documentation + import_parameter = ls_ret-import + changing_parameter = ls_ret-changing + export_parameter = ls_ret-export + tables_parameter = ls_ret-tables + exception_list = ls_ret-exception + documentation = ls_ret-documentation source = lt_source CHANGING new_source = lt_new_source @@ -574,10 +577,14 @@ CLASS lcl_object_fugr IMPLEMENTATION. function_not_found = 2 invalid_name = 3 OTHERS = 4. - IF sy-subrc <> 0. + IF sy-subrc = 2. + CONTINUE. + ELSEIF sy-subrc <> 0. lcx_exception=>raise( 'Error from RPY_FUNCTIONMODULE_READ_NEW' ). ENDIF. + APPEND ls_ret TO rt_functions. + IF NOT lt_new_source IS INITIAL. mo_files->add_abap( iv_extra = -funcname it_abap = lt_new_source ). diff --git a/src/zabapgit_object_type.prog.abap b/src/zabapgit_object_type.prog.abap index 8c7273888..8068d26c1 100644 --- a/src/zabapgit_object_type.prog.abap +++ b/src/zabapgit_object_type.prog.abap @@ -52,7 +52,7 @@ CLASS lcl_object_type IMPLEMENTATION. TRY. read( ). rv_bool = abap_true. - CATCH lcx_not_found. + CATCH lcx_not_found lcx_exception. rv_bool = abap_false. ENDTRY.