Refactoring into INTF class since we have tests

This commit is contained in:
eduardocopat 2016-12-22 16:23:40 +01:00
parent dd23247095
commit 7fdcf7aa73

View File

@ -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_sotr( io_xml = io_xml
iv_package = iv_package ).
ENDIF.
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,8 +1206,6 @@ 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 ).
@ -1231,23 +1215,6 @@ CLASS lcl_object_clas IMPLEMENTATION.
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
@ -1256,7 +1223,6 @@ CLASS lcl_object_clas IMPLEMENTATION.
it_local_macros = lt_locals_mac
it_local_test_classes = lt_testclasses
).
ENDIF.
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.