CLASS zcl_abapgit_object_enhs DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL. PUBLIC SECTION. INTERFACES zif_abapgit_object. PROTECTED SECTION. PRIVATE SECTION. METHODS: factory IMPORTING iv_tool TYPE enhtooltype RETURNING VALUE(ri_enho) TYPE REF TO zif_abapgit_object_enhs RAISING zcx_abapgit_exception. ENDCLASS. CLASS ZCL_ABAPGIT_OBJECT_ENHS IMPLEMENTATION. METHOD factory. CASE iv_tool. WHEN cl_enh_tool_badi_def=>tooltype. CREATE OBJECT ri_enho TYPE zcl_abapgit_object_enhs_badi_d. WHEN cl_enh_tool_hook_def=>tool_type. CREATE OBJECT ri_enho TYPE zcl_abapgit_object_enhs_hook_d. WHEN OTHERS. zcx_abapgit_exception=>raise( |ENHS: Unsupported tool { iv_tool }| ). ENDCASE. ENDMETHOD. METHOD zif_abapgit_object~changed_by. DATA: lv_spot_name TYPE enhspotname, li_spot_ref TYPE REF TO if_enh_spot_tool. lv_spot_name = ms_item-obj_name. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot( spot_name = lv_spot_name run_dark = abap_true ). li_spot_ref->get_attributes( IMPORTING changedby = rv_user ). CATCH cx_enh_root. rv_user = c_user_unknown. ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~delete. DATA: lv_spot_name TYPE enhspotname, lx_enh_root TYPE REF TO cx_enh_root, li_enh_object TYPE REF TO if_enh_object. lv_spot_name = ms_item-obj_name. TRY. li_enh_object ?= cl_enh_factory=>get_enhancement_spot( spot_name = lv_spot_name run_dark = abap_true lock = abap_true ). li_enh_object->delete( nevertheless_delete = abap_true run_dark = abap_true ). li_enh_object->unlock( ). CATCH cx_enh_root INTO lx_enh_root. zcx_abapgit_exception=>raise_with_text( lx_enh_root ). ENDTRY. ENDMETHOD. METHOD zif_abapgit_object~deserialize. DATA: lv_parent TYPE enhspotcompositename, lv_spot_name TYPE enhspotname, lv_tool TYPE enhspottooltype, lv_package LIKE iv_package, lx_enh_root TYPE REF TO cx_enh_root, li_spot_ref TYPE REF TO if_enh_spot_tool, li_enhs TYPE REF TO zif_abapgit_object_enhs. IF zif_abapgit_object~exists( ) = abap_true. zif_abapgit_object~delete( iv_package = iv_package iv_transport = iv_transport ). ENDIF. io_xml->read( EXPORTING iv_name = 'TOOL' CHANGING cg_data = lv_tool ). lv_spot_name = ms_item-obj_name. lv_package = iv_package. TRY. cl_enh_factory=>create_enhancement_spot( EXPORTING spot_name = lv_spot_name tooltype = lv_tool dark = abap_false compositename = lv_parent IMPORTING spot = li_spot_ref CHANGING devclass = lv_package ). CATCH cx_enh_root INTO lx_enh_root. zcx_abapgit_exception=>raise_with_text( lx_enh_root ). ENDTRY. li_enhs = factory( lv_tool ). li_enhs->deserialize( ii_xml = io_xml iv_package = iv_package ii_enh_spot_tool = li_spot_ref ). zcl_abapgit_sotr_handler=>create_sotr( iv_package = iv_package io_xml = io_xml ). ENDMETHOD. METHOD zif_abapgit_object~exists. DATA: lv_spot_name TYPE enhspotname, li_spot_ref TYPE REF TO if_enh_spot_tool. lv_spot_name = ms_item-obj_name. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot( spot_name = lv_spot_name run_dark = abap_true ). rv_bool = abap_true. CATCH cx_enh_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-abap TO rt_steps. ENDMETHOD. METHOD zif_abapgit_object~get_metadata. rs_metadata = get_metadata( ). ENDMETHOD. METHOD zif_abapgit_object~is_active. rv_active = is_active( ). ENDMETHOD. METHOD zif_abapgit_object~is_locked. rv_is_locked = abap_false. ENDMETHOD. METHOD zif_abapgit_object~jump. " Covered by ZCL_ABAPGIT_OBJECTS=>JUMP 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: lv_spot_name TYPE enhspotname, li_spot_ref TYPE REF TO if_enh_spot_tool, li_enhs TYPE REF TO zif_abapgit_object_enhs, lx_enh_root TYPE REF TO cx_enh_root. lv_spot_name = ms_item-obj_name. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot( spot_name = lv_spot_name run_dark = abap_true ). CATCH cx_enh_root INTO lx_enh_root. zcx_abapgit_exception=>raise_with_text( lx_enh_root ). ENDTRY. li_enhs = factory( li_spot_ref->get_tool( ) ). li_enhs->serialize( ii_xml = io_xml ii_enh_spot_tool = li_spot_ref ). zcl_abapgit_sotr_handler=>read_sotr( iv_pgmid = 'R3TR' iv_object = ms_item-obj_type iv_obj_name = ms_item-obj_name io_i18n_params = mo_i18n_params io_xml = io_xml ). ENDMETHOD. ENDCLASS.