Bug 427799 - Provide a cleaner, more efficient implementation of the Session API
Summary: Provide a cleaner, more efficient implementation of the Session API
Status: CLOSED FIXED
Alias: None
Product: Sirius
Classification: Modeling
Component: Core (show other bugs)
Version: 1.0.0M5   Edit
Hardware: All All
: P1 major (vote)
Target Milestone: 3.0.0M7   Edit
Assignee: Pierre-Charles David CLA
QA Contact: Laurent Redor CLA
URL:
Whiteboard:
Keywords: triaged
Depends on: 426811 427813
Blocks:
  Show dependency tree
 
Reported: 2014-02-10 09:17 EST by Pierre-Charles David CLA
Modified: 2015-06-24 11:13 EDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pierre-Charles David CLA 2014-02-10 09:17:54 EST
The Session concept is central in the Sirius runtime, but its API and implementation have become complex, difficult to maintain and to optimize.

More specifically, the current implementation (DAnalysisSessionImpl and associated classes) tries to support different modes of behaviors, some of which impose a lot of complexity and runtime overhead even when they are not needed (which is most of the time, for most users).

This ticket will be used to discuss a general strategy and concrete actions towards the replacement of the current implementation with a new, more efficient one which does not try to handle all the "legacy" uses cases. This will be done over several versions of Sirius, so that we can keep the existing implementation as long as needed for compatibility for existing users.

