diff --git a/src/objects/core/zcl_abapgit_file_deserialize.clas.abap b/src/objects/core/zcl_abapgit_file_deserialize.clas.abap index 65d7c43d9..f98af1a20 100644 --- a/src/objects/core/zcl_abapgit_file_deserialize.clas.abap +++ b/src/objects/core/zcl_abapgit_file_deserialize.clas.abap @@ -248,9 +248,12 @@ CLASS zcl_abapgit_file_deserialize IMPLEMENTATION. WHEN 'ENSC'. lt_requires = lt_items. DELETE lt_requires WHERE obj_type <> 'ENHS'. - WHEN 'IWMO' OR 'IWSV' OR 'IWVB' OR 'SUSH'. + WHEN 'IWMO' OR 'IWSV' OR 'IWVB'. lt_requires = lt_items. DELETE lt_requires WHERE obj_type <> 'SRVB'. + WHEN 'SUSH'. + lt_requires = lt_items. + DELETE lt_requires WHERE obj_type <> 'SRVB' AND obj_type <> 'HTTP'. WHEN 'SRVB'. lt_requires = lt_items. DELETE lt_requires WHERE obj_type <> 'SRVD'. diff --git a/src/objects/zcl_abapgit_object_http.clas.abap b/src/objects/zcl_abapgit_object_http.clas.abap new file mode 100644 index 000000000..1f143a0a8 --- /dev/null +++ b/src/objects/zcl_abapgit_object_http.clas.abap @@ -0,0 +1,283 @@ +CLASS zcl_abapgit_object_http DEFINITION + PUBLIC + INHERITING FROM zcl_abapgit_objects_super + FINAL + CREATE PUBLIC. + + PUBLIC SECTION. + + INTERFACES zif_abapgit_object. + + PROTECTED SECTION. + PRIVATE SECTION. + + TYPES: BEGIN OF ty_uconservhttphandler, + id TYPE c LENGTH 30, + version TYPE c LENGTH 1, + serviceorder TYPE n LENGTH 2, + servicehandler TYPE c LENGTH 30, + END OF ty_uconservhttphandler. + TYPES: BEGIN OF ty_uconhttpservtext, + id TYPE c LENGTH 30, + version TYPE c LENGTH 1, + lang TYPE c LENGTH 1, + shorttext TYPE c LENGTH 255, + END OF ty_uconhttpservtext. + TYPES: BEGIN OF ty_handler, + id TYPE c LENGTH 30, + version TYPE c LENGTH 1, + serviceorder TYPE n LENGTH 2, + servicehandler TYPE c LENGTH 30, + END OF ty_handler. + TYPES: BEGIN OF ty_gs_object_version, + id TYPE c LENGTH 1, + object_state TYPE c LENGTH 1, + END OF ty_gs_object_version. + +ENDCLASS. + + + +CLASS zcl_abapgit_object_http IMPLEMENTATION. + + + METHOD zif_abapgit_object~changed_by. + + TRY. + SELECT SINGLE changedby FROM ('UCONHTTPSERVHEAD') INTO rv_user WHERE id = ms_item-obj_name. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. + CATCH cx_root. + zcx_abapgit_exception=>raise( 'HTTP not supported' ). + ENDTRY. + + ENDMETHOD. + + + METHOD zif_abapgit_object~delete. + + DATA lv_name TYPE c LENGTH 30. + + lv_name = ms_item-obj_name. + TRY. + CALL METHOD ('CL_UCON_API_FACTORY')=>('DELETE_HTTP_SERVICE') + EXPORTING + name = lv_name + devclass = iv_package. + CATCH cx_root. + zcx_abapgit_exception=>raise( 'HTTP not supported' ). + ENDTRY. + + ENDMETHOD. + + + METHOD zif_abapgit_object~deserialize. + + DATA: lv_http_servid TYPE c LENGTH 30, + lt_handler TYPE TABLE OF ty_handler, + ls_handler LIKE LINE OF lt_handler, + ls_description TYPE ty_uconhttpservtext, + lv_check_object_name TYPE c LENGTH 40, + lx_root TYPE REF TO cx_root, + lv_id TYPE c LENGTH 30, + lo_http TYPE REF TO object, + ls_abap_lang TYPE ty_gs_object_version, + lo_instance TYPE REF TO object, + lv_tadir_name TYPE tadir-obj_name, + lt_ret TYPE STANDARD TABLE OF bapiret2. + + TRY. + io_xml->read( + EXPORTING iv_name = 'HTTPID' + CHANGING cg_data = lv_http_servid ). + io_xml->read( + EXPORTING iv_name = 'HTTPTEXT' + CHANGING cg_data = ls_description ). + io_xml->read( + EXPORTING iv_name = 'HTTPHDL' + CHANGING cg_data = lt_handler ). + + SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = lv_http_servid AND version = 'A'. + IF sy-subrc = 0. + "update + CALL METHOD ('CL_UCON_API_FACTORY')=>('GET_HTTP_SERVICE') + EXPORTING + name = lv_http_servid + no_auth_check = abap_true + RECEIVING + http_service = lo_http. + ELSE. + "create + CALL METHOD ('CL_UCON_API_FACTORY')=>('NEW_HTTP_SERVICE') + EXPORTING + name = lv_http_servid + RECEIVING + http_service = lo_http. + ENDIF. + + CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_HANDLER') + EXPORTING + handler = lt_handler. + IF lt_handler IS NOT INITIAL. + READ TABLE lt_handler INTO ls_handler INDEX 1. + "get language version from abap class + + lv_check_object_name = ls_handler-servicehandler. + IF lv_check_object_name IS NOT INITIAL. + TRY. + CALL METHOD ('CL_ABAP_LANGUAGE_VERSION')=>('GET_INSTANCE') + RECEIVING + ro_version_handler = lo_instance. + CALL METHOD lo_instance->('IF_ABAP_LANGUAGE_VERSION~GET_VERSION_OF_OBJECT') + EXPORTING + iv_object_type = 'CLAS' + iv_object_name = lv_check_object_name + RECEIVING + rs_object_version = ls_abap_lang. + + IF ls_abap_lang-id = 'X'. "language version X not supported, use space instead + ls_abap_lang-id = space. + ENDIF. + + CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_LANGUAGE_VERSION') + EXPORTING + iv_langu_version = ls_abap_lang-id. + CATCH cx_root ##NO_HANDLER. + " ABAP language version not supported in this system + ENDTRY. + ENDIF. + ENDIF. + + CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_DESCRIPTION') + EXPORTING + texts = ls_description. + CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SAVE') + EXPORTING + run_dark = abap_true + dev_class = iv_package + korrnum = iv_transport. + CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~FREE'). + + lv_tadir_name = lv_http_servid. + CALL METHOD ('CL_AUTH_START_TOOLS')=>('SUSH_CREATE') + EXPORTING + iv_type = 'HTTP' + iv_name = lv_tadir_name + iv_silent = abap_true + iv_task = iv_transport + IMPORTING + et_log = lt_ret. + + CATCH cx_root INTO lx_root. + zcx_abapgit_exception=>raise_with_text( lx_root ). + ENDTRY. + + ENDMETHOD. + + + METHOD zif_abapgit_object~exists. + + DATA lv_id TYPE c LENGTH 30. + + TRY. + SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = ms_item-obj_name AND version = 'A'. + rv_bool = boolc( sy-subrc = 0 ). + CATCH cx_root. + zcx_abapgit_exception=>raise( 'HTTP not supported' ). + ENDTRY. + + ENDMETHOD. + + + METHOD zif_abapgit_object~get_comparator. + 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. + + 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_http_srv_id TYPE c LENGTH 30, + lo_serv TYPE REF TO object, "if_ucon_api_http_service + lt_handler TYPE TABLE OF ty_uconservhttphandler, + ls_description TYPE ty_uconhttpservtext, + lx_root TYPE REF TO cx_root, + lv_name TYPE c LENGTH 30. + + TRY. + lv_http_srv_id = ms_item-obj_name. + "read http service object + CALL METHOD ('CL_UCON_API_FACTORY')=>('GET_HTTP_SERVICE') + EXPORTING + name = lv_http_srv_id + no_auth_check = abap_true + RECEIVING + http_service = lo_serv. + + CALL METHOD lo_serv->('IF_UCON_API_HTTP_SERVICE~GET_HANDLER') RECEIVING handler = lt_handler. + CALL METHOD lo_serv->('IF_UCON_API_HTTP_SERVICE~GET_DESCRIPTION') + EXPORTING + lang = sy-langu + RECEIVING + text = ls_description. + + "add data to output + CALL METHOD lo_serv->('IF_UCON_API_HTTP_SERVICE~GET_NAME') RECEIVING name = lv_name. + + io_xml->add( + iv_name = 'HTTPID' + ig_data = lv_name ). + + io_xml->add( + iv_name = 'HTTPTEXT' + ig_data = ls_description ). + + io_xml->add( + iv_name = 'HTTPHDL' + ig_data = lt_handler ). + + CATCH cx_root INTO lx_root. + zcx_abapgit_exception=>raise_with_text( lx_root ). + ENDTRY. + + ENDMETHOD. +ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_http.clas.xml b/src/objects/zcl_abapgit_object_http.clas.xml new file mode 100644 index 000000000..303519641 --- /dev/null +++ b/src/objects/zcl_abapgit_object_http.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_OBJECT_HTTP + E + abapGit - HTTP - HTTP Destination + 1 + X + X + X + + + +