Skip to content

Commit

Permalink
Refactor log (#144)
Browse files Browse the repository at this point in the history
* Refactor log and add unit tests

* Fix spaces

* Remove unused parameter

* Delete comment

* remove unit tests

* remove comments
  • Loading branch information
wurzka authored Jun 29, 2022
1 parent 2f89c33 commit 4490c25
Show file tree
Hide file tree
Showing 9 changed files with 110 additions and 118 deletions.
20 changes: 10 additions & 10 deletions src/z_generate_repo.prog.abap
Original file line number Diff line number Diff line change
Expand Up @@ -708,12 +708,12 @@ CLASS lcl_generator IMPLEMENTATION.
IF contains_chars = abap_false.
format_version = last.
ELSE.
INSERT |Formatversion couldnt be derived from interface { intfname }. Format version 1 was assumed.| INTO TABLE report_log ##NO_TEXT.
INSERT |Formatversion couldn't be derived from interface { intfname }. Format version 1 was assumed.| INTO TABLE report_log ##NO_TEXT.
format_version = 1.
ENDIF.
CATCH cx_sy_conversion_no_number.
"if the intfname is not correct we use format_version 1
INSERT |Formatversion couldnt be derived from interface { intfname }. Format version 1 was assumed.| INTO TABLE report_log ##NO_TEXT.
INSERT |Formatversion couldn't be derived from interface { intfname }. Format version 1 was assumed.| INTO TABLE report_log ##NO_TEXT.
format_version = 1.
ENDTRY.
ENDMETHOD.
Expand Down Expand Up @@ -806,7 +806,7 @@ CLASS lcl_generator IMPLEMENTATION.
SKIP 1.
WRITE: / `Messages schema/ST Generator:` ##NO_TEXT.
LOOP AT generator_log->get_messages( ) ASSIGNING FIELD-SYMBOL(<WRITER_log_message>).
WRITE: / |{ <WRITER_log_message>-type } { <WRITER_log_message>-component_name WIDTH = 40 ALIGN = LEFT PAD = ' ' } { <WRITER_log_message>-text }|.
WRITE: / |{ <WRITER_log_message>-type } { <WRITER_log_message>-component_name WIDTH = 40 ALIGN = LEFT PAD = ' ' } { <WRITER_log_message>-message_text }|.
ENDLOOP.
ENDIF.

Expand Down Expand Up @@ -1251,13 +1251,13 @@ CLASS ltc_generator IMPLEMENTATION.
aff_factory_double->get_object_file_handler( ).

writer_log = NEW zcl_aff_log( ).
writer_log->zif_aff_log~add_info( message = VALUE #( msgty = 'I' msgv1 = 'Writer Log' ) component_name = VALUE #( ) ).
writer_log->zif_aff_log~add_info( message_text = 'Writer Log' component_name = VALUE #( ) ).

cl_abap_testdouble=>configure_call( writer_double )->returning( writer_log ).
writer_double->get_log( ).

generator_log = NEW zcl_aff_log( ).
generator_log->zif_aff_log~add_info( message = VALUE #( msgty = 'I' msgv1 = 'Generator Log' ) component_name = VALUE #( ) ).
generator_log->zif_aff_log~add_info( message_text = 'Generator Log' component_name = VALUE #( ) ).
generator_double = NEW ltc_generator_double( generator_log ).

cut = NEW lcl_generator(
Expand All @@ -1275,7 +1275,7 @@ CLASS ltc_generator IMPLEMENTATION.
cl_abap_unit_assert=>assert_equals( act = cut->report_log exp = expected_report_log ).
cl_abap_unit_assert=>assert_equals( act = lines( cut->generator_log->get_messages( ) ) exp = lines( expected_log_messages ) ) .
LOOP AT expected_log_messages ASSIGNING FIELD-SYMBOL(<exp_msg>).
READ TABLE cut->generator_log->get_messages( ) WITH KEY text = <exp_msg>-text TRANSPORTING NO FIELDS.
READ TABLE cut->generator_log->get_messages( ) WITH KEY message_text = <exp_msg>-message_text TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
cl_abap_unit_assert=>fail( ).
ENDIF.
Expand Down Expand Up @@ -1380,7 +1380,7 @@ CLASS ltc_generator IMPLEMENTATION.
cut->start_of_selection( ).
"Then
expected_report_log = VALUE #(
( `Formatversion couldnt be derived from interface IF_AFF_INTF_V1X. Format version 1 was assumed.` )
( `Formatversion couldn't be derived from interface IF_AFF_INTF_V1X. Format version 1 was assumed.` )
( `Type \INTERFACE=IF_AFF_INTF_V1X\TYPE=TY_MAIN was not found. Either interface or type doesnt exist.` )
).
CLEAR expected_log_messages.
Expand Down Expand Up @@ -1647,9 +1647,9 @@ CLASS ltc_generator IMPLEMENTATION.
cl_abap_unit_assert=>assert_equals( act = act_content exp = expected_content ).

expected_log_messages = VALUE #(
( type = 'I' text = `I::000 Generator Log` message = VALUE #( msgty = 'I' msgv1 = 'Generator Log' ) )
( type = 'I' text = `I::000 Generator Log` message = VALUE #( msgty = 'I' msgv1 = 'Generator Log' ) )
( type = 'I' text = `I::000 Generator Log` message = VALUE #( msgty = 'I' msgv1 = 'Generator Log' ) )
( type = 'I' message_text = `Generator Log` )
( type = 'I' message_text = `Generator Log` )
( type = 'I' message_text = `Generator Log` )
).
assert_logs_and_file_handler( ).
ENDMETHOD.
Expand Down
54 changes: 27 additions & 27 deletions src/zcl_aff_abap_doc_parser.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,11 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.

METHOD check_title_positions.
IF ( count( val = abap_doc_string regex = co_shorttext_tag_open ) > 1 ) ##REGEX_POSIX.
DATA(msg) = parser_log->get_message( msgno = 107 msgv1 = `'Title'` ).
parser_log->add_message_dev( type = 'I' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 107 msgv1 = `'Title'` ).
parser_log->add_info( message_text = msg component_name = component_name ).
ENDIF.
IF ( find( val = abap_doc_string regex = co_shorttext_tag_open ) > 0 ) ##REGEX_POSIX.
parser_log->add_message_dev( type = 'I' message = zif_aff_log=>co_msg113 component_name = component_name ).
parser_log->add_info( message_text = zif_aff_log=>co_msg113 component_name = component_name ).
ENDIF.
ENDMETHOD.

Expand Down Expand Up @@ -196,8 +196,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
parse_enum_value( ).
WHEN OTHERS.
REPLACE key_word IN modified_abap_doc_string WITH ''.
DATA(msg) = parser_log->get_message( msgno = 108 msgv1 = CONV #( key_word ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 108 msgv1 = CONV #( key_word ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
ENDCASE.
ENDLOOP.
abap_doc_string = modified_abap_doc_string.
Expand All @@ -211,8 +211,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF REGEX `\$callbackClass[\s]*(:[\s]*)?\{[\s]*@link` IN string_to_parse WITH `\$callbackClass\{@link` ##REGEX_POSIX.
FIND ALL OCCURRENCES OF REGEX `\$callbackClass\{@link[^\}]+\}` IN string_to_parse RESULTS DATA(result_table) ##REGEX_POSIX.
IF lines( result_table ) = 0.
DATA(msg) = parser_log->get_message( msgno = 109 msgv1 = CONV #( abap_doc_annotation-callback_class ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 109 msgv1 = CONV #( abap_doc_annotation-callback_class ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
RETURN.
ENDIF.
write_log_for_multiple_entries( result_table = result_table annotaion = abap_doc_annotation-callback_class ).
Expand Down Expand Up @@ -255,13 +255,13 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
ENDLOOP.

IF lines( mixed_result_table ) = 0.
DATA(msg) = parser_log->get_message( msgno = 109 msgv1 = CONV #( abap_doc_annotation-default ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 109 msgv1 = CONV #( abap_doc_annotation-default ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
RETURN.
ENDIF.
IF lines( mixed_result_table ) > 1.
msg = parser_log->get_message( msgno = 107 msgv1 = CONV #( abap_doc_annotation-default ) ).
parser_log->add_message_dev( type = 'I' message = msg component_name = component_name ).
msg = parser_log->get_message_text( msgno = 107 msgv1 = CONV #( abap_doc_annotation-default ) ).
parser_log->add_info( message_text = msg component_name = component_name ).
ENDIF.
DATA(warning_set) = abap_false.
LOOP AT mixed_result_table ASSIGNING FIELD-SYMBOL(<entry>).
Expand All @@ -277,8 +277,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
IF lines( splitted ) = 3.
decoded_abap_doc-default = link.
ELSEIF warning_set = abap_false.
msg = parser_log->get_message( msgno = 111 msgv1 = CONV #( abap_doc_annotation-default ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
msg = parser_log->get_message_text( msgno = 111 msgv1 = CONV #( abap_doc_annotation-default ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
warning_set = abap_true.
ENDIF.
ENDIF.
Expand All @@ -295,8 +295,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF REGEX `\$values[\s]*(:[\s]*)?\{[\s]*@link` IN string_to_parse WITH `\$values\{@link` ##REGEX_POSIX.
FIND ALL OCCURRENCES OF REGEX `\$values\{@link([^\}]+)\}` IN string_to_parse RESULTS DATA(result_table) ##REGEX_POSIX.
IF lines( result_table ) = 0.
DATA(msg) = parser_log->get_message( msgno = 109 msgv1 = CONV #( abap_doc_annotation-values ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 109 msgv1 = CONV #( abap_doc_annotation-values ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
RETURN.
ENDIF.
write_log_for_multiple_entries( result_table = result_table annotaion = abap_doc_annotation-values ).
Expand All @@ -313,8 +313,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
IF lines( splitted ) = 2 AND decoded_abap_doc-enumvalues_link IS INITIAL.
decoded_abap_doc-enumvalues_link = link.
ELSEIF lines( splitted ) <> 2 AND warning_written = abap_false.
msg = parser_log->get_message( msgno = 111 msgv1 = CONV #( abap_doc_annotation-values ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
msg = parser_log->get_message_text( msgno = 111 msgv1 = CONV #( abap_doc_annotation-values ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
warning_written = abap_true.
ENDIF.
ENDLOOP.
Expand Down Expand Up @@ -388,8 +388,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF REGEX `\$dummyannotation[\s]*(:[\s]*)?` IN abap_doc WITH `\$dummyannotation` ##REGEX_POSIX.
FIND ALL OCCURRENCES OF REGEX `\$dummyannotation[^\s]+` IN abap_doc RESULTS DATA(result_table) ##REGEX_POSIX.
IF lines( result_table ) = 0.
DATA(msg) = parser_log->get_message( msgno = 109 msgv1 = CONV #( abap_doc_annotation-values ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 109 msgv1 = CONV #( abap_doc_annotation-values ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
RETURN.
ENDIF.
write_log_for_multiple_entries( result_table = result_table annotaion = annotation_name ).
Expand All @@ -411,8 +411,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
IF match = abap_true AND number IS INITIAL.
number = number_candidate.
ELSEIF match = abap_false AND warning_written = abap_false.
msg = parser_log->get_message( msgno = 110 msgv1 = CONV #( annotation_name ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
msg = parser_log->get_message_text( msgno = 110 msgv1 = CONV #( annotation_name ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
warning_written = abap_true.
ENDIF.
ENDLOOP.
Expand All @@ -426,8 +426,8 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF REGEX `\$enumValue[\s]*(:[\s]*)?'` IN string_to_parse WITH `\$enumValue'` ##REGEX_POSIX.
FIND ALL OCCURRENCES OF REGEX `\$enumValue'[^']*'` IN string_to_parse RESULTS DATA(result_table) ##REGEX_POSIX.
IF lines( result_table ) = 0.
DATA(msg) = parser_log->get_message( msgno = 109 msgv1 = CONV #( abap_doc_annotation-enum_value ) ).
parser_log->add_message_dev( type = 'W' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 109 msgv1 = CONV #( abap_doc_annotation-enum_value ) ).
parser_log->add_warning( message_text = msg component_name = component_name ).
RETURN.
ENDIF.
write_log_for_multiple_entries( result_table = result_table annotaion = abap_doc_annotation-enum_value ).
Expand Down Expand Up @@ -480,16 +480,16 @@ CLASS zcl_aff_abap_doc_parser IMPLEMENTATION.

METHOD write_description_message.
IF description_warning_is_needed = abap_true AND decoded_abap_doc-description IS INITIAL.
parser_log->add_message_dev( type = 'W' message = zif_aff_log=>co_msg115 component_name = component_name ).
parser_log->add_warning( message_text = zif_aff_log=>co_msg115 component_name = component_name ).
ELSEIF description_warning_is_needed = abap_true AND decoded_abap_doc-description IS NOT INITIAL.
parser_log->add_message_dev( type = 'I' message = zif_aff_log=>co_msg116 component_name = component_name ).
parser_log->add_info( message_text = zif_aff_log=>co_msg116 component_name = component_name ).
ENDIF.
ENDMETHOD.

METHOD write_log_for_multiple_entries.
IF lines( result_table ) > 1.
DATA(msg) = parser_log->get_message( msgno = 107 msgv1 = CONV #( annotaion ) ).
parser_log->add_message_dev( type = 'I' message = msg component_name = component_name ).
DATA(msg) = parser_log->get_message_text( msgno = 107 msgv1 = CONV #( annotaion ) ).
parser_log->add_info( message_text = msg component_name = component_name ).
ENDIF.
ENDMETHOD.

Expand Down
4 changes: 2 additions & 2 deletions src/zcl_aff_generator.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,15 @@ CLASS zcl_aff_generator IMPLEMENTATION.
DATA(structure_description) = CAST cl_abap_structdescr( type_description ).
check_mandatory_fields( structure_description ).
CATCH cx_sy_move_cast_error.
log->add_message_dev( type = 'W' message = zif_aff_log=>co_msg123 component_name = type_description->get_relative_name( ) ).
log->add_warning( message_text = zif_aff_log=>co_msg123 component_name = type_description->get_relative_name( ) ).
ENDTRY.

ENDMETHOD.

METHOD check_mandatory_fields.
DATA(components) = structure_description->get_components( ).
IF NOT ( line_exists( components[ name = 'HEADER' ] ) AND line_exists( components[ name = 'FORMAT_VERSION' ] ) ).
log->add_message_dev( type ='W' message = zif_aff_log=>co_msg124 component_name = structure_description->get_relative_name( ) ).
log->add_warning( message_text = zif_aff_log=>co_msg124 component_name = structure_description->get_relative_name( ) ).
ENDIF.
ENDMETHOD.

Expand Down
39 changes: 20 additions & 19 deletions src/zcl_aff_log.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,16 @@ CLASS zcl_aff_log DEFINITION


METHODS:
add_message
add_message_for_exception
IMPORTING
type TYPE symsgty
message TYPE symsg
component_name TYPE string,
add_message
IMPORTING
type TYPE symsgty
message_text TYPE string
component_name TYPE string,
set_max_severity
IMPORTING
type TYPE symsgty.
Expand All @@ -54,30 +59,26 @@ CLASS zcl_aff_log IMPLEMENTATION.
METHOD zif_aff_log~get_messages.
messages = me->messages.
ENDMETHOD.
METHOD zif_aff_log~add_message_dev.
set_max_severity( type ).

METHOD add_message.
set_max_severity( type ).
APPEND VALUE #( component_name = component_name
type = type
text = message
message = VALUE #( ) ) TO me->messages.
message_text = message_text ) TO me->messages.
ENDMETHOD.

METHOD zif_aff_log~add_info.
set_max_severity( zif_aff_log=>c_message_type-info ).
add_message( type = zif_aff_log=>c_message_type-info message = message component_name = component_name ).
add_message( type = zif_aff_log=>c_message_type-info message_text = message_text component_name = component_name ).
ENDMETHOD.


METHOD zif_aff_log~add_warning.
set_max_severity( zif_aff_log=>c_message_type-warning ).
add_message( type = zif_aff_log=>c_message_type-warning message = message component_name = component_name ).
add_message( type = zif_aff_log=>c_message_type-warning message_text = message_text component_name = component_name ).
ENDMETHOD.


METHOD zif_aff_log~add_error.
set_max_severity( zif_aff_log=>c_message_type-error ).
add_message( type = zif_aff_log=>c_message_type-error message = message component_name = component_name ).
add_message( type = zif_aff_log=>c_message_type-error message_text = message_text component_name = component_name ).
ENDMETHOD.


Expand All @@ -86,7 +87,7 @@ CLASS zcl_aff_log IMPLEMENTATION.

IF exception->get_text( ) IS NOT INITIAL.
cl_message_helper=>set_msg_vars_for_if_msg( exception ).
add_message( type = message_type message = get_sy_message( ) component_name = component_name ).
add_message_for_exception( type = message_type message = get_sy_message( ) component_name = component_name ).
ENDIF.

IF exception->previous IS BOUND.
Expand All @@ -95,7 +96,7 @@ CLASS zcl_aff_log IMPLEMENTATION.
ENDMETHOD.


METHOD add_message.
METHOD add_message_for_exception.

MESSAGE
ID message-msgid
Expand All @@ -105,9 +106,9 @@ CLASS zcl_aff_log IMPLEMENTATION.
INTO DATA(text).

APPEND VALUE #( component_name = component_name
type = type
text = text
message = get_sy_message( ) ) TO me->messages.
type = type
message_text = text
message = get_sy_message( ) ) TO me->messages.
ENDMETHOD.


Expand Down Expand Up @@ -143,14 +144,14 @@ CLASS zcl_aff_log IMPLEMENTATION.
msgv4 = sy-msgv4 ).
ENDMETHOD.

METHOD zif_aff_log~get_message.
METHOD zif_aff_log~get_message_text.
IF line_exists( message_table[ msgno = msgno ] ).
DATA(message_entry) = VALUE #( message_table[ msgno = msgno ] ).
message = message_entry-str1 && ` ` && msgv1 && ` ` &&
message_text = message_entry-str1 && ` ` && msgv1 && ` ` &&
message_entry-str2 && ` ` && msgv2 && ` ` &&
message_entry-str3 && ` ` && msgv3 && ` ` &&
message_entry-str4 && ` ` && msgv4.
CONDENSE message.
CONDENSE message_text.
ENDIF.
ENDMETHOD.

Expand Down
6 changes: 3 additions & 3 deletions src/zcl_aff_tools_unit_test_helper.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,10 @@ CLASS zcl_aff_tools_unit_test_helper IMPLEMENTATION.
METHOD assert_log_contains_text.
DATA(act_messages) = log->get_messages( ).
IF exp_component_name IS SUPPLIED.
IF NOT line_exists( act_messages[ type = exp_type text = exp_text component_name = exp_component_name ] ).
IF NOT line_exists( act_messages[ type = exp_type message_text = exp_text component_name = exp_component_name ] ).
cl_abap_unit_assert=>fail( msg = 'The expected message is not contained in the log' ).
ENDIF.
ELSEIF NOT line_exists( act_messages[ type = exp_type text = exp_text ] ).
ELSEIF NOT line_exists( act_messages[ type = exp_type message_text = exp_text ] ).
cl_abap_unit_assert=>fail( msg = 'The expected message is not contained in the log' ).
ENDIF.

Expand All @@ -108,7 +108,7 @@ CLASS zcl_aff_tools_unit_test_helper IMPLEMENTATION.
DATA detail TYPE string.
LOOP AT log->get_messages( ) ASSIGNING FIELD-SYMBOL(<message>).
IF line_exists( types_to_report[ table_line = <message>-type ] ).
detail = detail && <message>-text && cl_abap_char_utilities=>newline.
detail = detail && <message>-message_text && cl_abap_char_utilities=>newline.
ENDIF.
ENDLOOP.
cl_abap_unit_assert=>fail( msg = |Log contains messages with severity >= { message_severity_threshold }| detail = detail ).
Expand Down
Loading

0 comments on commit 4490c25

Please sign in to comment.