diff --git a/src/ui/routing/zcl_abapgit_services_repo.clas.abap b/src/ui/routing/zcl_abapgit_services_repo.clas.abap index d640a85e1..b62040b55 100644 --- a/src/ui/routing/zcl_abapgit_services_repo.clas.abap +++ b/src/ui/routing/zcl_abapgit_services_repo.clas.abap @@ -71,14 +71,14 @@ CLASS zcl_abapgit_services_repo DEFINITION VALUE(rv_package) TYPE devclass RAISING zcx_abapgit_exception. - CLASS-METHODS check_and_create_package + PROTECTED SECTION. + PRIVATE SECTION. + CLASS-METHODS check_package_exists IMPORTING !iv_package TYPE devclass !it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt RAISING zcx_abapgit_exception. - PROTECTED SECTION. - PRIVATE SECTION. CLASS-METHODS delete_unnecessary_objects IMPORTING @@ -180,7 +180,7 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. ENDMETHOD. - METHOD check_and_create_package. + METHOD check_package_exists. IF zcl_abapgit_factory=>get_sap_package( iv_package )->exists( ) = abap_false. " Check if any package is included in remote @@ -188,8 +188,10 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. WITH KEY file COMPONENTS filename = zcl_abapgit_filename_logic=>c_package_file. IF sy-subrc <> 0. - " If not, prompt to create it - create_package( iv_package ). + " If not, give error + zcx_abapgit_exception=>raise( + iv_text = |Package { iv_package } does not exist and there's no package included in the repository| + iv_longtext = 'Either select an existing package, create a new one, or add a package to the repository' ). ENDIF. ENDIF. @@ -369,6 +371,8 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. METHOD new_offline. + DATA lx_error TYPE REF TO zcx_abapgit_exception. + check_package( is_repo_params ). " create new repo and add to favorites @@ -381,9 +385,15 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. iv_main_lang_only = is_repo_params-main_lang_only iv_abap_lang_vers = is_repo_params-abap_lang_vers ). - check_and_create_package( - iv_package = is_repo_params-package - it_remote = ro_repo->get_files_remote( ) ). + TRY. + check_package_exists( + iv_package = is_repo_params-package + it_remote = ro_repo->get_files_remote( ) ). + CATCH zcx_abapgit_exception INTO lx_error. + zcl_abapgit_repo_srv=>get_instance( )->delete( ro_repo ). + COMMIT WORK. + RAISE EXCEPTION lx_error. + ENDTRY. " Make sure there're no leftovers from previous repos ro_repo->zif_abapgit_repo~checksums( )->rebuild( ). @@ -401,6 +411,8 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. METHOD new_online. + DATA lx_error TYPE REF TO zcx_abapgit_exception. + check_package( is_repo_params ). ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_online( @@ -414,9 +426,15 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. iv_main_lang_only = is_repo_params-main_lang_only iv_abap_lang_vers = is_repo_params-abap_lang_vers ). - check_and_create_package( - iv_package = is_repo_params-package - it_remote = ro_repo->get_files_remote( ) ). + TRY. + check_package_exists( + iv_package = is_repo_params-package + it_remote = ro_repo->get_files_remote( ) ). + CATCH zcx_abapgit_exception INTO lx_error. + zcl_abapgit_repo_srv=>get_instance( )->delete( ro_repo ). + COMMIT WORK. + RAISE EXCEPTION lx_error. + ENDTRY. " Make sure there're no leftovers from previous repos ro_repo->zif_abapgit_repo~checksums( )->rebuild( ).