From f6c111b90708522575212570f22d89ffe7d390ee Mon Sep 17 00:00:00 2001 From: oblomov-dev <102328295+oblomov-dev@users.noreply.github.com> Date: Thu, 17 Oct 2024 19:51:18 +0200 Subject: [PATCH] handler_cleanup (#1509) * handler_cleanup * Update src/02/z2ui5_cl_http_handler.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --------- Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- src/01/02/z2ui5_cl_core_client.clas.abap | 7 +- src/01/02/z2ui5_cl_core_http_post.clas.abap | 25 ++-- src/01/02/z2ui5_if_core_types.intf.abap | 29 +++- src/02/z2ui5_cl_http_handler.clas.abap | 144 +++++++++++--------- src/02/z2ui5_if_types.intf.abap | 8 -- 5 files changed, 118 insertions(+), 95 deletions(-) diff --git a/src/01/02/z2ui5_cl_core_client.clas.abap b/src/01/02/z2ui5_cl_core_client.clas.abap index 110fc326..bba952b5 100644 --- a/src/01/02/z2ui5_cl_core_client.clas.abap +++ b/src/01/02/z2ui5_cl_core_client.clas.abap @@ -353,13 +353,14 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION. val = `STATEFUL_ALREADY_ACTIVATED_ERROR`. ENDIF. IF stateful = abap_true. - mo_action->ms_next-s_set-handler_attrs-stateful-active = 1. +* mo_action->ms_next-s_set-handler_attrs- + mo_action->ms_next-s_set-s_stateful-active = 1. CAST z2ui5_if_app( mo_action->mo_app->mo_app )->check_sticky = abap_true. ELSE. - mo_action->ms_next-s_set-handler_attrs-stateful-active = 0. + mo_action->ms_next-s_set-s_stateful-active = 0. CAST z2ui5_if_app( mo_action->mo_app->mo_app )->check_sticky = abap_false. ENDIF. - mo_action->ms_next-s_set-handler_attrs-stateful-switched = abap_true. + mo_action->ms_next-s_set-s_stateful-switched = abap_true. ENDMETHOD. ENDCLASS. diff --git a/src/01/02/z2ui5_cl_core_http_post.clas.abap b/src/01/02/z2ui5_cl_core_http_post.clas.abap index 4d73415f..9c4e0d10 100644 --- a/src/01/02/z2ui5_cl_core_http_post.clas.abap +++ b/src/01/02/z2ui5_cl_core_http_post.clas.abap @@ -9,17 +9,15 @@ CLASS z2ui5_cl_core_http_post DEFINITION DATA mv_request_json TYPE string. DATA ms_request TYPE z2ui5_if_core_types=>ty_s_http_request_post. DATA ms_response TYPE z2ui5_if_core_types=>ty_s_http_response_post. - DATA mv_response TYPE string. + DATA mv_response TYPE string. METHODS constructor IMPORTING val TYPE string. METHODS main - EXPORTING - attributes TYPE z2ui5_if_types=>ty_s_http_handler_attributes RETURNING - VALUE(result) TYPE string. + VALUE(result) TYPE z2ui5_if_core_types=>ty_s_http_res. PROTECTED SECTION. @@ -48,7 +46,7 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION. METHOD main. - CLEAR attributes. +* CLEAR attributes. main_begin( ). DO. @@ -56,8 +54,11 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION. EXIT. ENDIF. ENDDO. - result = mv_response. - attributes = ms_response-s_front-params-handler_attrs. + + result = VALUE #( + body = mv_response + s_stateful = ms_response-s_front-params-s_stateful + ). ENDMETHOD. @@ -128,14 +129,8 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION. METHOD main_process. TRY. - DATA li_client TYPE REF TO z2ui5_cl_core_client. - TRY. - CREATE OBJECT li_client TYPE ('ZCL_2UI5_CUSTOM_CLIENT') - EXPORTING - action = mo_action. - CATCH cx_root. - li_client = NEW z2ui5_cl_core_client( mo_action ). - ENDTRY. + + DATA(li_client) = NEW z2ui5_cl_core_client( mo_action ). DATA(li_app) = CAST z2ui5_if_app( mo_action->mo_app->mo_app ). IF li_app->check_sticky = abap_false. diff --git a/src/01/02/z2ui5_if_core_types.intf.abap b/src/01/02/z2ui5_if_core_types.intf.abap index d9631321..4d75c898 100644 --- a/src/01/02/z2ui5_if_core_types.intf.abap +++ b/src/01/02/z2ui5_if_core_types.intf.abap @@ -15,6 +15,32 @@ INTERFACE z2ui5_if_core_types one_time TYPE string VALUE `ONE_TIME`, END OF cs_bind_type. + TYPES: + BEGIN OF ty_s_http_req, + method TYPE string, + body TYPE string, + END OF ty_s_http_req. + + TYPES: + BEGIN OF ty_s_http_res, + body TYPE string, + status_code TYPE i, + status_reason TYPE string, + t_header TYPE z2ui5_if_types=>ty_t_name_value, + BEGIN OF s_stateful, + active TYPE i, + switched TYPE abap_bool, + END OF s_stateful, + END OF ty_s_http_res. + +* TYPES: +* BEGIN OF ty_s_http_handler_attributes, +* BEGIN OF stateful, +* active TYPE i, +* switched TYPE abap_bool, +* END OF stateful, +* END OF ty_s_http_handler_attributes. + TYPES: BEGIN OF ty_s_bind_config, path_only TYPE abap_bool, @@ -114,7 +140,8 @@ INTERFACE z2ui5_if_core_types BEGIN OF s_follow_up_action, custom_js TYPE string, END OF s_follow_up_action, - handler_attrs TYPE z2ui5_if_types=>ty_s_http_handler_attributes, +* handler_attrs TYPE ty_s_http_handler_attributes, + s_stateful TYPE ty_s_http_res-s_stateful, END OF ty_s_next_frontend. TYPES: diff --git a/src/02/z2ui5_cl_http_handler.clas.abap b/src/02/z2ui5_cl_http_handler.clas.abap index 020896da..405fd9e6 100644 --- a/src/02/z2ui5_cl_http_handler.clas.abap +++ b/src/02/z2ui5_cl_http_handler.clas.abap @@ -4,6 +4,14 @@ CLASS z2ui5_cl_http_handler DEFINITION PUBLIC SECTION. + CLASS-METHODS run + IMPORTING + server TYPE REF TO object OPTIONAL + req TYPE REF TO object OPTIONAL + res TYPE REF TO object OPTIONAL + config TYPE z2ui5_if_types=>ty_s_http_config OPTIONAL + PREFERRED PARAMETER server. + CLASS-METHODS factory_cloud IMPORTING req TYPE REF TO object @@ -28,45 +36,29 @@ CLASS z2ui5_cl_http_handler DEFINITION CLASS-DATA so_sticky_handler TYPE REF TO z2ui5_cl_core_http_post. DATA mo_server TYPE REF TO z2ui5_cl_abap_api_http. - DATA ms_session_attributes TYPE z2ui5_if_types=>ty_s_http_handler_attributes. +* DATA ms_session_attributes TYPE z2ui5_if_core_types=>ty_s_http_handler_attributes. - TYPES: - BEGIN OF ty_s_http_req, - method TYPE string, - body TYPE string, - END OF ty_s_http_req. - - TYPES: - BEGIN OF ty_s_http_res, - body TYPE string, - status_code TYPE i, - status_reason TYPE string, - t_header TYPE z2ui5_if_types=>ty_t_name_value, - END OF ty_s_http_res. - - DATA ms_req TYPE ty_s_http_req. - DATA ms_res TYPE ty_s_http_res. + DATA ms_req TYPE z2ui5_if_core_types=>ty_s_http_req. + DATA ms_res TYPE z2ui5_if_core_types=>ty_s_http_res. DATA ms_config TYPE z2ui5_if_types=>ty_s_http_config. - METHODS set_config - IMPORTING - is_custom_config TYPE z2ui5_if_types=>ty_s_http_config. - - METHODS http_get - IMPORTING - is_custom_config TYPE z2ui5_if_types=>ty_s_http_config. + METHODS http_get. METHODS http_post. - METHODS session_handling - IMPORTING - attributes TYPE z2ui5_if_types=>ty_s_http_handler_attributes. + METHODS session_handling. +* IMPORTING +* attributes TYPE z2ui5_if_core_types=>ty_s_http_handler_attributes. METHODS get_index_html RETURNING VALUE(result) TYPE string ##CALLED. + METHODS set_request. + + METHODS set_response. + PRIVATE SECTION. @@ -77,41 +69,14 @@ ENDCLASS. CLASS z2ui5_cl_http_handler IMPLEMENTATION. - METHOD set_config. - - ms_config = is_custom_config. - - IF ms_config-title IS INITIAL. - ms_config-title = `abap2UI5`. - ENDIF. - - IF ms_config-theme IS INITIAL. - ms_config-theme = `sap_horizon`. - ENDIF. - - IF ms_config-src IS INITIAL. - ms_config-src = `https://sdk.openui5.org/resources/sap-ui-cachebuster/sap-ui-core.js`. -* ms_req_config-src = `https://sdk.openui5.org/1.71.67/resources/sap-ui-core.js`. -* ms_req_config-src = `https://sdk.openui5.org/nightly/2/resources/sap-ui-core.js`. - ENDIF. - - IF ms_config-content_security_policy IS INITIAL. - ms_config-content_security_policy = ``. - ENDIF. - - ENDMETHOD. - - METHOD main. - ms_req-body = mo_server->get_cdata( ). - ms_req-method = mo_server->get_method( ). + ms_config = s_config. + set_request( ). CASE ms_req-method. WHEN `GET`. - http_get( s_config ). + http_get( ). WHEN `POST`. http_post( ). WHEN `HEAD`. @@ -119,11 +84,8 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION. RETURN. ENDCASE. - mo_server->set_cdata( ms_res-body ). - mo_server->set_header_field( n = `cache-control` v = `no-cache` ). - mo_server->set_status( code = 200 reason = `success` ). - - session_handling( ms_session_attributes ). + set_response( ). + session_handling( ). ENDMETHOD. @@ -152,7 +114,6 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION. METHOD http_get. - set_config( is_custom_config ). ms_res-body = get_index_html( ). ENDMETHOD. @@ -167,9 +128,7 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION. lo_post->mv_request_json = ms_req-body. ENDIF. - ms_res-body = lo_post->main( - IMPORTING - attributes = ms_session_attributes ). + ms_res = lo_post->main( ). TRY. IF lo_post IS BOUND. @@ -189,8 +148,8 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION. METHOD session_handling. "transform cookie to header based contextid handling - IF attributes-stateful-switched = abap_true. - mo_server->set_session_stateful( attributes-stateful-active ). + IF ms_res-s_stateful-switched = abap_true. + mo_server->set_session_stateful( ms_res-s_stateful-active ). IF mo_server->get_header_field( 'sap-contextid-accept' ) = 'header'. DATA(lv_contextid) = mo_server->get_response_cookie( 'sap-contextid' ). IF lv_contextid IS NOT INITIAL. @@ -210,6 +169,26 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION. METHOD get_index_html. + IF ms_config-title IS INITIAL. + ms_config-title = `abap2UI5`. + ENDIF. + + IF ms_config-theme IS INITIAL. + ms_config-theme = `sap_horizon`. + ENDIF. + + IF ms_config-src IS INITIAL. + ms_config-src = `https://sdk.openui5.org/resources/sap-ui-cachebuster/sap-ui-core.js`. +* ms_req_config-src = `https://sdk.openui5.org/1.71.67/resources/sap-ui-core.js`. +* ms_req_config-src = `https://sdk.openui5.org/nightly/2/resources/sap-ui-core.js`. + ENDIF. + + IF ms_config-content_security_policy IS INITIAL. + ms_config-content_security_policy = ``. + ENDIF. + IF ms_config-styles_css IS INITIAL. DATA(lv_style_css) = z2ui5_cl_app_style_css=>get( ). ELSE. @@ -263,4 +242,33 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION. ENDMETHOD. + METHOD run. + + DATA(lo_handler) = factory( + server = server + req = req + res = res + ). + + lo_handler->main( config ). + + ENDMETHOD. + + + METHOD set_request. + + ms_req-body = mo_server->get_cdata( ). + ms_req-method = mo_server->get_method( ). + + ENDMETHOD. + + + METHOD set_response. + + mo_server->set_cdata( ms_res-body ). + mo_server->set_header_field( n = `cache-control` v = `no-cache` ). + mo_server->set_status( code = 200 reason = `success` ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/02/z2ui5_if_types.intf.abap b/src/02/z2ui5_if_types.intf.abap index 6c7a2651..d9ef1dc8 100644 --- a/src/02/z2ui5_if_types.intf.abap +++ b/src/02/z2ui5_if_types.intf.abap @@ -19,14 +19,6 @@ INTERFACE z2ui5_if_types custom_js TYPE string, END OF ty_s_http_config. - TYPES: - BEGIN OF ty_s_http_handler_attributes, - BEGIN OF stateful, - active TYPE i, - switched TYPE abap_bool, - END OF stateful, - END OF ty_s_http_handler_attributes. - TYPES: BEGIN OF ty_s_draft, id TYPE string,