From 4469771f01e661d85827b4f4b7773c004ac1f712 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 16:29:54 +0100 Subject: [PATCH] ajson, Automatic Update (#7158) Co-authored-by: larshp Co-authored-by: Lars Hvam --- src/json/zcl_abapgit_ajson.clas.abap | 2 ++ ...pgit_ajson_filter_lib.clas.locals_imp.abap | 4 +-- ...git_ajson_filter_lib.clas.testclasses.abap | 33 +++++++++++++++++++ ...bapgit_ajson_mapping.clas.testclasses.abap | 28 ++++++++++++++++ src/json/zif_abapgit_ajson.intf.abap | 2 +- 5 files changed, 66 insertions(+), 3 deletions(-) diff --git a/src/json/zcl_abapgit_ajson.clas.abap b/src/json/zcl_abapgit_ajson.clas.abap index f94bbadf9..fb9ac9e35 100644 --- a/src/json/zcl_abapgit_ajson.clas.abap +++ b/src/json/zcl_abapgit_ajson.clas.abap @@ -848,6 +848,8 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION. DATA lv_path_pattern TYPE string. CREATE OBJECT lo_section. + lo_section->mi_custom_mapping = mi_custom_mapping. + lv_normalized_path = lcl_utils=>normalize_path( iv_path ). lv_path_len = strlen( lv_normalized_path ). ls_path_parts = lcl_utils=>split_path( lv_normalized_path ). diff --git a/src/json/zcl_abapgit_ajson_filter_lib.clas.locals_imp.abap b/src/json/zcl_abapgit_ajson_filter_lib.clas.locals_imp.abap index 42f12e631..c2426e9e1 100644 --- a/src/json/zcl_abapgit_ajson_filter_lib.clas.locals_imp.abap +++ b/src/json/zcl_abapgit_ajson_filter_lib.clas.locals_imp.abap @@ -72,7 +72,7 @@ CLASS lcl_paths_filter IMPLEMENTATION. ENDIF. LOOP AT it_skip_paths INTO lv_s. - lv_s = to_lower( lv_s ). + lv_s = condense( lv_s ). APPEND lv_s TO lt_tab. ENDLOOP. @@ -83,7 +83,7 @@ CLASS lcl_paths_filter IMPLEMENTATION. DELETE lt_tab INDEX sy-tabix. CONTINUE. ENDIF. - = condense( to_lower( ) ). + = condense( ). ENDLOOP. ENDIF. diff --git a/src/json/zcl_abapgit_ajson_filter_lib.clas.testclasses.abap b/src/json/zcl_abapgit_ajson_filter_lib.clas.testclasses.abap index 8c129303f..2ae049120 100644 --- a/src/json/zcl_abapgit_ajson_filter_lib.clas.testclasses.abap +++ b/src/json/zcl_abapgit_ajson_filter_lib.clas.testclasses.abap @@ -10,6 +10,7 @@ CLASS ltcl_filters_test DEFINITION FINAL METHODS path_filter_w_patterns FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS path_filter_deep FOR TESTING RAISING zcx_abapgit_ajson_error. METHODS and_filter FOR TESTING RAISING zcx_abapgit_ajson_error. + METHODS mixed_case_filter FOR TESTING RAISING zcx_abapgit_ajson_error. ENDCLASS. @@ -227,4 +228,36 @@ CLASS ltcl_filters_test IMPLEMENTATION. ENDMETHOD. + METHOD mixed_case_filter. + + DATA li_json TYPE REF TO zif_abapgit_ajson. + DATA li_json_filtered TYPE REF TO zif_abapgit_ajson. + + li_json = zcl_abapgit_ajson=>create_empty( ). + li_json->set( + iv_path = '/a' + iv_val = '1' ). + li_json->set( + iv_path = '/bB' + iv_val = '2' ). + li_json->set( + iv_path = '/CC' + iv_val = '3' ). + li_json->set( + iv_path = '/cc' + iv_val = '4' ). + li_json->set( + iv_path = '/d' + iv_val = 5 ). + + li_json_filtered = zcl_abapgit_ajson=>create_from( + ii_source_json = li_json + ii_filter = zcl_abapgit_ajson_filter_lib=>create_path_filter( iv_skip_paths = '/bB,/CC' ) ). + + cl_abap_unit_assert=>assert_equals( + act = li_json_filtered->stringify( ) + exp = '{"a":"1","cc":"4","d":5}' ). + + ENDMETHOD. + ENDCLASS. diff --git a/src/json/zcl_abapgit_ajson_mapping.clas.testclasses.abap b/src/json/zcl_abapgit_ajson_mapping.clas.testclasses.abap index 18ee6e1cb..dc789ec32 100644 --- a/src/json/zcl_abapgit_ajson_mapping.clas.testclasses.abap +++ b/src/json/zcl_abapgit_ajson_mapping.clas.testclasses.abap @@ -358,6 +358,7 @@ CLASS ltcl_fields DEFINITION FINAL FOR TESTING to_json_without_path FOR TESTING RAISING zcx_abapgit_ajson_error, to_json_with_path FOR TESTING RAISING zcx_abapgit_ajson_error, to_abap FOR TESTING RAISING zcx_abapgit_ajson_error, + to_abap_with_slice FOR TESTING RAISING zcx_abapgit_ajson_error, to_json IMPORTING iv_path TYPE string RETURNING VALUE(rv_result) TYPE string RAISING zcx_abapgit_ajson_error. @@ -403,6 +404,33 @@ CLASS ltcl_fields IMPLEMENTATION. ENDMETHOD. + METHOD to_abap_with_slice. + + DATA: BEGIN OF ls_act, + y TYPE i, + END OF ls_act. + + DATA lo_cut TYPE REF TO zif_abapgit_ajson. + DATA lt_mapping_fields TYPE zif_abapgit_ajson_mapping=>ty_mapping_fields. + DATA ls_mapping_field LIKE LINE OF lt_mapping_fields. + + CLEAR ls_mapping_field. + ls_mapping_field-abap = 'Y'. + ls_mapping_field-json = 'c'. + INSERT ls_mapping_field INTO TABLE lt_mapping_fields. + + lo_cut = zcl_abapgit_ajson=>parse( iv_json = '{"a":1,"b":{"c":2},"d":{"e":3}}' + ii_custom_mapping = zcl_abapgit_ajson_mapping=>create_field_mapping( lt_mapping_fields ) + )->slice( `/b` ). + + lo_cut->to_abap( IMPORTING ev_container = ls_act ). + + cl_abap_unit_assert=>assert_equals( + act = ls_act-y + exp = 2 ). + + ENDMETHOD. + METHOD to_json_without_path. diff --git a/src/json/zif_abapgit_ajson.intf.abap b/src/json/zif_abapgit_ajson.intf.abap index 9937a244f..da6950d40 100644 --- a/src/json/zif_abapgit_ajson.intf.abap +++ b/src/json/zif_abapgit_ajson.intf.abap @@ -1,7 +1,7 @@ INTERFACE zif_abapgit_ajson PUBLIC. - CONSTANTS version TYPE string VALUE 'v1.1.10'. "#EC NOTEXT + CONSTANTS version TYPE string VALUE 'v1.1.11'. "#EC NOTEXT CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT