mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Faulty handling of post data (#3624)
* Fixed faulty translation of post data to parsable string - Added method TRANSLATE_POSTDATA to ZCL_ABAPGIT_UTILS as a centralized place to translate post data to a string - Replaced all post data string concatenations with the translation helper method to correctly parse spaces that fall to the end of a table line (this should solve #3073 as well as any other random crash caused by accidental misalignment of the post data) * Backport ABAP statement to 7.02 * Code cleanup for linter checks * Code cleanup for linter checks * Fixed a possible error in parsing If it_postdata contains an empty last line, the staging fails, because the string may contain a lot of soaces at the end of the previous to last line. Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
3183f95bb6
commit
72ccc986c7
|
@ -56,7 +56,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_EDIT IMPLEMENTATION.
|
||||||
lv_string TYPE string.
|
lv_string TYPE string.
|
||||||
|
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
||||||
|
|
||||||
lv_string = cl_http_utility=>unescape_url( lv_string ).
|
lv_string = cl_http_utility=>unescape_url( lv_string ).
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BOVERVIEW IMPLEMENTATION.
|
||||||
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
||||||
|
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
||||||
|
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
||||||
|
|
||||||
|
|
|
@ -345,7 +345,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
|
||||||
lv_add TYPE string,
|
lv_add TYPE string,
|
||||||
lv_remove TYPE string.
|
lv_remove TYPE string.
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
||||||
|
|
||||||
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-add
|
zcl_abapgit_html_action_utils=>get_field( EXPORTING iv_name = c_patch_action-add
|
||||||
|
|
|
@ -84,7 +84,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_SETT IMPLEMENTATION.
|
||||||
|
|
||||||
DATA lv_serialized_post_data TYPE string.
|
DATA lv_serialized_post_data TYPE string.
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_serialized_post_data.
|
lv_serialized_post_data = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
||||||
rt_post_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_serialized_post_data ).
|
rt_post_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_serialized_post_data ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -128,7 +128,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
||||||
|
|
||||||
DATA lv_serialized_post_data TYPE string.
|
DATA lv_serialized_post_data TYPE string.
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_serialized_post_data.
|
lv_serialized_post_data = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
||||||
rt_post_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_serialized_post_data ).
|
rt_post_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_serialized_post_data ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -581,7 +581,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
|
||||||
<ls_status> LIKE LINE OF ms_files-status,
|
<ls_status> LIKE LINE OF ms_files-status,
|
||||||
<ls_item> LIKE LINE OF lt_fields.
|
<ls_item> LIKE LINE OF lt_fields.
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_string ).
|
||||||
|
|
||||||
IF lines( lt_fields ) = 0.
|
IF lines( lt_fields ) = 0.
|
||||||
|
|
|
@ -159,7 +159,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_TAG IMPLEMENTATION.
|
||||||
|
|
||||||
CLEAR eg_fields.
|
CLEAR eg_fields.
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
lv_string = zcl_abapgit_utils=>translate_postdata( it_postdata ).
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_crlf IN lv_string WITH lc_replace.
|
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_crlf IN lv_string WITH lc_replace.
|
||||||
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_newline IN lv_string WITH lc_replace.
|
REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>c_newline IN lv_string WITH lc_replace.
|
||||||
lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ).
|
lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ).
|
||||||
|
|
|
@ -19,6 +19,11 @@ CLASS zcl_abapgit_utils DEFINITION
|
||||||
!ev_time TYPE zif_abapgit_definitions=>ty_commit-time
|
!ev_time TYPE zif_abapgit_definitions=>ty_commit-time
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS translate_postdata
|
||||||
|
IMPORTING
|
||||||
|
!it_postdata TYPE cnht_post_data_tab
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_string) TYPE string .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -72,4 +77,32 @@ CLASS zcl_abapgit_utils IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD translate_postdata.
|
||||||
|
|
||||||
|
DATA: lt_post_data TYPE cnht_post_data_tab,
|
||||||
|
ls_last_line TYPE cnht_post_data_line,
|
||||||
|
lv_last_line_index TYPE i.
|
||||||
|
|
||||||
|
IF it_postdata IS INITIAL.
|
||||||
|
"Nothing to do
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lt_post_data = it_postdata.
|
||||||
|
|
||||||
|
"Save the last line for separate merge, because we don't need its trailing spaces
|
||||||
|
WHILE ls_last_line IS INITIAL.
|
||||||
|
lv_last_line_index = lines( lt_post_data ).
|
||||||
|
READ TABLE lt_post_data INTO ls_last_line INDEX lv_last_line_index.
|
||||||
|
DELETE lt_post_data INDEX lv_last_line_index.
|
||||||
|
ENDWHILE.
|
||||||
|
|
||||||
|
CONCATENATE LINES OF lt_post_data INTO rv_string
|
||||||
|
IN CHARACTER MODE RESPECTING BLANKS.
|
||||||
|
CONCATENATE rv_string ls_last_line INTO rv_string
|
||||||
|
IN CHARACTER MODE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user