ajson, Automatic Update (#4895)

This commit is contained in:
github-actions[bot] 2021-08-16 08:20:05 +02:00 committed by GitHub
parent a798bdeda2
commit 41c9e0880b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 438 additions and 424 deletions

View File

@ -29,8 +29,11 @@ jobs:
if: github.repository == 'abapGit/abapGit'
with:
title: ajson, Automatic Update
branch: automatic/ajson
body: |
Automatic update from mirror
https://github.com/abapGit/ajson_mirror
Make manual change to trigger CI
Note: manual changes might be overwritten when the branch updates, so keep changes small, and merge fast

View File

@ -22,7 +22,7 @@ ENDCLASS.
CLASS zcl_abapgit_data_config IMPLEMENTATION.
CLASS ZCL_ABAPGIT_DATA_CONFIG IMPLEMENTATION.
METHOD dump.
@ -32,7 +32,7 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
TRY.
lo_ajson = zcl_abapgit_ajson=>create_empty( ).
lo_ajson->zif_abapgit_ajson_writer~set(
lo_ajson->zif_abapgit_ajson~set(
iv_path = '/'
iv_val = is_config ).
rv_json = zcl_abapgit_convert=>string_to_xstring_utf8( lo_ajson->stringify( 2 ) ).
@ -69,7 +69,7 @@ CLASS zcl_abapgit_data_config IMPLEMENTATION.
AND filename CP |*.{ zif_abapgit_data_config=>c_config }.{ zif_abapgit_data_config=>c_default_format }|.
TRY.
lo_ajson = zcl_abapgit_ajson=>parse( zcl_abapgit_convert=>xstring_to_string_utf8( ls_file-data ) ).
lo_ajson->zif_abapgit_ajson_reader~to_abap( IMPORTING ev_container = ls_config ).
lo_ajson->zif_abapgit_ajson~to_abap( IMPORTING ev_container = ls_config ).
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
zcx_abapgit_exception=>raise( lx_ajson->get_text( ) ).
ENDTRY.

View File

@ -45,7 +45,7 @@ ENDCLASS.
CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
CLASS ZCL_ABAPGIT_DATA_DESERIALIZER IMPLEMENTATION.
METHOD convert_json_to_itab.
@ -59,7 +59,7 @@ CLASS zcl_abapgit_data_deserializer IMPLEMENTATION.
TRY.
lo_ajson = zcl_abapgit_ajson=>parse( zcl_abapgit_convert=>xstring_to_string_utf8( is_file-data ) ).
lo_ajson->zif_abapgit_ajson_reader~to_abap( IMPORTING ev_container = <lg_tab> ).
lo_ajson->zif_abapgit_ajson~to_abap( IMPORTING ev_container = <lg_tab> ).
CATCH zcx_abapgit_ajson_error INTO lx_ajson.
zcx_abapgit_exception=>raise( lx_ajson->get_text( ) ).
ENDTRY.

View File

@ -18,7 +18,7 @@ CLASS zcl_abapgit_pr_enum_github DEFINITION
TYPES:
BEGIN OF ty_info,
repo_json TYPE REF TO zif_abapgit_ajson_reader,
repo_json TYPE REF TO zif_abapgit_ajson,
pulls TYPE zif_abapgit_pr_enum_provider=>ty_pull_requests,
END OF ty_info.
@ -35,7 +35,7 @@ CLASS zcl_abapgit_pr_enum_github DEFINITION
METHODS convert_list
IMPORTING
ii_json TYPE REF TO zif_abapgit_ajson_reader
ii_json TYPE REF TO zif_abapgit_ajson
RETURNING
VALUE(rt_pulls) TYPE zif_abapgit_pr_enum_provider=>ty_pull_requests.
@ -44,12 +44,11 @@ CLASS zcl_abapgit_pr_enum_github DEFINITION
iv_url TYPE string
RETURNING
VALUE(rv_url) TYPE string.
ENDCLASS.
CLASS zcl_abapgit_pr_enum_github IMPLEMENTATION.
CLASS ZCL_ABAPGIT_PR_ENUM_GITHUB IMPLEMENTATION.
METHOD clean_url.
@ -101,7 +100,7 @@ CLASS zcl_abapgit_pr_enum_github IMPLEMENTATION.
METHOD fetch_repo_by_url.
DATA li_pulls_json TYPE REF TO zif_abapgit_ajson_reader.
DATA li_pulls_json TYPE REF TO zif_abapgit_ajson.
DATA lv_pull_url TYPE string.
DATA li_response TYPE REF TO zif_abapgit_http_response.
DATA lx_ajson TYPE REF TO zcx_abapgit_ajson_error.

View File

@ -10,7 +10,7 @@ INTERFACE zif_abapgit_http_response
VALUE(rv_data) TYPE string .
METHODS json
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson_reader
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error .
METHODS is_ok

View File

@ -7,32 +7,32 @@ CLASS zcl_abapgit_ajson DEFINITION
INTERFACES zif_abapgit_ajson .
ALIASES:
exists FOR zif_abapgit_ajson_reader~exists,
members FOR zif_abapgit_ajson_reader~members,
get FOR zif_abapgit_ajson_reader~get,
get_boolean FOR zif_abapgit_ajson_reader~get_boolean,
get_integer FOR zif_abapgit_ajson_reader~get_integer,
get_number FOR zif_abapgit_ajson_reader~get_number,
get_date FOR zif_abapgit_ajson_reader~get_date,
get_timestamp FOR zif_abapgit_ajson_reader~get_timestamp,
get_string FOR zif_abapgit_ajson_reader~get_string,
slice FOR zif_abapgit_ajson_reader~slice,
to_abap FOR zif_abapgit_ajson_reader~to_abap,
array_to_string_table FOR zif_abapgit_ajson_reader~array_to_string_table.
exists FOR zif_abapgit_ajson~exists,
members FOR zif_abapgit_ajson~members,
get FOR zif_abapgit_ajson~get,
get_boolean FOR zif_abapgit_ajson~get_boolean,
get_integer FOR zif_abapgit_ajson~get_integer,
get_number FOR zif_abapgit_ajson~get_number,
get_date FOR zif_abapgit_ajson~get_date,
get_timestamp FOR zif_abapgit_ajson~get_timestamp,
get_string FOR zif_abapgit_ajson~get_string,
slice FOR zif_abapgit_ajson~slice,
to_abap FOR zif_abapgit_ajson~to_abap,
array_to_string_table FOR zif_abapgit_ajson~array_to_string_table.
ALIASES:
clear FOR zif_abapgit_ajson_writer~clear,
set FOR zif_abapgit_ajson_writer~set,
set_boolean FOR zif_abapgit_ajson_writer~set_boolean,
set_string FOR zif_abapgit_ajson_writer~set_string,
set_integer FOR zif_abapgit_ajson_writer~set_integer,
set_date FOR zif_abapgit_ajson_writer~set_date,
set_timestamp FOR zif_abapgit_ajson_writer~set_timestamp,
set_null FOR zif_abapgit_ajson_writer~set_null,
delete FOR zif_abapgit_ajson_writer~delete,
touch_array FOR zif_abapgit_ajson_writer~touch_array,
push FOR zif_abapgit_ajson_writer~push,
stringify FOR zif_abapgit_ajson_writer~stringify.
clear FOR zif_abapgit_ajson~clear,
set FOR zif_abapgit_ajson~set,
set_boolean FOR zif_abapgit_ajson~set_boolean,
set_string FOR zif_abapgit_ajson~set_string,
set_integer FOR zif_abapgit_ajson~set_integer,
set_date FOR zif_abapgit_ajson~set_date,
set_timestamp FOR zif_abapgit_ajson~set_timestamp,
set_null FOR zif_abapgit_ajson~set_null,
delete FOR zif_abapgit_ajson~delete,
touch_array FOR zif_abapgit_ajson~touch_array,
push FOR zif_abapgit_ajson~push,
stringify FOR zif_abapgit_ajson~stringify.
ALIASES:
mt_json_tree FOR zif_abapgit_ajson~mt_json_tree,
@ -217,7 +217,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~array_to_string_table.
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.
@ -256,7 +256,36 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~exists.
METHOD zif_abapgit_ajson~clear.
IF mv_read_only = abap_true.
zcx_abapgit_ajson_error=>raise( 'This json instance is read only' ).
ENDIF.
CLEAR mt_json_tree.
ENDMETHOD.
METHOD zif_abapgit_ajson~delete.
IF mv_read_only = abap_true.
zcx_abapgit_ajson_error=>raise( 'This json instance is read only' ).
ENDIF.
DATA ls_split_path TYPE zif_abapgit_ajson=>ty_path_name.
ls_split_path = lcl_utils=>split_path( iv_path ).
delete_subtree(
iv_path = ls_split_path-path
iv_name = ls_split_path-name ).
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson~exists.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
lv_item = get_item( iv_path ).
@ -267,7 +296,12 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get.
METHOD zif_abapgit_ajson~freeze.
mv_read_only = abap_true.
ENDMETHOD.
METHOD zif_abapgit_ajson~get.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
lv_item = get_item( iv_path ).
@ -278,7 +312,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get_boolean.
METHOD zif_abapgit_ajson~get_boolean.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
lv_item = get_item( iv_path ).
@ -293,7 +327,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get_date.
METHOD zif_abapgit_ajson~get_date.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
DATA lv_y TYPE c LENGTH 4.
@ -312,7 +346,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get_integer.
METHOD zif_abapgit_ajson~get_integer.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
lv_item = get_item( iv_path ).
@ -323,7 +357,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get_node_type.
METHOD zif_abapgit_ajson~get_node_type.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
lv_item = get_item( iv_path ).
@ -334,7 +368,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get_number.
METHOD zif_abapgit_ajson~get_number.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
lv_item = get_item( iv_path ).
@ -345,7 +379,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get_string.
METHOD zif_abapgit_ajson~get_string.
DATA lv_item TYPE REF TO zif_abapgit_ajson=>ty_node.
lv_item = get_item( iv_path ).
@ -356,7 +390,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~get_timestamp.
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.
@ -378,7 +412,13 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~members.
METHOD zif_abapgit_ajson~keep_item_order.
mv_keep_item_order = abap_true.
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson~members.
DATA lv_normalized_path TYPE string.
FIELD-SYMBOLS <item> LIKE LINE OF mt_json_tree.
@ -392,82 +432,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~slice.
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 lv_path_len TYPE i.
CREATE OBJECT lo_section.
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 ).
LOOP AT mt_json_tree INTO ls_item.
" TODO potentially improve performance due to sorted tree (all path started from same prefix go in a row)
IF strlen( ls_item-path ) >= lv_path_len
AND substring( val = ls_item-path
len = lv_path_len ) = lv_normalized_path.
ls_item-path = substring( val = ls_item-path
off = lv_path_len - 1 ). " less closing '/'
INSERT ls_item INTO TABLE lo_section->mt_json_tree.
ELSEIF ls_item-path = ls_path_parts-path AND ls_item-name = ls_path_parts-name.
CLEAR: ls_item-path, ls_item-name. " this becomes a new root
INSERT ls_item INTO TABLE lo_section->mt_json_tree.
ENDIF.
ENDLOOP.
ri_json = lo_section.
ENDMETHOD.
METHOD zif_abapgit_ajson_reader~to_abap.
DATA lo_to_abap TYPE REF TO lcl_json_to_abap.
CLEAR ev_container.
lcl_json_to_abap=>bind(
EXPORTING
ii_custom_mapping = mi_custom_mapping
CHANGING
c_obj = ev_container
co_instance = lo_to_abap ).
lo_to_abap->to_abap( mt_json_tree ).
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~clear.
IF mv_read_only = abap_true.
zcx_abapgit_ajson_error=>raise( 'This json instance is read only' ).
ENDIF.
CLEAR mt_json_tree.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~delete.
IF mv_read_only = abap_true.
zcx_abapgit_ajson_error=>raise( 'This json instance is read only' ).
ENDIF.
DATA ls_split_path TYPE zif_abapgit_ajson=>ty_path_name.
ls_split_path = lcl_utils=>split_path( iv_path ).
delete_subtree(
iv_path = ls_split_path-path
iv_name = ls_split_path-name ).
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~push.
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.
@ -504,10 +469,12 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
lr_parent->children = lr_parent->children + 1.
INSERT LINES OF lt_new_nodes INTO TABLE mt_json_tree.
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set.
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.
@ -587,22 +554,26 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
lr_parent->children = lr_parent->children + 1.
INSERT LINES OF lt_new_nodes INTO TABLE mt_json_tree.
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set_boolean.
METHOD zif_abapgit_ajson~set_boolean.
DATA lv_bool TYPE abap_bool.
lv_bool = boolc( iv_val IS NOT INITIAL ).
zif_abapgit_ajson_writer~set(
zif_abapgit_ajson~set(
iv_ignore_empty = abap_false
iv_path = iv_path
iv_val = lv_bool ).
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set_date.
METHOD zif_abapgit_ajson~set_date.
DATA lv_val TYPE string.
@ -610,51 +581,60 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
lv_val = iv_val+0(4) && '-' && iv_val+4(2) && '-' && iv_val+6(2).
ENDIF.
zif_abapgit_ajson_writer~set(
zif_abapgit_ajson~set(
iv_ignore_empty = abap_false
iv_path = iv_path
iv_val = lv_val ).
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set_integer.
METHOD zif_abapgit_ajson~set_integer.
zif_abapgit_ajson_writer~set(
zif_abapgit_ajson~set(
iv_ignore_empty = abap_false
iv_path = iv_path
iv_val = iv_val ).
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set_null.
METHOD zif_abapgit_ajson~set_null.
DATA lv_null_ref TYPE REF TO data.
zif_abapgit_ajson_writer~set(
zif_abapgit_ajson~set(
iv_ignore_empty = abap_false
iv_path = iv_path
iv_val = lv_null_ref ).
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set_string.
METHOD zif_abapgit_ajson~set_string.
DATA lv_val TYPE string.
lv_val = iv_val.
zif_abapgit_ajson_writer~set(
zif_abapgit_ajson~set(
iv_ignore_empty = abap_false
iv_path = iv_path
iv_val = lv_val ).
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~set_timestamp.
METHOD zif_abapgit_ajson~set_timestamp.
CONSTANTS lc_utc TYPE c LENGTH 6 VALUE 'UTC'.
DATA:
lv_tz TYPE tznzone,
lv_date TYPE d,
lv_time TYPE t,
lv_timestamp_iso TYPE string.
@ -664,8 +644,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
lv_date = '00010101'.
ELSE.
lv_tz = 'UTC'.
CONVERT TIME STAMP iv_val TIME ZONE lv_tz
CONVERT TIME STAMP iv_val TIME ZONE lc_utc
INTO DATE lv_date TIME lv_time.
ENDIF.
@ -676,15 +655,49 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
lv_time+0(2) && '-' && lv_time+2(2) && '-' && lv_time+4(2) &&
'Z'.
zif_abapgit_ajson_writer~set(
zif_abapgit_ajson~set(
iv_ignore_empty = abap_false
iv_path = iv_path
iv_val = lv_timestamp_iso ).
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~stringify.
METHOD zif_abapgit_ajson~slice.
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 lv_path_len TYPE i.
CREATE OBJECT lo_section.
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 ).
LOOP AT mt_json_tree INTO ls_item.
" TODO potentially improve performance due to sorted tree (all path started from same prefix go in a row)
IF strlen( ls_item-path ) >= lv_path_len
AND substring( val = ls_item-path
len = lv_path_len ) = lv_normalized_path.
ls_item-path = substring( val = ls_item-path
off = lv_path_len - 1 ). " less closing '/'
INSERT ls_item INTO TABLE lo_section->mt_json_tree.
ELSEIF ls_item-path = ls_path_parts-path AND ls_item-name = ls_path_parts-name.
CLEAR: ls_item-path, ls_item-name. " this becomes a new root
INSERT ls_item INTO TABLE lo_section->mt_json_tree.
ENDIF.
ENDLOOP.
ri_json = lo_section.
ENDMETHOD.
METHOD zif_abapgit_ajson~stringify.
rv_json = lcl_json_serializer=>stringify(
it_json_tree = mt_json_tree
@ -694,7 +707,7 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_ajson_writer~touch_array.
METHOD zif_abapgit_ajson~touch_array.
DATA lr_node TYPE REF TO zif_abapgit_ajson=>ty_node.
DATA ls_new_node LIKE LINE OF mt_json_tree.
@ -740,15 +753,23 @@ CLASS zcl_abapgit_ajson IMPLEMENTATION.
zcx_abapgit_ajson_error=>raise( |Path [{ iv_path }] already used and is not array| ).
ENDIF.
ri_json = me.
ENDMETHOD.
METHOD zif_abapgit_ajson~freeze.
mv_read_only = abap_true.
ENDMETHOD.
METHOD zif_abapgit_ajson~to_abap.
DATA lo_to_abap TYPE REF TO lcl_json_to_abap.
CLEAR ev_container.
lcl_json_to_abap=>bind(
EXPORTING
ii_custom_mapping = mi_custom_mapping
CHANGING
c_obj = ev_container
co_instance = lo_to_abap ).
lo_to_abap->to_abap( mt_json_tree ).
METHOD zif_abapgit_ajson~keep_item_order.
mv_keep_item_order = abap_true.
ENDMETHOD.
ENDCLASS.

View File

@ -700,11 +700,11 @@ CLASS lcl_json_to_abap IMPLEMENTATION.
METHOD to_timestamp.
CONSTANTS lc_tzone_utc TYPE tznzone VALUE `UTC`.
CONSTANTS lc_utc TYPE c LENGTH 6 VALUE 'UTC'.
CONSTANTS lc_regex_ts_with_hour TYPE string
VALUE `^(\d{4})-(\d{2})-(\d{2})(T)(\d{2}):(\d{2}):(\d{2})(\+)(\d{2}):(\d{2})`.
VALUE `^(\d{4})-(\d{2})-(\d{2})(T)(\d{2}):(\d{2}):(\d{2})(\+)(\d{2}):(\d{2})`.
CONSTANTS lc_regex_ts_utc TYPE string
VALUE `^(\d{4})-(\d{2})-(\d{2})(T)(\d{2}):(\d{2}):(\d{2})(Z|$)`.
VALUE `^(\d{4})-(\d{2})-(\d{2})(T)(\d{2}):(\d{2}):(\d{2})(Z|$)`.
DATA:
BEGIN OF ls_timestamp,
@ -751,7 +751,7 @@ CLASS lcl_json_to_abap IMPLEMENTATION.
CONCATENATE ls_timestamp-year ls_timestamp-month ls_timestamp-day INTO lv_date.
CONCATENATE ls_timestamp-hour ls_timestamp-minute ls_timestamp-second INTO lv_time.
CONVERT DATE lv_date TIME lv_time INTO TIME STAMP lv_timestamp TIME ZONE lc_tzone_utc.
CONVERT DATE lv_date TIME lv_time INTO TIME STAMP lv_timestamp TIME ZONE lc_utc.
TRY.

View File

@ -1,5 +1,3 @@
**********************************************************************
* UTIL
**********************************************************************
@ -863,7 +861,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_cut = zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
lo_cut ?= lo_cut->zif_abapgit_ajson_reader~slice( '/issues' ).
lo_cut ?= lo_cut->zif_abapgit_ajson~slice( '/issues' ).
cl_abap_unit_assert=>assert_equals(
act = lo_cut->mt_json_tree
exp = lo_nodes->sorted( ) ).
@ -902,7 +900,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_nodes->add( '/issues/2/ |filename |str |./zxxx.prog.abap | |0' ).
lo_cut = zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
lo_cut ?= lo_cut->zif_abapgit_ajson_reader~slice( '/' ).
lo_cut ?= lo_cut->zif_abapgit_ajson~slice( '/' ).
cl_abap_unit_assert=>assert_equals(
act = lo_cut->mt_json_tree
exp = lo_nodes->sorted( ) ).
@ -915,7 +913,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_nodes->add( '/ |col |num |21 | |0' ).
lo_cut = zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
lo_cut ?= lo_cut->zif_abapgit_ajson_reader~slice( '/issues/2/start/' ).
lo_cut ?= lo_cut->zif_abapgit_ajson~slice( '/issues/2/start/' ).
cl_abap_unit_assert=>assert_equals(
act = lo_cut->mt_json_tree
exp = lo_nodes->sorted( ) ).
@ -924,7 +922,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
METHOD get_value.
DATA lo_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
lo_cut ?= zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
cl_abap_unit_assert=>assert_equals(
@ -947,7 +945,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
METHOD get_node_type.
DATA li_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA li_cut TYPE REF TO zif_abapgit_ajson.
li_cut = zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
cl_abap_unit_assert=>assert_equals(
@ -995,7 +993,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_cut->mt_json_tree = lo_nodes->mt_nodes.
cl_abap_unit_assert=>assert_equals(
act = lo_cut->zif_abapgit_ajson_reader~get_date( '/date1' )
act = lo_cut->zif_abapgit_ajson~get_date( '/date1' )
exp = lv_exp ).
CREATE OBJECT lo_nodes.
@ -1004,7 +1002,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_cut->mt_json_tree = lo_nodes->mt_nodes.
cl_abap_unit_assert=>assert_equals(
act = lo_cut->zif_abapgit_ajson_reader~get_date( '/date1' )
act = lo_cut->zif_abapgit_ajson~get_date( '/date1' )
exp = lv_exp ).
CREATE OBJECT lo_nodes.
@ -1013,7 +1011,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_cut->mt_json_tree = lo_nodes->mt_nodes.
cl_abap_unit_assert=>assert_equals(
act = lo_cut->zif_abapgit_ajson_reader~get_date( '/date1' )
act = lo_cut->zif_abapgit_ajson~get_date( '/date1' )
exp = '' ).
ENDMETHOD.
@ -1032,14 +1030,14 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_cut->mt_json_tree = lo_nodes->mt_nodes.
cl_abap_unit_assert=>assert_equals(
act = lo_cut->zif_abapgit_ajson_reader~get_timestamp( '/timestamp' )
act = lo_cut->zif_abapgit_ajson~get_timestamp( '/timestamp' )
exp = lv_exp ).
ENDMETHOD.
METHOD exists.
DATA lo_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
lo_cut ?= zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
@ -1063,7 +1061,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
METHOD value_integer.
DATA lo_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
lo_cut ?= zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
cl_abap_unit_assert=>assert_equals(
@ -1082,7 +1080,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
METHOD value_number.
DATA lo_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
lo_cut ?= zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
cl_abap_unit_assert=>assert_equals(
@ -1101,7 +1099,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
METHOD value_boolean.
DATA lo_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
lo_cut ?= zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
cl_abap_unit_assert=>assert_equals(
@ -1124,7 +1122,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
METHOD value_string.
DATA lo_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
lo_cut ?= zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
cl_abap_unit_assert=>assert_equals(
@ -1148,7 +1146,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
METHOD members.
DATA lt_exp TYPE string_table.
DATA lo_cut TYPE REF TO zif_abapgit_ajson_reader.
DATA lo_cut TYPE REF TO zif_abapgit_ajson.
lo_cut ?= zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
CLEAR lt_exp.
@ -1193,7 +1191,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
CREATE OBJECT lo_cut.
lo_cut->mt_json_tree = lo_nodes->mt_nodes.
lt_act = lo_cut->zif_abapgit_ajson_reader~array_to_string_table( '/' ).
lt_act = lo_cut->zif_abapgit_ajson~array_to_string_table( '/' ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = lt_exp ).
@ -1207,7 +1205,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_cut->mt_json_tree = lo_nodes->mt_nodes.
TRY.
lo_cut->zif_abapgit_ajson_reader~array_to_string_table( '/x' ).
lo_cut->zif_abapgit_ajson~array_to_string_table( '/x' ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_ajson_error INTO lx.
cl_abap_unit_assert=>assert_equals(
@ -1216,7 +1214,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
ENDTRY.
TRY.
lo_cut->zif_abapgit_ajson_reader~array_to_string_table( '/' ).
lo_cut->zif_abapgit_ajson~array_to_string_table( '/' ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_ajson_error INTO lx.
cl_abap_unit_assert=>assert_equals(
@ -1225,7 +1223,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
ENDTRY.
TRY.
lo_cut->zif_abapgit_ajson_reader~array_to_string_table( '/a' ).
lo_cut->zif_abapgit_ajson~array_to_string_table( '/a' ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_ajson_error INTO lx.
cl_abap_unit_assert=>assert_equals(
@ -1239,7 +1237,7 @@ CLASS ltcl_reader_test IMPLEMENTATION.
lo_cut->mt_json_tree = lo_nodes->mt_nodes.
TRY.
lo_cut->zif_abapgit_ajson_reader~array_to_string_table( '/' ).
lo_cut->zif_abapgit_ajson~array_to_string_table( '/' ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_ajson_error INTO lx.
cl_abap_unit_assert=>assert_equals(
@ -1679,7 +1677,7 @@ CLASS ltcl_writer_test DEFINITION FINAL
METHODS set_with_type_slice
IMPORTING
io_json_in TYPE REF TO zcl_abapgit_ajson
io_json_out TYPE REF TO zif_abapgit_ajson_writer
io_json_out TYPE REF TO zif_abapgit_ajson
iv_path TYPE string
RAISING
zcx_abapgit_ajson_error.
@ -1770,7 +1768,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
lo_nodes_exp->add( ' | |object | ||1' ).
lo_nodes_exp->add( '/ |a |object | ||0' ).
lo_cut->zif_abapgit_ajson_writer~delete( iv_path = '/a/b' ).
lo_cut->zif_abapgit_ajson~delete( iv_path = '/a/b' ).
cl_abap_unit_assert=>assert_equals(
act = lo_cut->mt_json_tree
@ -1789,7 +1787,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
lo_nodes_exp->add( ' | |object | ||1' ).
lo_nodes_exp->add( '/ |a |object | ||0' ).
lo_cut->zif_abapgit_ajson_writer~delete( iv_path = '/a/b/' ).
lo_cut->zif_abapgit_ajson~delete( iv_path = '/a/b/' ).
cl_abap_unit_assert=>assert_equals(
act = lo_cut->mt_json_tree
@ -1802,7 +1800,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_nodes TYPE REF TO lcl_nodes_helper.
DATA lo_src TYPE REF TO zcl_abapgit_ajson.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_src = zcl_abapgit_ajson=>create_empty( ).
lo_cut = zcl_abapgit_ajson=>create_empty( ).
@ -1871,7 +1869,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_nodes TYPE REF TO lcl_nodes_helper.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
@ -1902,7 +1900,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_nodes TYPE REF TO lcl_nodes_helper.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
@ -1940,7 +1938,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_nodes TYPE REF TO lcl_nodes_helper.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA:
BEGIN OF ls_struc,
@ -1971,7 +1969,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_nodes TYPE REF TO lcl_nodes_helper.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA lt_tab TYPE string_table.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
@ -2000,7 +1998,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_nodes TYPE REF TO lcl_nodes_helper.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA lt_tab TYPE HASHED TABLE OF string WITH UNIQUE DEFAULT KEY.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
@ -2029,7 +2027,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
@ -2124,7 +2122,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
METHOD arrays_negative.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
@ -2211,7 +2209,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA:
BEGIN OF ls_dummy,
x TYPE string VALUE 'hello',
@ -2281,7 +2279,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA lt_tab TYPE string_table.
" abap_bool
@ -2349,7 +2347,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA lv_date TYPE d.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
@ -2381,7 +2379,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
@ -2403,7 +2401,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA lv_date TYPE d.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
@ -2427,7 +2425,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA lv_timestamp TYPE timestamp.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
@ -2450,7 +2448,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
METHOD read_only.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_cut = zcl_abapgit_ajson=>create_empty( ).
li_writer = lo_cut.
@ -2506,7 +2504,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA lo_nodes_exp TYPE REF TO lcl_nodes_helper.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
CREATE OBJECT lo_nodes_exp.
lo_nodes_exp->add( ' | |object | | |1' ).
@ -2547,7 +2545,7 @@ CLASS ltcl_writer_test IMPLEMENTATION.
DATA lo_sample TYPE REF TO zcl_abapgit_ajson.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
lo_sample = zcl_abapgit_ajson=>parse( ltcl_parser_test=>sample_json( ) ).
@ -2634,6 +2632,7 @@ CLASS ltcl_integrated DEFINITION
METHODS array_simple FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS stringify FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS item_order_integrated FOR TESTING RAISING zcx_abapgit_ajson_error.
METHODS chaining FOR TESTING RAISING zcx_abapgit_ajson_error.
ENDCLASS.
@ -2657,7 +2656,7 @@ CLASS ltcl_integrated IMPLEMENTATION.
ENDDO.
lv_src = lv_src && ']'.
DATA li_reader TYPE REF TO zif_abapgit_ajson_reader.
DATA li_reader TYPE REF TO zif_abapgit_ajson.
li_reader = zcl_abapgit_ajson=>parse( lv_src ).
li_reader->to_abap( IMPORTING ev_container = lt_act ).
@ -2685,7 +2684,7 @@ CLASS ltcl_integrated IMPLEMENTATION.
ENDDO.
lv_src = lv_src && ']'.
DATA li_reader TYPE REF TO zif_abapgit_ajson_reader.
DATA li_reader TYPE REF TO zif_abapgit_ajson.
li_reader = zcl_abapgit_ajson=>parse( lv_src ).
li_reader->to_abap( IMPORTING ev_container = lt_act ).
@ -2698,7 +2697,7 @@ CLASS ltcl_integrated IMPLEMENTATION.
METHOD reader.
DATA lv_source TYPE string.
DATA li_reader TYPE REF TO zif_abapgit_ajson_reader.
DATA li_reader TYPE REF TO zif_abapgit_ajson.
lv_source = ltcl_parser_test=>sample_json( ).
li_reader = zcl_abapgit_ajson=>parse( lv_source ).
@ -2747,7 +2746,7 @@ CLASS ltcl_integrated IMPLEMENTATION.
METHOD stringify.
DATA lo_cut TYPE REF TO zcl_abapgit_ajson.
DATA li_writer TYPE REF TO zif_abapgit_ajson_writer.
DATA li_writer TYPE REF TO zif_abapgit_ajson.
DATA lv_exp TYPE string.
DATA: BEGIN OF ls_dummy, x TYPE i, END OF ls_dummy.
@ -2865,6 +2864,30 @@ CLASS ltcl_integrated IMPLEMENTATION.
ENDMETHOD.
METHOD chaining.
DATA li_cut TYPE REF TO zif_abapgit_ajson.
li_cut = zcl_abapgit_ajson=>create_empty( ).
cl_abap_unit_assert=>assert_bound(
li_cut->set(
iv_path = '/a'
iv_val = 1 ) ).
cl_abap_unit_assert=>assert_bound( li_cut->delete( iv_path = '/a' ) ).
cl_abap_unit_assert=>assert_bound( li_cut->touch_array( iv_path = '/array' ) ).
cl_abap_unit_assert=>assert_bound(
li_cut->push(
iv_path = '/array'
iv_val = '1' ) ).
cl_abap_unit_assert=>assert_bound( li_cut->keep_item_order( ) ).
ENDMETHOD.
ENDCLASS.
**********************************************************************

View File

@ -50,9 +50,9 @@ CLASS zcl_abapgit_ajson_mapping IMPLEMENTATION.
ENDMETHOD.
METHOD create_upper_case.
METHOD create_field_mapping.
CREATE OBJECT ri_mapping TYPE lcl_mapping_to_upper
CREATE OBJECT ri_mapping TYPE lcl_mapping_fields
EXPORTING
it_mapping_fields = it_mapping_fields.
@ -68,13 +68,11 @@ CLASS zcl_abapgit_ajson_mapping IMPLEMENTATION.
ENDMETHOD.
METHOD create_field_mapping.
METHOD create_upper_case.
CREATE OBJECT ri_mapping TYPE lcl_mapping_fields
CREATE OBJECT ri_mapping TYPE lcl_mapping_to_upper
EXPORTING
it_mapping_fields = it_mapping_fields.
ENDMETHOD.
ENDCLASS.

View File

@ -30,9 +30,9 @@ CLASS zcl_abapgit_ajson_utilities DEFINITION
DATA mo_json_a TYPE REF TO zif_abapgit_ajson .
DATA mo_json_b TYPE REF TO zif_abapgit_ajson .
DATA mo_insert TYPE REF TO zif_abapgit_ajson_writer .
DATA mo_delete TYPE REF TO zif_abapgit_ajson_writer .
DATA mo_change TYPE REF TO zif_abapgit_ajson_writer .
DATA mo_insert TYPE REF TO zif_abapgit_ajson .
DATA mo_delete TYPE REF TO zif_abapgit_ajson .
DATA mo_change TYPE REF TO zif_abapgit_ajson .
METHODS diff_a_b
IMPORTING

View File

@ -1,11 +1,9 @@
INTERFACE zif_abapgit_ajson
PUBLIC .
PUBLIC.
CONSTANTS version TYPE string VALUE 'v1.0.4'.
CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'.
INTERFACES zif_abapgit_ajson_reader.
INTERFACES zif_abapgit_ajson_writer.
CONSTANTS version TYPE string VALUE 'v1.1.0-pre1'. "#EC NOTEXT
CONSTANTS origin TYPE string VALUE 'https://github.com/sbcgua/ajson'. "#EC NOTEXT
CONSTANTS license TYPE string VALUE 'MIT'. "#EC NOTEXT
CONSTANTS:
BEGIN OF node_type,
@ -47,34 +45,194 @@ INTERFACE zif_abapgit_ajson
" METHODS
METHODS freeze.
METHODS keep_item_order.
METHODS keep_item_order
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
" METHODS (merged from reader/writer), maybe will completely move to this IF in future !
" METHODS ex.reader
ALIASES:
exists FOR zif_abapgit_ajson_reader~exists,
members FOR zif_abapgit_ajson_reader~members,
get FOR zif_abapgit_ajson_reader~get,
get_boolean FOR zif_abapgit_ajson_reader~get_boolean,
get_integer FOR zif_abapgit_ajson_reader~get_integer,
get_number FOR zif_abapgit_ajson_reader~get_number,
get_date FOR zif_abapgit_ajson_reader~get_date,
get_string FOR zif_abapgit_ajson_reader~get_string,
slice FOR zif_abapgit_ajson_reader~slice,
to_abap FOR zif_abapgit_ajson_reader~to_abap,
array_to_string_table FOR zif_abapgit_ajson_reader~array_to_string_table.
METHODS exists
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_exists) TYPE abap_bool.
ALIASES:
clear FOR zif_abapgit_ajson_writer~clear,
set FOR zif_abapgit_ajson_writer~set,
set_boolean FOR zif_abapgit_ajson_writer~set_boolean,
set_string FOR zif_abapgit_ajson_writer~set_string,
set_integer FOR zif_abapgit_ajson_writer~set_integer,
set_date FOR zif_abapgit_ajson_writer~set_date,
set_null FOR zif_abapgit_ajson_writer~set_null,
delete FOR zif_abapgit_ajson_writer~delete,
touch_array FOR zif_abapgit_ajson_writer~touch_array,
push FOR zif_abapgit_ajson_writer~push,
stringify FOR zif_abapgit_ajson_writer~stringify.
METHODS members
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rt_members) TYPE string_table.
METHODS get
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS get_node_type
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_node_type) TYPE string.
METHODS get_boolean
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE abap_bool.
METHODS get_integer
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE i.
METHODS get_number
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE f.
METHODS get_date
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE d.
METHODS get_timestamp
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE timestamp.
METHODS get_string
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS slice
IMPORTING
iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson.
METHODS to_abap
EXPORTING
ev_container TYPE any
RAISING
zcx_abapgit_ajson_error.
METHODS array_to_string_table
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rt_string_table) TYPE string_table
RAISING
zcx_abapgit_ajson_error.
" METHODS ex.writer
METHODS clear
RAISING
zcx_abapgit_ajson_error.
METHODS set
IMPORTING
iv_path TYPE string
iv_val TYPE any
iv_ignore_empty TYPE abap_bool DEFAULT abap_true
iv_node_type TYPE string OPTIONAL
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_boolean
IMPORTING
iv_path TYPE string
iv_val TYPE any
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_string
IMPORTING
iv_path TYPE string
iv_val TYPE clike
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_integer
IMPORTING
iv_path TYPE string
iv_val TYPE i
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_date
IMPORTING
iv_path TYPE string
iv_val TYPE d
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_timestamp
IMPORTING
iv_path TYPE string
iv_val TYPE timestamp
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS set_null
IMPORTING
iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS delete
IMPORTING
iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS touch_array
IMPORTING
iv_path TYPE string
iv_clear TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS push
IMPORTING
iv_path TYPE string
iv_val TYPE any
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson
RAISING
zcx_abapgit_ajson_error.
METHODS stringify
IMPORTING
iv_indent TYPE i DEFAULT 0
RETURNING
VALUE(rv_json) TYPE string
RAISING
zcx_abapgit_ajson_error.
ENDINTERFACE.

View File

@ -1,72 +0,0 @@
INTERFACE zif_abapgit_ajson_reader
PUBLIC .
METHODS exists
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_exists) TYPE abap_bool.
METHODS members
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rt_members) TYPE string_table.
METHODS get
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS get_node_type
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_node_type) TYPE string.
METHODS get_boolean
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE abap_bool.
METHODS get_integer
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE i.
METHODS get_number
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE f.
METHODS get_date
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE d.
METHODS get_timestamp
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE timestamp.
METHODS get_string
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rv_value) TYPE string.
METHODS slice
IMPORTING
iv_path TYPE string
RETURNING
VALUE(ri_json) TYPE REF TO zif_abapgit_ajson_reader.
METHODS to_abap
EXPORTING
ev_container TYPE any
RAISING
zcx_abapgit_ajson_error.
METHODS array_to_string_table
IMPORTING
iv_path TYPE string
RETURNING
VALUE(rt_string_table) TYPE string_table
RAISING
zcx_abapgit_ajson_error.
ENDINTERFACE.

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_AJSON_READER</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>AJSON reader interface</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,86 +0,0 @@
INTERFACE zif_abapgit_ajson_writer
PUBLIC .
METHODS clear
RAISING
zcx_abapgit_ajson_error.
METHODS set
IMPORTING
iv_path TYPE string
iv_val TYPE any
iv_ignore_empty TYPE abap_bool DEFAULT abap_true
iv_node_type TYPE string OPTIONAL
RAISING
zcx_abapgit_ajson_error.
METHODS set_boolean
IMPORTING
iv_path TYPE string
iv_val TYPE any
RAISING
zcx_abapgit_ajson_error.
METHODS set_string
IMPORTING
iv_path TYPE string
iv_val TYPE clike
RAISING
zcx_abapgit_ajson_error.
METHODS set_integer
IMPORTING
iv_path TYPE string
iv_val TYPE i
RAISING
zcx_abapgit_ajson_error.
METHODS set_date
IMPORTING
iv_path TYPE string
iv_val TYPE d
RAISING
zcx_abapgit_ajson_error.
METHODS set_timestamp
IMPORTING
iv_path TYPE string
iv_val TYPE timestamp
RAISING
zcx_abapgit_ajson_error.
METHODS set_null
IMPORTING
iv_path TYPE string
RAISING
zcx_abapgit_ajson_error.
METHODS delete
IMPORTING
iv_path TYPE string
RAISING
zcx_abapgit_ajson_error.
METHODS touch_array
IMPORTING
iv_path TYPE string
iv_clear TYPE abap_bool DEFAULT abap_false
RAISING
zcx_abapgit_ajson_error.
METHODS push
IMPORTING
iv_path TYPE string
iv_val TYPE any
RAISING
zcx_abapgit_ajson_error.
METHODS stringify
IMPORTING
iv_indent TYPE i DEFAULT 0
RETURNING
VALUE(rv_json) TYPE string
RAISING
zcx_abapgit_ajson_error.
ENDINTERFACE.

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_AJSON_WRITER</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>AJSON writer interface</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>