The proposed general strategy:
1. Make it technically possible to have several implementations of the Session API in the code, selectable at runtime. Note that the session's contract itself might need to evolve, so we are not necessarily talking about a single set of Java interfaces which can be implemented in several ways; it might be necessary to have two sets of APIs ("Old-Style Sessions" and "New-Style Session") co-exist peacefully.
2. Provide a new implementation of the session concepts and APIs with better properties than the current one, but make the new implementation opt-in (i.e. client code will need to ask explicitly to use the new version).
3. Once we are confident enough that the new implementation is complete and stable, make the new one the default. The old one would still be available if explicitly requested, but it would become deprecated.
4. Remove the old implementation altogether once we are sure all users have migrated to the new one.
Comment 1 Pierre-Charles David CLA 2014-02-10 09:48:17 EST
I have created https://wiki.eclipse.org/Sirius/Session_API to complement this ticket.
Comment 2 Maxime Porhel CLA 2014-02-10 10:34:23 EST
Pierre-Charles some related elements: Bug 426811 and https://git.eclipse.org/r/#/c/21509/
Comment 3 Eclipse Genie CLA 2015-02-25 11:21:04 EST
New Gerrit change created: https://git.eclipse.org/r/42663
Comment 4 Eclipse Genie CLA 2015-02-25 11:21:06 EST
New Gerrit change created: https://git.eclipse.org/r/42666
Comment 5 Eclipse Genie CLA 2015-02-25 11:21:08 EST
New Gerrit change created: https://git.eclipse.org/r/42665
Comment 6 Eclipse Genie CLA 2015-02-25 11:21:09 EST
New Gerrit change created: https://git.eclipse.org/r/42664
Comment 7 Eclipse Genie CLA 2015-02-25 11:21:11 EST
New Gerrit change created: https://git.eclipse.org/r/42669
Comment 8 Eclipse Genie CLA 2015-02-25 11:21:12 EST
New Gerrit change created: https://git.eclipse.org/r/42668
Comment 9 Eclipse Genie CLA 2015-02-25 11:21:14 EST
New Gerrit change created: https://git.eclipse.org/r/42667
Comment 10 Eclipse Genie CLA 2015-02-25 11:21:15 EST
New Gerrit change created: https://git.eclipse.org/r/42671
Comment 11 Eclipse Genie CLA 2015-02-25 11:21:17 EST
New Gerrit change created: https://git.eclipse.org/r/42670
Comment 22 Eclipse Genie CLA 2015-02-27 03:08:27 EST
New Gerrit change created: https://git.eclipse.org/r/42871
Comment 24 Eclipse Genie CLA 2015-04-09 09:16:29 EDT
New Gerrit change created: https://git.eclipse.org/r/45547
Comment 25 Eclipse Genie CLA 2015-04-09 09:16:42 EDT
New Gerrit change created: https://git.eclipse.org/r/45548
Comment 26 Eclipse Genie CLA 2015-04-09 09:16:44 EDT
New Gerrit change created: https://git.eclipse.org/r/45549
Comment 27 Eclipse Genie CLA 2015-04-10 11:17:45 EDT
New Gerrit change created: https://git.eclipse.org/r/45653
Comment 28 Eclipse Genie CLA 2015-04-10 11:17:48 EDT
New Gerrit change created: https://git.eclipse.org/r/45652
Comment 29 Eclipse Genie CLA 2015-04-10 11:17:49 EDT
New Gerrit change created: https://git.eclipse.org/r/45656
Comment 30 Eclipse Genie CLA 2015-04-10 11:17:51 EDT
New Gerrit change created: https://git.eclipse.org/r/45655
Comment 31 Eclipse Genie CLA 2015-04-10 11:17:52 EDT
New Gerrit change created: https://git.eclipse.org/r/45654
Comment 32 Eclipse Genie CLA 2015-04-10 11:17:54 EDT
New Gerrit change created: https://git.eclipse.org/r/45658
Comment 33 Eclipse Genie CLA 2015-04-10 11:17:55 EDT
New Gerrit change created: https://git.eclipse.org/r/45657
Comment 34 Eclipse Genie CLA 2015-04-10 11:17:57 EDT
New Gerrit change created: https://git.eclipse.org/r/45661
Comment 35 Eclipse Genie CLA 2015-04-10 11:17:58 EDT
New Gerrit change created: https://git.eclipse.org/r/45660
Comment 36 Eclipse Genie CLA 2015-04-10 11:18:00 EDT
New Gerrit change created: https://git.eclipse.org/r/45659
Comment 37 Eclipse Genie CLA 2015-04-10 11:18:01 EDT
New Gerrit change created: https://git.eclipse.org/r/45663
Comment 38 Eclipse Genie CLA 2015-04-10 11:18:03 EDT
New Gerrit change created: https://git.eclipse.org/r/45662
Comment 54 Eclipse Genie CLA 2015-04-20 10:53:42 EDT
New Gerrit change created: https://git.eclipse.org/r/46080
Comment 55 Eclipse Genie CLA 2015-04-20 10:53:45 EDT
New Gerrit change created: https://git.eclipse.org/r/46079
Comment 56 Eclipse Genie CLA 2015-04-20 10:53:46 EDT
New Gerrit change created: https://git.eclipse.org/r/46078
Comment 57 Eclipse Genie CLA 2015-04-20 10:53:48 EDT
New Gerrit change created: https://git.eclipse.org/r/46082
Comment 58 Eclipse Genie CLA 2015-04-20 10:53:50 EDT
New Gerrit change created: https://git.eclipse.org/r/46081
Comment 59 Eclipse Genie CLA 2015-04-20 10:53:51 EDT
New Gerrit change created: https://git.eclipse.org/r/46084
Comment 60 Eclipse Genie CLA 2015-04-20 10:53:53 EDT
New Gerrit change created: https://git.eclipse.org/r/46083
Comment 61 Eclipse Genie CLA 2015-04-20 10:53:54 EDT
New Gerrit change created: https://git.eclipse.org/r/46085
Comment 70 Pierre-Charles David CLA 2015-04-21 03:24:10 EDT
Closing for 3.0. There are many other potential improvements in this area, but in the context of Sirius 3.0 we'll stop here for general refactoring. Other improvements may still come from work on more specific issues.
Comment 71 Laurent Redor CLA 2015-05-21 09:54:39 EDT
Verified with Sirius 3.0.0 rc1
Comment 72 Pierre-Charles David CLA 2015-06-24 11:13:44 EDT
Available in Sirius 3.0.0. See https://wiki.eclipse.org/Sirius/3.0.0.