| 1 | [[BackLinksMenu]] |
| 2 | |
| 3 | [[TicketQuery(summary=GROUP_PERSISTENCE_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] |
| 4 | |
| 5 | = Analysis = |
| 6 | |
| 7 | == Overview == |
| 8 | This group of tasks is about improving the base.persistence module and providing a well-designed, easily usable and extensible persistence library. After this task is complete, the following will be true: |
| 9 | * The base.persistence module will provide all the commons needed for persistence. |
| 10 | * The intermediate storage format will be improved where needed. |
| 11 | * A format registry tracking all current formats and their abilities to save/load will be present. |
| 12 | * Functionality for saving immutables and pro-things will be present. |
| 13 | * Extensions and extension points will be introduced to simplify the usage of the library. |
| 14 | * All the code related to persistence will conform to our code standards. |
| 15 | |
| 16 | == Task requirements == |
| 17 | * Try to devise a way the SharedLoader and SharedSaver to be consistent (currently they are not - see the notes on the persistence discussion that was held on 2009-02-18). |
| 18 | * Another option is to rename them so that people don't get confused by the similarity in their names. |
| 19 | * See how and where the intermediate storage format will be used and improve where needed. |
| 20 | * Define how properties and immutables will be persisted (a good idea is to store the immutables as string). |
| 21 | * Implement the annotations that were discussed - @Persist, @Immutable (see the video of the discussion for more information on these): |
| 22 | * @Persist allows saving of pro-things in different formats. |
| 23 | * @Immutable handles persistence of immutables. |
| 24 | * Both annotations are used by the savers to track what and how should be saved. |
| 25 | * An annotation for things not to be persisted might be needed. |
| 26 | * (Optional) Provide a class that handles all immutables coming from the JDK. |
| 27 | * Provide extension points for registering formats and for savers and loaders. |
| 28 | * Design and implement a format registry that keeps track of all formats and their features and limitations: |
| 29 | * see [wiki:BASE_PERSISTENCE_FORMAT_REGISTRY_R0] for more ideas on that. |
| 30 | * Ensure backward compatibility. |
| 31 | * Consider forwards compatibility in the design. |
| 32 | * (Optional) Provide a wiki page - [wiki:BASE_PERSISTENCE] with detailed documentation on the library created so that everyone can easily get into it. |
| 33 | |
| 34 | == Task result == |
| 35 | * Source code |
| 36 | * (Optional) Wiki page |
| 37 | |
| 38 | == Implementation idea == |
| 39 | Watch the design discussion on persistence to get an idea of how things should be done. |
| 40 | |
| 41 | == Related == |
| 42 | [wiki:BASE_PERSISTENCE_COMMONS_R0][[BR]] |
| 43 | [wiki:BASE_PERSISTENCE_INTERMEDIATE_STORAGE_R0][[BR]] |
| 44 | [wiki:BASE_PERSISTENCE_FORMAT_REGISTRY_R0][[BR]] |
| 45 | [wiki:BASE_PERSISTENCE_PROPERTY_FORMAT_R0][[BR]] |
| 46 | [wiki:BASE_PERSISTENCE_IMMUTABLES_R0][[BR]] |
| 47 | [wiki:BASE_PERSISTENCE_FORMAT_POINT_R0][[BR]] |
| 48 | http://asteasolutions.net/videos/ |
| 49 | |
| 50 | == How to demo == |
| 51 | * Explain the ideas of the library. |
| 52 | * Show the source code. |
| 53 | * Run the tests/demos. |
| 54 | * (Optional) Show the created wiki page. |
| 55 | |
| 56 | = Design = |
| 57 | ^Describe your design here. |
| 58 | |
| 59 | = Implementation = |
| 60 | ^Describe and link the implementation results here (from the wiki or the repository). |
| 61 | |
| 62 | = Testing = |
| 63 | ^Place the testing results here. |
| 64 | |
| 65 | = Comments = |
| 66 | ^Write comments for this or later revisions here. |