Skip to content

Commit 0305c97

Browse files
committed
feat: add constructor requests
1 parent 633bcbb commit 0305c97

File tree

4 files changed

+63
-13
lines changed

4 files changed

+63
-13
lines changed

lua/java-core/ls/clients/jdtls-client.lua

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ local await = async.wait_handle_error
88
---| 'java/inferSelection'
99
---| 'java/getRefactorEdit'
1010
---| 'java/buildWorkspace'
11+
---| 'java/checkConstructorsStatus'
12+
---| 'java/generateConstructors'
1113

1214
---@alias jdtls.CodeActionCommand
1315
---| 'extractVariable'
@@ -45,7 +47,7 @@ end
4547

4648
---Sends a LSP request
4749
---@param method java-core.JdtlsRequestMethod
48-
---@param params lsp.ExecuteCommandParams
50+
---@param params lsp.LSPAny
4951
---@param buffer? number
5052
function JdtlsClient:request(method, params, buffer)
5153
log.debug('sending LSP request: ' .. method)
@@ -99,6 +101,39 @@ function JdtlsClient:java_infer_selection(command, params, buffer)
99101
}, buffer)
100102
end
101103

104+
--- @class jdtls.VariableBinding
105+
--- @field bindingKey string
106+
--- @field name string
107+
--- @field type string
108+
--- @field isField boolean
109+
--- @field isSelected? boolean
110+
111+
---@class jdtls.MethodBinding
112+
---@field bindingKey string;
113+
---@field name string;
114+
---@field parameters string[];
115+
116+
---@class jdtls.JavaCheckConstructorsStatusResponse
117+
---@field constructors jdtls.MethodBinding
118+
---@field fields jdtls.MethodBinding
119+
120+
---@param params lsp.CodeActionParams
121+
---@return jdtls.JavaCheckConstructorsStatusResponse
122+
function JdtlsClient:java_check_constructors_status(params)
123+
return self:request('java/checkConstructorsStatus', params)
124+
end
125+
126+
---@class jdtls.GenerateConstructorsParams
127+
---@field context lsp.CodeActionParams
128+
---@field constructors jdtls.MethodBinding[]
129+
---@field fields jdtls.VariableBinding[]
130+
131+
---@param params jdtls.GenerateConstructorsParams
132+
---@return lsp.WorkspaceEdit
133+
function JdtlsClient:java_generate_constructor(params)
134+
return self:request('java/generateConstructors', params)
135+
end
136+
102137
---Returns refactor details
103138
---@param command jdtls.CodeActionCommand
104139
---@param action_params lsp.CodeActionParams

lua/java-core/ls/servers/jdtls/init.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ local M = {}
1818

1919
---Returns a configuration for jdtls that you can pass into the setup of nvim-lspconfig
2020
---@param opts JavaCoreGetConfigOptions
21-
---@return LspSetupConfig # jdtls setup configuration
21+
---@return vim.lsp.ClientConfig
2222
function M.get_config(opts)
2323
log.debug('generating jdtls config')
2424

@@ -80,6 +80,7 @@ function M.get_config(opts)
8080
end
8181
end
8282

83+
---@diagnostic disable-next-line: assign-type-mismatch
8384
base_config.root_dir = M.get_root_finder(opts.root_markers)
8485
base_config.init_options.bundles = plugin_paths
8586
base_config.init_options.workspace = utils.get_workspace_path()
@@ -92,7 +93,7 @@ end
9293
---Returns a function that finds the java project root
9394
---@private
9495
---@param root_markers string[] list of files to find the root dir of a project
95-
---@return fun(file_name: string): string | nil
96+
---@return fun(file_name: string): string
9697
function M.get_root_finder(root_markers)
9798
return function(file_name)
9899
log.debug('finding the root_dir with root_markers ', root_markers)

lua/java-core/types/nvim-types.lua

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
---@class nvim.Range
2-
---@field end nvim.CursorPoint
3-
---@field start nvim.CursorPoint
4-
5-
---@class nvim.CursorPoint
6-
---@field line integer
7-
---@field character integer
1+
---@class nvim.CodeActionParamsResponse
2+
---@field bufnr number
3+
---@field client_id number
4+
---@field method string
5+
---@field params lsp.CodeActionParams
6+
---@field version number

lua/java-core/utils/list.lua

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ function M:find(finder)
3131
end
3232

3333
---Returns a list of mapped values
34-
---@param mapper fun(value: any): any
34+
---@param mapper fun(value: any, index: number): any
3535
---@return java-core.List
3636
function M:map(mapper)
3737
local mapped = M:new()
3838

39-
for _, v in ipairs(self) do
40-
mapped:push(mapper(v))
39+
for i, v in ipairs(self) do
40+
mapped:push(mapper(v, i))
4141
end
4242

4343
return mapped
@@ -112,4 +112,19 @@ function M:every(validator)
112112
return true
113113
end
114114

115+
---Returns a filtered list
116+
---@param filter fun(value: any, index: integer): boolean
117+
---@return java-core.List
118+
function M:filter(filter)
119+
local new_list = M:new()
120+
121+
self:for_each(function(value, index)
122+
if filter(value, index) then
123+
new_list:push(value)
124+
end
125+
end)
126+
127+
return new_list
128+
end
129+
115130
return M

0 commit comments

Comments
 (0)