mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Replace RS_NAME_SPLIT_NAMESPACE in TADIR class (#6443)
Co-authored-by: Lars Hvam <larshp@hotmail.com> Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
parent
722be0c503
commit
b80995467b
|
@ -106,32 +106,27 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD add_namespace.
|
METHOD add_namespace.
|
||||||
|
|
||||||
DATA:
|
DATA ls_tadir TYPE zif_abapgit_definitions=>ty_tadir.
|
||||||
lv_name TYPE progname,
|
DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace.
|
||||||
lv_namespace TYPE namespace.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS <ls_tadir> LIKE LINE OF ct_tadir.
|
FIELD-SYMBOLS <ls_tadir> LIKE LINE OF ct_tadir.
|
||||||
|
|
||||||
lv_name = iv_object.
|
TRY.
|
||||||
|
ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( iv_object ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
"Ignore the exception like before the replacement of the FM RS_NAME_SPLIT_NAMESPACE
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
CALL FUNCTION 'RS_NAME_SPLIT_NAMESPACE'
|
IF ls_obj_with_namespace-namespace IS NOT INITIAL.
|
||||||
EXPORTING
|
|
||||||
name_with_namespace = lv_name
|
|
||||||
IMPORTING
|
|
||||||
namespace = lv_namespace
|
|
||||||
EXCEPTIONS
|
|
||||||
delimiter_error = 1
|
|
||||||
OTHERS = 2.
|
|
||||||
|
|
||||||
IF sy-subrc = 0 AND lv_namespace IS NOT INITIAL.
|
|
||||||
|
|
||||||
READ TABLE ct_tadir TRANSPORTING NO FIELDS
|
READ TABLE ct_tadir TRANSPORTING NO FIELDS
|
||||||
WITH KEY pgmid = 'R3TR' object = 'NSPC' obj_name = lv_namespace.
|
WITH KEY pgmid = 'R3TR' object = 'NSPC' obj_name = ls_obj_with_namespace-namespace.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
APPEND INITIAL LINE TO ct_tadir ASSIGNING <ls_tadir>.
|
APPEND INITIAL LINE TO ct_tadir ASSIGNING <ls_tadir>.
|
||||||
<ls_tadir>-pgmid = 'R3TR'.
|
<ls_tadir>-pgmid = 'R3TR'.
|
||||||
<ls_tadir>-object = 'NSPC'.
|
<ls_tadir>-object = 'NSPC'.
|
||||||
<ls_tadir>-obj_name = lv_namespace.
|
<ls_tadir>-obj_name = ls_obj_with_namespace-namespace.
|
||||||
<ls_tadir>-devclass = iv_package.
|
<ls_tadir>-devclass = iv_package.
|
||||||
<ls_tadir>-srcsystem = sy-sysid.
|
<ls_tadir>-srcsystem = sy-sysid.
|
||||||
<ls_tadir>-masterlang = sy-langu.
|
<ls_tadir>-masterlang = sy-langu.
|
||||||
|
|
|
@ -11,7 +11,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_SAP_NAMESPACE IMPLEMENTATION.
|
CLASS zcl_abapgit_sap_namespace IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_sap_namespace~exists.
|
METHOD zif_abapgit_sap_namespace~exists.
|
||||||
|
@ -26,4 +26,37 @@ CLASS ZCL_ABAPGIT_SAP_NAMESPACE IMPLEMENTATION.
|
||||||
SELECT SINGLE editflag FROM trnspace INTO lv_editflag WHERE namespace = iv_namespace.
|
SELECT SINGLE editflag FROM trnspace INTO lv_editflag WHERE namespace = iv_namespace.
|
||||||
rv_yes = boolc( sy-subrc = 0 AND lv_editflag = 'X' ).
|
rv_yes = boolc( sy-subrc = 0 AND lv_editflag = 'X' ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_sap_namespace~split_by_name.
|
||||||
|
* use this method instead of function module RS_NAME_SPLIT_NAMESPACE
|
||||||
|
DATA lv_regex TYPE string.
|
||||||
|
DATA lv_object TYPE string.
|
||||||
|
DATA lv_length TYPE i.
|
||||||
|
DATA lr_ex TYPE REF TO cx_root.
|
||||||
|
|
||||||
|
lv_regex = '^\/[^\/]{1,8}\/'.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
FIND REGEX lv_regex IN iv_obj_with_namespace MATCH LENGTH lv_length.
|
||||||
|
CATCH cx_root INTO lr_ex.
|
||||||
|
zcx_abapgit_exception=>raise( lr_ex->get_text( ) ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
IF sy-subrc = 0 AND lv_length > 1.
|
||||||
|
rs_obj_namespace-namespace = iv_obj_with_namespace(lv_length).
|
||||||
|
rs_obj_namespace-obj_without_namespace = iv_obj_with_namespace+lv_length.
|
||||||
|
ELSE.
|
||||||
|
IF iv_obj_with_namespace(1) = '/'.
|
||||||
|
zcx_abapgit_exception=>raise( |The object { iv_obj_with_namespace } has an invalid namespace| ).
|
||||||
|
ENDIF.
|
||||||
|
rs_obj_namespace-obj_without_namespace = iv_obj_with_namespace.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF iv_allow_slash_in_name = abap_false AND rs_obj_namespace-obj_without_namespace CA '/'.
|
||||||
|
zcx_abapgit_exception=>raise(
|
||||||
|
|Object without namespace { rs_obj_namespace-obj_without_namespace } contains a '/'| ).
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
108
src/objects/sap/zcl_abapgit_sap_namespace.clas.testclasses.abap
Normal file
108
src/objects/sap/zcl_abapgit_sap_namespace.clas.testclasses.abap
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
CLASS ltcl_check_split_by_name DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS check_with_namespace FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
METHODS check_without_namespace FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
METHODS check_exc_starts_with_slash FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
METHODS check_exc_slash_in_name_w_ns FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
METHODS check_exc_slash_in_name_wo_ns FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS ltcl_check_split_by_name IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD check_with_namespace.
|
||||||
|
|
||||||
|
DATA lv_obj_with_namespace TYPE tadir-obj_name.
|
||||||
|
DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace.
|
||||||
|
DATA lr_ex TYPE REF TO zcx_abapgit_exception.
|
||||||
|
|
||||||
|
lv_obj_with_namespace = '/BLA12345/TEST/123'.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ).
|
||||||
|
|
||||||
|
CATCH zcx_abapgit_exception INTO lr_ex.
|
||||||
|
cl_abap_unit_assert=>fail( lr_ex->get_text( ) ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = ls_obj_with_namespace-namespace
|
||||||
|
exp = '/BLA12345/' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = ls_obj_with_namespace-obj_without_namespace
|
||||||
|
exp = 'TEST/123' ).
|
||||||
|
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
METHOD check_without_namespace.
|
||||||
|
|
||||||
|
DATA lv_obj_with_namespace TYPE tadir-obj_name.
|
||||||
|
DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace.
|
||||||
|
DATA lr_ex TYPE REF TO zcx_abapgit_exception.
|
||||||
|
|
||||||
|
lv_obj_with_namespace = 'ZCL_ABAPGIT_SAP_NAMESP'.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ).
|
||||||
|
CATCH zcx_abapgit_exception INTO lr_ex.
|
||||||
|
cl_abap_unit_assert=>fail( lr_ex->get_text( ) ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = ls_obj_with_namespace-namespace
|
||||||
|
exp = '' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = ls_obj_with_namespace-obj_without_namespace
|
||||||
|
exp = 'ZCL_ABAPGIT_SAP_NAMESP' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD check_exc_starts_with_slash.
|
||||||
|
|
||||||
|
DATA lv_obj_with_namespace TYPE tadir-obj_name.
|
||||||
|
lv_obj_with_namespace = '/TEST12345/BLA'.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ).
|
||||||
|
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>fail( 'No Exception raised' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD check_exc_slash_in_name_w_ns.
|
||||||
|
DATA lv_obj_with_namespace TYPE tadir-obj_name.
|
||||||
|
lv_obj_with_namespace = '/TEST/TEST/TEST'.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
zcl_abapgit_factory=>get_sap_namespace( )->split_by_name(
|
||||||
|
iv_obj_with_namespace = lv_obj_with_namespace
|
||||||
|
iv_allow_slash_in_name = abap_false ).
|
||||||
|
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>fail( 'No Exception raised' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD check_exc_slash_in_name_wo_ns.
|
||||||
|
DATA lv_obj_with_namespace TYPE tadir-obj_name.
|
||||||
|
lv_obj_with_namespace = 'TEST/TEST'.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
zcl_abapgit_factory=>get_sap_namespace( )->split_by_name(
|
||||||
|
iv_obj_with_namespace = lv_obj_with_namespace
|
||||||
|
iv_allow_slash_in_name = abap_false ).
|
||||||
|
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
RETURN.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>fail( 'No Exception raised' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
||||||
<UNICODE>X</UNICODE>
|
<UNICODE>X</UNICODE>
|
||||||
|
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||||
</VSEOCLASS>
|
</VSEOCLASS>
|
||||||
</asx:values>
|
</asx:values>
|
||||||
</asx:abap>
|
</asx:abap>
|
||||||
|
|
|
@ -3,14 +3,23 @@ INTERFACE zif_abapgit_sap_namespace
|
||||||
|
|
||||||
METHODS exists
|
METHODS exists
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_namespace TYPE trnspace-namespace
|
iv_namespace TYPE trnspace-namespace
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_yes) TYPE abap_bool.
|
VALUE(rv_yes) TYPE abap_bool.
|
||||||
|
|
||||||
METHODS is_editable
|
METHODS is_editable
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_namespace TYPE trnspace-namespace
|
iv_namespace TYPE trnspace-namespace
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_yes) TYPE abap_bool.
|
VALUE(rv_yes) TYPE abap_bool.
|
||||||
|
|
||||||
|
METHODS split_by_name
|
||||||
|
IMPORTING
|
||||||
|
iv_obj_with_namespace TYPE tadir-obj_name
|
||||||
|
iv_allow_slash_in_name TYPE abap_bool DEFAULT abap_true
|
||||||
|
RETURNING
|
||||||
|
VALUE(rs_obj_namespace) TYPE zif_abapgit_definitions=>ty_obj_namespace
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
|
@ -128,6 +128,9 @@ CLASS ltcl_run_checks IMPLEMENTATION.
|
||||||
METHOD zif_abapgit_sap_namespace~is_editable.
|
METHOD zif_abapgit_sap_namespace~is_editable.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_sap_namespace~split_by_name.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD append_result.
|
METHOD append_result.
|
||||||
|
|
||||||
DATA ls_result LIKE LINE OF mt_results.
|
DATA ls_result LIKE LINE OF mt_results.
|
||||||
|
|
|
@ -9,6 +9,11 @@ INTERFACE zif_abapgit_definitions
|
||||||
obj_name TYPE tadir-obj_name,
|
obj_name TYPE tadir-obj_name,
|
||||||
devclass TYPE devclass,
|
devclass TYPE devclass,
|
||||||
END OF ty_item_signature .
|
END OF ty_item_signature .
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_obj_namespace,
|
||||||
|
namespace TYPE trnspace-namespace,
|
||||||
|
obj_without_namespace TYPE tadir-obj_name,
|
||||||
|
END OF ty_obj_namespace.
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_item.
|
BEGIN OF ty_item.
|
||||||
INCLUDE TYPE ty_item_signature.
|
INCLUDE TYPE ty_item_signature.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user