From f84daa3bd40f5ac362f8d0a98bb67eafca7fa67c Mon Sep 17 00:00:00 2001 From: s1n7ax Date: Sun, 19 Nov 2023 14:12:15 +0530 Subject: [PATCH] refactor!: change the project structure according to new core changes --- lua/java.lua | 2 +- lua/java/dap/api.lua | 50 +++++++++++++ lua/java/dap/dapp.lua | 72 ------------------ lua/java/dap/init.lua | 89 +++++++++++++---------- lua/java/dependencies.lua | 2 +- lua/java/handlers/error.lua | 2 +- lua/java/jdtls.lua | 2 +- lua/java/lspconfig.lua | 5 +- lua/java/mason.lua | 2 +- lua/java/utils/log.lua | 4 +- tests/{plugin_name => java}/java_spec.lua | 0 11 files changed, 113 insertions(+), 117 deletions(-) create mode 100644 lua/java/dap/api.lua delete mode 100644 lua/java/dap/dapp.lua rename tests/{plugin_name => java}/java_spec.lua (100%) diff --git a/lua/java.lua b/lua/java.lua index 43ac7a7..ead8c94 100644 --- a/lua/java.lua +++ b/lua/java.lua @@ -1,6 +1,6 @@ local deps = require('java.dependencies') local java_mason = require('java.mason') -local java_dap = require('java.dap') +local java_dap = require('java.dap.api') local java_lspconfig = require('java.lspconfig') local ts = require('java.treesitter') diff --git a/lua/java/dap/api.lua b/lua/java/dap/api.lua new file mode 100644 index 0000000..1beacb6 --- /dev/null +++ b/lua/java/dap/api.lua @@ -0,0 +1,50 @@ +local JavaDap = require('java.dap') + +local log = require('java.utils.log') +local notify = require('java-core.utils.notify') +local get_error_handler = require('java.handlers.error') +local jdtls = require('java.jdtls') + +local M = {} + +---Setup dap config & adapter on jdtls attach event +function M.setup_dap_on_lsp_attach() + log.info('add LspAttach event handlers to setup dap adapter & config') + + vim.api.nvim_create_autocmd('LspAttach', { + pattern = '*', + callback = M.on_jdtls_attach, + once = true, + group = vim.api.nvim_create_augroup('nvim-java-dap-config', {}), + }) +end + +---Runs the current test class +function M.run_current_test_class() + return JavaDap:new(jdtls()):execute_current_test_class({ noDebug = true }) +end + +function M.debug_current_test_class() + return JavaDap:new(jdtls()):execute_current_test_class({}) +end + +---Configures the dap +function M.config_dap() + return JavaDap:new(jdtls()) + :config_dap() + :catch(get_error_handler('failed to configure dap')) +end + +---@private +---@param ev any +function M.on_jdtls_attach(ev) + local client = vim.lsp.get_client_by_id(ev.data.client_id) + + if client.name == 'jdtls' then + log.info('setup java dap config & adapter') + + M.config_dap() + end +end + +return M diff --git a/lua/java/dap/dapp.lua b/lua/java/dap/dapp.lua deleted file mode 100644 index 4e08674..0000000 --- a/lua/java/dap/dapp.lua +++ /dev/null @@ -1,72 +0,0 @@ -local log = require('java-core.utils.log') -local get_error_handler = require('java.handlers.error') - -local Promise = require('java-core.utils.promise') -local JavaCoreDap = require('java-core.dap') -local JavaCoreTestHelper = require('java-core.ls.helpers.test-helper') - ----@class JavaDap ----@field client LSPClient ----@field test_helper JavaCoreTestHelper ----@field dap_helper JavaCoreDap -local M = {} - ----@param args { client: LSPClient } ----@return JavaDap -function M:new(args) - local o = { - client = args.client, - } - - o.test_helper = JavaCoreTestHelper:new({ - client = args.client, - }) - - o.dap_helper = JavaCoreDap:new({ - client = args.client, - }) - - setmetatable(o, self) - self.__index = self - return o -end - ----Run the current test class ----@param config? JavaTestLauncherConfigOverridable -function M:execute_current_test_class(config) - log.info('running the current class') - - local buffer = vim.api.nvim_get_current_buf() - - return self.test_helper - :get_test_class_by_buffer(buffer) - :thenCall(function(classes) - return self.test_helper:run_test(classes, config) - end) - :catch(get_error_handler('failed to run current test class')) -end - -function M:config_dap() - return Promise.resolve() - :thenCall(function() - log.debug('set dap adapter callback function') - - -- setting java adapter - require('dap').adapters.java = function(callback) - self.dap_helper - :get_dap_adapter() - :thenCall(callback) - :catch(get_error_handler('failed to set DAP adapter')) - end - - -- setting java config - return self.dap_helper:get_dap_config() - end) - :thenCall(function(dap_config) - log.debug('set dap config: ', dap_config) - require('dap').configurations.java = dap_config - end) - :catch(get_error_handler('failed to set DAP configuration')) -end - -return M diff --git a/lua/java/dap/init.lua b/lua/java/dap/init.lua index 94ba0e5..ce7c852 100644 --- a/lua/java/dap/init.lua +++ b/lua/java/dap/init.lua @@ -1,54 +1,69 @@ -local JavaDap = require('java.dap.dapp') +local log = require('java.utils.log') +local get_error_handler = require('java.handlers.error') -local log = require('java-core.utils.log') -local notify = require('java-core.utils.notify') -local jdtls = require('java.jdtls') +local Promise = require('java-core.utils.promise') +local JavaCoreDap = require('java-core.dap') +local JavaCoreTestApi = require('java-core.api.test') +---@class JavaDap +---@field private client LspClient +---@field private dap JavaCoreDap +---@field private test_api JavaCoreTestApi local M = {} ----Setup dap config & adapter on jdtls attach event -function M.setup_dap_on_lsp_attach() - log.info('add LspAttach event handlers to setup dap adapter & config') +---@param args { client: LspClient } +---@return JavaDap +function M:new(args) + local o = { + client = args.client, + } - vim.api.nvim_create_autocmd('LspAttach', { - pattern = '*', - callback = M.on_jdtls_attach, - once = true, - group = vim.api.nvim_create_augroup('nvim-java-dap-config', {}), + o.test_api = JavaCoreTestApi:new({ + client = args.client, }) -end ----Runs the current test class -function M.run_current_test_class() - return JavaDap:new(jdtls()):execute_current_test_class({ noDebug = true }) -end + o.dap = JavaCoreDap:new({ + client = args.client, + }) -function M.debug_current_test_class() - return JavaDap:new(jdtls()):execute_current_test_class() + setmetatable(o, self) + self.__index = self + return o end ----Configures the dap -function M.config_dap() - return JavaDap:new(jdtls()) - :config_dap() - :thenCall(function() - notify.info('DAP configured') - end) - :catch(function(err) - notify.error('Failed to configure DAP', err) - end) +---Run the current test class +---@param config JavaCoreDapLauncherConfigOverridable +function M:execute_current_test_class(config) + log.info('running the current class') + + local buffer = vim.api.nvim_get_current_buf() + + return self.test_api + :run_class_by_buffer(buffer, config) + :catch(get_error_handler('failed to run current test class')) end ----@private ----@param ev any -function M.on_jdtls_attach(ev) - local client = vim.lsp.get_client_by_id(ev.data.client_id) +function M:config_dap() + return Promise.resolve() + :thenCall(function() + log.debug('set dap adapter callback function') - if client.name == 'jdtls' then - log.info('setup java dap config & adapter') + -- setting java adapter + require('dap').adapters.java = function(callback) + self.dap + :get_dap_adapter() + :thenCall(callback) + :catch(get_error_handler('failed to set DAP adapter')) + end - M.config_dap() - end + -- setting java config + return self.dap:get_dap_config() + end) + :thenCall(function(dap_config) + log.debug('set dap config: ', dap_config) + require('dap').configurations.java = dap_config + end) + :catch(get_error_handler('failed to set DAP configuration')) end return M diff --git a/lua/java/dependencies.lua b/lua/java/dependencies.lua index 442eb36..1f63863 100644 --- a/lua/java/dependencies.lua +++ b/lua/java/dependencies.lua @@ -1,4 +1,4 @@ -local log = require('java-core.utils.log') +local log = require('java.utils.log') local pkgs = { { diff --git a/lua/java/handlers/error.lua b/lua/java/handlers/error.lua index ee35204..870b5c4 100644 --- a/lua/java/handlers/error.lua +++ b/lua/java/handlers/error.lua @@ -1,5 +1,5 @@ local notify = require('java-core.utils.notify') -local log = require('java-core.utils.log') +local log = require('java.utils.log') local function table_tostring(tbl) local str = '' diff --git a/lua/java/jdtls.lua b/lua/java/jdtls.lua index a166019..80addcd 100644 --- a/lua/java/jdtls.lua +++ b/lua/java/jdtls.lua @@ -1,7 +1,7 @@ local get_error_handler = require('java.handlers.error') ---Returns an active jdtls client ----@return { client: LSPClient } +---@return { client: LspClient } local function get_jdtls() local clients = vim.lsp.get_active_clients({ name = 'jdtls' }) diff --git a/lua/java/lspconfig.lua b/lua/java/lspconfig.lua index 27db581..bfc2038 100644 --- a/lua/java/lspconfig.lua +++ b/lua/java/lspconfig.lua @@ -1,4 +1,4 @@ -local log = require('java-core.utils.log') +local log = require('java.utils.log') local lspconfig = require('lspconfig') local server = require('java-core.ls.servers.jdtls') local jdtls = require('java.jdtls') @@ -10,7 +10,7 @@ local M = {} function M.wrap_lspconfig_setup() log.info('wrap lspconfig.java.setup function to inject a custom java config') - ---@type fun(config: LSPSetupConfig) + ---@type fun(config: LspSetupConfig) local org_setup = lspconfig.jdtls.setup lspconfig.jdtls.setup = function(user_config) @@ -26,6 +26,7 @@ function M.wrap_lspconfig_setup() 'build.gradle.kts', '.git', }, + jdtls_plugins = { 'java-test', 'java-debug-adapter' }, }) config = vim.tbl_deep_extend('force', user_config, config) diff --git a/lua/java/mason.lua b/lua/java/mason.lua index 56626b9..68d09a3 100644 --- a/lua/java/mason.lua +++ b/lua/java/mason.lua @@ -1,4 +1,4 @@ -local log = require('java-core.utils.log') +local log = require('java.utils.log') local mason_reg = require('mason-registry') local M = {} diff --git a/lua/java/utils/log.lua b/lua/java/utils/log.lua index b54cd38..2373e05 100644 --- a/lua/java/utils/log.lua +++ b/lua/java/utils/log.lua @@ -137,6 +137,7 @@ log.new = function(config, standalone) local fp = io.open(outfile, 'a') local str = string.format('[%-6s%s] %s: %s\n', nameupper, os.date(), lineinfo, msg) + assert(fp, 'cannot open file: ' .. ' to write logs') fp:write(str) fp:close() end @@ -162,4 +163,5 @@ log.new = function(config, standalone) end log.new(default_config, true) --- }}} + +return log diff --git a/tests/plugin_name/java_spec.lua b/tests/java/java_spec.lua similarity index 100% rename from tests/plugin_name/java_spec.lua rename to tests/java/java_spec.lua