abapgit-agent 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +2 -0
  2. package/abap/guidelines/00_index.md +35 -0
  3. package/abap/guidelines/01_sql.md +72 -0
  4. package/abap/guidelines/02_exceptions.md +108 -0
  5. package/abap/guidelines/03_testing.md +252 -0
  6. package/abap/guidelines/04_cds.md +120 -0
  7. package/abap/guidelines/05_classes.md +50 -0
  8. package/abap/guidelines/06_objects.md +103 -0
  9. package/abap/guidelines/07_json.md +22 -0
  10. package/abap/guidelines/08_abapgit.md +193 -0
  11. package/bin/abapgit-agent +597 -44
  12. package/bin/abgagt +24 -0
  13. package/package.json +11 -3
  14. package/src/abap-client.js +65 -2
  15. package/src/agent.js +58 -4
  16. package/src/config.js +9 -2
  17. package/src/ref-search.js +989 -0
  18. package/.abapGitAgent.example +0 -11
  19. package/.github/workflows/release.yml +0 -57
  20. package/API.md +0 -710
  21. package/CLAUDE.md +0 -1031
  22. package/CLAUDE_MEM.md +0 -88
  23. package/ERROR_HANDLING.md +0 -30
  24. package/INSTALL.md +0 -155
  25. package/RELEASE_NOTES.md +0 -143
  26. package/abap/CLAUDE.md +0 -898
  27. package/abap/copilot-instructions.md +0 -79
  28. package/abap/package.devc.xml +0 -10
  29. package/abap/zcl_abgagt_agent.clas.abap +0 -420
  30. package/abap/zcl_abgagt_agent.clas.xml +0 -15
  31. package/abap/zcl_abgagt_cmd_factory.clas.abap +0 -48
  32. package/abap/zcl_abgagt_cmd_factory.clas.xml +0 -15
  33. package/abap/zcl_abgagt_command_create.clas.abap +0 -95
  34. package/abap/zcl_abgagt_command_create.clas.xml +0 -15
  35. package/abap/zcl_abgagt_command_import.clas.abap +0 -138
  36. package/abap/zcl_abgagt_command_import.clas.xml +0 -15
  37. package/abap/zcl_abgagt_command_inspect.clas.abap +0 -411
  38. package/abap/zcl_abgagt_command_inspect.clas.testclasses.abap +0 -121
  39. package/abap/zcl_abgagt_command_inspect.clas.xml +0 -16
  40. package/abap/zcl_abgagt_command_preview.clas.abap +0 -386
  41. package/abap/zcl_abgagt_command_preview.clas.xml +0 -15
  42. package/abap/zcl_abgagt_command_pull.clas.abap +0 -80
  43. package/abap/zcl_abgagt_command_pull.clas.testclasses.abap +0 -87
  44. package/abap/zcl_abgagt_command_pull.clas.xml +0 -16
  45. package/abap/zcl_abgagt_command_tree.clas.abap +0 -237
  46. package/abap/zcl_abgagt_command_tree.clas.xml +0 -15
  47. package/abap/zcl_abgagt_command_unit.clas.abap +0 -297
  48. package/abap/zcl_abgagt_command_unit.clas.xml +0 -15
  49. package/abap/zcl_abgagt_command_view.clas.abap +0 -240
  50. package/abap/zcl_abgagt_command_view.clas.xml +0 -15
  51. package/abap/zcl_abgagt_resource_create.clas.abap +0 -71
  52. package/abap/zcl_abgagt_resource_create.clas.xml +0 -15
  53. package/abap/zcl_abgagt_resource_health.clas.abap +0 -25
  54. package/abap/zcl_abgagt_resource_health.clas.xml +0 -15
  55. package/abap/zcl_abgagt_resource_import.clas.abap +0 -66
  56. package/abap/zcl_abgagt_resource_import.clas.xml +0 -15
  57. package/abap/zcl_abgagt_resource_inspect.clas.abap +0 -62
  58. package/abap/zcl_abgagt_resource_inspect.clas.xml +0 -15
  59. package/abap/zcl_abgagt_resource_preview.clas.abap +0 -67
  60. package/abap/zcl_abgagt_resource_preview.clas.xml +0 -15
  61. package/abap/zcl_abgagt_resource_pull.clas.abap +0 -71
  62. package/abap/zcl_abgagt_resource_pull.clas.xml +0 -15
  63. package/abap/zcl_abgagt_resource_tree.clas.abap +0 -70
  64. package/abap/zcl_abgagt_resource_tree.clas.xml +0 -15
  65. package/abap/zcl_abgagt_resource_unit.clas.abap +0 -64
  66. package/abap/zcl_abgagt_resource_unit.clas.xml +0 -15
  67. package/abap/zcl_abgagt_resource_view.clas.abap +0 -68
  68. package/abap/zcl_abgagt_resource_view.clas.xml +0 -15
  69. package/abap/zcl_abgagt_rest_handler.clas.abap +0 -32
  70. package/abap/zcl_abgagt_rest_handler.clas.xml +0 -15
  71. package/abap/zcl_abgagt_util.clas.abap +0 -93
  72. package/abap/zcl_abgagt_util.clas.testclasses.abap +0 -84
  73. package/abap/zcl_abgagt_util.clas.xml +0 -16
  74. package/abap/zcl_abgagt_viewer_clas.clas.abap +0 -58
  75. package/abap/zcl_abgagt_viewer_clas.clas.xml +0 -15
  76. package/abap/zcl_abgagt_viewer_ddls.clas.abap +0 -83
  77. package/abap/zcl_abgagt_viewer_ddls.clas.xml +0 -15
  78. package/abap/zcl_abgagt_viewer_dtel.clas.abap +0 -98
  79. package/abap/zcl_abgagt_viewer_dtel.clas.xml +0 -15
  80. package/abap/zcl_abgagt_viewer_factory.clas.abap +0 -41
  81. package/abap/zcl_abgagt_viewer_factory.clas.xml +0 -15
  82. package/abap/zcl_abgagt_viewer_intf.clas.abap +0 -58
  83. package/abap/zcl_abgagt_viewer_intf.clas.xml +0 -15
  84. package/abap/zcl_abgagt_viewer_stru.clas.abap +0 -59
  85. package/abap/zcl_abgagt_viewer_stru.clas.xml +0 -15
  86. package/abap/zcl_abgagt_viewer_tabl.clas.abap +0 -59
  87. package/abap/zcl_abgagt_viewer_tabl.clas.xml +0 -15
  88. package/abap/zcl_abgagt_viewer_ttyp.clas.abap +0 -93
  89. package/abap/zcl_abgagt_viewer_ttyp.clas.xml +0 -15
  90. package/abap/zif_abgagt_agent.intf.abap +0 -53
  91. package/abap/zif_abgagt_agent.intf.xml +0 -15
  92. package/abap/zif_abgagt_cmd_factory.intf.abap +0 -7
  93. package/abap/zif_abgagt_cmd_factory.intf.xml +0 -15
  94. package/abap/zif_abgagt_command.intf.abap +0 -26
  95. package/abap/zif_abgagt_command.intf.xml +0 -15
  96. package/abap/zif_abgagt_util.intf.abap +0 -28
  97. package/abap/zif_abgagt_util.intf.xml +0 -15
  98. package/abap/zif_abgagt_viewer.intf.abap +0 -12
  99. package/abap/zif_abgagt_viewer.intf.xml +0 -15
  100. package/docs/commands.md +0 -142
  101. package/docs/create-command.md +0 -129
  102. package/docs/health-command.md +0 -89
  103. package/docs/import-command.md +0 -195
  104. package/docs/init-command.md +0 -189
  105. package/docs/inspect-command.md +0 -158
  106. package/docs/preview-command.md +0 -528
  107. package/docs/pull-command.md +0 -188
  108. package/docs/status-command.md +0 -68
  109. package/docs/tree-command.md +0 -303
  110. package/docs/unit-command.md +0 -167
  111. package/docs/view-command.md +0 -501
  112. package/img/claude.png +0 -0
  113. package/scripts/claude-integration.js +0 -351
  114. package/scripts/release.sh +0 -60
  115. package/scripts/test-integration.js +0 -139
