Skip to content

Releases: sboesebeck/morphium

ALPHA Release 3.0

15 Dec 21:16
Compare
Choose a tag to compare
ALPHA Release 3.0 Pre-release
Pre-release

V3.0 is a huge refactoring and is probably not source compatible with code that was written for 2.2.x!

Motivation

Morphium 3.0 brings a lot improvements and changes, most of them are not really visible to the user, but unfortunately some of them make V3.x incompatible to V2.x.

The changes were triggered by the recent mongodb java driver update to also 3.0, which brings a whole new API. This API is (unfortunately also) not backward compatible[^not quite true, the driver contains both versions actually, but old API is usually marked _deprecated_]. This made it hard to add the changes in the official driver into morphium. Some of the changes made it also impossible to implement some features in morphium as it was before. So - the current implementation of morphium uses both old and new API - wich will break eventually.

The next step was, to be more independent from the driver, as those changes caused problems almost throughout the whole code of morphium. So, introducing with V3.0 of morphium, the driver is encapsulated deep within morphium.

Unfortunately, even the basic document representation changed[^old version used _BasicDBObject_, new version uses Document`], which are very similar, but unfortunately represented in a whole new implementation of BSON (binary json - details can be found here).

Also, we had some problems with dependencies in maven, causing to be several version of the mongodb driver being installed on production - which then caused some weird effects, most of them not really good ones ;-)

This made us reduce all dependency to the mongodb driver to a minimum - actually it is only used in the MorphiumDriver implementation for the official mongodb driver. But that also meant, we needed to get rid of all usages of ObjectID and BasicDBDocument and reduce usages of that into the driver implementation within morphium.

The question was - do we need to introduces some new object type for representing a Map<String,Object>? We thought no, so we changed the whole code in morphium, to internally use only standard Java8 API.

Yes, that is one feature also, since Morphium 3.0 we‘re running on java 8.

Changes

As you know the motivation now, these are the changes.

  • Driver encapsulated and configurable - you can now implement your own driver for usage with morphium
  • no usage of MongoDb classes, replaced by type MorphiumId and simple Map<String,Object> - this might actually break your code!
  • (soon) MongoDB Dependency in maven will be set to be provided, so that you can decide, which Version of the driver you want to use (or none...)
  • Morphium 3.0 includes some own implementation of drivers (mainly for testing purpose):
    - Driver: This is the Implementation of MorphiumDriver using the official Mongodb driver (V3.x)
    - InMemoryDriver: Not connecting to any mongo instance, just storing into memory. Good for testing. Does not support Aggregation!
    - SingleConnectDirectDriver: Just connecting to a master node, no failover. Useful if you do not have a replicaset
    - SingleConnectThreaddedDriver: Same as above, but uses a thread for reading the answers - slightly better performance in multithreaded environments, but only useful if you don't run a replicaSet
    - MetaDriver: A full featured implementation of the MorphiumDriver Interface, can be used as replacement for the mondogdb driver implementation. It uses a pool of SingleConnectThreaddedDriver to connect to mongodb.
  • Many changes in the internals
  • in references you can now specify the collection the reference should point to.
  • improvements in the internal caches, using the new improved features and performance of Java8 (see also here)
  • complete rewrite of the bulk operation handling
  • code improvements on many places, including some public interfaces (might break your code!)

Feature Release Morphium POJO Mapper

11 Sep 09:16
Compare
Choose a tag to compare

New release containing lots of fixes, improvements and some new features:

  • bulkoperation bugfix in buffered writer
  • added some convenient methods, completing interface
  • bugfix VetoException
  • bugfix with lists / maps of embedded objects
  • minor bugfix handling lists and embedded types
  • bugfix VetoException
  • FEATURE: logger functionality added for use of log4j and util.logging. Configure it with morphium.og.delegate=log4j, jul or your class implementing LoggerDelegate
  • bugfix - group command ignoring write concern
  • bugfix with handling of enum values in updates / push / pull
  • bugfix with handling of enum values in updates / set etc
  • index of subdocuments error
  • fix updateUsingFields to hand´le references correctly
  • minor improvements, suggested by findbugs and static code analysis
  • FEATURE: Added DeReferencingListener which is called, when morphium de-references a referenced entity (lazy loaded or not)
  • removed IGNORE_ERROR as the mongodb java driver 3.0.x does not support it anymore
  • FEATURE: introducing logger delegate
  • Bugfix: Embedded lifecycle methods
  • fixing constructors, adding convinient constructors
  • added test for hierarchy indices
  • switching to latest java driver version 3.0.3
  • lots of minor fixes

Beta8 bugfix release

28 Aug 10:35
Compare
Choose a tag to compare
Beta8 bugfix release Pre-release
Pre-release

consider this a GM Version (again)

Bugfix release

19 Aug 14:32
Compare
Choose a tag to compare
Bugfix release Pre-release
Pre-release

Added some bugfixes and features:

  • bug fixed which occurred when handling of embedded entities
  • fix a bug in polimorphism
  • bug fix for group command
  • fix for de-referencing loop (Thanks Jean)
  • fix handling of sub-documents
  • new Feature: LogDelegate - you can define your own logger in morphium (by default, the MorphiumLogger is used)

This should be the last Pre-Release - consider it a GM-Version

Bugfix release

14 Aug 06:46
Compare
Choose a tag to compare
Bugfix release Pre-release
Pre-release

A lot of bug fixes were included in this beta release (thanks Jean), including some major bugs regarding the handling of abstract classes and hierarchies.

Beta Release including features and imrpovements

28 Jul 10:49
Compare
Choose a tag to compare

This release includes a new feature DereferencingListener which gives you control over de-referencing of (lazy loaded) references.

Also, some minor fixes and improvements in code.

Have Fun

Bugfix release Morphium MongoDB POJO Mapper

22 Jun 11:56
Compare
Choose a tag to compare

this release contains some improvements and bugfixes regarding

  • connection management
  • cache performance
  • logging

This update is recommended for all users of Morphium.

V2.2.23BETA2 improvement release

15 Jul 11:57
Compare
Choose a tag to compare
Pre-release

New Pre-Release containing some bugfixes and improvements, especially in areas caching and constructor.

Attention: there is a bug in the Mongo Driver V3.0.2 which does not allow values <0 for w in WriteConcern. This causes problems, when trying to write using a WriteSafety of IGNORE_ERRORS!

Hope, there will be an update soon.

Improvement Release

08 Jun 14:50
Compare
Choose a tag to compare

This release was undergoing extensive testing, we were testing 8 Beta versions. Goal was to increase stability and performance in heavy load environments. We were experiencing some blocking threads under heavy load. We addressed this issue by doing some critical changes. These are the changes

  • removed all synchronized calles from the code (even Hashtable)
  • removed Log4J (it was creating an issue), replaced it with a lightweight logger implementation (configured easily with MorphiumConfig and/or by adding -Dmorphium.log.file=STDOUT/STDERR/FILENAME -Dmorphium.log.level=1-5 or -Dmorphium.log.synced=true/false to your startup). If you still have the need for morphium to use log4j, please tell us. We did not implement the bridge yet, bout this could easily be done.
  • removed usage of skip from iterator hence for some reason skip causes a lot of load on mongo and some timeouts, hence the prefetching iterator (need skip here to do the paging) is not the default iterator anymore.
  • query.asIterable() ane query.asIterable(1000) will return an instance of the DefaultIterator (no prefetching, no skip), query.asIterable(1000,5) returns a prefetching iterator.
  • the BufferedWriter (when @writebuffer Annotation) now uses proper bulk operations
  • added a shutdown hook for proper killing of all threads and executors upon exit
  • added some internal caches to reduce time for reflection
  • improvement in Messaging
  • minor changes in logging and stuff

Bugfix and improvement Release

20 Apr 13:53
Compare
Choose a tag to compare

New Releae of morphium V2.2.20 including these fixes / changes:

  • imrpovement cache speed by reducing synchronized calls
  • minor bugfixes
  • removed output clutter ("cannot cap collection - not @CappeD")
  • fix handling for inheritance of interfaces