diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java index 792f23d8c24..f3d5adcbe2d 100644 --- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java +++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java @@ -19,6 +19,8 @@ import java.io.File; import java.io.Serializable; +import java.util.HashSet; +import java.util.List; import java.util.Optional; import java.util.Set; @@ -61,7 +63,7 @@ private static final class DevModeHandlerAlreadyStartedAttribute private DevModeHandler devModeHandler; private BrowserLauncher browserLauncher; - private ThemeLiveUpdater themeLiveUpdater; + private Set themeLiveUpdaters = new HashSet<>(); @Override public Class[] getHandlesTypes() { @@ -112,10 +114,13 @@ private void startWatchingThemeFolder(VaadinContext context) { + "Skipping watching the theme files"); return; } - String themeName = maybeThemeName.get(); - File themeFolder = ThemeUtils.getThemeFolder( - FrontendUtils.getProjectFrontendDir(config), themeName); - themeLiveUpdater = new ThemeLiveUpdater(themeFolder, context); + List activeThemes = ThemeUtils.getActiveThemes(config); + for (String themeName : activeThemes) { + File themeFolder = ThemeUtils.getThemeFolder( + FrontendUtils.getProjectFrontendDir(config), themeName); + themeLiveUpdaters + .add(new ThemeLiveUpdater(themeFolder, context)); + } } catch (Exception e) { getLogger().error("Failed to start live-reload for theme files", e); } @@ -126,9 +131,10 @@ public void stopDevModeHandler() { devModeHandler.stop(); devModeHandler = null; } - if (themeLiveUpdater != null) { + for (ThemeLiveUpdater themeLiveUpdater : themeLiveUpdaters) { themeLiveUpdater.stop(); } + themeLiveUpdaters.clear(); } @Override