@@ -1,71 +0,0 @@
1
- *"*"use source
2
- *"*"Local Interface:
3
- *"**********************************************************************
4
- CLASS zcl_abgagt_resource_pull DEFINITION PUBLIC FINAL
5
- INHERITING FROM cl_rest_resource
6
- CREATE PUBLIC.
7
-
8
- PUBLIC SECTION.
9
- METHODS if_rest_resource~post REDEFINITION.
10
-
11
- ENDCLASS.
12
-
13
- CLASS zcl_abgagt_resource_pull IMPLEMENTATION.
14
-
15
- METHOD if_rest_resource~post.
16
- DATA lv_json TYPE string.
17
- lv_json = mo_request->get_entity( )->get_string_data( ).
18
-
19
- " Parse JSON using /ui2/cl_json
20
- DATA: BEGIN OF ls_request,
21
- url TYPE string,
22
- branch TYPE string,
23
- username TYPE string,
24
- password TYPE string,
25
- transport_request TYPE string,
26
- files TYPE string_table,
27
- END OF ls_request.
28
-
29
- /ui2/cl_json=>deserialize(
30
- EXPORTING
31
- json = lv_json
32
- CHANGING
33
- data = ls_request ).
34
-
35
- IF ls_request-branch IS INITIAL.
36
- ls_request-branch = 'main'.
37
- ENDIF.
38
-
39
- DATA lv_json_resp TYPE string.
40
- IF ls_request-url IS INITIAL.
41
- lv_json_resp = '{"success":"","job_id":"","error":"URL is required"}'.
42
- DATA(lo_entity) = mo_response->create_entity( ).
43
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
44
- lo_entity->set_string_data( lv_json_resp ).
45
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
46
- RETURN.
47
- ENDIF.
48
-
49
- " Get command from factory
50
- DATA(lo_factory) = zcl_abgagt_cmd_factory=>get_instance( ).
51
- DATA(lo_command) = lo_factory->get_command( zif_abgagt_command=>gc_pull ).
52
-
53
- IF lo_command IS NOT BOUND.
54
- lv_json_resp = '{"success":"","error":"PULL command not found"}'.
55
- lo_entity = mo_response->create_entity( ).
56
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
57
- lo_entity->set_string_data( lv_json_resp ).
58
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
59
- RETURN.
60
- ENDIF.
61
-
62
- " Execute command with is_param
63
- DATA(lv_result) = lo_command->execute( is_param = ls_request ).
64
-
65
- lo_entity = mo_response->create_entity( ).
66
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
67
- lo_entity->set_string_data( lv_result ).
68
- mo_response->set_status( cl_rest_status_code=>gc_success_ok ).
69
- ENDMETHOD.
70
-
71
- ENDCLASS.
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4
- <asx:values>
5
- <VSEOCLASS>
6
- <CLSNAME>ZCL_ABGAGT_RESOURCE_PULL</CLSNAME>
7
- <LANGU>E</LANGU>
8
- <DESCRIPT>ABAP Git Agent - Pull Resource</DESCRIPT>
9
- <EXPOSURE>2</EXPOSURE>
10
- <STATE>1</STATE>
11
- <UNICODE>X</UNICODE>
12
- </VSEOCLASS>
13
- </asx:values>
14
- </asx:abap>
15
- </abapGit>
@@ -1,70 +0,0 @@
1
- *"*"use source
2
- *"*"Local Interface:
3
- *"**********************************************************************
4
- CLASS zcl_abgagt_resource_tree DEFINITION PUBLIC FINAL
5
- INHERITING FROM cl_rest_resource
6
- CREATE PUBLIC.
7
-
8
- PUBLIC SECTION.
9
- METHODS if_rest_resource~post REDEFINITION.
10
-
11
- ENDCLASS.
12
-
13
- CLASS zcl_abgagt_resource_tree IMPLEMENTATION.
14
-
15
- METHOD if_rest_resource~post.
16
- DATA lv_json TYPE string.
17
- lv_json = mo_request->get_entity( )->get_string_data( ).
18
-
19
- " Parse JSON using /ui2/cl_json
20
- DATA: BEGIN OF ls_request,
21
- package TYPE string,
22
- depth TYPE i,
23
- include_objects TYPE abap_bool,
24
- END OF ls_request.
25
-
26
- /ui2/cl_json=>deserialize(
27
- EXPORTING
28
- json = lv_json
29
- CHANGING
30
- data = ls_request ).
31
-
32
- DATA lv_json_resp TYPE string.
33
-
34
- IF ls_request-package IS INITIAL.
35
- lv_json_resp = '{"success":"","command":"TREE","error":"Package is required"}'.
36
- DATA(lo_entity) = mo_response->create_entity( ).
37
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
38
- lo_entity->set_string_data( lv_json_resp ).
39
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
40
- RETURN.
41
- ENDIF.
42
-
43
- " Get command from factory
44
- DATA(lo_factory) = zcl_abgagt_cmd_factory=>get_instance( ).
45
- DATA(lo_command) = lo_factory->get_command( zif_abgagt_command=>gc_tree ).
46
-
47
- IF lo_command IS NOT BOUND.
48
- lv_json_resp = '{"success":"","command":"TREE","error":"TREE command not found"}'.
49
- lo_entity = mo_response->create_entity( ).
50
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
51
- lo_entity->set_string_data( lv_json_resp ).
52
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
53
- RETURN.
54
- ENDIF.
55
-
56
- " Execute command with is_param
57
- DATA ls_params TYPE zcl_abgagt_command_tree=>ty_tree_params.
58
- ls_params-package = ls_request-package.
59
- ls_params-depth = ls_request-depth.
60
- ls_params-include_objects = ls_request-include_objects.
61
-
62
- DATA(lv_result) = lo_command->execute( is_param = ls_params ).
63
-
64
- lo_entity = mo_response->create_entity( ).
65
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
66
- lo_entity->set_string_data( lv_result ).
67
- mo_response->set_status( cl_rest_status_code=>gc_success_ok ).
68
- ENDMETHOD.
69
-
70
- ENDCLASS.
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4
- <asx:values>
5
- <VSEOCLASS>
6
- <CLSNAME>ZCL_ABGAGT_RESOURCE_TREE</CLSNAME>
7
- <LANGU>E</LANGU>
8
- <DESCRIPT>ABAP Git Agent - Tree Resource</DESCRIPT>
9
- <EXPOSURE>2</EXPOSURE>
10
- <STATE>1</STATE>
11
- <UNICODE>X</UNICODE>
12
- </VSEOCLASS>
13
- </asx:values>
14
- </asx:abap>
15
- </abapGit>
@@ -1,64 +0,0 @@
1
- *"*"use source
2
- *"*"Local Interface:
3
- *"**********************************************************************
4
- CLASS zcl_abgagt_resource_unit DEFINITION PUBLIC FINAL
5
- INHERITING FROM cl_rest_resource
6
- CREATE PUBLIC.
7
-
8
- PUBLIC SECTION.
9
- METHODS if_rest_resource~post REDEFINITION.
10
-
11
- ENDCLASS.
12
-
13
- CLASS zcl_abgagt_resource_unit IMPLEMENTATION.
14
-
15
- METHOD if_rest_resource~post.
16
- DATA lv_json TYPE string.
17
- lv_json = mo_request->get_entity( )->get_string_data( ).
18
-
19
- " Parse JSON using /ui2/cl_json
20
- DATA: BEGIN OF ls_request,
21
- package TYPE string,
22
- files TYPE string_table,
23
- END OF ls_request.
24
-
25
- /ui2/cl_json=>deserialize(
26
- EXPORTING
27
- json = lv_json
28
- CHANGING
29
- data = ls_request ).
30
-
31
- DATA lv_json_resp TYPE string.
32
-
33
- IF ls_request-package IS INITIAL AND ( ls_request-files IS INITIAL OR lines( ls_request-files ) = 0 ).
34
- lv_json_resp = '{"success":"","message":"Package or files required"}'.
35
- DATA(lo_entity) = mo_response->create_entity( ).
36
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
37
- lo_entity->set_string_data( lv_json_resp ).
38
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
39
- RETURN.
40
- ENDIF.
41
-
42
- " Get command from factory
43
- DATA(lo_factory) = zcl_abgagt_cmd_factory=>get_instance( ).
44
- DATA(lo_command) = lo_factory->get_command( zif_abgagt_command=>gc_unit ).
45
-
46
- IF lo_command IS NOT BOUND.
47
- lv_json_resp = '{"success":"","error":"UNIT command not found"}'.
48
- lo_entity = mo_response->create_entity( ).
49
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
50
- lo_entity->set_string_data( lv_json_resp ).
51
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
52
- RETURN.
53
- ENDIF.
54
-
55
- " Execute command with is_param
56
- DATA(lv_result) = lo_command->execute( is_param = ls_request ).
57
-
58
- lo_entity = mo_response->create_entity( ).
59
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
60
- lo_entity->set_string_data( lv_result ).
61
- mo_response->set_status( cl_rest_status_code=>gc_success_ok ).
62
- ENDMETHOD.
63
-
64
- ENDCLASS.
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4
- <asx:values>
5
- <VSEOCLASS>
6
- <CLSNAME>ZCL_ABGAGT_RESOURCE_UNIT</CLSNAME>
7
- <LANGU>E</LANGU>
8
- <DESCRIPT>ABAP Git Agent - Unit Test Resource</DESCRIPT>
9
- <EXPOSURE>2</EXPOSURE>
10
- <STATE>1</STATE>
11
- <UNICODE>X</UNICODE>
12
- </VSEOCLASS>
13
- </asx:values>
14
- </asx:abap>
15
- </abapGit>
@@ -1,68 +0,0 @@
1
- *"*"use source
2
- *"*"Local Interface:
3
- *"**********************************************************************
4
- CLASS zcl_abgagt_resource_view DEFINITION PUBLIC FINAL
5
- INHERITING FROM cl_rest_resource
6
- CREATE PUBLIC.
7
-
8
- PUBLIC SECTION.
9
- METHODS if_rest_resource~post REDEFINITION.
10
-
11
- ENDCLASS.
12
-
13
- CLASS zcl_abgagt_resource_view IMPLEMENTATION.
14
-
15
- METHOD if_rest_resource~post.
16
- DATA lv_json TYPE string.
17
- lv_json = mo_request->get_entity( )->get_string_data( ).
18
-
19
- " Parse JSON using /ui2/cl_json
20
- DATA: BEGIN OF ls_request,
21
- objects TYPE string_table,
22
- type TYPE string,
23
- END OF ls_request.
24
-
25
- /ui2/cl_json=>deserialize(
26
- EXPORTING
27
- json = lv_json
28
- CHANGING
29
- data = ls_request ).
30
-
31
- DATA lv_json_resp TYPE string.
32
-
33
- IF ls_request-objects IS INITIAL.
34
- lv_json_resp = '{"success":false,"command":"VIEW","error":"Objects parameter is required"}'.
35
- DATA(lo_entity) = mo_response->create_entity( ).
36
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
37
- lo_entity->set_string_data( lv_json_resp ).
38
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
39
- RETURN.
40
- ENDIF.
41
-
42
- " Get command from factory
43
- DATA(lo_factory) = zcl_abgagt_cmd_factory=>get_instance( ).
44
- DATA(lo_command) = lo_factory->get_command( zif_abgagt_command=>gc_view ).
45
-
46
- IF lo_command IS NOT BOUND.
47
- lv_json_resp = '{"success":false,"command":"VIEW","error":"VIEW command not found"}'.
48
- lo_entity = mo_response->create_entity( ).
49
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
50
- lo_entity->set_string_data( lv_json_resp ).
51
- mo_response->set_status( cl_rest_status_code=>gc_client_error_bad_request ).
52
- RETURN.
53
- ENDIF.
54
-
55
- " Execute command with is_param
56
- DATA ls_params TYPE zcl_abgagt_command_view=>ty_view_params.
57
- ls_params-objects = ls_request-objects.
58
- ls_params-type = ls_request-type.
59
-
60
- DATA(lv_result) = lo_command->execute( is_param = ls_params ).
61
-
62
- lo_entity = mo_response->create_entity( ).
63
- lo_entity->set_content_type( iv_media_type = if_rest_media_type=>gc_appl_json ).
64
- lo_entity->set_string_data( lv_result ).
65
- mo_response->set_status( cl_rest_status_code=>gc_success_ok ).
66
- ENDMETHOD.
67
-
68
- ENDCLASS.
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4
- <asx:values>
5
- <VSEOCLASS>
6
- <CLSNAME>ZCL_ABGAGT_RESOURCE_VIEW</CLSNAME>
7
- <LANGU>E</LANGU>
8
- <DESCRIPT>VIEW command REST resource handler</DESCRIPT>
9
- <EXPOSURE>2</EXPOSURE>
10
- <STATE>1</STATE>
11
- <UNICODE>X</UNICODE>
12
- </VSEOCLASS>
13
- </asx:values>
14
- </asx:abap>
15
- </abapGit>
@@ -1,32 +0,0 @@
1
- *"*"use source
2
- *"* Local Interface:
3
- *"----------------------------------------------------------------------
4
- CLASS zcl_abgagt_rest_handler DEFINITION PUBLIC INHERITING FROM cl_rest_http_handler CREATE PUBLIC.
5
-
6
- PUBLIC SECTION.
7
- METHODS: if_rest_application~get_root_handler REDEFINITION.
8
-
9
- PRIVATE SECTION.
10
-
11
- ENDCLASS.
12
-
13
- CLASS zcl_abgagt_rest_handler IMPLEMENTATION.
14
-
15
- METHOD if_rest_application~get_root_handler.
16
- DATA lo_router TYPE REF TO cl_rest_router.
17
- CREATE OBJECT lo_router.
18
-
19
- lo_router->attach( iv_template = '/pull' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_PULL' ).
20
- lo_router->attach( iv_template = '/health' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_HEALTH' ).
21
- lo_router->attach( iv_template = '/inspect' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_INSPECT' ).
22
- lo_router->attach( iv_template = '/unit' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_UNIT' ).
23
- lo_router->attach( iv_template = '/create' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_CREATE' ).
24
- lo_router->attach( iv_template = '/import' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_IMPORT' ).
25
- lo_router->attach( iv_template = '/tree' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_TREE' ).
26
- lo_router->attach( iv_template = '/view' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_VIEW' ).
27
- lo_router->attach( iv_template = '/preview' iv_handler_class = 'ZCL_ABGAGT_RESOURCE_PREVIEW' ).
28
-
29
- ro_root_handler = lo_router.
30
- ENDMETHOD.
31
-
32
- ENDCLASS.
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4
- <asx:values>
5
- <VSEOCLASS>
6
- <CLSNAME>ZCL_ABGAGT_REST_HANDLER</CLSNAME>
7
- <LANGU>E</LANGU>
8
- <DESCRIPT>ABAP Git Agent - REST Handler</DESCRIPT>
9
- <EXPOSURE>2</EXPOSURE>
10
- <STATE>1</STATE>
11
- <UNICODE>X</UNICODE>
12
- </VSEOCLASS>
13
- </asx:values>
14
- </asx:abap>
15
- </abapGit>
@@ -1,93 +0,0 @@
1
- "* Use this source text module for the class definition
2
- CLASS zcl_abgagt_util DEFINITION PUBLIC FINAL CREATE PUBLIC.
3
- PUBLIC SECTION.
4
- INTERFACES zif_abgagt_util.
5
- CLASS-METHODS get_instance
6
- RETURNING VALUE(ro_util) TYPE REF TO zcl_abgagt_util.
7
- PRIVATE SECTION.
8
- DATA mv_log TYPE string.
9
- DATA mv_has_error TYPE abap_bool.
10
- ENDCLASS.
11
-
12
- CLASS zcl_abgagt_util IMPLEMENTATION.
13
- METHOD get_instance.
14
- DATA lo_util TYPE REF TO zcl_abgagt_util.
15
- CREATE OBJECT lo_util.
16
- ro_util = lo_util.
17
- ENDMETHOD.
18
-
19
- METHOD zif_abgagt_util~parse_file_to_object.
20
- " Parse file path to extract obj_type and obj_name
21
- " Example: "zcl_my_class.clas.abap" -> CLAS, ZCL_MY_CLASS
22
- " Example: "src/zcl_my_class.clas.abap" -> CLAS, ZCL_MY_CLASS
23
-
24
- DATA lv_upper TYPE string.
25
- lv_upper = iv_file.
26
- TRANSLATE lv_upper TO UPPER CASE.
27
-
28
- " Split filename by '.' to get parts
29
- DATA lt_parts TYPE TABLE OF string.
30
- SPLIT lv_upper AT '.' INTO TABLE lt_parts.
31
- DATA lv_part_count TYPE i.
32
- lv_part_count = lines( lt_parts ).
33
-
34
- IF lv_part_count < 3.
35
- RETURN.
36
- ENDIF.
37
-
38
- " Last part should be 'ABAP' or 'ASDDLS' for verification
39
- READ TABLE lt_parts INDEX lv_part_count INTO DATA(lv_last).
40
- IF lv_last <> 'ABAP' AND lv_last <> 'ASDDLS'.
41
- RETURN.
42
- ENDIF.
43
-
44
- " First part is obj_name (may contain path), second part is obj_type
45
- DATA lv_obj_name TYPE string.
46
- DATA lv_obj_type_raw TYPE string.
47
- READ TABLE lt_parts INDEX 1 INTO lv_obj_name.
48
- READ TABLE lt_parts INDEX 2 INTO lv_obj_type_raw.
49
-
50
- " Convert file extension to object type
51
- CASE lv_obj_type_raw.
52
- WHEN 'CLAS' OR 'CLASS'.
53
- ev_obj_type = 'CLAS'.
54
- WHEN 'INTF' OR 'INTERFACE'.
55
- ev_obj_type = 'INTF'.
56
- WHEN 'PROG' OR 'PROGRAM'.
57
- ev_obj_type = 'PROG'.
58
- WHEN 'FUGR' OR 'FUGROUP'.
59
- ev_obj_type = 'FUGR'.
60
- WHEN 'TABL' OR 'TABLE'.
61
- ev_obj_type = 'TABL'.
62
- WHEN 'DDLS'.
63
- ev_obj_type = 'DDLS'.
64
- WHEN OTHERS.
65
- ev_obj_type = lv_obj_type_raw.
66
- ENDCASE.
67
-
68
- " Extract file name from obj_name (remove path prefix)
69
- DATA lv_len TYPE i.
70
- lv_len = strlen( lv_obj_name ).
71
- DATA lv_offs TYPE i.
72
- lv_offs = find( val = reverse( lv_obj_name ) sub = '/' ).
73
- IF lv_offs > 0.
74
- lv_offs = lv_len - lv_offs - 1.
75
- lv_obj_name = lv_obj_name+lv_offs.
76
- ENDIF.
77
-
78
- " Remove leading '/' if present
79
- IF lv_obj_name(1) = '/'.
80
- lv_obj_name = lv_obj_name+1.
81
- ENDIF.
82
-
83
- ev_obj_name = lv_obj_name.
84
- ENDMETHOD.
85
-
86
- METHOD zif_abgagt_util~check_log_for_errors.
87
- rv_has_error = mv_has_error.
88
- ENDMETHOD.
89
-
90
- METHOD zif_abgagt_util~get_log_detail.
91
- rv_detail = mv_log.
92
- ENDMETHOD.
93
- ENDCLASS.
@@ -1,84 +0,0 @@
1
- *"* use this source file for your test class implementation
2
- *"* local test class
3
- CLASS ltcl_zcl_abgagt_util DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
4
- PRIVATE SECTION.
5
- DATA mo_util TYPE REF TO zcl_abgagt_util.
6
-
7
- METHODS setup.
8
- METHODS test_parse_clas FOR TESTING.
9
- METHODS test_parse_intf FOR TESTING.
10
- METHODS test_parse_with_path FOR TESTING.
11
- METHODS test_parse_invalid FOR TESTING.
12
- ENDCLASS.
13
-
14
- CLASS ltcl_zcl_abgagt_util IMPLEMENTATION.
15
-
16
- METHOD setup.
17
- mo_util = zcl_abgagt_util=>get_instance( ).
18
- ENDMETHOD.
19
-
20
- METHOD test_parse_clas.
21
- " Test parsing CLAS file
22
- DATA lv_obj_type TYPE string.
23
- DATA lv_obj_name TYPE string.
24
-
25
- mo_util->zif_abgagt_util~parse_file_to_object(
26
- EXPORTING iv_file = 'zcl_my_class.clas.abap'
27
- IMPORTING ev_obj_type = lv_obj_type
28
- ev_obj_name = lv_obj_name ).
29
-
30
- cl_abap_unit_assert=>assert_equals(
31
- act = lv_obj_type exp = 'CLAS' msg = 'Object type should be CLAS' ).
32
- cl_abap_unit_assert=>assert_equals(
33
- act = lv_obj_name exp = 'ZCL_MY_CLASS' msg = 'Object name mismatch' ).
34
- ENDMETHOD.
35
-
36
- METHOD test_parse_intf.
37
- " Test parsing INTF file
38
- DATA lv_obj_type TYPE string.
39
- DATA lv_obj_name TYPE string.
40
-
41
- mo_util->zif_abgagt_util~parse_file_to_object(
42
- EXPORTING iv_file = 'zif_my_intf.intf.abap'
43
- IMPORTING ev_obj_type = lv_obj_type
44
- ev_obj_name = lv_obj_name ).
45
-
46
- cl_abap_unit_assert=>assert_equals(
47
- act = lv_obj_type exp = 'INTF' msg = 'Object type should be INTF' ).
48
- cl_abap_unit_assert=>assert_equals(
49
- act = lv_obj_name exp = 'ZIF_MY_INTF' msg = 'Object name mismatch' ).
50
- ENDMETHOD.
51
-
52
- METHOD test_parse_with_path.
53
- " Test parsing file with path
54
- DATA lv_obj_type TYPE string.
55
- DATA lv_obj_name TYPE string.
56
-
57
- mo_util->zif_abgagt_util~parse_file_to_object(
58
- EXPORTING iv_file = 'src/zcl_my_class.clas.abap'
59
- IMPORTING ev_obj_type = lv_obj_type
60
- ev_obj_name = lv_obj_name ).
61
-
62
- cl_abap_unit_assert=>assert_equals(
63
- act = lv_obj_type exp = 'CLAS' msg = 'Object type should be CLAS' ).
64
- cl_abap_unit_assert=>assert_equals(
65
- act = lv_obj_name exp = 'ZCL_MY_CLASS' msg = 'Path should be stripped' ).
66
- ENDMETHOD.
67
-
68
- METHOD test_parse_invalid.
69
- " Test parsing invalid file (should return empty)
70
- DATA lv_obj_type TYPE string.
71
- DATA lv_obj_name TYPE string.
72
-
73
- mo_util->zif_abgagt_util~parse_file_to_object(
74
- EXPORTING iv_file = 'invalid_file.txt'
75
- IMPORTING ev_obj_type = lv_obj_type
76
- ev_obj_name = lv_obj_name ).
77
-
78
- cl_abap_unit_assert=>assert_initial(
79
- act = lv_obj_type msg = 'Invalid file should return empty type' ).
80
- cl_abap_unit_assert=>assert_initial(
81
- act = lv_obj_name msg = 'Invalid file should return empty name' ).
82
- ENDMETHOD.
83
-
84
- ENDCLASS.
@@ -1,16 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4
- <asx:values>
5
- <VSEOCLASS>
6
- <CLSNAME>ZCL_ABGAGT_UTIL</CLSNAME>
7
- <LANGU>E</LANGU>
8
- <DESCRIPT>Utility Class for ABAP Git Agent</DESCRIPT>
9
- <EXPOSURE>2</EXPOSURE>
10
- <STATE>1</STATE>
11
- <UNICODE>X</UNICODE>
12
- <WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
13
- </VSEOCLASS>
14
- </asx:values>
15
- </asx:abap>
16
- </abapGit>
@@ -1,58 +0,0 @@
1
- *"*"use source
2
- *"*"Local Interface:
3
- *"**********************************************************************
4
- CLASS zcl_abgagt_viewer_clas DEFINITION PUBLIC FINAL CREATE PUBLIC.
5
-
6
- PUBLIC SECTION.
7
- INTERFACES zif_abgagt_viewer.
8
-
9
- ENDCLASS.
10
-
11
- CLASS zcl_abgagt_viewer_clas IMPLEMENTATION.
12
-
13
- METHOD zif_abgagt_viewer~get_info.
14
- DATA: lv_obj_name TYPE tadir-obj_name,
15
- lv_devclass TYPE tadir-devclass,
16
- lv_prog TYPE program,
17
- lt_source TYPE TABLE OF string,
18
- lv_line TYPE string.
19
-
20
- SELECT SINGLE obj_name devclass FROM tadir
21
- INTO (lv_obj_name, lv_devclass)
22
- WHERE obj_name = iv_name
23
- AND object = 'CLAS'.
24
- IF sy-subrc = 0.
25
- rs_info-name = iv_name.
26
- rs_info-type = 'CLAS'.
27
- rs_info-type_text = 'Class'.
28
- rs_info-description = |Class { iv_name } in { lv_devclass }|.
29
- ELSE.
30
- rs_info-name = iv_name.
31
- rs_info-type = 'CLAS'.
32
- rs_info-type_text = 'Class'.
33
- rs_info-not_found = abap_true.
34
- ENDIF.
35
-
36
- " Get class public section program name using CL_OO_CLASSNAME_SERVICE
37
- DATA lv_clsname TYPE seoclsname.
38
- lv_clsname = iv_name.
39
- CALL METHOD cl_oo_classname_service=>get_pubsec_name
40
- EXPORTING
41
- clsname = lv_clsname
42
- RECEIVING
43
- result = lv_prog.
44
-
45
- " Read source from program
46
- READ REPORT lv_prog INTO lt_source.
47
- IF sy-subrc = 0.
48
- LOOP AT lt_source INTO lv_line.
49
- IF rs_info-source IS INITIAL.
50
- rs_info-source = lv_line.
51
- ELSE.
52
- rs_info-source = rs_info-source && |\n| && lv_line.
53
- ENDIF.
54
- ENDLOOP.
55
- ENDIF.
56
- ENDMETHOD.
57
-
58
- ENDCLASS.
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4
- <asx:values>
5
- <VSEOCLASS>
6
- <CLSNAME>ZCL_ABGAGT_VIEWER_CLAS</CLSNAME>
7
- <LANGU>E</LANGU>
8
- <DESCRIPT>Viewer for ABAP Classes</DESCRIPT>
9
- <EXPOSURE>2</EXPOSURE>
10
- <STATE>1</STATE>
11
- <UNICODE>X</UNICODE>
12
- </VSEOCLASS>
13
- </asx:values>
14
- </asx:abap>
15
- </abapGit>