Please install the open-source project S-RTTI by sandraros and try again: (link)
`. - - RAISE EXCEPTION TYPE z2ui5_cx_util_error - EXPORTING - val = lv_text. - - ENDIF. - - CALL TRANSFORMATION id SOURCE XML rtti_data RESULT srtti = srtti. - - CALL METHOD srtti->('GET_RTTI') - RECEIVING - rtti = rtti_type. - - lo_datadescr ?= rtti_type. - - CREATE DATA e_data TYPE HANDLE lo_datadescr. - ASSIGN e_data->* TO FIELD-SYMBOL(Please install the open-source project S-RTTI by sandraros and try again: (link)
`. - - RAISE EXCEPTION TYPE z2ui5_cx_util_error - EXPORTING - val = lv_text. - - ENDIF. - - DATA(lv_classname) = 'ZCL_SRTTI_TYPEDESCR'. - CALL METHOD (lv_classname)=>('CREATE_BY_DATA_OBJECT') - EXPORTING - data_object = data - RECEIVING - srtti = srtti. - - CALL TRANSFORMATION id SOURCE srtti = srtti dobj = data RESULT XML result. - - ENDMETHOD. - - - METHOD trans_xml_2_any. - - CALL TRANSFORMATION id - SOURCE XML xml - RESULT data = any. - - ENDMETHOD. - - - METHOD trans_xml_by_any. - - CALL TRANSFORMATION id - SOURCE data = any - RESULT XML result - OPTIONS data_refs = `heap-or-create`. - - ENDMETHOD. - - - - METHOD url_param_create_url. LOOP AT t_params INTO DATA(ls_param). @@ -1567,78 +932,82 @@ CLASS Z2UI5_CL_UTIL_FUNC IMPLEMENTATION. ENDMETHOD. - METHOD uuid_get_c22. - DATA uuid TYPE c LENGTH 22. + METHOD xml_parse. - TRY. - - TRY. - DATA(lv_classname) = `CL_SYSTEM_UUID`. - CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c22 - RECEIVING - uuid = uuid. - - CATCH cx_sy_dyn_call_illegal_class. - - DATA(lv_fm) = `GUID_CREATE`. - CALL FUNCTION lv_fm - IMPORTING - ev_guid_22 = uuid. - - ENDTRY. - - result = uuid. - - CATCH cx_root. - ASSERT 1 = 0. - ENDTRY. - - result = replace( val = result - sub = `}` - with = `0` - occ = 0 ). - result = replace( val = result - sub = `{` - with = `0` - occ = 0 ). - result = replace( val = result - sub = `"` - with = `0` - occ = 0 ). - result = replace( val = result - sub = `'` - with = `0` - occ = 0 ). + CALL TRANSFORMATION id + SOURCE XML xml + RESULT data = any. ENDMETHOD. - METHOD uuid_get_c32. - DATA uuid TYPE c LENGTH 32. + METHOD xml_srtti_parse. - TRY. + DATA srtti TYPE REF TO object. + DATA rtti_type TYPE REF TO cl_abap_typedescr. + DATA lo_datadescr TYPE REF TO cl_abap_datadescr. - TRY. - DATA(lv_classname) = `CL_SYSTEM_UUID`. - CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32 - RECEIVING - uuid = uuid. + IF rtti_check_class_exists( 'ZCL_SRTTI_TYPEDESCR' ) = abap_false. - CATCH cx_sy_dyn_call_illegal_class. + DATA(lv_link) = `https://github.com/sandraros/S-RTTI`. + DATA(lv_text) = `Please install the open-source project S-RTTI by sandraros and try again: (link)
`. - DATA(lv_fm) = `GUID_CREATE`. - CALL FUNCTION lv_fm - IMPORTING - ev_guid_32 = uuid. + RAISE EXCEPTION TYPE z2ui5_cx_util_error + EXPORTING + val = lv_text. - ENDTRY. + ENDIF. - result = uuid. + CALL TRANSFORMATION id SOURCE XML rtti_data RESULT srtti = srtti. - CATCH cx_root. - ASSERT 1 = 0. - ENDTRY. + CALL METHOD srtti->('GET_RTTI') + RECEIVING + rtti = rtti_type. + + lo_datadescr ?= rtti_type. + + CREATE DATA e_data TYPE HANDLE lo_datadescr. + ASSIGN e_data->* TO FIELD-SYMBOL(Please install the open-source project S-RTTI by sandraros and try again: (link)
`. + + RAISE EXCEPTION TYPE z2ui5_cx_util_error + EXPORTING + val = lv_text. + + ENDIF. + + DATA(lv_classname) = 'ZCL_SRTTI_TYPEDESCR'. + CALL METHOD (lv_classname)=>('CREATE_BY_DATA_OBJECT') + EXPORTING + data_object = data + RECEIVING + srtti = srtti. + + CALL TRANSFORMATION id SOURCE srtti = srtti dobj = data RESULT XML result. + + ENDMETHOD. + + + METHOD xml_stringify. + + CALL TRANSFORMATION id + SOURCE data = any + RESULT XML result + OPTIONS data_refs = `heap-or-create`. ENDMETHOD. diff --git a/src/01/01/z2ui5_cl_util_func.clas.testclasses.abap b/src/01/01/z2ui5_cl_util_api.clas.testclasses.abap similarity index 79% rename from src/01/01/z2ui5_cl_util_func.clas.testclasses.abap rename to src/01/01/z2ui5_cl_util_api.clas.testclasses.abap index c5243895..11255569 100644 --- a/src/01/01/z2ui5_cl_util_func.clas.testclasses.abap +++ b/src/01/01/z2ui5_cl_util_api.clas.testclasses.abap @@ -99,7 +99,6 @@ * * METHODS test_trans_json_any_2__w_struc FOR TESTING RAISING cx_static_check. * METHODS test_trans_json_2_any__w_dref FOR TESTING RAISING cx_static_check. -* METHODS test_trans_ref_tab_2_tab FOR TESTING RAISING cx_static_check. * METHODS test_trans_xml_any_2__w_obj FOR TESTING RAISING cx_static_check. * METHODS test_trans_xml_any_2__w_data FOR TESTING RAISING cx_static_check. * METHODS test_trans_xml_2_any__w_obj FOR TESTING RAISING cx_static_check. @@ -261,39 +260,39 @@ * * DATA(lv_bool) = xsdbool( 1 = 1 ). * cl_abap_unit_assert=>assert_equals( -* act = z2ui5_cl_util_func=>boolean_check_by_data( lv_bool ) +* act = z2ui5_cl_util=>boolean_check_by_data( lv_bool ) * exp = abap_true ). * * lv_bool = xsdbool( 1 = 2 ). * cl_abap_unit_assert=>assert_equals( -* act = z2ui5_cl_util_func=>boolean_check_by_data( lv_bool ) +* act = z2ui5_cl_util=>boolean_check_by_data( lv_bool ) * exp = abap_true ). * * cl_abap_unit_assert=>assert_equals( -* act = z2ui5_cl_util_func=>boolean_check_by_data( abap_true ) +* act = z2ui5_cl_util=>boolean_check_by_data( abap_true ) * exp = abap_true ). * * cl_abap_unit_assert=>assert_equals( -* act = z2ui5_cl_util_func=>boolean_check_by_data( abap_false ) +* act = z2ui5_cl_util=>boolean_check_by_data( abap_false ) * exp = abap_true ). * * ENDMETHOD. * * METHOD test_create. * -* DATA(lo_test) = NEW z2ui5_cl_util_func( ) ##NEEDED. +* DATA(lo_test) = NEW z2ui5_cl_util( ) ##NEEDED. * * ENDMETHOD. * * METHOD test_rtti_get_classname_by_ref. * -* DATA(lo_test) = NEW z2ui5_cl_util_func( ). -* DATA(lv_name) = z2ui5_cl_util_func=>rtti_get_classname_by_ref( lo_test ). -* cl_abap_unit_assert=>assert_equals( exp = `Z2UI5_CL_UTIL_FUNC` +* DATA(lo_test) = NEW z2ui5_cl_util( ). +* DATA(lv_name) = z2ui5_cl_util=>rtti_get_classname_by_ref( lo_test ). +* cl_abap_unit_assert=>assert_equals( exp = `z2ui5_cl_util` * act = lv_name ). * * DATA(lo_test2) = NEW ltcl_test_app( ). -* DATA(lv_name2) = z2ui5_cl_util_func=>rtti_get_classname_by_ref( lo_test2 ). +* DATA(lv_name2) = z2ui5_cl_util=>rtti_get_classname_by_ref( lo_test2 ). * cl_abap_unit_assert=>assert_equals( exp = `LTCL_TEST_APP` * act = lv_name2 ). * @@ -302,9 +301,9 @@ * METHOD test_boolean_abap_2_json. * * cl_abap_unit_assert=>assert_equals( exp = `false` -* act = z2ui5_cl_util_func=>boolean_abap_2_json( abap_false ) ). +* act = z2ui5_cl_util=>boolean_abap_2_json( abap_false ) ). * -* IF `{ABCD}` <> z2ui5_cl_util_func=>boolean_abap_2_json( `{ABCD}` ). +* IF `{ABCD}` <> z2ui5_cl_util=>boolean_abap_2_json( `{ABCD}` ). * cl_abap_unit_assert=>fail( ). * ENDIF. * @@ -312,9 +311,9 @@ * * METHOD test_time_get_timestampl. * -* DATA(lv_time) = z2ui5_cl_util_func=>time_get_timestampl( ). +* DATA(lv_time) = z2ui5_cl_util=>time_get_timestampl( ). * -* DATA(lv_time2) = z2ui5_cl_util_func=>time_substract_seconds( +* DATA(lv_time2) = z2ui5_cl_util=>time_substract_seconds( * time = lv_time * seconds = 60 * 60 * 4 ). * @@ -330,8 +329,8 @@ * * METHOD test_time_substract_seconds. * -* DATA(lv_time) = z2ui5_cl_util_func=>time_get_timestampl( ). -* DATA(lv_time2) = z2ui5_cl_util_func=>time_get_timestampl( ). +* DATA(lv_time) = z2ui5_cl_util=>time_get_timestampl( ). +* DATA(lv_time2) = z2ui5_cl_util=>time_get_timestampl( ). * * IF lv_time IS INITIAL OR lv_time2 IS INITIAL. * cl_abap_unit_assert=>fail( ). @@ -345,7 +344,7 @@ * * METHOD test_c_trim. * -* IF z2ui5_cl_util_func=>c_trim( ` JsadfHHs ` ) <> `JsadfHHs`. +* IF z2ui5_cl_util=>c_trim( ` JsadfHHs ` ) <> `JsadfHHs`. * cl_abap_unit_assert=>fail( ). * ENDIF. * @@ -353,7 +352,7 @@ * * METHOD test_c_trim_lower. * -* IF z2ui5_cl_util_func=>c_trim_lower( ` JsadfHHs ` ) <> `jsadfhhs`. +* IF z2ui5_cl_util=>c_trim_lower( ` JsadfHHs ` ) <> `jsadfhhs`. * cl_abap_unit_assert=>fail( ). * ENDIF. * @@ -361,7 +360,7 @@ * * METHOD test_c_trim_upper. * -* IF z2ui5_cl_util_func=>c_trim_upper( ` JsadfHHs ` ) <> `JSADFHHS`. +* IF z2ui5_cl_util=>c_trim_upper( ` JsadfHHs ` ) <> `JSADFHHS`. * cl_abap_unit_assert=>fail( ). * ENDIF. * @@ -369,7 +368,7 @@ * * METHOD test_func_get_uuid_32. * -* DATA(lv_uuid) = z2ui5_cl_util_func=>uuid_get_c32( ). +* DATA(lv_uuid) = z2ui5_cl_util=>uuid_get_c32( ). * * IF lv_uuid IS INITIAL. * cl_abap_unit_assert=>fail( ). @@ -383,7 +382,7 @@ * * METHOD test_func_get_uuid_22. * -* DATA(lv_uuid) = z2ui5_cl_util_func=>uuid_get_c22( ). +* DATA(lv_uuid) = z2ui5_cl_util=>uuid_get_c22( ). * * IF lv_uuid IS INITIAL. * cl_abap_unit_assert=>fail( ). @@ -397,7 +396,7 @@ * * METHOD test_func_get_user_tech. * -* DATA(lv_uname) = z2ui5_cl_util_func=>user_get_tech( ). +* DATA(lv_uname) = z2ui5_cl_util=>user_get_tech( ). * IF sy-uname <> lv_uname OR lv_uname IS INITIAL. * cl_abap_unit_assert=>fail( ). * ENDIF. @@ -407,7 +406,7 @@ * METHOD test_x_raise. * * TRY. -* z2ui5_cl_util_func=>x_raise( ). +* z2ui5_cl_util=>x_raise( ). * cl_abap_unit_assert=>fail( ). * CATCH cx_root. * ENDTRY. @@ -417,13 +416,13 @@ * METHOD test_x_check_raise. * * TRY. -* z2ui5_cl_util_func=>x_check_raise( xsdbool( 1 = 1 ) ). +* z2ui5_cl_util=>x_check_raise( xsdbool( 1 = 1 ) ). * cl_abap_unit_assert=>fail( ). * CATCH cx_root. * ENDTRY. * * TRY. -* z2ui5_cl_util_func=>x_check_raise( xsdbool( 1 = 3 ) ). +* z2ui5_cl_util=>x_check_raise( xsdbool( 1 = 3 ) ). * CATCH cx_root. * cl_abap_unit_assert=>fail( ). * ENDTRY. @@ -459,7 +458,7 @@ * DATA mr_data TYPE REF TO data. * FIELD-SYMBOLS` && x->previous->get_text( ) && `
` && x2->get_text( ) && `
Please check if all generic data references are public attributes of your class`.
+
+ ENDTRY.
+
+ ENDMETHOD.
+
+
+ METHOD attri_get_by_data.
+
+ DATA(lr_data) = REF #( val ).
+
+ DO 3 TIMES.
+
+ TRY.
+ result = REF #( mt_attri[ r_ref = lr_data ] ).
+ RETURN.
+ CATCH cx_root.
+ ENDTRY.
+
+ DATA(lo_dissolver) = NEW z2ui5_cl_core_model_srv(
+ attri = REF #( mt_attri )
+ app = mo_app ).
+ lo_dissolver->main( ).
+
+ ENDDO.
+
+ RAISE EXCEPTION TYPE z2ui5_cx_util_error
+ EXPORTING
+ val = `BINDING_ERROR - No class attribute for binding found - Please check if the binded values are public attributes of your class or switch to bind_local`.
+
+ ENDMETHOD.
+
+
+ METHOD db_load.
+
+ DATA(lo_db) = NEW z2ui5_cl_core_draft_srv( ).
+ DATA(ls_db) = lo_db->read_draft( id ).
+ result = all_xml_parse( ls_db-data ).
+
+ ENDMETHOD.
+
+
+ METHOD db_save.
+
+
+ IF mo_app IS BOUND.
+ CAST z2ui5_if_app( mo_app )->id_draft = ms_draft-id.
+ ENDIF.
+
+ DATA(lo_db) = NEW z2ui5_cl_core_draft_srv( ).
+ lo_db->create(
+ draft = ms_draft
+ model_xml = all_xml_stringify( ) ).
+
+ ENDMETHOD.
+
+
+ METHOD model_json_parse.
+
+ DATA(lo_dissolver) = NEW z2ui5_cl_core_model_srv(
+ attri = REF #( mt_attri )
+ app = mo_app ).
+ lo_dissolver->set_attri_ready( ).
+
+ DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
+ lo_json_mapper->model_client_to_server(
+ view = view
+ t_attri = REF #( mt_attri )
+ model = io_json_model ).
+
+ ENDMETHOD.
+
+
+ METHOD model_json_stringify.
+
+ DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
+ result = lo_json_mapper->model_server_to_client( mt_attri ).
+
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/01/02/z2ui5_cl_fw_app.clas.testclasses.abap b/src/01/02/z2ui5_cl_core_app.clas.testclasses.abap
similarity index 100%
rename from src/01/02/z2ui5_cl_fw_app.clas.testclasses.abap
rename to src/01/02/z2ui5_cl_core_app.clas.testclasses.abap
diff --git a/src/01/02/z2ui5_cl_fw_app.clas.xml b/src/01/02/z2ui5_cl_core_app.clas.xml
similarity index 84%
rename from src/01/02/z2ui5_cl_fw_app.clas.xml
rename to src/01/02/z2ui5_cl_core_app.clas.xml
index 8cebda77..f423bec7 100644
--- a/src/01/02/z2ui5_cl_fw_app.clas.xml
+++ b/src/01/02/z2ui5_cl_core_app.clas.xml
@@ -3,9 +3,9 @@