Disable automatic removal of trailing whitespace and reformatted using Luna
Automatic removal of trailing whitespaces in Eclipse does not work even
in a nearly consistent way across platforms, versions or even on the same
maching within the same workspaces. Saving the same file multiple times
even alternates between adding and removing a whitespace on empty block
comment lines when saving.
Change-Id: I0efd307fd48869ea688eb79aa77c9ba38de5a4a6
Improves performance of VaadinService.requestEnd(). (#14218)
Doing two times session.accessSynchronously is unnecessary effort in
multiple aspects:
* The session will be locked twice.
* CurrentInstances are set twice.
* CurrentInstances are restored twice.
* VaadinSession being checked for being the current via
VaadinService.verifyNoOtherSessionLocked(this);
When we leave requestEnd we unset all CurrentInstances. There is no need
to just restore them before doing so.
When we are in requestEnd, VaadinSession is set to "current" by
PushHandler.callWithUi() or VaadinService.handleRequest().
Also, the cleanupSession code does not need any of these thread locals,
so not having them set would also not hurt.
having an extra accessSynchronously call for just setting the duration
does not make a lot of sense. While it somehow wants to make the previous
accessSynchronously call to be counted completely into the duration it
invests an the same time that would have been left out additionally.
VaadinService removeClosedUIs is a cleanup which also locks and sets
CurrentInstances just to figure out that the UI it is checking is not
closing. This change moves that check out of ui.accessSynchronously.
In the end, the resulting code is a tiny bit less robust, however it
eliminates over 50% response time on trivial push request/responses.
Change-Id: If71d1dbbae5d1fd57d3d4e735c592fd263261a81
* ConnectorTracker.getConnector() is now DnDService-aware
* Deprecated LCM.getDragAndDropService() is removed
* LCM.getConnector() simply delegates to ConnectorTracker.getConnector()
Change-Id: I9627d50f7386ead8d92ccbba27b4a558c03076c7
Fix race condition that might leave access queue unpurged (#12292)
Cherry-pick of 3a373efe (the original fix) and 2ff71f62 (fixing a
regression) that were marked to not be automatically merged from 7.1 to
master.
Change-Id: Iee1012486906d8c2c46cef94cfcd6d2b399d7a6b
Avoid deadlock checking in runPendingAccessTasks() (#11897)
The deadlock check in accessSynchronously() was triggered in cases where
one session was locked and tryLock() in access() did manage to lock
another session and thus attempted to run the runnable right away.
runPendingAccessTasks() needed accessSynchronously() just for setting up
the current session instance - the session was already locked and
cleaning up the CurrentInstance values afterwards was not needed. Just
setting the current session without accessSynchronously() gets rid of
the inappropriate deadlock detection as well as some overhead with
managing locks and CurrentInstance values.
Change-Id: Ib956d68884d6703dce2633a455c4857bb06651af
* Asynchronous bidirectional communication
* Use Atmosphere as a backend
* Use websockets if available, fallback to HTTP streaming
* Push mode (disabled, manual, automatic)
* Configurable via servlet parameter pushMode
* Disabled: The default; regular AJAX communication
* Manual: Need explicit UI.push() call
* Automatic: push all UIs in session when lock released
* UI.push()
* Push pending state and RPC to client asynchronously
* Must hold session lock when invoking
Change-Id: Idb5978ac81f7ff1e66665df4e3f96e29e4c419d4
Changed VaadinSession locking to be based on a session attribute (#8894)
Locking of a VaadinSession is now done in VaadinService using the underlying HTTP session. This enables locking of the VaadinSession even before it has been created.
Change-Id: I815d08d1fb74a1d0905c58b190bb10aa2161a834
Removed CommunicationManager and PortletCommunicationManager
* Moved AbstractCommunicationManager abstract methods
getThemeResourceAsStream and createBootstrapHandler to VaadinService
* Made ACM non-abstract and renamed to LegacyCommunicationManager
* Lifted anonymous inner BootstrapHandler subclasses into named public classes
Change-Id: I31739ce8a506d572e75ca8cd5509be215e01693d
Don't make VaadinSession serialize VaadinService (#10088)
* Refactor ApplicationRunnerServlet UIProvider to avoid indirect
reference through anonymous inner class
Change-Id: Ie4148e633192b1940ba82edbd26fbbc0cc2c4da3
Refactor heartbeat handling and inactive UI/session closing (#10252)
* Package-private VaadinService.cleanupSession() handles these, called from VaadinServlet and VaadinPortlet at the end of a request
* UI detach() called when removing from the session (#9755)
* UIs can be explicitly closed; UIs marked as closed are removed at the end of the request (#10249)
* Remove UI cleanup events and listeners in favor of detach events (#10251)
Change-Id: I1f994c43bd2fc5fe7f99f7152c9db35927235291
Replaced ComponentErrorHandler with generic ErrorHandler (#10231)
* Replaced AbstractComponent ErrorHandler with ClientConnector level error handler. Now uses the same ErrorHandler as other parts of the framework.
* Made error handling hierarchical so that the error handler of the connector where the error occured or its ancestors is used. Falls back to VaadinSession ErrorHandler.
* Changed ErrorEvent to be a class as all other events in the framework
* Renamed ErrorListener to ErrorHandler and DefaultErrorListener to DefaultErrorHandler for consistency
* Unified error handling in AbstractCommunicationManager
* Unified error handling in VaadinServlet and VaadinPortlet
* Removed superfluous ErrorEvent implementations (#10232)
Change-Id: Ied518e05209fe54685f4bebab0709b1cd5584fd1
When closeIdleUIs is true, close open UIs only after all UIs have been idle for longer than the session timeout
* Rename closeIdleUIs to closeIdleSessions, isIdleUICleanupEnabled to isCloseIdleSessions (#10252)
* Close the whole session at the same time as well
* Move UI lastUidlRequestTime to VaadinSession lastRequestTimestamp (#10253)
* Rename VaadinSession lastRequestTime to lastRequestDuration, totalSessionTime to cumulativeRequestDuration (#10253)
* Rename UI lastHeartbeatTime to lastHeartbeatTimestamp
* Show "Session Expired" notification when a heartbeat fails because of this
Change-Id: If3d4bd9add9995f435c29812eec00b3a3a92a6e6