Merge branch 'main' into main

This commit is contained in:
Marc Bernard 2025-03-10 19:49:35 +01:00 committed by GitHub
commit b85fb22772
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 99 additions and 77 deletions

View File

@ -3,8 +3,7 @@
[![License](https://img.shields.io/github/license/abapGit/abapGit?label=License&color=green)](LICENSE) [![License](https://img.shields.io/github/license/abapGit/abapGit?label=License&color=green)](LICENSE)
[![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit) [![REUSE Status](https://api.reuse.software/badge/github.com/abapGit/abapGit?color=success)](https://api.reuse.software/info/github.com/abapGit/abapGit)
[![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap) [![Slack](https://img.shields.io/badge/Join-Slack-blue)](https://communityinviter.com/apps/abapgit/abap)
[![abap package version](https://img.shields.io/endpoint?url=https://shield.abap.space/version-shield-json/github/abapGit/abapGit/src/zif_abapgit_version.intf.abap/c_abap_version&label=version)](https://github.com/abapGit/abapGit/blob/main/src/zif_abapgit_version.intf.abap) [![abap package version](https://img.shields.io/endpoint?url=https://shield.abappm.com/github/abapGit/abapGit/-main/src/zif_abapgit_version.intf.abap/c_abap_version&label=version)](https://github.com/abapGit/abapGit/blob/main/src/zif_abapgit_version.intf.abap)
<!-- <!--
<picture> <picture>

View File

@ -34,6 +34,11 @@ CLASS zcl_abapgit_object_http DEFINITION
object_state TYPE c LENGTH 1, object_state TYPE c LENGTH 1,
END OF ty_gs_object_version. END OF ty_gs_object_version.
TYPES: BEGIN OF ty_icf_node,
icfname TYPE c LENGTH 15,
icfparguid TYPE c LENGTH 25,
END OF ty_icf_node.
ENDCLASS. ENDCLASS.
@ -84,8 +89,7 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
lo_http TYPE REF TO object, lo_http TYPE REF TO object,
ls_abap_lang TYPE ty_gs_object_version, ls_abap_lang TYPE ty_gs_object_version,
lo_instance TYPE REF TO object, lo_instance TYPE REF TO object,
lv_tadir_name TYPE tadir-obj_name, lv_icfnode TYPE ty_icf_node.
lt_ret TYPE STANDARD TABLE OF bapiret2.
TRY. TRY.
io_xml->read( io_xml->read(
@ -98,6 +102,14 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
EXPORTING iv_name = 'HTTPHDL' EXPORTING iv_name = 'HTTPHDL'
CHANGING cg_data = lt_handler ). CHANGING cg_data = lt_handler ).
TRY.
"link to icf node (in releases older than 757, a http service requires a icf node to function)
io_xml->read(
EXPORTING iv_name = 'HTTPICFNODE'
CHANGING cg_data = lv_icfnode ).
CATCH cx_root.
ENDTRY.
SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = lv_http_servid AND version = 'A'. SELECT SINGLE id FROM ('UCONHTTPSERVHEAD') INTO lv_id WHERE id = lv_http_servid AND version = 'A'.
IF sy-subrc = 0. IF sy-subrc = 0.
"update "update
@ -152,6 +164,9 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_DESCRIPTION') CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_DESCRIPTION')
EXPORTING EXPORTING
texts = ls_description. texts = ls_description.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SET_ICF_SERVICE')
EXPORTING
iv_icfservice = lv_icfnode.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SAVE') CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~SAVE')
EXPORTING EXPORTING
run_dark = abap_true run_dark = abap_true
@ -159,16 +174,6 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
korrnum = iv_transport. korrnum = iv_transport.
CALL METHOD lo_http->('IF_UCON_API_HTTP_SERVICE~FREE'). 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. CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ). zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY. ENDTRY.
@ -241,6 +246,7 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
lt_handler TYPE TABLE OF ty_uconservhttphandler, lt_handler TYPE TABLE OF ty_uconservhttphandler,
ls_description TYPE ty_uconhttpservtext, ls_description TYPE ty_uconhttpservtext,
lx_root TYPE REF TO cx_root, lx_root TYPE REF TO cx_root,
lv_icfnode TYPE ty_icf_node,
lv_name TYPE c LENGTH 30. lv_name TYPE c LENGTH 30.
TRY. TRY.
@ -275,6 +281,15 @@ CLASS zcl_abapgit_object_http IMPLEMENTATION.
iv_name = 'HTTPHDL' iv_name = 'HTTPHDL'
ig_data = lt_handler ). ig_data = lt_handler ).
TRY.
"link to icf node (in releases older than 757, a http service requires a icf node to function)
CALL METHOD lo_serv->('IF_UCON_API_HTTP_SERVICE~GET_ICF_SERVICE') IMPORTING ev_icfservice = lv_icfnode.
io_xml->add(
iv_name = 'HTTPICFNODE'
ig_data = lv_icfnode ).
CATCH cx_root.
ENDTRY.
CATCH cx_root INTO lx_root. CATCH cx_root INTO lx_root.
zcx_abapgit_exception=>raise_with_text( lx_root ). zcx_abapgit_exception=>raise_with_text( lx_root ).
ENDTRY. ENDTRY.

View File

@ -282,7 +282,10 @@ CLASS zcl_abapgit_syntax_highlighter IMPLEMENTATION.
rv_line = iv_line. rv_line = iv_line.
IF mv_hidden_chars = abap_true. IF mv_hidden_chars = abap_true.
" The order of these replacements matters to properly show CR, LF, and CRLF
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab IN rv_line WITH '&nbsp;&rarr;&nbsp;'. REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab IN rv_line WITH '&nbsp;&rarr;&nbsp;'.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN rv_line WITH '&para;'.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_line WITH '&crarr;'.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf(1) IN rv_line WITH '&para;'. REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf(1) IN rv_line WITH '&para;'.
REPLACE ALL OCCURRENCES OF ` ` IN rv_line WITH '&middot;'. REPLACE ALL OCCURRENCES OF ` ` IN rv_line WITH '&middot;'.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>form_feed IN rv_line REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>form_feed IN rv_line

View File

@ -85,6 +85,24 @@ ENDCLASS.
CLASS zcl_abapgit_gui_event IMPLEMENTATION. CLASS zcl_abapgit_gui_event IMPLEMENTATION.
METHOD class_constructor.
CONSTANTS lc_nbsp TYPE xstring VALUE 'C2A0'. " &nbsp;
TRY.
gv_non_breaking_space = zcl_abapgit_convert=>xstring_to_string_utf8( lc_nbsp ).
CATCH zcx_abapgit_exception.
" Fallback for non-Unicode systems
IF cl_abap_char_utilities=>charsize < 2.
gv_non_breaking_space = |X'A0'|.
ELSE.
ASSERT 0 = 1.
ENDIF.
ENDTRY.
ENDMETHOD.
METHOD constructor. METHOD constructor.
" Edge Webview control returns upper case action but abapGit requires lower case (#4841) " Edge Webview control returns upper case action but abapGit requires lower case (#4841)
@ -112,6 +130,17 @@ CLASS zcl_abapgit_gui_event IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD field_keys_to_upper.
FIELD-SYMBOLS <ls_field> LIKE LINE OF ct_fields.
LOOP AT ct_fields ASSIGNING <ls_field>.
<ls_field>-name = to_upper( <ls_field>-name ).
ENDLOOP.
ENDMETHOD.
METHOD new. METHOD new.
CREATE OBJECT ro_instance CREATE OBJECT ro_instance
EXPORTING EXPORTING
@ -122,51 +151,6 @@ CLASS zcl_abapgit_gui_event IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_gui_event~form_data.
IF mo_form_data IS NOT BOUND.
mo_form_data = fields_to_map( parse_post_form_data( zif_abapgit_gui_event~mt_postdata ) ).
mo_form_data->freeze( ).
ENDIF.
ro_string_map = mo_form_data.
ENDMETHOD.
METHOD zif_abapgit_gui_event~query.
IF mo_query IS NOT BOUND.
mo_query = fields_to_map( parse_fields( zif_abapgit_gui_event~mv_getdata ) ).
mo_query->freeze( ).
ENDIF.
ro_string_map = mo_query.
ENDMETHOD.
METHOD parse_fields_upper_case_name.
rt_fields = parse_fields(
iv_string = iv_string
iv_upper_cased = abap_true ).
ENDMETHOD.
METHOD parse_post_form_data.
DATA lv_serialized_post_data TYPE string.
lv_serialized_post_data = translate_postdata( it_post_data ).
IF iv_upper_cased = abap_true.
rt_fields = parse_fields_upper_case_name( lv_serialized_post_data ).
ELSE.
rt_fields = parse_fields( lv_serialized_post_data ).
ENDIF.
ENDMETHOD.
METHOD parse_fields. METHOD parse_fields.
DATA: DATA:
@ -206,6 +190,29 @@ CLASS zcl_abapgit_gui_event IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD parse_fields_upper_case_name.
rt_fields = parse_fields(
iv_string = iv_string
iv_upper_cased = abap_true ).
ENDMETHOD.
METHOD parse_post_form_data.
DATA lv_serialized_post_data TYPE string.
lv_serialized_post_data = translate_postdata( it_post_data ).
IF iv_upper_cased = abap_true.
rt_fields = parse_fields_upper_case_name( lv_serialized_post_data ).
ELSE.
rt_fields = parse_fields( lv_serialized_post_data ).
ENDIF.
ENDMETHOD.
METHOD translate_postdata. METHOD translate_postdata.
DATA: lt_post_data TYPE zif_abapgit_html_viewer=>ty_post_data, DATA: lt_post_data TYPE zif_abapgit_html_viewer=>ty_post_data,
@ -233,17 +240,6 @@ CLASS zcl_abapgit_gui_event IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD field_keys_to_upper.
FIELD-SYMBOLS <ls_field> LIKE LINE OF ct_fields.
LOOP AT ct_fields ASSIGNING <ls_field>.
<ls_field>-name = to_upper( <ls_field>-name ).
ENDLOOP.
ENDMETHOD.
METHOD unescape. METHOD unescape.
* do not use cl_http_utility as it does strange things with the encoding * do not use cl_http_utility as it does strange things with the encoding
@ -261,15 +257,24 @@ CLASS zcl_abapgit_gui_event IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD class_constructor. METHOD zif_abapgit_gui_event~form_data.
CONSTANTS lc_nbsp TYPE xstring VALUE 'C2A0'. " &nbsp; IF mo_form_data IS NOT BOUND.
mo_form_data = fields_to_map( parse_post_form_data( zif_abapgit_gui_event~mt_postdata ) ).
mo_form_data->freeze( ).
ENDIF.
ro_string_map = mo_form_data.
TRY. ENDMETHOD.
gv_non_breaking_space = zcl_abapgit_convert=>xstring_to_string_utf8( lc_nbsp ).
CATCH zcx_abapgit_exception.
ASSERT 0 = 1. METHOD zif_abapgit_gui_event~query.
ENDTRY.
IF mo_query IS NOT BOUND.
mo_query = fields_to_map( parse_fields( zif_abapgit_gui_event~mv_getdata ) ).
mo_query->freeze( ).
ENDIF.
ro_string_map = mo_query.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.