Package com.vaadin.flow.hotswap
Class Hotswapper
java.lang.Object
com.vaadin.flow.hotswap.Hotswapper
- All Implemented Interfaces:
ServiceDestroyListener,SessionDestroyListener,SessionInitListener,UIInitListener,Serializable
public class Hotswapper
extends Object
implements ServiceDestroyListener, SessionInitListener, SessionDestroyListener, UIInitListener
Entry point for application classes hot reloads.
This class is meant to be used in combination with class live reloading tools like JRebel, Hotswap agent and Spring Boot Developer Tools, to immediately apply changes on components that should be updated when classes have been added or modified. Currently, class deletion is not supported because of issues with several hotswap agents.
Hotswap tools should obtain an instance of this class by calling the
register(VaadinService) method, providing an active
VaadinService instance. For example, an agent can inject the
following code at the beginning of the VaadinService.init() method:
com.vaadin.flow.hotswap.Hotswapper.register(this);
The component delegates specific hotswap logic to registered implementors of
VaadinHotswapper interface.
By default, Hotswapper determines the best browser page refresh strategy, but a full page reload can be forced by setting the
vaadin.hotswap.forcePageReload system property. Hotswap tools can
alter the behavior at runtime by calling
forcePageReload(VaadinService, boolean)
For internal use only. May be renamed or removed in a future release.
- Since:
- 24.5
- Author:
- Vaadin Ltd
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringConfiguration name for the system parameter that determines whether Hotswapper should always trigger a full page reload instead of computing an appropriate UI refresh strategy. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidforcePageReload(VaadinService vaadinService, boolean forceReload) Instructs theHotswapperif a full page reload should always be triggered instead of detecting the best UI refresh strategy.static booleanisForcedPageReload(VaadinService vaadinService) Gets whether a forced full page reload is triggered on class changes.voidCalled by hotswap tools when one or more application classes have been updated.voidCalled by hotswap tools when one or more application resources have been changed.static Optional<Hotswapper> register(VaadinService vaadinService) Register the hotwsapper entry point for the givenVaadinService.voidInvoked when a service is destroyed.voidCalled when a Vaadin service session is no longer used.voidsessionInit(SessionInitEvent event) Invoked when a new Vaadin service session is initialized for that service.voiduiInit(UIInitEvent event) Notifies when UI is initialized .
-
Field Details
-
FORCE_RELOAD_PROPERTY
Configuration name for the system parameter that determines whether Hotswapper should always trigger a full page reload instead of computing an appropriate UI refresh strategy.- See Also:
-
-
Method Details
-
onHotswap
Called by hotswap tools when one or more application classes have been updated.
This method delegates update operations to registeredVaadinHotswapperimplementors. invoking firstVaadinHotswapper.onClassLoadEvent(VaadinService, Set, boolean)and then invokingVaadinHotswapper.onClassLoadEvent(VaadinSession, Set, boolean)for each activeVaadinSession.- Parameters:
classes- the set of affected classes.redefined- true if the classes have been redefined by hotswap mechanism, false if they have been loaded for time by the ClassLoader.- See Also:
-
onHotswap
Called by hotswap tools when one or more application resources have been changed.- Parameters:
createdResources- the list of potentially newly created resources. Never null.modifiedResources- the list of potentially modified resources. Never null.deletedResources- the list of potentially deleted resource. Never null.
-
sessionInit
Description copied from interface:SessionInitListenerInvoked when a new Vaadin service session is initialized for that service.Because of the way different service instances share the same session, the listener is not necessarily notified immediately when the session is created but only when the first request for that session is handled by a specific service.
- Specified by:
sessionInitin interfaceSessionInitListener- Parameters:
event- the initialization event- Throws:
ServiceException- a problem occurs when processing the event
-
sessionDestroy
Description copied from interface:SessionDestroyListenerCalled when a Vaadin service session is no longer used.- Specified by:
sessionDestroyin interfaceSessionDestroyListener- Parameters:
event- the event with details about the destroyed session
-
serviceDestroy
Description copied from interface:ServiceDestroyListenerInvoked when a service is destroyed.- Specified by:
serviceDestroyin interfaceServiceDestroyListener- Parameters:
event- the event
-
uiInit
Description copied from interface:UIInitListenerNotifies when UI is initialized .- Specified by:
uiInitin interfaceUIInitListener- Parameters:
event- event for the initialization
-
register
Register the hotwsapper entry point for the givenVaadinService.
The hotswapper is registered only in development mode.- Parameters:
vaadinService- theVaadinServiceinstance for hotswapper registration.- Returns:
- the hotswapper instance wrapped into an
Optional, or an empty Optional if Vaadin is running in production mode.
-
forcePageReload
Instructs theHotswapperif a full page reload should always be triggered instead of detecting the best UI refresh strategy.- Parameters:
vaadinService- theVaadinServiceinstance.forceReload- true to always force a page reload, false to let theHotswapperdecide the refresh strategy.
-
isForcedPageReload
Gets whether a forced full page reload is triggered on class changes.- Parameters:
vaadinService- theVaadinServiceinstance.- Returns:
- true if full page reload if forced, otherwise false.
-