CLASS zcl_abapgit_object_apis DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_object. METHODS constructor IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item !iv_language TYPE spras !io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL !io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL RAISING zcx_abapgit_type_not_supported. PROTECTED SECTION. PRIVATE SECTION. CONSTANTS c_model TYPE string VALUE 'ARS_S_API_ABAPGIT'. DATA mo_handler TYPE REF TO object. METHODS initialize. ENDCLASS. CLASS zcl_abapgit_object_apis IMPLEMENTATION. METHOD constructor. DATA lr_data TYPE REF TO data. super->constructor( is_item = is_item iv_language = iv_language io_files = io_files io_i18n_params = io_i18n_params ). TRY. CREATE DATA lr_data TYPE (c_model). CATCH cx_sy_create_error. RAISE EXCEPTION TYPE zcx_abapgit_type_not_supported EXPORTING obj_type = is_item-obj_type. ENDTRY. ENDMETHOD. METHOD initialize. IF mo_handler IS NOT BOUND. CREATE OBJECT mo_handler TYPE ('CL_ARS_API_ABAPGIT') EXPORTING iv_api_object_name = ms_item-obj_name. ENDIF. ENDMETHOD. METHOD zif_abapgit_object~changed_by. initialize( ). TRY. CALL METHOD mo_handler->('IF_ARS_API_ABAPGIT~GET_CHANGED_BY') RECEIVING rv_changed_by = rv_user. CATCH cx_root. rv_user = c_user_unknown. ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~delete. * IF_ARS_API_ABAPGIT~DELETE_API_STATE dumps and checks fail, even though I as a developer can delete it DATA lo_db TYPE REF TO object. DATA lr_data TYPE REF TO data. FIELD-SYMBOLS TYPE any. CREATE DATA lr_data TYPE ('IF_ARS_STATE_DB_ACCESS=>TY_S_API_KEY'). ASSIGN lr_data->* TO . = ms_item-obj_name. ASSERT IS NOT INITIAL. CALL METHOD ('CL_ARS_STATE_DB_ACCESS')=>('GET_INSTANCE') RECEIVING ro_state_db_access = lo_db. CALL METHOD lo_db->('IF_ARS_STATE_DB_ACCESS~DELETE') EXPORTING is_api_key = . ENDMETHOD. METHOD zif_abapgit_object~deserialize. * IF_ARS_API_ABAPGIT~SAVE_API_STATE dumps in some package checks DATA lr_data TYPE REF TO data. DATA lo_db TYPE REF TO object. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE simple. CREATE DATA lr_data TYPE (c_model). ASSIGN lr_data->* TO . CREATE DATA lr_data TYPE ('IF_ARS_STATE_DB_ACCESS=>TY_S_HEADER'). ASSIGN lr_data->* TO . CREATE DATA lr_data TYPE ('IF_ARS_STATE_DB_ACCESS=>TY_T_STATE'). ASSIGN lr_data->* TO . io_xml->read( EXPORTING iv_name = 'APIS' CHANGING cg_data = ). MOVE-CORRESPONDING TO . ASSIGN COMPONENT 'API_STATES' OF STRUCTURE TO . ASSERT sy-subrc = 0. * the state table is sorted, LOOP AT ASSIGNING . CREATE DATA lr_data TYPE ('IF_ARS_STATE_DB_ACCESS=>TY_S_STATE'). ASSIGN lr_data->* TO . MOVE-CORRESPONDING TO . MOVE-CORRESPONDING TO . ASSIGN COMPONENT 'SOFTWARE_RELEASE_NAME' OF STRUCTURE TO . ASSERT sy-subrc = 0. = '1908'. ASSIGN COMPONENT 'CREATED_AT' OF STRUCTURE TO . ASSERT sy-subrc = 0. = sy-datum. ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE TO . ASSERT sy-subrc = 0. = sy-uname. ASSIGN COMPONENT 'LAST_CHANGED_AT' OF STRUCTURE TO . ASSERT sy-subrc = 0. = sy-datum. ASSIGN COMPONENT 'LAST_CHANGED_BY' OF STRUCTURE TO . ASSERT sy-subrc = 0. = sy-uname. INSERT INTO TABLE . ENDLOOP. CALL METHOD ('CL_ARS_STATE_DB_ACCESS')=>('GET_INSTANCE') RECEIVING ro_state_db_access = lo_db. CALL METHOD lo_db->('IF_ARS_STATE_DB_ACCESS~SAVE') EXPORTING is_header = it_release_states = . tadir_insert( iv_package ). corr_insert( iv_package ). ENDMETHOD. METHOD zif_abapgit_object~exists. TRY. initialize( ). CALL METHOD mo_handler->('IF_ARS_API_ABAPGIT~CHECK_EXISTS') RECEIVING rv_api_exists = rv_bool. CATCH cx_root. rv_bool = abap_false. ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~get_comparator. RETURN. ENDMETHOD. METHOD zif_abapgit_object~get_deserialize_order. RETURN. ENDMETHOD. METHOD zif_abapgit_object~get_deserialize_steps. APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps. ENDMETHOD. METHOD zif_abapgit_object~get_metadata. rs_metadata = get_metadata( ). rs_metadata-version = 'v2.0.0'. ENDMETHOD. METHOD zif_abapgit_object~is_active. rv_active = zif_abapgit_object~exists( ). ENDMETHOD. METHOD zif_abapgit_object~is_locked. * looks like there is no enqueue lock * E_ARS_API ? RETURN. ENDMETHOD. METHOD zif_abapgit_object~jump. " todo ENDMETHOD. METHOD zif_abapgit_object~map_filename_to_object. RETURN. ENDMETHOD. METHOD zif_abapgit_object~map_object_to_filename. RETURN. ENDMETHOD. METHOD zif_abapgit_object~serialize. DATA lr_data TYPE REF TO data. FIELD-SYMBOLS TYPE any. CREATE DATA lr_data TYPE (c_model). ASSIGN lr_data->* TO . initialize( ). CALL METHOD mo_handler->('IF_ARS_API_ABAPGIT~GET_API_STATE') RECEIVING rs_apis_object = . io_xml->add( iv_name = 'APIS' ig_data = ). ENDMETHOD. ENDCLASS.