diff --git a/plugin/hotswap-agent-deltaspike-plugin/src/main/java/org/hotswap/agent/plugin/deltaspike/DeltaSpikePlugin.java b/plugin/hotswap-agent-deltaspike-plugin/src/main/java/org/hotswap/agent/plugin/deltaspike/DeltaSpikePlugin.java index 9d916c1c..b7d021e8 100644 --- a/plugin/hotswap-agent-deltaspike-plugin/src/main/java/org/hotswap/agent/plugin/deltaspike/DeltaSpikePlugin.java +++ b/plugin/hotswap-agent-deltaspike-plugin/src/main/java/org/hotswap/agent/plugin/deltaspike/DeltaSpikePlugin.java @@ -72,6 +72,11 @@ public class DeltaSpikePlugin { @Init Scheduler scheduler; + @Init + PluginConfiguration pluginConfiguration; + + boolean initialized = false; + int waitOnRedefine = WAIT_ON_REDEFINE; Map registeredPartialBeans = new WeakHashMap<>(); Map> registeredViewConfExtRootClasses = new WeakHashMap<>(); @@ -84,7 +89,11 @@ public class DeltaSpikePlugin { @Init public void init(PluginConfiguration pluginConfiguration) { - LOGGER.info("Deltaspike plugin initialized."); + if (!initialized) { + LOGGER.info("Deltaspike plugin initialized."); + initialized = true; + waitOnRedefine = Integer.valueOf(pluginConfiguration.getProperty("deltaspike.waitOnRedefine", String.valueOf(WAIT_ON_REDEFINE))); + } } // ds<1.9 @@ -145,7 +154,7 @@ private PartialBeanClassRefreshCommand checkRefreshPartialBean(CtClass clazz, Cl if (partialBean != null) { String oldSignForProxyCheck = DeltaspikeClassSignatureHelper.getSignaturePartialBeanClass(original); cmd = new PartialBeanClassRefreshCommand(appClassLoader, partialBean, clazz.getName(), oldSignForProxyCheck, scheduler); - scheduler.scheduleCommand(cmd, WAIT_ON_REDEFINE); + scheduler.scheduleCommand(cmd, waitOnRedefine); } return cmd; } @@ -211,7 +220,7 @@ private void checkRefreshViewConfigExtension(CtClass clazz, Class original) { List rootClassNameList = entry.getValue(); for (String viewConfigClassName: rootClassNameList) { if (viewConfigClassName.equals(rootClassName)) { - scheduler.scheduleCommand(new ViewConfigReloadCommand(appClassLoader, entry.getKey(), entry.getValue()), WAIT_ON_REDEFINE); + scheduler.scheduleCommand(new ViewConfigReloadCommand(appClassLoader, entry.getKey(), entry.getValue()), waitOnRedefine); return; } } diff --git a/plugin/hotswap-agent-owb-jakarta-plugin/src/main/java/org/hotswap/agent/plugin/owb_jakarta/OwbJakartaPlugin.java b/plugin/hotswap-agent-owb-jakarta-plugin/src/main/java/org/hotswap/agent/plugin/owb_jakarta/OwbJakartaPlugin.java index b680b933..3d93b7ab 100644 --- a/plugin/hotswap-agent-owb-jakarta-plugin/src/main/java/org/hotswap/agent/plugin/owb_jakarta/OwbJakartaPlugin.java +++ b/plugin/hotswap-agent-owb-jakarta-plugin/src/main/java/org/hotswap/agent/plugin/owb_jakarta/OwbJakartaPlugin.java @@ -102,6 +102,8 @@ public class OwbJakartaPlugin { private BeanReloadStrategy beanReloadStrategy; private Map registeredArchives = new HashMap<>(); + private int waitOnCreate = WAIT_ON_CREATE; + private int waitOnRedefine = WAIT_ON_REDEFINE; /** * Plugin initialization, called from archive registration, @@ -111,6 +113,8 @@ public void init() { LOGGER.info("OpenWebBeans plugin initialized."); initialized = true; beanReloadStrategy = setBeanReloadStrategy(pluginConfiguration.getProperty("owb.beanReloadStrategy")); + waitOnCreate = Integer.valueOf(pluginConfiguration.getProperty("owb.waitOnCreate", String.valueOf(WAIT_ON_CREATE))); + waitOnRedefine = Integer.valueOf(pluginConfiguration.getProperty("owb.waitOnRedefine", String.valueOf(WAIT_ON_REDEFINE))); } } @@ -190,7 +194,7 @@ public void onEvent(WatchFileEvent event) { if (!ClassLoaderHelper.isClassLoaded(appClassLoader, className) || isTestEnvironment) { // refresh weld only for new classes LOGGER.trace("register reload command: {} ", className); - scheduler.scheduleCommand(new BeanClassRefreshCommand(appClassLoader, archivePath, beanArchiveUrl, event), WAIT_ON_CREATE); + scheduler.scheduleCommand(new BeanClassRefreshCommand(appClassLoader, archivePath, beanArchiveUrl, event), waitOnCreate); } } } @@ -252,7 +256,7 @@ public void classReload(ClassLoader classLoader, CtClass ctClass, Class origi oldSignByStrategy, entry.getValue(), beanReloadStrategy), - WAIT_ON_REDEFINE + waitOnRedefine ); break; } diff --git a/plugin/hotswap-agent-owb-plugin/src/main/java/org/hotswap/agent/plugin/owb/OwbPlugin.java b/plugin/hotswap-agent-owb-plugin/src/main/java/org/hotswap/agent/plugin/owb/OwbPlugin.java index 2d55cee9..8b106955 100644 --- a/plugin/hotswap-agent-owb-plugin/src/main/java/org/hotswap/agent/plugin/owb/OwbPlugin.java +++ b/plugin/hotswap-agent-owb-plugin/src/main/java/org/hotswap/agent/plugin/owb/OwbPlugin.java @@ -101,6 +101,9 @@ public class OwbPlugin { private BeanReloadStrategy beanReloadStrategy; + private int waitOnCreate = WAIT_ON_CREATE; + private int waitOnRedefine = WAIT_ON_REDEFINE; + private Map registeredArchives = new HashMap<>(); /** @@ -111,6 +114,8 @@ public void init() { LOGGER.info("OpenWebBeans plugin initialized."); initialized = true; beanReloadStrategy = setBeanReloadStrategy(pluginConfiguration.getProperty("owb.beanReloadStrategy")); + waitOnCreate = Integer.valueOf(pluginConfiguration.getProperty("owb.waitOnCreate", String.valueOf(WAIT_ON_CREATE))); + waitOnRedefine = Integer.valueOf(pluginConfiguration.getProperty("owb.waitOnRedefine", String.valueOf(WAIT_ON_REDEFINE))); } } @@ -190,7 +195,7 @@ public void onEvent(WatchFileEvent event) { if (!ClassLoaderHelper.isClassLoaded(appClassLoader, className) || isTestEnvironment) { // refresh weld only for new classes LOGGER.trace("register reload command: {} ", className); - scheduler.scheduleCommand(new BeanClassRefreshCommand(appClassLoader, archivePath, beanArchiveUrl, event), WAIT_ON_CREATE); + scheduler.scheduleCommand(new BeanClassRefreshCommand(appClassLoader, archivePath, beanArchiveUrl, event), waitOnCreate); } } } @@ -252,7 +257,7 @@ public void classReload(ClassLoader classLoader, CtClass ctClass, Class origi oldSignByStrategy, entry.getValue(), beanReloadStrategy), - WAIT_ON_REDEFINE + waitOnRedefine ); break; }