From b7eab01b6b3ca00343a9e7957b4d259a0f455fe5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 07:51:54 +0100 Subject: [PATCH] ajson, Automatic Update (#6041) Co-authored-by: larshp Co-authored-by: Lars Hvam --- src/json/zcl_abapgit_ajson.clas.abap | 94 ++++---- .../zcl_abapgit_ajson.clas.locals_imp.abap | 202 ++++++++++-------- .../zcl_abapgit_ajson.clas.testclasses.abap | 89 ++++---- src/json/zcl_abapgit_ajson_mapping.clas.abap | 60 +++--- .../zcl_abapgit_ajson_utilities.clas.abap | 24 +-- ...pgit_ajson_utilities.clas.testclasses.abap | 4 +- ..._abapgit_ajson_error.clas.testclasses.abap | 2 +- src/json/zif_abapgit_ajson.intf.abap | 42 +--- src/json/zif_abapgit_ajson_filter.intf.abap | 2 +- src/json/zif_abapgit_ajson_mapping.intf.abap | 4 +- src/json/zif_abapgit_ajson_types.intf.abap | 41 ++++ src/json/zif_abapgit_ajson_types.intf.xml | 15 ++ 12 files changed, 324 insertions(+), 255 deletions(-) create mode 100644 src/json/zif_abapgit_ajson_types.intf.abap create mode 100644 src/json/zif_abapgit_ajson_types.intf.xml diff --git a/src/json/zcl_abapgit_ajson.clas.abap b/src/json/zcl_abapgit_ajson.clas.abap index a90f14a3e..120c0ac9e 100644 --- a/src/json/zcl_abapgit_ajson.clas.abap +++ b/src/json/zcl_abapgit_ajson.clas.abap @@ -100,21 +100,21 @@ CLASS zcl_abapgit_ajson DEFINITION IMPORTING iv_path TYPE string RETURNING - VALUE(rv_item) TYPE REF TO zif_abapgit_ajson=>ty_node. + VALUE(rv_item) TYPE REF TO zif_abapgit_ajson_types=>ty_node. METHODS prove_path_exists IMPORTING iv_path TYPE string RETURNING - VALUE(rr_end_node) TYPE REF TO zif_abapgit_ajson=>ty_node + VALUE(rr_end_node) TYPE REF TO zif_abapgit_ajson_types=>ty_node RAISING zcx_abapgit_ajson_error. METHODS delete_subtree IMPORTING iv_path TYPE string iv_name TYPE string - ir_parent TYPE REF TO zif_abapgit_ajson=>ty_node OPTIONAL + ir_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node OPTIONAL RETURNING - VALUE(rs_top_node) TYPE zif_abapgit_ajson=>ty_node. + VALUE(rs_top_node) TYPE zif_abapgit_ajson_types=>ty_node. METHODS read_only_watchdog RAISING zcx_abapgit_ajson_error. @@ -210,7 +210,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD get_item. FIELD-SYMBOLS LIKE LINE OF mt_json_tree. - DATA ls_path_name TYPE zif_abapgit_ajson=>ty_path_name. + DATA ls_path_name TYPE zif_abapgit_ajson_types=>ty_path_name. ls_path_name = lcl_utils=>split_path( iv_path ). READ TABLE mt_json_tree @@ -270,7 +270,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. CLEAR ls_new_node. IF lr_node_parent IS NOT INITIAL. " if has parent lr_node_parent->children = lr_node_parent->children + 1. - IF lr_node_parent->type = zif_abapgit_ajson=>node_type-array. + IF lr_node_parent->type = zif_abapgit_ajson_types=>node_type-array. ls_new_node-index = lcl_utils=>validate_array_index( iv_path = lv_cur_path iv_index = lv_cur_name ). @@ -278,7 +278,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. ENDIF. ls_new_node-path = lv_cur_path. ls_new_node-name = lv_cur_name. - ls_new_node-type = zif_abapgit_ajson=>node_type-object. + ls_new_node-type = zif_abapgit_ajson_types=>node_type-object. INSERT ls_new_node INTO TABLE mt_json_tree REFERENCE INTO rr_end_node. ENDIF. lv_cur_path = lv_cur_path && lv_cur_name && '/'. @@ -301,7 +301,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~array_to_string_table. DATA lv_normalized_path TYPE string. - DATA lr_node TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_node TYPE REF TO zif_abapgit_ajson_types=>ty_node. FIELD-SYMBOLS LIKE LINE OF mt_json_tree. lv_normalized_path = lcl_utils=>normalize_path( iv_path ). @@ -310,17 +310,17 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. IF lr_node IS INITIAL. zcx_abapgit_ajson_error=>raise( |Path not found: { iv_path }| ). ENDIF. - IF lr_node->type <> zif_abapgit_ajson=>node_type-array. + IF lr_node->type <> zif_abapgit_ajson_types=>node_type-array. zcx_abapgit_ajson_error=>raise( |Array expected at: { iv_path }| ). ENDIF. LOOP AT mt_json_tree ASSIGNING WHERE path = lv_normalized_path. CASE -type. - WHEN zif_abapgit_ajson=>node_type-number OR zif_abapgit_ajson=>node_type-string. + WHEN zif_abapgit_ajson_types=>node_type-number OR zif_abapgit_ajson_types=>node_type-string. APPEND -value TO rt_string_table. - WHEN zif_abapgit_ajson=>node_type-null. + WHEN zif_abapgit_ajson_types=>node_type-null. APPEND '' TO rt_string_table. - WHEN zif_abapgit_ajson=>node_type-boolean. + WHEN zif_abapgit_ajson_types=>node_type-boolean. DATA lv_tmp TYPE string. IF -value = 'true'. lv_tmp = abap_true. @@ -354,7 +354,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. read_only_watchdog( ). - DATA ls_split_path TYPE zif_abapgit_ajson=>ty_path_name. + DATA ls_split_path TYPE zif_abapgit_ajson_types=>ty_path_name. ls_split_path = lcl_utils=>split_path( iv_path ). delete_subtree( @@ -391,7 +391,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_item = get_item( iv_path ). IF lr_item IS NOT INITIAL. rv_value = lr_item->value. @@ -402,11 +402,11 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get_boolean. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_item = get_item( iv_path ). - IF lr_item IS INITIAL OR lr_item->type = zif_abapgit_ajson=>node_type-null. + IF lr_item IS INITIAL OR lr_item->type = zif_abapgit_ajson_types=>node_type-null. RETURN. - ELSEIF lr_item->type = zif_abapgit_ajson=>node_type-boolean. + ELSEIF lr_item->type = zif_abapgit_ajson_types=>node_type-boolean. rv_value = boolc( lr_item->value = 'true' ). ELSEIF lr_item->value IS NOT INITIAL. rv_value = abap_true. @@ -417,14 +417,14 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get_date. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. DATA lv_y TYPE c LENGTH 4. DATA lv_m TYPE c LENGTH 2. DATA lv_d TYPE c LENGTH 2. lr_item = get_item( iv_path ). - IF lr_item IS NOT INITIAL AND lr_item->type = zif_abapgit_ajson=>node_type-string. + IF lr_item IS NOT INITIAL AND lr_item->type = zif_abapgit_ajson_types=>node_type-string. FIND FIRST OCCURRENCE OF REGEX '^(\d{4})-(\d{2})-(\d{2})(T|$)' IN lr_item->value SUBMATCHES lv_y lv_m lv_d. @@ -436,9 +436,9 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get_integer. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_item = get_item( iv_path ). - IF lr_item IS NOT INITIAL AND lr_item->type = zif_abapgit_ajson=>node_type-number. + IF lr_item IS NOT INITIAL AND lr_item->type = zif_abapgit_ajson_types=>node_type-number. rv_value = lr_item->value. ENDIF. @@ -447,7 +447,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get_node_type. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_item = get_item( iv_path ). IF lr_item IS NOT INITIAL. rv_node_type = lr_item->type. @@ -458,9 +458,9 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get_number. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_item = get_item( iv_path ). - IF lr_item IS NOT INITIAL AND lr_item->type = zif_abapgit_ajson=>node_type-number. + IF lr_item IS NOT INITIAL AND lr_item->type = zif_abapgit_ajson_types=>node_type-number. rv_value = lr_item->value. ENDIF. @@ -469,9 +469,9 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get_string. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_item = get_item( iv_path ). - IF lr_item IS NOT INITIAL AND lr_item->type <> zif_abapgit_ajson=>node_type-null. + IF lr_item IS NOT INITIAL AND lr_item->type <> zif_abapgit_ajson_types=>node_type-null. rv_value = lr_item->value. ENDIF. @@ -481,7 +481,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~get_timestamp. DATA lo_to_abap TYPE REF TO lcl_json_to_abap. - DATA lr_item TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_item TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_item = get_item( iv_path ). @@ -539,8 +539,8 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~push. - DATA lr_parent TYPE REF TO zif_abapgit_ajson=>ty_node. - DATA lr_new_node TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node. + DATA lr_new_node TYPE REF TO zif_abapgit_ajson_types=>ty_node. read_only_watchdog( ). @@ -550,12 +550,12 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. zcx_abapgit_ajson_error=>raise( |Path [{ iv_path }] does not exist| ). ENDIF. - IF lr_parent->type <> zif_abapgit_ajson=>node_type-array. + IF lr_parent->type <> zif_abapgit_ajson_types=>node_type-array. zcx_abapgit_ajson_error=>raise( |Path [{ iv_path }] is not array| ). ENDIF. - DATA lt_new_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. - DATA ls_new_path TYPE zif_abapgit_ajson=>ty_path_name. + DATA lt_new_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. + DATA ls_new_path TYPE zif_abapgit_ajson_types=>ty_path_name. DATA lv_new_index TYPE i. lv_new_index = lr_parent->children + 1. @@ -581,9 +581,9 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~set. - DATA ls_split_path TYPE zif_abapgit_ajson=>ty_path_name. - DATA lr_parent TYPE REF TO zif_abapgit_ajson=>ty_node. - DATA ls_deleted_node TYPE zif_abapgit_ajson=>ty_node. + DATA ls_split_path TYPE zif_abapgit_ajson_types=>ty_path_name. + DATA lr_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node. + DATA ls_deleted_node TYPE zif_abapgit_ajson_types=>ty_node. read_only_watchdog( ). @@ -594,8 +594,8 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. ENDIF. IF iv_node_type IS NOT INITIAL - AND iv_node_type <> zif_abapgit_ajson=>node_type-boolean AND iv_node_type <> zif_abapgit_ajson=>node_type-null - AND iv_node_type <> zif_abapgit_ajson=>node_type-number AND iv_node_type <> zif_abapgit_ajson=>node_type-string. + AND iv_node_type <> zif_abapgit_ajson_types=>node_type-boolean AND iv_node_type <> zif_abapgit_ajson_types=>node_type-null + AND iv_node_type <> zif_abapgit_ajson_types=>node_type-number AND iv_node_type <> zif_abapgit_ajson_types=>node_type-string. zcx_abapgit_ajson_error=>raise( |Unexpected type { iv_node_type }| ). ENDIF. @@ -629,10 +629,10 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. iv_name = ls_split_path-name ). " convert to json - DATA lt_new_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_new_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lv_array_index TYPE i. - IF lr_parent->type = zif_abapgit_ajson=>node_type-array. + IF lr_parent->type = zif_abapgit_ajson_types=>node_type-array. lv_array_index = lcl_utils=>validate_array_index( iv_path = ls_split_path-path iv_index = ls_split_path-name ). @@ -824,7 +824,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. DATA lo_section TYPE REF TO zcl_abapgit_ajson. DATA ls_item LIKE LINE OF mt_json_tree. DATA lv_normalized_path TYPE string. - DATA ls_path_parts TYPE zif_abapgit_ajson=>ty_path_name. + DATA ls_path_parts TYPE zif_abapgit_ajson_types=>ty_path_name. DATA lv_path_len TYPE i. CREATE OBJECT lo_section. @@ -863,10 +863,10 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. METHOD zif_abapgit_ajson~touch_array. - DATA lr_node TYPE REF TO zif_abapgit_ajson=>ty_node. - DATA ls_deleted_node TYPE zif_abapgit_ajson=>ty_node. + DATA lr_node TYPE REF TO zif_abapgit_ajson_types=>ty_node. + DATA ls_deleted_node TYPE zif_abapgit_ajson_types=>ty_node. DATA ls_new_node LIKE LINE OF mt_json_tree. - DATA ls_split_path TYPE zif_abapgit_ajson=>ty_path_name. + DATA ls_split_path TYPE zif_abapgit_ajson_types=>ty_path_name. read_only_watchdog( ). @@ -874,7 +874,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. IF ls_split_path IS INITIAL. " Assign root, exceptional processing ls_new_node-path = ls_split_path-path. ls_new_node-name = ls_split_path-name. - ls_new_node-type = zif_abapgit_ajson=>node_type-array. + ls_new_node-type = zif_abapgit_ajson_types=>node_type-array. INSERT ls_new_node INTO TABLE mt_json_tree. RETURN. ENDIF. @@ -889,7 +889,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. IF lr_node IS INITIAL. " Or node was cleared - DATA lr_parent TYPE REF TO zif_abapgit_ajson=>ty_node. + DATA lr_parent TYPE REF TO zif_abapgit_ajson_types=>ty_node. lr_parent = prove_path_exists( ls_split_path-path ). ASSERT lr_parent IS NOT INITIAL. @@ -897,7 +897,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. ls_new_node-path = ls_split_path-path. ls_new_node-name = ls_split_path-name. - ls_new_node-type = zif_abapgit_ajson=>node_type-array. + ls_new_node-type = zif_abapgit_ajson_types=>node_type-array. IF ms_opts-keep_item_order = abap_true AND ls_deleted_node IS NOT INITIAL. ls_new_node-order = ls_deleted_node-order. @@ -905,7 +905,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. INSERT ls_new_node INTO TABLE mt_json_tree. - ELSEIF lr_node->type <> zif_abapgit_ajson=>node_type-array. + ELSEIF lr_node->type <> zif_abapgit_ajson_types=>node_type-array. zcx_abapgit_ajson_error=>raise( |Path [{ iv_path }] already used and is not array| ). ENDIF. diff --git a/src/json/zcl_abapgit_ajson.clas.locals_imp.abap b/src/json/zcl_abapgit_ajson.clas.locals_imp.abap index 9ff24ee6a..f3096f3ac 100644 --- a/src/json/zcl_abapgit_ajson.clas.locals_imp.abap +++ b/src/json/zcl_abapgit_ajson.clas.locals_imp.abap @@ -66,7 +66,7 @@ CLASS lcl_utils DEFINITION FINAL. IMPORTING iv_path TYPE string RETURNING - VALUE(rv_path_name) TYPE zif_abapgit_ajson=>ty_path_name. + VALUE(rv_path_name) TYPE zif_abapgit_ajson_types=>ty_path_name. CLASS-METHODS validate_array_index IMPORTING iv_path TYPE string @@ -75,11 +75,44 @@ CLASS lcl_utils DEFINITION FINAL. VALUE(rv_index) TYPE i RAISING zcx_abapgit_ajson_error. + CLASS-METHODS string_to_xstring_utf8 + IMPORTING + iv_str TYPE string + RETURNING + VALUE(rv_xstr) TYPE xstring. ENDCLASS. CLASS lcl_utils IMPLEMENTATION. + METHOD string_to_xstring_utf8. + + DATA lo_conv TYPE REF TO object. + + TRY. + CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_out + RECEIVING + instance = lo_conv. + CALL METHOD lo_conv->('IF_ABAP_CONV_OUT~CONVERT') + EXPORTING + source = iv_str + RECEIVING + result = rv_xstr. + CATCH cx_sy_dyn_call_illegal_class. + CALL METHOD ('CL_ABAP_CONV_OUT_CE')=>create + EXPORTING + encoding = 'UTF-8' + RECEIVING + conv = lo_conv. + CALL METHOD lo_conv->('CONVERT') + EXPORTING + data = iv_str + IMPORTING + buffer = rv_xstr. + ENDTRY. + + ENDMETHOD. + METHOD validate_array_index. IF NOT iv_index CO '0123456789'. @@ -154,14 +187,14 @@ CLASS lcl_json_parser DEFINITION FINAL. IMPORTING iv_json TYPE string RETURNING - VALUE(rt_json_tree) TYPE zif_abapgit_ajson=>ty_nodes_tt + VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. PRIVATE SECTION. TYPES: - ty_stack_tt TYPE STANDARD TABLE OF REF TO zif_abapgit_ajson=>ty_node. + ty_stack_tt TYPE STANDARD TABLE OF REF TO zif_abapgit_ajson_types=>ty_node. DATA mt_stack TYPE ty_stack_tt. DATA mv_stack_path TYPE string. @@ -176,7 +209,7 @@ CLASS lcl_json_parser DEFINITION FINAL. IMPORTING iv_json TYPE string RETURNING - VALUE(rt_json_tree) TYPE zif_abapgit_ajson=>ty_nodes_tt + VALUE(rt_json_tree) TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error cx_sxml_error. @@ -263,7 +296,7 @@ CLASS lcl_json_parser IMPLEMENTATION. IF iv_json IS INITIAL. RETURN. ENDIF. - lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( iv_json ) ). + lo_reader = cl_sxml_string_reader=>create( lcl_utils=>string_to_xstring_utf8( iv_json ) ). " TODO: self protection, check non-empty, check starting from object ... @@ -361,7 +394,7 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE. CLASS-METHODS stringify IMPORTING - it_json_tree TYPE zif_abapgit_ajson=>ty_nodes_ts + it_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts iv_indent TYPE i DEFAULT 0 iv_keep_item_order TYPE abap_bool DEFAULT abap_false RETURNING @@ -375,7 +408,7 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE. CLASS-DATA gv_comma_with_lf TYPE string. - DATA mt_json_tree TYPE zif_abapgit_ajson=>ty_nodes_ts. + DATA mt_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts. DATA mv_keep_item_order TYPE abap_bool. DATA mt_buffer TYPE string_table. DATA mv_indent_step TYPE i. @@ -395,7 +428,7 @@ CLASS lcl_json_serializer DEFINITION FINAL CREATE PRIVATE. METHODS stringify_node IMPORTING - is_node TYPE zif_abapgit_ajson=>ty_node + is_node TYPE zif_abapgit_ajson_types=>ty_node RAISING zcx_abapgit_ajson_error. @@ -462,15 +495,15 @@ CLASS lcl_json_serializer IMPLEMENTATION. ENDIF. CASE is_node-type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. lv_item = lv_item && '['. - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. lv_item = lv_item && '{'. - WHEN zif_abapgit_ajson=>node_type-string. + WHEN zif_abapgit_ajson_types=>node_type-string. lv_item = lv_item && |"{ escape_string( is_node-value ) }"|. - WHEN zif_abapgit_ajson=>node_type-boolean OR zif_abapgit_ajson=>node_type-number. + WHEN zif_abapgit_ajson_types=>node_type-boolean OR zif_abapgit_ajson_types=>node_type-number. lv_item = lv_item && is_node-value. - WHEN zif_abapgit_ajson=>node_type-null. + WHEN zif_abapgit_ajson_types=>node_type-null. lv_item = lv_item && 'null'. WHEN OTHERS. zcx_abapgit_ajson_error=>raise( @@ -479,7 +512,7 @@ CLASS lcl_json_serializer IMPLEMENTATION. ENDCASE. IF mv_indent_step > 0 - AND ( is_node-type = zif_abapgit_ajson=>node_type-array OR is_node-type = zif_abapgit_ajson=>node_type-object ) + AND ( is_node-type = zif_abapgit_ajson_types=>node_type-array OR is_node-type = zif_abapgit_ajson_types=>node_type-object ) AND is_node-children > 0. mv_level = mv_level + 1. lv_item = lv_item && cl_abap_char_utilities=>newline. @@ -489,21 +522,21 @@ CLASS lcl_json_serializer IMPLEMENTATION. " finish complex item - IF is_node-type = zif_abapgit_ajson=>node_type-array OR is_node-type = zif_abapgit_ajson=>node_type-object. + IF is_node-type = zif_abapgit_ajson_types=>node_type-array OR is_node-type = zif_abapgit_ajson_types=>node_type-object. DATA lv_children_path TYPE string. DATA lv_tail TYPE string. lv_children_path = is_node-path && is_node-name && '/'. " for root: path = '' and name = '', so result is '/' CASE is_node-type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. IF is_node-children > 0. stringify_set( iv_parent_path = lv_children_path iv_array = abap_true ). ENDIF. lv_tail = ']'. - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. IF is_node-children > 0. stringify_set( iv_parent_path = lv_children_path @@ -605,7 +638,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL. METHODS to_abap IMPORTING - it_nodes TYPE zif_abapgit_ajson=>ty_nodes_ts + it_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_ts CHANGING c_container TYPE any RAISING @@ -613,7 +646,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL. METHODS to_timestamp IMPORTING - iv_value TYPE zif_abapgit_ajson=>ty_node-value + iv_value TYPE zif_abapgit_ajson_types=>ty_node-value RETURNING VALUE(rv_result) TYPE timestamp RAISING @@ -621,7 +654,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL. METHODS to_date IMPORTING - iv_value TYPE zif_abapgit_ajson=>ty_node-value + iv_value TYPE zif_abapgit_ajson_types=>ty_node-value RETURNING VALUE(rv_result) TYPE d RAISING @@ -639,7 +672,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL. END OF ty_type_cache. DATA mt_node_type_cache TYPE HASHED TABLE OF ty_type_cache WITH UNIQUE KEY type_path. - DATA mr_nodes TYPE REF TO zif_abapgit_ajson=>ty_nodes_ts. + DATA mr_nodes TYPE REF TO zif_abapgit_ajson_types=>ty_nodes_ts. DATA mi_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping. DATA mv_corresponding TYPE abap_bool. @@ -653,7 +686,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL. METHODS value_to_abap IMPORTING - is_node TYPE zif_abapgit_ajson=>ty_node + is_node TYPE zif_abapgit_ajson_types=>ty_node is_node_type TYPE ty_type_cache i_container_ref TYPE REF TO data RAISING @@ -662,7 +695,7 @@ CLASS lcl_json_to_abap DEFINITION FINAL. METHODS get_node_type IMPORTING - is_node TYPE zif_abapgit_ajson=>ty_node OPTIONAL " Empty for root + is_node TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL " Empty for root is_parent_type TYPE ty_type_cache OPTIONAL i_container_ref TYPE REF TO data OPTIONAL RETURNING @@ -779,7 +812,7 @@ CLASS lcl_json_to_abap IMPLEMENTATION. DATA lx_root TYPE REF TO cx_root. DATA lr_target_field TYPE REF TO data. - FIELD-SYMBOLS TYPE zif_abapgit_ajson=>ty_node. + FIELD-SYMBOLS TYPE zif_abapgit_ajson_types=>ty_node. FIELD-SYMBOLS TYPE STANDARD TABLE. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE any. @@ -860,7 +893,7 @@ CLASS lcl_json_to_abap IMPLEMENTATION. " Process value assignment CASE -type. - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. IF ls_node_type-type_kind <> lif_kind=>struct_flat AND ls_node_type-type_kind <> lif_kind=>struct_deep. zcx_abapgit_ajson_error=>raise( 'Expected structure' ). @@ -870,7 +903,7 @@ CLASS lcl_json_to_abap IMPLEMENTATION. is_parent_type = ls_node_type i_container_ref = lr_target_field ). - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. IF NOT ls_node_type-type_kind = lif_kind=>table. zcx_abapgit_ajson_error=>raise( 'Expected table' ). ENDIF. @@ -928,16 +961,16 @@ CLASS lcl_json_to_abap IMPLEMENTATION. ASSERT sy-subrc = 0. CASE is_node-type. - WHEN zif_abapgit_ajson=>node_type-null. + WHEN zif_abapgit_ajson_types=>node_type-null. " Do nothing - WHEN zif_abapgit_ajson=>node_type-boolean. + WHEN zif_abapgit_ajson_types=>node_type-boolean. " TODO: check type ? = boolc( is_node-value = 'true' ). - WHEN zif_abapgit_ajson=>node_type-number. + WHEN zif_abapgit_ajson_types=>node_type-number. " TODO: check type ? = is_node-value. - WHEN zif_abapgit_ajson=>node_type-string. + WHEN zif_abapgit_ajson_types=>node_type-string. " TODO: check type ? IF is_node_type-type_kind = lif_kind=>date AND is_node-value IS NOT INITIAL. = to_date( is_node-value ). @@ -1062,27 +1095,27 @@ CLASS lcl_abap_to_json DEFINITION FINAL. CLASS-METHODS convert IMPORTING iv_data TYPE any - is_prefix TYPE zif_abapgit_ajson=>ty_path_name OPTIONAL + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL iv_array_index TYPE i DEFAULT 0 ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL iv_item_order TYPE i DEFAULT 0 RETURNING - VALUE(rt_nodes) TYPE zif_abapgit_ajson=>ty_nodes_tt + VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. CLASS-METHODS insert_with_type IMPORTING iv_data TYPE any - iv_type TYPE zif_abapgit_ajson=>ty_node_type - is_prefix TYPE zif_abapgit_ajson=>ty_path_name OPTIONAL + iv_type TYPE zif_abapgit_ajson_types=>ty_node_type + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name OPTIONAL iv_array_index TYPE i DEFAULT 0 ii_custom_mapping TYPE REF TO zif_abapgit_ajson_mapping OPTIONAL is_opts TYPE zif_abapgit_ajson=>ty_opts OPTIONAL iv_item_order TYPE i DEFAULT 0 RETURNING - VALUE(rt_nodes) TYPE zif_abapgit_ajson=>ty_nodes_tt + VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. @@ -1115,21 +1148,21 @@ CLASS lcl_abap_to_json DEFINITION FINAL. IMPORTING iv_data TYPE any io_type TYPE REF TO cl_abap_typedescr - is_prefix TYPE zif_abapgit_ajson=>ty_path_name + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name iv_index TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0 CHANGING - ct_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt + ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. METHODS convert_ajson IMPORTING io_json TYPE REF TO zif_abapgit_ajson - is_prefix TYPE zif_abapgit_ajson=>ty_path_name + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name iv_index TYPE i DEFAULT 0 CHANGING - ct_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt + ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. @@ -1137,22 +1170,22 @@ CLASS lcl_abap_to_json DEFINITION FINAL. IMPORTING iv_data TYPE any io_type TYPE REF TO cl_abap_typedescr - is_prefix TYPE zif_abapgit_ajson=>ty_path_name + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name iv_index TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0 CHANGING - ct_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt + ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. METHODS convert_ref IMPORTING iv_data TYPE any - is_prefix TYPE zif_abapgit_ajson=>ty_path_name + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name iv_index TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0 CHANGING - ct_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt + ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. @@ -1160,12 +1193,12 @@ CLASS lcl_abap_to_json DEFINITION FINAL. IMPORTING iv_data TYPE any io_type TYPE REF TO cl_abap_typedescr - is_prefix TYPE zif_abapgit_ajson=>ty_path_name + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name iv_index TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0 CHANGING - ct_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt - cs_root TYPE zif_abapgit_ajson=>ty_node OPTIONAL + ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt + cs_root TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL RAISING zcx_abapgit_ajson_error. @@ -1173,24 +1206,24 @@ CLASS lcl_abap_to_json DEFINITION FINAL. IMPORTING iv_data TYPE any io_type TYPE REF TO cl_abap_typedescr - is_prefix TYPE zif_abapgit_ajson=>ty_path_name + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name iv_index TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0 CHANGING - ct_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt + ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. METHODS insert_value_with_type IMPORTING iv_data TYPE any - iv_type TYPE zif_abapgit_ajson=>ty_node_type + iv_type TYPE zif_abapgit_ajson_types=>ty_node_type io_type TYPE REF TO cl_abap_typedescr - is_prefix TYPE zif_abapgit_ajson=>ty_path_name + is_prefix TYPE zif_abapgit_ajson_types=>ty_path_name iv_index TYPE i DEFAULT 0 iv_item_order TYPE i DEFAULT 0 CHANGING - ct_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt + ct_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt RAISING zcx_abapgit_ajson_error. @@ -1370,7 +1403,7 @@ CLASS lcl_abap_to_json IMPLEMENTATION. OR io_type->absolute_name = '\TYPE=XSDBOOLEAN' OR io_type->absolute_name = '\TYPE=FLAG' OR io_type->absolute_name = '\TYPE=XFELD'. - ls_node-type = zif_abapgit_ajson=>node_type-boolean. + ls_node-type = zif_abapgit_ajson_types=>node_type-boolean. IF iv_data IS NOT INITIAL. ls_node-value = 'true'. ELSE. @@ -1378,33 +1411,33 @@ CLASS lcl_abap_to_json IMPLEMENTATION. ENDIF. ELSEIF io_type->absolute_name = '\TYPE=TIMESTAMP'. IF mv_format_datetime = abap_true. - ls_node-type = zif_abapgit_ajson=>node_type-string. + ls_node-type = zif_abapgit_ajson_types=>node_type-string. ls_node-value = format_timestamp( iv_data ). ELSE. - ls_node-type = zif_abapgit_ajson=>node_type-number. + ls_node-type = zif_abapgit_ajson_types=>node_type-number. ls_node-value = |{ iv_data }|. ENDIF. ELSEIF io_type->type_kind CO lif_kind=>texts OR io_type->type_kind CO lif_kind=>binary OR io_type->type_kind CO lif_kind=>enum. - ls_node-type = zif_abapgit_ajson=>node_type-string. + ls_node-type = zif_abapgit_ajson_types=>node_type-string. ls_node-value = |{ iv_data }|. ELSEIF io_type->type_kind = lif_kind=>date. - ls_node-type = zif_abapgit_ajson=>node_type-string. + ls_node-type = zif_abapgit_ajson_types=>node_type-string. IF mv_format_datetime = abap_true. ls_node-value = format_date( iv_data ). ELSE. ls_node-value = |{ iv_data }|. ENDIF. ELSEIF io_type->type_kind = lif_kind=>time. - ls_node-type = zif_abapgit_ajson=>node_type-string. + ls_node-type = zif_abapgit_ajson_types=>node_type-string. IF mv_format_datetime = abap_true. ls_node-value = format_time( iv_data ). ELSE. ls_node-value = |{ iv_data }|. ENDIF. ELSEIF io_type->type_kind CO lif_kind=>numeric. - ls_node-type = zif_abapgit_ajson=>node_type-number. + ls_node-type = zif_abapgit_ajson_types=>node_type-number. ls_node-value = |{ iv_data }|. ELSE. zcx_abapgit_ajson_error=>raise( |Unexpected elementary type [{ @@ -1435,7 +1468,7 @@ CLASS lcl_abap_to_json IMPLEMENTATION. ENDIF. IF iv_data IS INITIAL. - ls_node-type = zif_abapgit_ajson=>node_type-null. + ls_node-type = zif_abapgit_ajson_types=>node_type-null. ls_node-value = 'null'. ELSE. " TODO support data references @@ -1466,7 +1499,7 @@ CLASS lcl_abap_to_json IMPLEMENTATION. ELSE. " First call ls_root-path = is_prefix-path. ls_root-name = is_prefix-name. - ls_root-type = zif_abapgit_ajson=>node_type-object. + ls_root-type = zif_abapgit_ajson_types=>node_type-object. ls_root-index = iv_index. IF mi_custom_mapping IS BOUND. @@ -1561,7 +1594,7 @@ CLASS lcl_abap_to_json IMPLEMENTATION. ls_root-path = is_prefix-path. ls_root-name = is_prefix-name. - ls_root-type = zif_abapgit_ajson=>node_type-array. + ls_root-type = zif_abapgit_ajson_types=>node_type-array. ls_root-index = iv_index. ls_root-order = iv_item_order. @@ -1638,18 +1671,18 @@ CLASS lcl_abap_to_json IMPLEMENTATION. IF io_type->type_kind CO lif_kind=>texts OR io_type->type_kind CO lif_kind=>date OR io_type->type_kind CO lif_kind=>time. - IF iv_type = zif_abapgit_ajson=>node_type-boolean AND iv_data <> 'true' AND iv_data <> 'false'. + IF iv_type = zif_abapgit_ajson_types=>node_type-boolean AND iv_data <> 'true' AND iv_data <> 'false'. zcx_abapgit_ajson_error=>raise( |Unexpected boolean value [{ iv_data }] @{ lv_prefix }| ). - ELSEIF iv_type = zif_abapgit_ajson=>node_type-null AND iv_data IS NOT INITIAL. + ELSEIF iv_type = zif_abapgit_ajson_types=>node_type-null AND iv_data IS NOT INITIAL. zcx_abapgit_ajson_error=>raise( |Unexpected null value [{ iv_data }] @{ lv_prefix }| ). - ELSEIF iv_type = zif_abapgit_ajson=>node_type-number AND iv_data CN '0123456789. E+-'. + ELSEIF iv_type = zif_abapgit_ajson_types=>node_type-number AND iv_data CN '0123456789. E+-'. zcx_abapgit_ajson_error=>raise( |Unexpected numeric value [{ iv_data }] @{ lv_prefix }| ). - ELSEIF iv_type <> zif_abapgit_ajson=>node_type-string AND iv_type <> zif_abapgit_ajson=>node_type-boolean - AND iv_type <> zif_abapgit_ajson=>node_type-null AND iv_type <> zif_abapgit_ajson=>node_type-number. + ELSEIF iv_type <> zif_abapgit_ajson_types=>node_type-string AND iv_type <> zif_abapgit_ajson_types=>node_type-boolean + AND iv_type <> zif_abapgit_ajson_types=>node_type-null AND iv_type <> zif_abapgit_ajson_types=>node_type-number. zcx_abapgit_ajson_error=>raise( |Unexpected type for value [{ iv_type },{ iv_data }] @{ lv_prefix }| ). ENDIF. ELSEIF io_type->type_kind CO lif_kind=>numeric. - IF iv_type <> zif_abapgit_ajson=>node_type-number. + IF iv_type <> zif_abapgit_ajson_types=>node_type-number. zcx_abapgit_ajson_error=>raise( |Unexpected value for numeric [{ iv_data }] @{ lv_prefix }| ). ENDIF. ELSE. @@ -1686,9 +1719,9 @@ ENDCLASS. INTERFACE lif_mutator_runner. METHODS run IMPORTING - it_source_tree TYPE zif_abapgit_ajson=>ty_nodes_ts + it_source_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts EXPORTING - et_dest_tree TYPE zif_abapgit_ajson=>ty_nodes_ts + et_dest_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts RAISING zcx_abapgit_ajson_error. ENDINTERFACE. @@ -1711,14 +1744,14 @@ CLASS lcl_filter_runner DEFINITION FINAL. PRIVATE SECTION. DATA mi_filter TYPE REF TO zif_abapgit_ajson_filter. - DATA mr_source_tree TYPE REF TO zif_abapgit_ajson=>ty_nodes_ts. - DATA mr_dest_tree TYPE REF TO zif_abapgit_ajson=>ty_nodes_ts. + DATA mr_source_tree TYPE REF TO zif_abapgit_ajson_types=>ty_nodes_ts. + DATA mr_dest_tree TYPE REF TO zif_abapgit_ajson_types=>ty_nodes_ts. METHODS walk IMPORTING iv_path TYPE string CHANGING - cs_parent TYPE zif_abapgit_ajson=>ty_node OPTIONAL + cs_parent TYPE zif_abapgit_ajson_types=>ty_node OPTIONAL RAISING zcx_abapgit_ajson_error. @@ -1747,18 +1780,18 @@ CLASS lcl_filter_runner IMPLEMENTATION. METHOD walk. - DATA ls_node TYPE zif_abapgit_ajson=>ty_node. + DATA ls_node TYPE zif_abapgit_ajson_types=>ty_node. LOOP AT mr_source_tree->* INTO ls_node WHERE path = iv_path. CASE ls_node-type. - WHEN zif_abapgit_ajson=>node_type-boolean OR zif_abapgit_ajson=>node_type-null - OR zif_abapgit_ajson=>node_type-number OR zif_abapgit_ajson=>node_type-string. + WHEN zif_abapgit_ajson_types=>node_type-boolean OR zif_abapgit_ajson_types=>node_type-null + OR zif_abapgit_ajson_types=>node_type-number OR zif_abapgit_ajson_types=>node_type-string. IF mi_filter->keep_node( ls_node ) = abap_false. CONTINUE. ENDIF. - WHEN zif_abapgit_ajson=>node_type-array OR zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-array OR zif_abapgit_ajson_types=>node_type-object. IF mi_filter->keep_node( is_node = ls_node @@ -1787,7 +1820,7 @@ CLASS lcl_filter_runner IMPLEMENTATION. IF cs_parent IS SUPPLIED. cs_parent-children = cs_parent-children + 1. - IF cs_parent-type = zif_abapgit_ajson=>node_type-array. + IF cs_parent-type = zif_abapgit_ajson_types=>node_type-array. ls_node-name = |{ cs_parent-children }|. ls_node-index = cs_parent-children. ENDIF. @@ -1818,14 +1851,14 @@ CLASS lcl_mapper_runner DEFINITION FINAL. PRIVATE SECTION. DATA mi_mapper TYPE REF TO zif_abapgit_ajson_mapping. - DATA mr_source_tree TYPE REF TO zif_abapgit_ajson=>ty_nodes_ts. - DATA mr_dest_tree TYPE REF TO zif_abapgit_ajson=>ty_nodes_ts. + DATA mr_source_tree TYPE REF TO zif_abapgit_ajson_types=>ty_nodes_ts. + DATA mr_dest_tree TYPE REF TO zif_abapgit_ajson_types=>ty_nodes_ts. METHODS process_deep_node IMPORTING iv_path TYPE string iv_renamed_path TYPE string - iv_node_type TYPE zif_abapgit_ajson=>ty_node-type + iv_node_type TYPE zif_abapgit_ajson_types=>ty_node-type RAISING zcx_abapgit_ajson_error. @@ -1847,7 +1880,8 @@ CLASS lcl_mapper_runner IMPLEMENTATION. FIELD-SYMBOLS LIKE LINE OF it_source_tree. READ TABLE it_source_tree WITH KEY path = `` name = `` ASSIGNING . - IF sy-subrc <> 0 OR NOT ( -type = zif_abapgit_ajson=>node_type-array OR -type = zif_abapgit_ajson=>node_type-object ). + IF sy-subrc <> 0 + OR NOT ( -type = zif_abapgit_ajson_types=>node_type-array OR -type = zif_abapgit_ajson_types=>node_type-object ). " empty or one-value-only tree et_dest_tree = it_source_tree. RETURN. @@ -1873,7 +1907,7 @@ CLASS lcl_mapper_runner IMPLEMENTATION. LOOP AT mr_source_tree->* ASSIGNING WHERE path = iv_path. ls_renamed_node = . - IF iv_node_type <> zif_abapgit_ajson=>node_type-array. + IF iv_node_type <> zif_abapgit_ajson_types=>node_type-array. " don't rename array item names -> they are numeric index mi_mapper->rename_node( EXPORTING @@ -1897,7 +1931,7 @@ CLASS lcl_mapper_runner IMPLEMENTATION. " maybe also catch CX_SY_ITAB_DUPLICATE_KEY but secondary keys are not changed here, so not for now - IF -type = zif_abapgit_ajson=>node_type-array OR -type = zif_abapgit_ajson=>node_type-object. + IF -type = zif_abapgit_ajson_types=>node_type-array OR -type = zif_abapgit_ajson_types=>node_type-object. process_deep_node( iv_path = iv_path && -name && `/` iv_renamed_path = iv_renamed_path && ls_renamed_node-name && `/` @@ -1950,7 +1984,7 @@ CLASS lcl_mutator_queue IMPLEMENTATION. DATA lv_qsize TYPE i. FIELD-SYMBOLS LIKE it_source_tree. FIELD-SYMBOLS LIKE it_source_tree. - DATA lr_buf TYPE REF TO zif_abapgit_ajson=>ty_nodes_ts. + DATA lr_buf TYPE REF TO zif_abapgit_ajson_types=>ty_nodes_ts. lv_qsize = lines( mt_queue ). diff --git a/src/json/zcl_abapgit_ajson.clas.testclasses.abap b/src/json/zcl_abapgit_ajson.clas.testclasses.abap index 7af010bc7..1c1179e92 100644 --- a/src/json/zcl_abapgit_ajson.clas.testclasses.abap +++ b/src/json/zcl_abapgit_ajson.clas.testclasses.abap @@ -4,14 +4,14 @@ CLASS lcl_nodes_helper DEFINITION FINAL. PUBLIC SECTION. - DATA mt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA mt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. METHODS add IMPORTING iv_str TYPE string. METHODS clear. METHODS sorted RETURNING - VALUE(rt_nodes) TYPE zif_abapgit_ajson=>ty_nodes_ts. + VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_ts. ENDCLASS. @@ -98,7 +98,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. METHOD parse_bare_values. - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. mo_nodes->add( ' | |str |abc | |0' ). lt_act = mo_cut->parse( '"abc"' ). @@ -138,7 +138,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. METHOD parse_error. - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lx_err TYPE REF TO zcx_abapgit_ajson_error. TRY. lt_act = mo_cut->parse( 'abc' ). @@ -173,7 +173,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. mo_nodes->add( ' | |object | | |1' ). mo_nodes->add( '/ |string |str |abc | |0' ). - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. lt_act = mo_cut->parse( '{"string": "abc"}' ). cl_abap_unit_assert=>assert_equals( act = lt_act @@ -184,7 +184,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. mo_nodes->add( ' | |object | | |1' ). mo_nodes->add( '/ |number |num |123 | |0' ). - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. lt_act = mo_cut->parse( '{"number": 123}' ). cl_abap_unit_assert=>assert_equals( act = lt_act @@ -195,7 +195,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. mo_nodes->add( ' | |object | | |1' ). mo_nodes->add( '/ |float |num |123.45 | |0' ). - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. CREATE OBJECT mo_cut. lt_act = mo_cut->parse( '{"float": 123.45}' ). cl_abap_unit_assert=>assert_equals( @@ -207,7 +207,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. mo_nodes->add( ' | |object | | |1' ). mo_nodes->add( '/ |boolean |bool |true | |0' ). - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. lt_act = mo_cut->parse( '{"boolean": true}' ). cl_abap_unit_assert=>assert_equals( act = lt_act @@ -218,7 +218,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. mo_nodes->add( ' | |object | | |1' ). mo_nodes->add( '/ |false |bool |false | |0' ). - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. lt_act = mo_cut->parse( '{"false": false}' ). cl_abap_unit_assert=>assert_equals( act = lt_act @@ -229,7 +229,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. mo_nodes->add( ' | |object | | |1' ). mo_nodes->add( '/ |null |null | | |0' ). - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. lt_act = mo_cut->parse( '{"null": null}' ). cl_abap_unit_assert=>assert_equals( act = lt_act @@ -240,7 +240,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. mo_nodes->add( ' | |object | | |1' ). mo_nodes->add( '/ |date |str |2020-03-15 | |0' ). - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. lt_act = mo_cut->parse( '{"date": "2020-03-15"}' ). cl_abap_unit_assert=>assert_equals( act = lt_act @@ -295,7 +295,7 @@ CLASS ltcl_parser_test IMPLEMENTATION. METHOD parse. DATA lo_cut TYPE REF TO lcl_json_parser. - DATA lt_act TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_act TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lo_nodes TYPE REF TO lcl_nodes_helper. CREATE OBJECT lo_nodes. @@ -395,7 +395,7 @@ CLASS ltcl_serializer_test DEFINITION FINAL VALUE(rv_json) TYPE string. CLASS-METHODS sample_nodes RETURNING - VALUE(rt_nodes) TYPE zif_abapgit_ajson=>ty_nodes_ts. + VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_ts. PRIVATE SECTION. @@ -737,6 +737,7 @@ CLASS ltcl_utils_test DEFINITION FINAL METHODS normalize_path FOR TESTING. METHODS split_path FOR TESTING. METHODS validate_array_index FOR TESTING RAISING zcx_abapgit_ajson_error. + METHODS string_to_xstring_utf8 FOR TESTING. ENDCLASS. @@ -744,6 +745,14 @@ CLASS zcl_abapgit_ajson DEFINITION LOCAL FRIENDS ltcl_utils_test. CLASS ltcl_utils_test IMPLEMENTATION. + METHOD string_to_xstring_utf8. + + cl_abap_unit_assert=>assert_equals( + act = lcl_utils=>string_to_xstring_utf8( '123' ) + exp = '313233' ). + + ENDMETHOD. + METHOD validate_array_index. cl_abap_unit_assert=>assert_equals( @@ -791,7 +800,7 @@ CLASS ltcl_utils_test IMPLEMENTATION. METHOD split_path. - DATA ls_exp TYPE zif_abapgit_ajson=>ty_path_name. + DATA ls_exp TYPE zif_abapgit_ajson_types=>ty_path_name. DATA lv_path TYPE string. lv_path = ''. " alias to root @@ -1003,31 +1012,31 @@ CLASS ltcl_reader_test IMPLEMENTATION. cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/' ) - exp = zif_abapgit_ajson=>node_type-object ). + exp = zif_abapgit_ajson_types=>node_type-object ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/string' ) - exp = zif_abapgit_ajson=>node_type-string ). + exp = zif_abapgit_ajson_types=>node_type-string ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/number' ) - exp = zif_abapgit_ajson=>node_type-number ). + exp = zif_abapgit_ajson_types=>node_type-number ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/float' ) - exp = zif_abapgit_ajson=>node_type-number ). + exp = zif_abapgit_ajson_types=>node_type-number ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/boolean' ) - exp = zif_abapgit_ajson=>node_type-boolean ). + exp = zif_abapgit_ajson_types=>node_type-boolean ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/false' ) - exp = zif_abapgit_ajson=>node_type-boolean ). + exp = zif_abapgit_ajson_types=>node_type-boolean ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/null' ) - exp = zif_abapgit_ajson=>node_type-null ). + exp = zif_abapgit_ajson_types=>node_type-null ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/date' ) - exp = zif_abapgit_ajson=>node_type-string ). + exp = zif_abapgit_ajson_types=>node_type-string ). cl_abap_unit_assert=>assert_equals( act = li_cut->get_node_type( '/issues' ) - exp = zif_abapgit_ajson=>node_type-array ). + exp = zif_abapgit_ajson_types=>node_type-array ). ENDMETHOD. @@ -2982,17 +2991,17 @@ CLASS ltcl_writer_test IMPLEMENTATION. DATA lv_path TYPE string. - FIELD-SYMBOLS TYPE zif_abapgit_ajson=>ty_node. + FIELD-SYMBOLS LIKE LINE OF io_json_in->mt_json_tree. LOOP AT io_json_in->mt_json_tree ASSIGNING WHERE path = iv_path. lv_path = -path && -name && '/'. CASE -type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. io_json_out->touch_array( lv_path ). set_with_type_slice( io_json_in = io_json_in io_json_out = io_json_out iv_path = lv_path ). - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. set_with_type_slice( io_json_in = io_json_in io_json_out = io_json_out iv_path = lv_path ). @@ -3636,7 +3645,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. lo_nodes->add( '/a/b/ |c |object | ||0' ). lo_src->mt_json_tree = lo_nodes->mt_nodes. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. lt_nodes = lcl_abap_to_json=>convert( iv_data = lo_src ). cl_abap_unit_assert=>assert_equals( @@ -3648,7 +3657,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_value_number. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. " number CREATE OBJECT lo_nodes_exp. @@ -3665,7 +3674,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_value_string. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. " string CREATE OBJECT lo_nodes_exp. @@ -3682,7 +3691,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_value_true. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. " true CREATE OBJECT lo_nodes_exp. @@ -3699,7 +3708,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_value_false. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. " false CREATE OBJECT lo_nodes_exp. @@ -3716,7 +3725,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_value_xsdboolean. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lv_xsdboolean TYPE xsdboolean. CREATE OBJECT lo_nodes_exp. @@ -3734,7 +3743,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_null. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lv_null_ref TYPE REF TO data. " null @@ -3752,7 +3761,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_value_timestamp. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lv_timezone TYPE timezone VALUE ''. DATA lv_timestamp TYPE timestamp. @@ -3772,7 +3781,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_value_timestamp_initial. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lv_timestamp TYPE timestamp. CREATE OBJECT lo_nodes_exp. @@ -3790,8 +3799,8 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD prefix. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. - DATA ls_prefix TYPE zif_abapgit_ajson=>ty_path_name. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. + DATA ls_prefix TYPE zif_abapgit_ajson_types=>ty_path_name. ls_prefix-path = '/a/'. ls_prefix-name = 'b'. @@ -3812,7 +3821,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. DATA ls_struc TYPE ty_struc. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. ls_struc-a = 'abc'. ls_struc-b = 10. @@ -3838,7 +3847,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. DATA ls_struc TYPE ty_struc_complex. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. FIELD-SYMBOLS LIKE LINE OF ls_struc-tab. ls_struc-a = 'abc'. @@ -3898,7 +3907,7 @@ CLASS ltcl_abap_to_json IMPLEMENTATION. METHOD set_array. DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper. - DATA lt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt. + DATA lt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt. DATA lt_tab TYPE TABLE OF ty_struc. FIELD-SYMBOLS LIKE LINE OF lt_tab. diff --git a/src/json/zcl_abapgit_ajson_mapping.clas.abap b/src/json/zcl_abapgit_ajson_mapping.clas.abap index b3bed9c28..22bee5934 100644 --- a/src/json/zcl_abapgit_ajson_mapping.clas.abap +++ b/src/json/zcl_abapgit_ajson_mapping.clas.abap @@ -85,6 +85,23 @@ CLASS zcl_abapgit_ajson_mapping IMPLEMENTATION. ENDMETHOD. + METHOD create_compound_mapper. + + DATA lt_queue TYPE zif_abapgit_ajson_mapping=>ty_table_of. + + APPEND ii_mapper1 TO lt_queue. + APPEND ii_mapper2 TO lt_queue. + APPEND ii_mapper3 TO lt_queue. + APPEND LINES OF it_more TO lt_queue. + DELETE lt_queue WHERE table_line IS INITIAL. + + CREATE OBJECT ri_mapping TYPE lcl_compound_mapper + EXPORTING + it_queue = lt_queue. + + ENDMETHOD. + + METHOD create_field_mapping. CREATE OBJECT ri_mapping TYPE lcl_mapping_fields @@ -102,29 +119,6 @@ CLASS zcl_abapgit_ajson_mapping IMPLEMENTATION. ENDMETHOD. - METHOD create_compound_mapper. - - DATA lt_queue TYPE zif_abapgit_ajson_mapping=>ty_table_of. - - APPEND ii_mapper1 TO lt_queue. - APPEND ii_mapper2 TO lt_queue. - APPEND ii_mapper3 TO lt_queue. - APPEND LINES OF it_more TO lt_queue. - DELETE lt_queue WHERE table_line IS INITIAL. - - CREATE OBJECT ri_mapping TYPE lcl_compound_mapper - EXPORTING - it_queue = lt_queue. - - ENDMETHOD. - - METHOD create_upper_case. - - CREATE OBJECT ri_mapping TYPE lcl_mapping_to_upper - EXPORTING - it_mapping_fields = it_mapping_fields. - - ENDMETHOD. METHOD create_rename. @@ -135,11 +129,6 @@ CLASS zcl_abapgit_ajson_mapping IMPLEMENTATION. ENDMETHOD. - METHOD create_to_snake_case. - - CREATE OBJECT ri_mapping TYPE lcl_to_snake. - - ENDMETHOD. METHOD create_to_camel_case. @@ -149,4 +138,19 @@ CLASS zcl_abapgit_ajson_mapping IMPLEMENTATION. ENDMETHOD. + + METHOD create_to_snake_case. + + CREATE OBJECT ri_mapping TYPE lcl_to_snake. + + ENDMETHOD. + + + METHOD create_upper_case. + + CREATE OBJECT ri_mapping TYPE lcl_mapping_to_upper + EXPORTING + it_mapping_fields = it_mapping_fields. + + ENDMETHOD. ENDCLASS. diff --git a/src/json/zcl_abapgit_ajson_utilities.clas.abap b/src/json/zcl_abapgit_ajson_utilities.clas.abap index ca1867f44..7a41bbfd6 100644 --- a/src/json/zcl_abapgit_ajson_utilities.clas.abap +++ b/src/json/zcl_abapgit_ajson_utilities.clas.abap @@ -102,7 +102,7 @@ CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION. IF iv_keep_empty_arrays = abap_false. LOOP AT io_json->mt_json_tree INTO ls_json_tree - WHERE type = zif_abapgit_ajson=>node_type-array AND children = 0. + WHERE type = zif_abapgit_ajson_types=>node_type-array AND children = 0. io_json->delete( ls_json_tree-path && ls_json_tree-name ). @@ -113,7 +113,7 @@ CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION. ENDIF. LOOP AT io_json->mt_json_tree INTO ls_json_tree - WHERE type = zif_abapgit_ajson=>node_type-object AND children = 0. + WHERE type = zif_abapgit_ajson_types=>node_type-object AND children = 0. io_json->delete( ls_json_tree-path && ls_json_tree-name ). @@ -184,12 +184,12 @@ CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION. IF -type = -type. CASE -type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. mo_insert->touch_array( lv_path_a ). mo_change->touch_array( lv_path_a ). mo_delete->touch_array( lv_path_a ). diff_a_b( lv_path_a ). - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. diff_a_b( lv_path_a ). WHEN OTHERS. IF -value <> -value. @@ -203,10 +203,10 @@ CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION. ELSE. " save changed type as delete + insert CASE -type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. mo_delete->touch_array( lv_path_a ). diff_a_b( lv_path_a ). - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. diff_a_b( lv_path_a ). WHEN OTHERS. mo_delete->set( @@ -215,10 +215,10 @@ CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION. iv_node_type = -type ). ENDCASE. CASE -type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. mo_insert->touch_array( lv_path_b ). diff_b_a( lv_path_b ). - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. diff_b_a( lv_path_b ). WHEN OTHERS. mo_insert->set( @@ -230,10 +230,10 @@ CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION. ELSE. " save as delete CASE -type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. mo_delete->touch_array( lv_path_a ). diff_a_b( lv_path_a ). - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. diff_a_b( lv_path_a ). WHEN OTHERS. mo_delete->set( @@ -257,12 +257,12 @@ CLASS zcl_abapgit_ajson_utilities IMPLEMENTATION. lv_path = -path && -name && '/'. CASE -type. - WHEN zif_abapgit_ajson=>node_type-array. + WHEN zif_abapgit_ajson_types=>node_type-array. mo_insert->touch_array( lv_path ). diff_b_a( iv_path = lv_path iv_array = abap_true ). - WHEN zif_abapgit_ajson=>node_type-object. + WHEN zif_abapgit_ajson_types=>node_type-object. diff_b_a( lv_path ). WHEN OTHERS. IF iv_array = abap_false. diff --git a/src/json/zcl_abapgit_ajson_utilities.clas.testclasses.abap b/src/json/zcl_abapgit_ajson_utilities.clas.testclasses.abap index 567f1b88e..08b1802d4 100644 --- a/src/json/zcl_abapgit_ajson_utilities.clas.testclasses.abap +++ b/src/json/zcl_abapgit_ajson_utilities.clas.testclasses.abap @@ -5,14 +5,14 @@ CLASS lcl_nodes_helper DEFINITION FINAL. PUBLIC SECTION. - DATA mt_nodes TYPE zif_abapgit_ajson=>ty_nodes_tt READ-ONLY. + DATA mt_nodes TYPE zif_abapgit_ajson_types=>ty_nodes_tt READ-ONLY. METHODS add IMPORTING iv_str TYPE string. METHODS sorted RETURNING - VALUE(rt_nodes) TYPE zif_abapgit_ajson=>ty_nodes_ts. + VALUE(rt_nodes) TYPE zif_abapgit_ajson_types=>ty_nodes_ts. ENDCLASS. diff --git a/src/json/zcx_abapgit_ajson_error.clas.testclasses.abap b/src/json/zcx_abapgit_ajson_error.clas.testclasses.abap index f97c19741..a0466c09c 100644 --- a/src/json/zcx_abapgit_ajson_error.clas.testclasses.abap +++ b/src/json/zcx_abapgit_ajson_error.clas.testclasses.abap @@ -54,7 +54,7 @@ class ltcl_error implementation. method raise_w_node. data lx type ref to zcx_abapgit_ajson_error. - data ls_node type zif_abapgit_ajson=>ty_node. + data ls_node type zif_abapgit_ajson_types=>ty_node. ls_node-path = '/x/'. ls_node-name = 'y'. diff --git a/src/json/zif_abapgit_ajson.intf.abap b/src/json/zif_abapgit_ajson.intf.abap index f5bd4d89d..39f8a9b5b 100644 --- a/src/json/zif_abapgit_ajson.intf.abap +++ b/src/json/zif_abapgit_ajson.intf.abap @@ -5,41 +5,6 @@ INTERFACE zif_abapgit_ajson CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT - TYPES: - ty_node_type TYPE string. - - CONSTANTS: - BEGIN OF node_type, - boolean TYPE ty_node_type VALUE 'bool', - string TYPE ty_node_type VALUE 'str', - number TYPE ty_node_type VALUE 'num', - null TYPE ty_node_type VALUE 'null', - array TYPE ty_node_type VALUE 'array', - object TYPE ty_node_type VALUE 'object', - END OF node_type. - - TYPES: - BEGIN OF ty_node, - path TYPE string, - name TYPE string, - type TYPE ty_node_type, - value TYPE string, - index TYPE i, - order TYPE i, - children TYPE i, - END OF ty_node . - TYPES: - ty_nodes_tt TYPE STANDARD TABLE OF ty_node WITH KEY path name . - TYPES: - ty_nodes_ts TYPE SORTED TABLE OF ty_node - WITH UNIQUE KEY path name - WITH NON-UNIQUE SORTED KEY array_index COMPONENTS path index - WITH NON-UNIQUE SORTED KEY item_order COMPONENTS path order . - TYPES: - BEGIN OF ty_path_name, - path TYPE string, - name TYPE string, - END OF ty_path_name. TYPES: BEGIN OF ty_opts, read_only TYPE abap_bool, @@ -49,9 +14,10 @@ INTERFACE zif_abapgit_ajson " DATA - DATA mt_json_tree TYPE ty_nodes_ts READ-ONLY. + DATA mt_json_tree TYPE zif_abapgit_ajson_types=>ty_nodes_ts READ-ONLY. " CLONING + METHODS clone RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson @@ -115,7 +81,7 @@ INTERFACE zif_abapgit_ajson IMPORTING iv_path TYPE string RETURNING - VALUE(rv_node_type) TYPE ty_node_type. + VALUE(rv_node_type) TYPE zif_abapgit_ajson_types=>ty_node_type. METHODS get_boolean IMPORTING @@ -184,7 +150,7 @@ INTERFACE zif_abapgit_ajson iv_path TYPE string iv_val TYPE any iv_ignore_empty TYPE abap_bool DEFAULT abap_true - iv_node_type TYPE ty_node_type OPTIONAL + iv_node_type TYPE zif_abapgit_ajson_types=>ty_node_type OPTIONAL RETURNING VALUE(ri_json) TYPE REF TO zif_abapgit_ajson RAISING diff --git a/src/json/zif_abapgit_ajson_filter.intf.abap b/src/json/zif_abapgit_ajson_filter.intf.abap index 50f4816ee..c63cd8ed3 100644 --- a/src/json/zif_abapgit_ajson_filter.intf.abap +++ b/src/json/zif_abapgit_ajson_filter.intf.abap @@ -13,7 +13,7 @@ INTERFACE zif_abapgit_ajson_filter METHODS keep_node IMPORTING - is_node TYPE zif_abapgit_ajson=>ty_node + is_node TYPE zif_abapgit_ajson_types=>ty_node iv_visit TYPE ty_visit_type DEFAULT visit_type-value RETURNING VALUE(rv_keep) TYPE abap_bool diff --git a/src/json/zif_abapgit_ajson_mapping.intf.abap b/src/json/zif_abapgit_ajson_mapping.intf.abap index 4b00401ea..73d19fc5e 100644 --- a/src/json/zif_abapgit_ajson_mapping.intf.abap +++ b/src/json/zif_abapgit_ajson_mapping.intf.abap @@ -37,8 +37,8 @@ INTERFACE zif_abapgit_ajson_mapping METHODS rename_node IMPORTING - !is_node TYPE zif_abapgit_ajson=>ty_node + !is_node TYPE zif_abapgit_ajson_types=>ty_node CHANGING - !cv_name TYPE zif_abapgit_ajson=>ty_node-name. + !cv_name TYPE zif_abapgit_ajson_types=>ty_node-name. ENDINTERFACE. diff --git a/src/json/zif_abapgit_ajson_types.intf.abap b/src/json/zif_abapgit_ajson_types.intf.abap new file mode 100644 index 000000000..6ca76e1b3 --- /dev/null +++ b/src/json/zif_abapgit_ajson_types.intf.abap @@ -0,0 +1,41 @@ +INTERFACE zif_abapgit_ajson_types + PUBLIC. + + TYPES: + ty_node_type TYPE string. + + CONSTANTS: + BEGIN OF node_type, + boolean TYPE ty_node_type VALUE 'bool', + string TYPE ty_node_type VALUE 'str', + number TYPE ty_node_type VALUE 'num', + null TYPE ty_node_type VALUE 'null', + array TYPE ty_node_type VALUE 'array', + object TYPE ty_node_type VALUE 'object', + END OF node_type. + + TYPES: + BEGIN OF ty_node, + path TYPE string, + name TYPE string, + type TYPE ty_node_type, + value TYPE string, + index TYPE i, + order TYPE i, + children TYPE i, + END OF ty_node. + TYPES: + ty_nodes_tt TYPE STANDARD TABLE OF ty_node WITH KEY path name. + TYPES: + ty_nodes_ts TYPE SORTED TABLE OF ty_node + WITH UNIQUE KEY path name + WITH NON-UNIQUE SORTED KEY array_index COMPONENTS path index + WITH NON-UNIQUE SORTED KEY item_order COMPONENTS path order. + + TYPES: + BEGIN OF ty_path_name, + path TYPE string, + name TYPE string, + END OF ty_path_name. + +ENDINTERFACE. diff --git a/src/json/zif_abapgit_ajson_types.intf.xml b/src/json/zif_abapgit_ajson_types.intf.xml new file mode 100644 index 000000000..0c6abdf60 --- /dev/null +++ b/src/json/zif_abapgit_ajson_types.intf.xml @@ -0,0 +1,15 @@ + + + + + + ZIF_ABAPGIT_AJSON_TYPES + E + AJSON common types + 2 + 1 + X + + + +