Opened 10 years ago

Closed 9 years ago

Last modified 9 years ago

#548 closed task (done)

Review new persistence framework

Reported by: epitzer Owned by: epitzer
Priority: medium Milestone: HeuristicLab 3.3.0
Component: Persistence Version: 3.2
Keywords: Cc:

Description

The new persistence framework has been merged into the trunk as HL plugin and is ready to be criticized.

Change History (75)

comment:1 Changed 10 years ago by swagner

  • Summary changed from Review New Persistence Framework to Review new persistence framework

comment:2 Changed 10 years ago by epitzer

Numerous small changes, coding conventions, renames, mini refactoring (r1542)

comment:3 Changed 10 years ago by epitzer

  • Owner changed from gkronber to epitzer
  • Status changed from new to assigned

comment:4 Changed 10 years ago by epitzer

Replace final fixes for broken parent references with separation of instance creation with meta information. (r1553)

comment:5 Changed 10 years ago by epitzer

XML formatters for all primitive numeric types. (r1554)

comment:6 Changed 10 years ago by epitzer

More renaming and refactoring. (r1555)

comment:7 Changed 10 years ago by epitzer

Namespace refactoring. (r1556)

comment:8 Changed 10 years ago by epitzer

  • Stricter requirements for IDs in serialization tokens. (r1562)
  • Mark decomposers as empty storable class. (r1563)

comment:9 Changed 10 years ago by epitzer

  • Stronger typing for formatters with the help of generics.
  • Separate format and serial data type.

(r1564)

comment:10 Changed 10 years ago by epitzer

Adapt Persistence.GUI to new formatter structure. (r1565)

comment:11 Changed 10 years ago by epitzer

Format white space. (Ctrl-K, Ctrl-D) (r1566)

comment:12 Changed 10 years ago by epitzer

One file per class; rename ViewOnlyFormat -> DebugStringFormat (r1567)

comment:13 Changed 10 years ago by epitzer

Move Persistence.Test to subfolder. (r1568) Update persistence tests. (r1569)

comment:14 Changed 10 years ago by epitzer

Streamline XML generation with StringBuilders (r1570)

comment:15 Changed 10 years ago by epitzer

Reset/Re-initialize persistence configuration within GUI. (r1611)

comment:16 Changed 10 years ago by epitzer

namespace refactoring (r1612)

comment:17 Changed 10 years ago by epitzer

Rename sources fill to fit class name (r1613)

comment:18 Changed 10 years ago by epitzer

fail early if deserializer for type in type cache is unavailable. (r1619)

comment:19 Changed 10 years ago by epitzer

replace Getter and Setter delegates with .NET stock Func<object> and Action<object> (r1620)

comment:20 Changed 10 years ago by epitzer

New test case to ensure some coding conventions. (r1621)

comment:21 Changed 10 years ago by epitzer

Namespace refactoring, visibility check (r1623)

comment:22 Changed 10 years ago by epitzer

Added PersistenceException used consistently for all error conditions in the persistence framework (r1625)

comment:23 Changed 10 years ago by epitzer

suspend layout during dynamic GUI generation (r1642)

comment:24 Changed 10 years ago by epitzer

support for default disabled decomposers, re-activate number2string decomposer with negative priority. (r1644)

comment:25 Changed 10 years ago by epitzer

Implement missing primitive formatter for char and add more comprehensive tests. (r1652)

comment:26 Changed 10 years ago by epitzer

more testing. (r1653)

comment:27 Changed 10 years ago by epitzer

Streamline formatter configuration interface. Source types are already embedded in formatter generic type. (r1654)

comment:28 Changed 10 years ago by epitzer

Separate TypeExtensions into its own file. (r1658)

comment:29 Changed 10 years ago by epitzer

Add missing attributes and create type hierarchy for formatters. (r1659)

comment:30 Changed 10 years ago by epitzer

Display a MessageBox if persistence application settings are corrupted. (r1660)

comment:31 Changed 10 years ago by epitzer

reset ZipEntry data to make binary objects comparable (r2718)

comment:32 Changed 10 years ago by epitzer

incorporate persistence fixes from test branch (r2734, r2735, r2736 -> r2737)

comment:33 Changed 10 years ago by epitzer

fix handling of PublicKeyToken in TypeNameParser (r2859)

comment:34 Changed 9 years ago by epitzer

Add using around ZipFile to prevent a locked file in case of a deserialization exception (r2874)

comment:35 Changed 9 years ago by epitzer

Ignore assemblies that fail to load during type discovery in configuration services (r2876)

comment:36 Changed 9 years ago by epitzer

Add support for serialization of structs (r2939)

comment:37 Changed 9 years ago by epitzer

unwrap exceptions during constructor call when deserializing storable objects (r2990)

comment:38 Changed 9 years ago by epitzer

add justifications for rejecting a type for serialization in ICompositeSerializer (r2993)

