From 674a04792a155694fb994e7a0645d8dff3f7ab89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Tue, 9 Jan 2024 01:29:52 +0100 Subject: [PATCH] Refactor ZCL_ABAPGIT_OO_FACTORY (#6742) --- src/objects/oo/zcl_abapgit_oo_base.clas.abap | 2 +- src/objects/oo/zcl_abapgit_oo_class.clas.abap | 3 ++- src/objects/oo/zcl_abapgit_oo_factory.clas.abap | 17 +++++------------ .../oo/zcl_abapgit_oo_interface.clas.abap | 3 ++- src/objects/zcl_abapgit_object_clas.clas.abap | 2 +- src/objects/zcl_abapgit_object_intf.clas.abap | 2 +- src/repo/utils/zcl_abapgit_version.clas.abap | 2 +- 7 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/objects/oo/zcl_abapgit_oo_base.clas.abap b/src/objects/oo/zcl_abapgit_oo_base.clas.abap index 9e9cf6ceb..ec043b37d 100644 --- a/src/objects/oo/zcl_abapgit_oo_base.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_base.clas.abap @@ -1,7 +1,7 @@ CLASS zcl_abapgit_oo_base DEFINITION PUBLIC ABSTRACT - CREATE PUBLIC . + CREATE PROTECTED. PUBLIC SECTION. diff --git a/src/objects/oo/zcl_abapgit_oo_class.clas.abap b/src/objects/oo/zcl_abapgit_oo_class.clas.abap index d7c20fe19..68a4263a7 100644 --- a/src/objects/oo/zcl_abapgit_oo_class.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_class.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_abapgit_oo_class DEFINITION PUBLIC INHERITING FROM zcl_abapgit_oo_base - CREATE PUBLIC . + CREATE PUBLIC + GLOBAL FRIENDS zcl_abapgit_oo_factory. PUBLIC SECTION. diff --git a/src/objects/oo/zcl_abapgit_oo_factory.clas.abap b/src/objects/oo/zcl_abapgit_oo_factory.clas.abap index 16d9d5e9b..a47c00f83 100644 --- a/src/objects/oo/zcl_abapgit_oo_factory.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_factory.clas.abap @@ -2,13 +2,13 @@ CLASS zcl_abapgit_oo_factory DEFINITION PUBLIC. PUBLIC SECTION. CLASS-METHODS: - make + get_by_type IMPORTING iv_object_type TYPE tadir-object RETURNING VALUE(ri_object_oriented_object) TYPE REF TO zif_abapgit_oo_object_fnc, - make_by_name + get_by_name IMPORTING iv_object_name TYPE seoclsname RETURNING @@ -16,21 +16,13 @@ CLASS zcl_abapgit_oo_factory DEFINITION PUBLIC. RAISING zcx_abapgit_exception. - PRIVATE SECTION. - CLASS-DATA gi_object_oriented_object TYPE REF TO zif_abapgit_oo_object_fnc . - ENDCLASS. CLASS zcl_abapgit_oo_factory IMPLEMENTATION. - - METHOD make. - IF gi_object_oriented_object IS BOUND. - ri_object_oriented_object = gi_object_oriented_object. - RETURN. - ENDIF. + METHOD get_by_type. IF iv_object_type = 'CLAS'. CREATE OBJECT ri_object_oriented_object TYPE zcl_abapgit_oo_class. ELSEIF iv_object_type = 'INTF'. @@ -39,7 +31,7 @@ CLASS zcl_abapgit_oo_factory IMPLEMENTATION. ENDMETHOD. - METHOD make_by_name. + METHOD get_by_name. DATA: li_interface TYPE REF TO zif_abapgit_oo_object_fnc, @@ -63,4 +55,5 @@ CLASS zcl_abapgit_oo_factory IMPLEMENTATION. zcx_abapgit_exception=>raise( |{ iv_object_name } is neither a class nor an interface| ). ENDMETHOD. + ENDCLASS. diff --git a/src/objects/oo/zcl_abapgit_oo_interface.clas.abap b/src/objects/oo/zcl_abapgit_oo_interface.clas.abap index 986b1020f..16114b829 100644 --- a/src/objects/oo/zcl_abapgit_oo_interface.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_interface.clas.abap @@ -1,7 +1,8 @@ CLASS zcl_abapgit_oo_interface DEFINITION PUBLIC INHERITING FROM zcl_abapgit_oo_base - CREATE PUBLIC . + CREATE PUBLIC + GLOBAL FRIENDS zcl_abapgit_oo_factory. PUBLIC SECTION. diff --git a/src/objects/zcl_abapgit_object_clas.clas.abap b/src/objects/zcl_abapgit_object_clas.clas.abap index b089fc036..dd8a06903 100644 --- a/src/objects/zcl_abapgit_object_clas.clas.abap +++ b/src/objects/zcl_abapgit_object_clas.clas.abap @@ -154,7 +154,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. io_files = io_files io_i18n_params = io_i18n_params ). - CREATE OBJECT mi_object_oriented_object_fct TYPE zcl_abapgit_oo_class. + mi_object_oriented_object_fct = zcl_abapgit_oo_factory=>get_by_type( ms_item-obj_type ). mv_classpool_name = cl_oo_classname_service=>get_classpool_name( |{ is_item-obj_name }| ). diff --git a/src/objects/zcl_abapgit_object_intf.clas.abap b/src/objects/zcl_abapgit_object_intf.clas.abap index 52542eb01..a3db0dd4c 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.abap @@ -121,7 +121,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. io_files = io_files io_i18n_params = io_i18n_params ). - mi_object_oriented_object_fct = zcl_abapgit_oo_factory=>make( ms_item-obj_type ). + mi_object_oriented_object_fct = zcl_abapgit_oo_factory=>get_by_type( ms_item-obj_type ). CREATE OBJECT li_aff_registry TYPE zcl_abapgit_aff_registry. diff --git a/src/repo/utils/zcl_abapgit_version.clas.abap b/src/repo/utils/zcl_abapgit_version.clas.abap index e6ec599f2..f35934194 100644 --- a/src/repo/utils/zcl_abapgit_version.clas.abap +++ b/src/repo/utils/zcl_abapgit_version.clas.abap @@ -216,7 +216,7 @@ CLASS zcl_abapgit_version IMPLEMENTATION. " You should remember that accessing a class or an interface with syntax errors " gives us a shortdump. Therefore we do a syntax check here. - zcl_abapgit_oo_factory=>make_by_name( lv_version_class )->syntax_check( lv_version_class ). + zcl_abapgit_oo_factory=>get_by_name( lv_version_class )->syntax_check( lv_version_class ). ASSIGN (lv_version_class)=>(lv_version_component) TO . IF sy-subrc = 0.