From 6a714fedc4a8a327d2acebe34d673b768dcbb0d8 Mon Sep 17 00:00:00 2001 From: s1n7ax Date: Mon, 15 Jul 2024 01:20:22 +0530 Subject: [PATCH 1/2] feat: add generate hash code and equals code action --- lua/java/api/generate.lua | 59 ++++++++++++++++++++++++++++++++++++++ lua/java/commands/init.lua | 4 +++ 2 files changed, 63 insertions(+) diff --git a/lua/java/api/generate.lua b/lua/java/api/generate.lua index 1008857..4e3f94f 100644 --- a/lua/java/api/generate.lua +++ b/lua/java/api/generate.lua @@ -97,4 +97,63 @@ function M.generate_to_string(params) .run() end +---@param params nvim.CodeActionParamsResponse +function M.generate_hash_code_and_equals(params) + local instance = require('java.utils.instance_factory') + local get_error_handler = require('java.handlers.error') + local ui = require('java.utils.ui') + + runner(function() + local jdtls = instance.jdtls_client() + local status = jdtls:java_check_hash_code_equals_status(params.params) + + if not status or not status.fields or #status.fields < 1 then + local message = string.format( + 'The operation is not applicable to the type %s.', + status.type + ) + require('java-core.utils.notify').warn(message) + return + end + + local regenerate = false + + if status.existingMethods and #status.existingMethods > 0 then + local prompt = string.format( + 'Methods %s already exists in the Class %s. Do you want to regenerate the implementation?', + 'Regenerate', + 'Cancel' + ) + + local choice = ui.select(prompt, { 'Regenerate', 'Cancel' }) + + if choice == 'Regenerate' then + regenerate = true + end + end + + local fields = ui.multi_select( + 'Select the fields to include in the hashCode() and equals() methods.', + status.fields, + function(field) + return field.name + end + ) + + if not fields or #fields < 1 then + return + end + + local edit = jdtls:java_generate_hash_code_equals({ + context = params.params, + fields = fields, + regenerate = regenerate, + }) + + vim.lsp.util.apply_workspace_edit(edit, 'utf-8') + end) + .catch(get_error_handler('Generating hash code failed')) + .run() +end + return M diff --git a/lua/java/commands/init.lua b/lua/java/commands/init.lua index df7b6e7..8480039 100644 --- a/lua/java/commands/init.lua +++ b/lua/java/commands/init.lua @@ -125,6 +125,10 @@ M.handlers = { require('java.api.generate').generate_to_string(params) end, + [M.commands.HASHCODE_EQUALS_PROMPT] = function(_, params) + require('java.api.generate').generate_hash_code_and_equals(params) + end, + ---@param is_full_build boolean [M.commands.COMPILE_WORKSPACE] = function(is_full_build) require('java.api.build').full_build_workspace(is_full_build) From 22ae0841e4d70ae9b30f5da25db0d1d70775af72 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 01:22:38 +0530 Subject: [PATCH 2/2] chore(main): release 1.20.0 (#272) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e4f441..b794dbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.20.0](https://github.com/nvim-java/nvim-java/compare/v1.19.0...v1.20.0) (2024-07-14) + + +### Features + +* add generate hash code and equals code action ([6a714fe](https://github.com/nvim-java/nvim-java/commit/6a714fedc4a8a327d2acebe34d673b768dcbb0d8)) + ## [1.19.0](https://github.com/nvim-java/nvim-java/compare/v1.18.0...v1.19.0) (2024-07-14)