comment:39 Changed 9 years ago by epitzer

Make StorableClass attribute compulsory for StorableSerializer to work, add named property StorableClassType to choose between Empty and MarkedOnly, later other options will be added. (r2994)

comment:40 Changed 9 years ago by abeham

Added StorableClass attribute to some more classes in r2995

comment:41 Changed 9 years ago by abeham

Updated StorableClass attribute on smoe more classes in r2996

comment:42 Changed 9 years ago by swagner

Updated StorableClass attribute on some more classes in r3000.

comment:43 Changed 9 years ago by epitzer

Add missing constructors and hooks (r3002)

comment:44 Changed 9 years ago by epitzer

Add utility to test coverage of persistence support and storable consistency (r3003)

comment:45 Changed 9 years ago by epitzer

add complete persistence API docs (r3004)

comment:46 Changed 9 years ago by epitzer

add support for type information interleaving and subsequently true streaming (r3005)

comment:47 Changed 9 years ago by epitzer

more descriptive persistence error message (r3007)

comment:48 Changed 9 years ago by epitzer

invoke storable hooks in more predictable orders, call hooks defined on base classes first. (r3010)

comment:49 Changed 9 years ago by epitzer

Update API docs. (r3016)

comment:50 Changed 9 years ago by epitzer

Merge StorableClassType.Empty into StorableClassType.MarkedOnly and make it the default if not specified (r3017)

comment:51 Changed 9 years ago by swagner

Restructured persistence code of read-only observable collections in r3019.

comment:52 Changed 9 years ago by epitzer

Move attribute discovery from attribute classes to StorableSerializer (in preparation for unified discovery and handling of AllFields, AllProperties, ...) (r3025)

comment:53 Changed 9 years ago by epitzer

uncomment broken persistence analysis (r3027)

comment:54 Changed 9 years ago by epitzer

add more API docs (r3028)

comment:55 Changed 9 years ago by epitzer

add support for automatic serialization of fields and properties (r3029)

comment:56 Changed 9 years ago by epitzer

prevent excessive caching of reflection information by re-instantiating serializers for every run (r3030)

comment:57 Changed 9 years ago by epitzer

collect all storable caches into storable serializer to reduce prolonged memory usage (r3031)

comment:58 Changed 9 years ago by epitzer

make most serializers internal and complete API documentation (r3036)

comment:59 Changed 9 years ago by epitzer

prevent exceptions during configuration (instead of catching them) (r3037)

comment:60 Changed 9 years ago by swagner

Added missing StorableClass attributes in r3201.

comment:61 Changed 9 years ago by epitzer

correctly allow interleaving of storable and empty classes (r3205)

comment:62 Changed 9 years ago by epitzer

Replace XML reader to ensure proper parsing of line endings especially inside CDATA blocks (r3293)

comment:63 Changed 9 years ago by epitzer

replace repeated calls through reflection with generated code for a twofold speedup (r3553)

comment:64 Changed 9 years ago by epitzer

circumvent code generation for hooks on 64bit systems, this is a bug in the CLR (r3554)

comment:65 Changed 9 years ago by epitzer

throw Exception if class is marked [Storable] but cannot be serialized with the StorableSerializer (r3577)

comment:66 Changed 9 years ago by epitzer

Use callvirt in generated code for calling hooks (r3579)

comment:67 Changed 9 years ago by epitzer

remove 32bit guard [new code generation works for all configurations (Release/Debug) x (x86/x64/Any)] (r3606)

comment:68 Changed 9 years ago by epitzer

correct and speed-up serialization for number enumerables (r3811)

comment:75 Changed 9 years ago by gkronber

Turned of 'Treat warnings as errors' option in the release configuration of the persistence plugin to allow release builds without compiler errors with r3987.

comment:76 Changed 9 years ago by gkronber

Last edited 9 years ago by gkronber (previous) (diff)

comment:77 Changed 9 years ago by gkronber

Last edited 9 years ago by gkronber (previous) (diff)

comment:79 Changed 9 years ago by abeham

This ticket should be closed (at version 3.3), and new ones opened that document changes to the persistence framework since the release (r3917 and later).

The reason is that we're adding a ChangeLog based on tickets and version information. It would be good to see new features / enhancements and bug fixes when the persistence is upgraded to 3.3.1 in the changelog.

Please create e.g. a ticket "Improve saving and loading speed" marked as enhancement with version set to 3.3 where the respective changes are listed. The milestone currently does not matter. Please do so for the other changes as well.

comment:80 Changed 9 years ago by epitzer

  • Resolution set to fixed
  • Status changed from assigned to closed

comment:81 Changed 9 years ago by swagner

  • Milestone changed from Iteration 4 to Current

Milestone Iteration 4 deleted

comment:11 Changed 9 years ago by swagner

  • Milestone changed from Current to HeuristicLab 3.3.0

Milestone Current deleted

Note: See TracTickets for help on using tickets.