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.
|
||||
|
||||
|
||||
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 ).
|
||||
|
||||
|
|
|
@ -233,7 +233,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BOVERVIEW IMPLEMENTATION.
|
|||
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 ).
|
||||
|
||||
|
|
|
@ -345,7 +345,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_PATCH IMPLEMENTATION.
|
|||
lv_add 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 ).
|
||||
|
||||
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.
|
||||
|
||||
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 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -128,7 +128,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
|||
|
||||
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 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -581,7 +581,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION.
|
|||
<ls_status> LIKE LINE OF ms_files-status,
|
||||
<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 ).
|
||||
|
||||
IF lines( lt_fields ) = 0.
|
||||
|
|
|
@ -159,7 +159,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_TAG IMPLEMENTATION.
|
|||
|
||||
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_newline IN lv_string WITH lc_replace.
|
||||
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
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS translate_postdata
|
||||
IMPORTING
|
||||
!it_postdata TYPE cnht_post_data_tab
|
||||
RETURNING
|
||||
VALUE(rv_string) TYPE string .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
@ -72,4 +77,32 @@ CLASS zcl_abapgit_utils IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
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.
|
||||
|
|
Loading…
Reference in New Issue
Block a user