Changes since 9.0.25
New features
- Throw a meaningful exception if deployed into a Servlet 5 container (#14842)
Commit · Pull request
Fixes
-
Serve text/css/xml/javascript resources correctly outside the context of a page (#15824)
Commit · Pull request · IssueWhen the resource is served without a charset, it seems the encoding of the page is used to interpret the resource correctly as utf-8. If you load a file outside the context of a page however, the content is wrong when the charset is not specified.
-
Preserve push messages in cache until they are seen by client (#15764)
Commit · Pull request · IssueAtmospehere caches messages when the client is disconnected, but unfortunately it may happen that a message does not reach the client because of network disconnection during async response write operation. In this case the message is not cached and will be completely lost, causing a UI resynchronization request. This change preserves messages in broadcaster cache until the client confirms that they have been processed, by sending the last seen server sync identifier on reconnection. This should prevent the need for a UI resynchronization. It may happen in some cases, e.g. back to online after being offline, that messages already seen will be sent to the client, but Flow will discard them. Part of #15281
-
Pwa charset (#15844)
Commit · Pull request · IssueSet pwa character set to utf-8 instead of the default iso encoding
-
Prevent concurrent disconnect and push operations (#15767)
Commit · Pull request · IssueDisconnecting an AtmospherePushConnection while it is sending a message may result in a NullPointerException if AtmosphereResource is nullified before the message is sent. This change synchronizes operations, so that disconnect will wait until current push finishes, or push waits for disconnect to complete so that the isConnected() method reflects correctly current state.
-
Allow Gradle builds to use custom sourcesets (#15739)
Commit · Pull request · IssueWhen a sourceset other than
main
is used for holding classes using Vaadin components, or for providing a resolution scope for Vaadin dependencies, theprepareVaadinFrontend
task does not correctly extract the correct Node libraries required by those classes, and thebuildVaadinFrontend
task subsequently fails to complete due to Vite requiring those Node dependencies to have been extracted into the project so failing to find all of its front-end dependencies. TheVaadinFlowPluginExtension
is being altered to include asourceSetName
field, that defaults tomain
for backwards compatibility but allows users to specify a custom sourceset to use for the prepare and build tasks. As the use of a custom sourceset generally implies that different Gradle tasks will be executed for operating on those sourcesets, and a different dependency scope generated for the custom sourceset, fields have also been added to the extension that allow users to override the values the plugin uses, whilst the default values follow the Gradle conventions for bothmain
and non-main
sourcesets.