mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
class_abap_deserializing
This commit is contained in:
parent
e763228fc5
commit
9ade177c49
|
@ -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_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
|
CONSTANTS: BEGIN OF gc_state, " https://git-scm.com/docs/git-status
|
||||||
unchanged TYPE char1 VALUE '',
|
unchanged TYPE char1 VALUE '',
|
||||||
added TYPE char1 VALUE 'A',
|
added TYPE char1 VALUE 'A',
|
||||||
|
|
|
@ -15,31 +15,150 @@ INTERFACE lif_object_oriented_object.
|
||||||
iv_overwrite TYPE seox_boolean DEFAULT seox_true
|
iv_overwrite TYPE seox_boolean DEFAULT seox_true
|
||||||
CHANGING
|
CHANGING
|
||||||
is_properties TYPE any
|
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
|
RAISING
|
||||||
lcx_exception.
|
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.
|
ENDINTERFACE.
|
||||||
|
|
||||||
CLASS lcl_object_oriented_class DEFINITION.
|
CLASS lcl_object_oriented_base DEFINITION ABSTRACT.
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
INTERFACES: lif_object_oriented_object.
|
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.
|
ENDCLASS.
|
||||||
CLASS lcl_object_oriented_class IMPLEMENTATION.
|
CLASS lcl_object_oriented_class IMPLEMENTATION.
|
||||||
METHOD lif_object_oriented_object~create.
|
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' ).
|
lcx_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_object_oriented_interface DEFINITION.
|
CLASS lcl_object_oriented_interface DEFINITION
|
||||||
|
INHERITING FROM lcl_object_oriented_base.
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
INTERFACES: lif_object_oriented_object.
|
METHODS:
|
||||||
|
lif_object_oriented_object~create REDEFINITION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_object_oriented_interface IMPLEMENTATION.
|
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_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.
|
DATA mv_skip_testclass TYPE abap_bool.
|
||||||
|
|
||||||
|
@ -861,13 +1001,6 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
||||||
ENDMETHOD. "serialize_xml
|
ENDMETHOD. "serialize_xml
|
||||||
|
|
||||||
METHOD lif_object~deserialize.
|
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
|
deserialize_abap( io_xml = io_xml
|
||||||
iv_package = iv_package ).
|
iv_package = iv_package ).
|
||||||
|
|
||||||
|
@ -879,7 +1012,6 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
deserialize_docu( io_xml ).
|
deserialize_docu( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD. "deserialize
|
ENDMETHOD. "deserialize
|
||||||
|
|
||||||
METHOD deserialize_sotr.
|
METHOD deserialize_sotr.
|
||||||
|
@ -1076,42 +1208,30 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
IF ms_item-obj_type = 'CLAS'.
|
IF ms_item-obj_type = 'CLAS'.
|
||||||
CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS'
|
lo_object_oriented_object->generate_locals(
|
||||||
EXPORTING
|
is_key = ls_clskey
|
||||||
clskey = ls_clskey
|
iv_force = seox_true
|
||||||
force = seox_true
|
it_local_definitions = lt_locals_def
|
||||||
locals_def = lt_locals_def
|
it_local_implementations = lt_locals_imp
|
||||||
locals_imp = lt_locals_imp
|
it_local_macros = lt_locals_mac
|
||||||
locals_mac = lt_locals_mac
|
it_local_test_classes = lt_testclasses
|
||||||
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.
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
TRY.
|
lo_object_oriented_object->deserialize_source(
|
||||||
deserialize_abap_source_new(
|
is_key = ls_clskey
|
||||||
is_clskey = ls_clskey
|
it_source = lt_source
|
||||||
it_source = lt_source ).
|
).
|
||||||
CATCH cx_sy_dyn_call_error.
|
|
||||||
deserialize_abap_source_old(
|
|
||||||
is_clskey = ls_clskey
|
|
||||||
it_source = lt_source ).
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
|
io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
|
||||||
CHANGING cg_data = lt_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
|
ENDMETHOD. "deserialize
|
||||||
|
|
||||||
METHOD deserialize_abap_source_old.
|
METHOD deserialize_abap_source_old.
|
||||||
|
@ -1185,19 +1305,55 @@ CLASS ltd_spy_oo_object DEFINITION FOR TESTING.
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
INTERFACES: lif_object_oriented_object.
|
INTERFACES: lif_object_oriented_object.
|
||||||
DATA:
|
DATA:
|
||||||
mv_package TYPE devclass,
|
mv_package TYPE devclass,
|
||||||
mv_overwrite TYPE seox_boolean,
|
mv_overwrite TYPE seox_boolean,
|
||||||
mr_properties TYPE REF TO data.
|
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.
|
ENDCLASS.
|
||||||
CLASS ltd_spy_oo_object IMPLEMENTATION.
|
CLASS ltd_spy_oo_object IMPLEMENTATION.
|
||||||
METHOD lif_object_oriented_object~create.
|
METHOD lif_object_oriented_object~create.
|
||||||
FIELD-SYMBOLS: <fs_properties> TYPE any.
|
IF cl_abap_typedescr=>describe_by_data( is_properties )->absolute_name = cl_abap_typedescr=>describe_by_data( ms_interface_properties )->absolute_name.
|
||||||
ASSIGN is_properties to <fs_properties>.
|
ms_interface_properties = is_properties.
|
||||||
"<fs_properties> = is_properties.
|
ELSE.
|
||||||
GET reference of <fs_properties> into mr_properties.
|
ms_class_properties = is_properties.
|
||||||
mv_package = iv_package.
|
ENDIF.
|
||||||
mv_overwrite = iv_overwrite.
|
mv_package = iv_package.
|
||||||
|
mv_overwrite = iv_overwrite.
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
||||||
|
@ -1206,25 +1362,25 @@ CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
||||||
METHODS constructor.
|
METHODS constructor.
|
||||||
METHODS read_abap REDEFINITION.
|
METHODS read_abap REDEFINITION.
|
||||||
DATA:
|
DATA:
|
||||||
lt_sources TYPE seop_source_string,
|
mt_sources TYPE seop_source_string,
|
||||||
lt_local_definitions TYPE seop_source_string,
|
mt_local_definitions TYPE seop_source_string,
|
||||||
lt_local_implementations TYPE seop_source_string,
|
mt_local_implementations TYPE seop_source_string,
|
||||||
lt_local_macros TYPE seop_source_string,
|
mt_local_macros TYPE seop_source_string,
|
||||||
lt_test_classes TYPE seop_source_string.
|
mt_local_test_classes TYPE seop_source_string.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
CLASS ltd_fake_object_files IMPLEMENTATION.
|
CLASS ltd_fake_object_files IMPLEMENTATION.
|
||||||
METHOD read_abap.
|
METHOD read_abap.
|
||||||
CASE iv_extra.
|
CASE iv_extra.
|
||||||
WHEN 'locals_def'.
|
WHEN 'locals_def'.
|
||||||
rt_abap = lt_local_definitions.
|
rt_abap = mt_local_definitions.
|
||||||
WHEN 'locals_imp'.
|
WHEN 'locals_imp'.
|
||||||
rt_abap = lt_local_implementations.
|
rt_abap = mt_local_implementations.
|
||||||
WHEN 'macros'.
|
WHEN 'macros'.
|
||||||
rt_abap = lt_local_macros.
|
rt_abap = mt_local_macros.
|
||||||
WHEN 'testclasses'.
|
WHEN 'testclasses'.
|
||||||
rt_abap = lt_test_classes.
|
rt_abap = mt_local_test_classes.
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
rt_abap = lt_sources.
|
rt_abap = mt_sources.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
|
@ -1233,11 +1389,11 @@ CLASS ltd_fake_object_files IMPLEMENTATION.
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
DATA ls_empty_item TYPE ty_item.
|
DATA ls_empty_item TYPE ty_item.
|
||||||
super->constructor( ls_empty_item ).
|
super->constructor( ls_empty_item ).
|
||||||
APPEND 'source' TO me->lt_sources.
|
APPEND 'source' TO me->mt_sources.
|
||||||
APPEND 'definition' TO me->lt_local_definitions.
|
APPEND 'definition' TO me->mt_local_definitions.
|
||||||
APPEND 'implementation' TO me->lt_local_implementations.
|
APPEND 'implementation' TO me->mt_local_implementations.
|
||||||
APPEND 'macro' TO me->lt_local_macros.
|
APPEND 'macro' TO me->mt_local_macros.
|
||||||
APPEND 'test' TO me->lt_test_classes.
|
APPEND 'test' TO me->mt_local_test_classes.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -1245,35 +1401,48 @@ ENDCLASS.
|
||||||
CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
|
CLASS ltc_class_deserialization DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS:
|
METHODS:
|
||||||
create FOR TESTING RAISING cx_static_check.
|
deserialize FOR TESTING RAISING cx_static_check.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS ltc_class_deserialization IMPLEMENTATION.
|
CLASS ltc_class_deserialization IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD create.
|
METHOD deserialize.
|
||||||
DATA spy_oo_object TYPE REF TO ltd_spy_oo_object.
|
DATA spy_oo_object TYPE REF TO ltd_spy_oo_object.
|
||||||
DATA fake_object_files TYPE REF TO ltd_fake_object_files.
|
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 fake_object_files.
|
||||||
CREATE OBJECT spy_oo_object.
|
CREATE OBJECT spy_oo_object.
|
||||||
|
|
||||||
lth_oo_factory_injector=>inject( 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
|
CREATE OBJECT lo_class TYPE lcl_object_clas
|
||||||
EXPORTING
|
EXPORTING
|
||||||
is_item = VALUE #( devclass = 'CLAS' obj_name = 'zclass' obj_type = 'CLAS' )
|
is_item = ls_item
|
||||||
iv_language = sy-langu.
|
iv_language = sy-langu.
|
||||||
lo_class->mo_files = fake_object_files.
|
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.
|
ls_class_properties-clsname = 'zcl_class'.
|
||||||
DATA: ls_class_properties TYPE vseoclass.
|
|
||||||
ls_class_properties-clsname = 'class_name'.
|
|
||||||
CREATE OBJECT xml_out.
|
CREATE OBJECT xml_out.
|
||||||
xml_out->add(
|
xml_out->add(
|
||||||
EXPORTING
|
iv_name = 'VSEOCLASS'
|
||||||
iv_name = 'VSEOCLASS'
|
ig_data = ls_class_properties
|
||||||
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
|
CREATE OBJECT xml_input
|
||||||
|
@ -1284,22 +1453,84 @@ CLASS ltc_class_deserialization IMPLEMENTATION.
|
||||||
io_xml = xml_input
|
io_xml = xml_input
|
||||||
).
|
).
|
||||||
|
|
||||||
lcl_objects_activation=>clear( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = spy_oo_object->mr_properties
|
act = spy_oo_object->ms_class_properties
|
||||||
exp = ls_class_properties
|
exp = ls_class_properties
|
||||||
).
|
).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_true( spy_oo_object->mv_overwrite ).
|
||||||
act = spy_oo_object->mv_overwrite
|
|
||||||
exp = abap_true
|
|
||||||
).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = spy_oo_object->mv_package
|
act = spy_oo_object->mv_package
|
||||||
exp = 'package_name'
|
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.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
Loading…
Reference in New Issue
Block a user