From 72dfb59a0157ede6fd0dfb355dabaa7d36394caf Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 23 Jul 2017 07:55:23 +0000 Subject: [PATCH] user exit for overriding host #848 --- src/zabapgit.prog.abap | 1 + src/zabapgit_definitions.prog.abap | 2 ++ src/zabapgit_exit.prog.abap | 45 ++++++++++++++++++++++++++++++ src/zabapgit_exit.prog.xml | 22 +++++++++++++++ src/zabapgit_http.prog.abap | 4 ++- 5 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/zabapgit_exit.prog.abap create mode 100644 src/zabapgit_exit.prog.xml diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index fa7af4c0e..7ec348804 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -48,6 +48,7 @@ INCLUDE zabapgit_sap_package. INCLUDE zabapgit_folder_logic. INCLUDE zabapgit_requirements. INCLUDE zabapgit_authorizations. +INCLUDE zabapgit_exit. INCLUDE zabapgit_stage. INCLUDE zabapgit_git_helpers. diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 7ed8cdfad..6b1f96c55 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -33,6 +33,8 @@ INTERFACE lif_defs. TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY. + TYPES: ty_icm_sinfo2_tt TYPE STANDARD TABLE OF icm_sinfo2 WITH DEFAULT KEY. + TYPES: BEGIN OF ty_git_user, name TYPE string, diff --git a/src/zabapgit_exit.prog.abap b/src/zabapgit_exit.prog.abap new file mode 100644 index 000000000..b42ff300b --- /dev/null +++ b/src/zabapgit_exit.prog.abap @@ -0,0 +1,45 @@ +*&---------------------------------------------------------------------* +*& Include ZABAPGIT_USER_EXITS +*&---------------------------------------------------------------------* + +INTERFACE lif_exit. + + METHODS: + change_local_host + CHANGING ct_hosts TYPE lif_defs=>ty_icm_sinfo2_tt. + +ENDINTERFACE. + +* add class LCL_USER_EXIT implementing LIF_EXIT in following include, +* place the include in a different package than ZABAPGIT +INCLUDE zabapgit_user_exit IF FOUND. + +******************* + +CLASS lcl_exit DEFINITION FINAL. + + PUBLIC SECTION. + CLASS-METHODS: get_instance RETURNING VALUE(ri_exit) TYPE REF TO lif_exit. + + INTERFACES: lif_exit. + +ENDCLASS. + +CLASS lcl_exit IMPLEMENTATION. + + METHOD get_instance. + + TRY. + CREATE OBJECT ri_exit TYPE ('LCL_USER_EXIT'). + CATCH cx_sy_create_object_error. + CREATE OBJECT ri_exit TYPE lcl_exit. + ENDTRY. + + ENDMETHOD. + + METHOD lif_exit~change_local_host. +* default behavior + RETURN. + ENDMETHOD. + +ENDCLASS. diff --git a/src/zabapgit_exit.prog.xml b/src/zabapgit_exit.prog.xml new file mode 100644 index 000000000..47417c874 --- /dev/null +++ b/src/zabapgit_exit.prog.xml @@ -0,0 +1,22 @@ + + + + + + ZABAPGIT_EXIT + A + X + I + E + X + + + + R + Include ZABAPGIT_USER_EXITS + 27 + + + + + diff --git a/src/zabapgit_http.prog.abap b/src/zabapgit_http.prog.abap index 72d64fc30..acfad0299 100644 --- a/src/zabapgit_http.prog.abap +++ b/src/zabapgit_http.prog.abap @@ -501,7 +501,7 @@ CLASS lcl_http IMPLEMENTATION. METHOD is_local_system. DATA: lv_host TYPE string, - lt_list TYPE STANDARD TABLE OF icm_sinfo2 WITH DEFAULT KEY. + lt_list TYPE lif_defs=>ty_icm_sinfo2_tt. CALL FUNCTION 'ICM_GET_INFO2' @@ -516,6 +516,8 @@ CLASS lcl_http IMPLEMENTATION. RETURN. ENDIF. + lcl_exit=>get_instance( )->change_local_host( CHANGING ct_hosts = lt_list ). + FIND REGEX 'https?://([^/^:]*)' IN iv_url SUBMATCHES lv_host.