11local log = require (' java-core.utils.log' )
2- local adapters = require (' java-core.ls .adapters.test-adapter ' )
2+ local adapters = require (' java-core.dap .adapters' )
33local List = require (' java-core.utils.list' )
44local JavaDebug = require (' java-core.ls.clients.java-debug-client' )
55local Promise = require (' java-core.utils.promise' )
66
77--- @class JavaCoreDap
8- --- @field client LSPClient
8+ --- @field client LspClient
99--- @field java_debug JavaCoreDebugClient
1010local M = {}
1111
1212--- Returns a new dap instance
13- --- @param args { client : LSPClient }
13+ --- @param args { client : LspClient }
1414--- @return JavaCoreDap
1515function M :new (args )
1616 local o = {
@@ -26,18 +26,18 @@ function M:new(args)
2626 return o
2727end
2828
29- --- @class JavaDapAdapter
29+ --- @class JavaCoreDapAdapter
3030--- @field type string
3131--- @field host string
3232--- @field port integer
3333
3434--- Returns the dap adapter config
35- --- @return Promise
35+ --- @return Promise # Promise<JavaCoreDapAdapter>
3636function M :get_dap_adapter ()
3737 log .info (' creating dap adapter for java' )
3838
3939 return self .java_debug :start_debug_session ():thenCall (
40- --- @param port JavaDebugStartDebugSessionResponse
40+ --- @param port integer
4141 function (port )
4242 return {
4343 type = ' server' ,
@@ -48,15 +48,13 @@ function M:get_dap_adapter()
4848 )
4949end
5050
51- --- @alias JavaDapConfigurationList JavaDapConfiguration[]
52-
5351--- Returns the dap configuration for the current project
54- --- @return Promise
52+ --- @return Promise # Promise<JavaDapConfiguration[]>
5553function M :get_dap_config ()
5654 log .info (' creating dap configuration for java' )
5755
5856 return self .java_debug :resolve_main_class ():thenCall (
59- --- @param mains JavaDebugResolveMainClassResponse
57+ --- @param mains JavaDebugResolveMainClassRecord[]
6058 function (mains )
6159 local config_promises = List :new (mains ):map (function (main )
6260 return self :get_dap_config_record (main )
6967
7068--- Returns the dap config for the given main class
7169--- @param main JavaDebugResolveMainClassRecord
72- --- @return Promise
70+ --- @return Promise # Promise<JavaCoreDapLauncherConfig>
7371function M :get_dap_config_record (main )
7472 return Promise .all ({
7573 self .java_debug :resolve_classpath (main .mainClass , main .projectName ),
7674 self .java_debug :resolve_java_executable (main .mainClass , main .projectName ),
7775 }):thenCall (function (res )
78- --- @type JavaDebugResolveClasspathResponse
76+ --- @type string[][]
7977 local classpaths = res [1 ]
8078
81- --- @type JavaDebugResolveJavaExecutableResponse
79+ --- @type string
8280 local java_exec = res [2 ]
8381
8482 return adapters .get_dap_config (main , classpaths , java_exec )
8583 end )
8684end
8785
88- --- Dap run with given config
89- --- @param config JavaDapConfiguration
90- function M .dap_run (config )
91- log .info (' running dap with config: ' , config )
92-
93- local function get_stream_reader (conn )
94- return vim .schedule_wrap (function (err , buffer )
95- assert (not err , err )
96-
97- if buffer then
98- vim .print (buffer )
99- else
100- conn :close ()
101- end
102- end )
103- end
104-
105- --- @type uv_tcp_t
106- local server
107-
108- require (' dap' ).run (config --[[ @as Configuration]] , {
109- before = function (conf )
110- log .debug (' running before dap callback' )
111-
112- server = assert (vim .loop .new_tcp (), ' uv.new_tcp() must return handle' )
113- server :bind (' 127.0.0.1' , 0 )
114- server :listen (128 , function (err )
115- assert (not err , err )
116-
117- local sock = assert (vim .loop .new_tcp (), ' uv.new_tcp must return handle' )
118- server :accept (sock )
119- sock :read_start (get_stream_reader (sock ))
120- end )
121-
122- conf .args =
123- conf .args :gsub (' -port ([0-9]+)' , ' -port ' .. server :getsockname ().port )
124-
125- return conf
126- end ,
127-
128- after = function ()
129- vim .debug (' running after dap callback' )
130-
131- if server then
132- server :shutdown ()
133- server :close ()
134- end
135- end ,
136- })
137- end
138-
13986return M
87+
88+ --- @class JavaCoreDapLauncherConfigOverridable
89+ --- @field name ? string
90+ --- @field type ? string
91+ --- @field request ? string
92+ --- @field mainClass ? string
93+ --- @field projectName ? string
94+ --- @field cwd ? string
95+ --- @field classPaths ? string[]
96+ --- @field modulePaths ? string[]
97+ --- @field vmArgs ? string
98+ --- @field noDebug ? boolean
99+ --- @field javaExec ? string
100+ --- @field args ? string
101+ --- @field env ? { [string] : string ; }
102+ --- @field envFile ? string
103+ --- @field sourcePaths ? string[]
104+ --- @field preLaunchTask ? string
105+ --- @field postDebugTask ? string
106+
107+ --- @class JavaCoreDapLauncherConfig
108+ --- @field name string
109+ --- @field type string
110+ --- @field request string
111+ --- @field mainClass string
112+ --- @field projectName string
113+ --- @field cwd string
114+ --- @field classPaths string[]
115+ --- @field modulePaths string[]
116+ --- @field vmArgs string
117+ --- @field noDebug boolean
118+ --- @field javaExec string
119+ --- @field args string
120+ --- @field env ? { [string] : string ; }
121+ --- @field envFile ? string
122+ --- @field sourcePaths string[]
123+ --- @field preLaunchTask ? string
124+ --- @field postDebugTask ? string
0 commit comments