Skip to content

Releases: ssaarela/javersion

Reflection fixes

12 Jul 07:36

Choose a tag to compare

  • Skip indexed getters/setters
  • Add methods for array inspection: TypeDescriptor.isArray and getComponentType

Minor improvements to reflection toString and error messages

06 Jun 07:40

Choose a tag to compare

Reflection exceptions and toStrings

05 Jun 19:48

Choose a tag to compare

  • Improved exception handling: add context to ReflectionExceptions
  • Improve Descriptors’ toString methods
  • Fix TypeDescriptors cache

Reflection Improvements

22 May 20:00

Choose a tag to compare

  • Use byte code inspection as fallback to get parameter names.
  • Expose JavaMemberDescriptor.getElement
  • Rename too generic Property to AccessibleProperty
  • Getters for visibility modifiers

JDBC Persistence Optimization

16 Sep 10:30

Choose a tag to compare

New Features

  • JDBC VersionStore
    • VersionGraph load optimization
      • Configurable when and what (versions) to optimize - default is not to optimize anything
      • Documents are automatically optimized in background when needed
      • Configurable Executor for optimizations: ASYNC, SYNC, NONE or custom
    • Automatic publishing
      • Configurable executor: ASYNC, SYNC, NONE or custom
    • Configurable cache
      • Guava Cache based implementation
      • Configurable compaction strategy (when and what)
    • PostgreSQL specific optimizations

Breaking Changes

  • Core
    • VersionGraph as an interface with simplified generic signature: <K, V, M> (key, value, meta)
    • Switch Revision(node, timeSeq) constructor parameters: Revision(timeSeq, node) that is more in sync with serialization
  • JDBC
    • Interface for VersionStore with simplified generic signature: <Id, M> (id-type, meta)
    • Rename VersionStore load* methods to get*Graph
      • getFullGraph(docId) - load full (original/unoptimized) VersionGraph
      • getOptimizedGraph(docId) - load optimized VersionGraph
      • getGraph(docId) - load VersionGraph using the fastest method available (e.g. cache)
      • getGraph(docId, revisions) - as getGraph(Id) but fallback to getFullGraph if all revisions are not found
    • Interface for UpdateBatch with simplified generic signature: <Id, M>
    • Rename module javersion-spring-jdbc to javersion-jdbc
    • Make Spring dependency optional
      • Configurable Transactions interface with SpringTransactions implementation instead of @Transactional
    • Database schema changes
      • REPOSITORY table is no longer needed - version rows locked instead
      • VERSION_TYPE table is no longer needed - uses check constraint instead
      • Status column added to all tables
      • Changes to column types and indexes
    • Options repository and repositoryName are dropped from StoreOptions

Update Querydsl from 3 to 4

08 Mar 13:48

Choose a tag to compare

Release 0.13.0

Update Querydsl from 3 to 4

Fix PropertyPath parser for escaped forward slash

02 Mar 09:55

Choose a tag to compare

v0.12.1

Patch release 0.12.1: fix property path parser

Object mapping: delegates and configurable annotation handler

18 Feb 07:35

Choose a tag to compare

  • Configurable search path for annotation/reflection based configurations
  • Delegate mapping with @VersionValue/@jsonvalue and @VersionCreator/@JsonCreator: use alternate representation for versioning (e.g. String)
  • Functional se key mapping with @setkey(by=Class<? extends Function>)
  • Support for rebasing commits: analyse changes based on original base but then rebase new version on top of latest head(s). This creates linear version history which is more efficient (less/simpler merging) than having multiple concurrent versions, but it sweeps conflicts under the rug.

Bean Properties, Constructor Injection and Composite Keys

05 Jan 18:56

Choose a tag to compare

  • @VersionProperty annotation on a getter with matching setter makes Java Bean property (get/is/set) versionable.
  • Value of @VersionProperty can be used to rename versionable property to other than default field/property name.
  • Algorithmic identifiers with @Id on a getter without matching setter.
  • Constructor injection with @VersionConstructor or Jackson's @JsonCreator (optional dependency).
  • Constructor parameter names with @Param, javac -parameters or Jackson's @JsonProperty.
  • Composite key for a Set with @SetKey annotation on a field/getter or element type.
  • Improved support for generics: generic field, method and parameter types are resolved against owner type.

0.10.0

23 Dec 08:35

Choose a tag to compare

  • ObjectVersionManager.mergeRevisions
  • Move optimization logic from VersionStore to UpdateBatch
  • Clarify key vs property handling: they are not equal