Enable object handler for Event Consumption Model (EEEC) (#6348)

Co-authored-by: Dr. Jonas Braun <jonas.braun01@sap.com>
Co-authored-by: Raphael Dibbern <raphael.dibbern@sap.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
This commit is contained in:
rdibbern 2023-07-14 19:29:46 +02:00 committed by GitHub
parent b10276ffa5
commit 426edc3721
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 128 additions and 40 deletions

View File

@ -53,6 +53,7 @@ CLASS zcl_abapgit_aff_registry IMPLEMENTATION.
register( iv_obj_type = 'CHKO' ).
register( iv_obj_type = 'CHKV' ).
register( iv_obj_type = 'EVTB' ).
register( iv_obj_type = 'EEEC' ).
register( iv_obj_type = 'GSMP' ).
register( iv_obj_type = 'INTF'
iv_experimental = abap_true ).

View File

@ -17,6 +17,11 @@ CLASS zcl_abapgit_object_common_aff DEFINITION
METHODS get_additional_extensions
RETURNING VALUE(rv_additional_extensions) TYPE ty_extension_mapper_pairs.
METHODS get_object_handler
RETURNING
VALUE(ro_object_handler) TYPE REF TO object
RAISING
zcx_abapgit_exception.
PRIVATE SECTION.
METHODS is_file_empty
@ -48,16 +53,15 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
METHOD zif_abapgit_object~delete.
DATA: lr_intf_aff_obj TYPE REF TO data,
lr_intf_aff_log TYPE REF TO data,
lr_messages TYPE REF TO data,
lo_handler_factory TYPE REF TO object,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lo_aff_factory TYPE REF TO object,
lv_name TYPE c LENGTH 120,
lx_error TYPE REF TO cx_root,
lo_aff_log TYPE REF TO object.
DATA: lr_intf_aff_obj TYPE REF TO data,
lr_intf_aff_log TYPE REF TO data,
lr_messages TYPE REF TO data,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lo_aff_factory TYPE REF TO object,
lv_name TYPE c LENGTH 120,
lx_error TYPE REF TO cx_root,
lo_aff_log TYPE REF TO object.
FIELD-SYMBOLS: <ls_intf_aff_obj> TYPE any,
<ls_intf_aff_log> TYPE any,
@ -68,12 +72,7 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
lv_name = ms_item-obj_name.
TRY.
CREATE OBJECT lo_handler_factory TYPE ('CL_AFF_OBJECT_HANDLER_FACTORY').
CALL METHOD lo_handler_factory->('IF_AFF_OBJECT_HANDLER_FACTORY~GET_OBJECT_HANDLER')
EXPORTING
object_type = ms_item-obj_type
RECEIVING
result = lo_object_handler.
lo_object_handler = get_object_handler( ).
CREATE OBJECT lo_object_aff TYPE ('CL_AFF_OBJ')
EXPORTING
@ -146,7 +145,6 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
lr_intf_files_container TYPE REF TO data,
lr_intf_aff_log TYPE REF TO data,
lr_intf_aff_settings TYPE REF TO data,
lo_handler_factory TYPE REF TO object,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lo_object_json_file TYPE REF TO object,
@ -181,13 +179,7 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
" beyond here there will be dragons....
TRY.
CREATE OBJECT lo_handler_factory TYPE ('CL_AFF_OBJECT_HANDLER_FACTORY').
CALL METHOD lo_handler_factory->('IF_AFF_OBJECT_HANDLER_FACTORY~GET_OBJECT_HANDLER')
EXPORTING
object_type = ms_item-obj_type
RECEIVING
result = lo_object_handler.
lo_object_handler = get_object_handler( ).
CREATE OBJECT lo_object_aff TYPE ('CL_AFF_OBJ')
EXPORTING
@ -326,10 +318,22 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
METHOD get_object_handler.
DATA lo_handler_factory TYPE REF TO object.
CREATE OBJECT lo_handler_factory TYPE ('CL_AFF_OBJECT_HANDLER_FACTORY').
CALL METHOD lo_handler_factory->('IF_AFF_OBJECT_HANDLER_FACTORY~GET_OBJECT_HANDLER')
EXPORTING
object_type = ms_item-obj_type
RECEIVING
result = ro_object_handler.
ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: lr_intf_aff_obj TYPE REF TO data,
lo_handler_factory TYPE REF TO object,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lv_name TYPE c LENGTH 120,
@ -340,13 +344,7 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
lv_name = ms_item-obj_name.
TRY.
CREATE OBJECT lo_handler_factory TYPE ('CL_AFF_OBJECT_HANDLER_FACTORY').
CALL METHOD lo_handler_factory->('IF_AFF_OBJECT_HANDLER_FACTORY~GET_OBJECT_HANDLER')
EXPORTING
object_type = ms_item-obj_type
RECEIVING
result = lo_object_handler.
lo_object_handler = get_object_handler( ).
CREATE OBJECT lo_object_aff TYPE ('CL_AFF_OBJ')
EXPORTING
@ -431,7 +429,6 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
lr_intf_aff_log TYPE REF TO data,
lr_intf_aff_settings TYPE REF TO data,
lr_messages TYPE REF TO data,
lo_handler_factory TYPE REF TO object,
lo_object_handler TYPE REF TO object,
lo_object_aff TYPE REF TO object,
lo_object_json_file TYPE REF TO object,
@ -459,13 +456,7 @@ CLASS zcl_abapgit_object_common_aff IMPLEMENTATION.
lv_name = ms_item-obj_name.
TRY.
CREATE OBJECT lo_handler_factory TYPE ('CL_AFF_OBJECT_HANDLER_FACTORY').
CALL METHOD lo_handler_factory->('IF_AFF_OBJECT_HANDLER_FACTORY~GET_OBJECT_HANDLER')
EXPORTING
object_type = ms_item-obj_type
RECEIVING
result = lo_object_handler.
lo_object_handler = get_object_handler( ).
CREATE OBJECT lo_object_aff TYPE ('CL_AFF_OBJ')
EXPORTING

View File

@ -0,0 +1,80 @@
CLASS zcl_abapgit_object_eeec DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_common_aff
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS:
zif_abapgit_object~changed_by REDEFINITION .
PROTECTED SECTION.
METHODS: get_object_handler REDEFINITION.
ENDCLASS.
CLASS zcl_abapgit_object_eeec IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA: lr_data TYPE REF TO data,
lo_registry_adapter TYPE REF TO object,
lv_object_key TYPE seu_objkey,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <ls_consumer> TYPE any,
<lv_changed_by> TYPE any.
TRY.
CREATE OBJECT lo_registry_adapter TYPE ('/IWXBE/CL_EEEC_REG_ADAPTER').
CREATE DATA lr_data TYPE ('/IWXBE/IF_REGISTRY_TYPES=>TY_S_CONSUMER').
ASSIGN lr_data->* TO <ls_consumer>.
lv_object_key = ms_item-obj_name.
TRY.
CALL METHOD lo_registry_adapter->('/IWXBE/IF_EEEC_REG_ADAPTER_WB~GET_METADATA')
EXPORTING
iv_object_key = lv_object_key
iv_state = 'I'
RECEIVING
rs_consumer = <ls_consumer>.
CATCH cx_root.
CALL METHOD lo_registry_adapter->('/IWXBE/IF_EEEC_REG_ADAPTER_WB~GET_METADATA')
EXPORTING
iv_object_key = lv_object_key
iv_state = 'A'
RECEIVING
rs_consumer = <ls_consumer>.
ENDTRY.
ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <ls_consumer> TO <lv_changed_by>.
rv_user = <lv_changed_by>.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY.
ENDMETHOD.
METHOD get_object_handler.
DATA lx_error TYPE REF TO cx_root.
ro_object_handler = super->get_object_handler( ).
IF ro_object_handler IS NOT BOUND.
TRY.
CREATE OBJECT ro_object_handler TYPE ('/IWXBE/CL_EEEC_AFF_OBJECTHANDL').
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECT_EEEC</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit - EEEC - Event Consumption Model</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>