Skip to content

Releases: longevityframework/longevity

Annotation Macros

08 Dec 05:56
Compare
Choose a tag to compare

[0.18.0] - 2016.12.07 - Annotation Macros

  • 2016.12.06 - Prevent emblem leakage of TestDataGenerator and
    CustomGeneratorPool by wrapping them in longevity
    classes. Slightly simplified the API for adding a custom test data
    generators.
  • 2016.12.06 - Add LongevityContext constructors and apply methods
    that take either a LongevityConfig or a Typesafe config.
  • 2016.12.06 - Add annotation macro @subdomain in package
    longevity.subdomain.annotations.
  • 2016.12.06 - Add Subdomain constructor and apply method that
    collect all the PTypes and CTypes by package scanning.
  • 2016.11.30 - Add annotation macros @component,
    @derivedComponent, @derivedPersistent, @keyVal, @mprops,
    @persistent, @polyComponent, and @polyPersistent in package
    longevity.subdomain.annotations.
  • 2016.11.30 - Remove scanning of PType inner objects keys and
    indexes to look for keys and indexes. Users must now define
    PType.keySet, and override PType.indexSet, to declare keys and
    indexes. We made this change since the object scanning was
    superfluous, and complicates the API. (In contrast, scanning for
    properties is useful, as users need to be able to call properties by
    name. However, users never really need to call keys and indexes by
    name, so there is no advantage to naming them in an inner object.)
  • 2016.11.23 - Add method PType.emptyKeySet.
  • 2016.11.23 - Make PType.partitionKey methods return Key[P]
    instead of PartitionKey[P]. this is for convenience of Scala 2.11
    users, so they dont have to declare the full type of their keySet.
  • 2016.11.22 - Remove second type parameter from
    longevity.subdomain.Key and longevity.subdomain.PartitionKey.
    Remove types longevity.subdomain.AnyKey and
    longevity.subdomain.AnyPartitionKey, as they no longer serve any
    purpose.

API Simplifications

15 Nov 18:06
Compare
Choose a tag to compare

[0.17.0] - 2016.11.15 - API Simplifications

  • 2016.11.13 - Remove second type parameter from
    longevity.subdomain.KeyVal.
  • 2016.11.12 - Rename longevity.subdomain.EType (for "embeddable
    type") to longevity.subdomain.CType (for "component type").
  • 2016.11.12 - Remove traits longevity.subdomain.Embeddable and
    longevity.subdomain.Persistent. Users no longer need to extend
    their subdomain classes with these empty marker traits.
  • 2016.11.12 - Change RepoCrudSpec from a FeatureSpec to a
    FlatSpec. Users using LongevityContext.repoCrudSpec will notice
    significantly less verbose test output.

Cross Build to Scala 2.12

11 Nov 18:39
Compare
Choose a tag to compare
  • Implement cross build to publish artifacts for both Scala versions 2.11 and 2.12
  • Up ScalaTest version from 2.2.6 to 3.0.1

Partition Keys

10 Nov 19:01
Compare
Choose a tag to compare

[0.16.0] - 2016.11.10 - Partition Keys

  • 2016.11.09 - Uniformly convert DateTime to UTC time zone. This
    seems like the best approach right now, as both Cassandra and
    MongoDB back ends support timestamps without time zone
    information. It also resolves issues with sorting dates.
  • 2016.11.09 - Implement partition keys. Please see the user
    manual

    for details.
  • 2016.10.27 - Replace Casbah with Java driver in MongoDB back end. We
    are now using the vanilla Java driver for
    Mongo
    . This
    change should not affect users.
  • 2016.10.27 - Fix MongoDB URIs so they work in a sharded environment.
  • 2016.10.27 - Disallow keys and indexes that duplicate the properties
    of other keys or indexes. This may cause existing code to break. Fix
    is to root out the duplicates. If you have a key and an index that
    duplicate each other, you can safely remove the index, as it is
    redundant with the key.

Query Enhancements

13 Oct 04:26
Compare
Choose a tag to compare

[0.15.0] - Query Enhancements

  • 2016.10.08 - Remove KeyVal.key and change KeyVal from an
    abstract class into a trait. To migrate existing code, you will need
    to remove the Key argument supplied to each of your KeyVal types.
  • 2016.10.12 - Queries have been extended with "order-by", "offset",
    and "limit" clauses. The query DSL has likewise been extended.
  • 2016.10.12 - Many of the classes used to build queries have been
    re-organized into new package longevity.subdomain.query. This
    should not affect you if you are only using the query DSL.

Please refer to the user manual for the latest on the query API.

Subdomain Repackaging

05 Oct 21:51
Compare
Choose a tag to compare

In brief, we have collapsed packages longevity.subdomain.embeddable and longevity.subdomain.persistent into longevity.subdomain. We have moved a number of classes that were nothing more than DDD synonyms for existing longevity terms into a new side-project called longevity-ddd.

In effect we are cleaning out the namespace and removing some of the clutter of our DDD roots in our continued efforts to develop a general-purpose persistence framework.

The bloody details:

  • 2016.10.04 - Rename DerivedType to DerivedEType. Rename
    PolyType to PolyEType.
  • 2016.10.04 - Move CoreDomain, GenericSubdomain, and
    SupportingSubdomain from package longevity.subdomain to
    longevity.ddd.subdomain.
  • 2016.10.04 - Move Entity, EntityType, ValueObject, and
    ValueType from package longevity.subdomain.embeddable to
    longevity.ddd.subdomain.
  • 2016.10.04 - Move Event, Root, and ViewItem from package
    longevity.subdomain.persistent to package
    longevity.ddd.subdomain.
  • 2016.10.04 - Move EventType, RootType, and View from package
    longevity.subdomain.ptype to package longevity.ddd.subdomain.
  • 2016.10.04 - Move DerivedEType, EType, ETypePool,
    Embeddable, and PolyEType from package
    longevity.subdomain.embeddable to longevity.subdomain.
  • 2016.10.04 - Move Persistent from package
    longevity.subdomain.persistent to longevity.subdomain.
  • 2016.10.04 - Move DerivedPType, PType, PTypePool, and
    PolyPType from package longevity.subdomain.ptype to
    longevity.subdomain.
  • 2016.10.04 - Move package longevity.ddd.subdomain into a separate
    project called longevity-ddd. If you want to continue using the
    wrapper classes found there, please add the following dependency to
    your project: libraryDependencies += "org.longevityframework" %% "longevity-ddd" % "x.y.z".

Reflection Bugfix

03 Oct 17:12
Compare
Choose a tag to compare

There was a bug in our use of Scala reflection. In brief, we were using the class loader (i.e., scala reflection Mirror) that was used to load the longevity library. This is bogus, as we are reflecting against user classes! We changed things to reflect on the mirror of the TypeTags (they get wrapped in TypeKeys) that the user library provides to use.

End result is that projects that do funky things with class loaders will not get reflection exceptions when using longevity.

Jetsam

23 Sep 03:21
Compare
Choose a tag to compare

[0.13.0] - 2016.09.22 - Jetsam

Some odds and ends that have been accumulating in the backlog.

  • 2016.09.22 - Rename PersistenceStrategy to BackEnd. Move
    BackEnd from being a separate argument to LongevityContext
    creator methods, to being part of the config, under config property
    longevity.backEnd.
  • 2016.09.19 - Add OPState to go along with FPState and FOPState.
  • 2016.09.19 - Add JSON marshallers at
    LongevityContext.jsonMarshaller and
    LongevityContext.jsonUnmarshaller.

Flotsam

16 Sep 21:15
Compare
Choose a tag to compare

[0.12.0] - 2016.09.13 - Flotsam

Some odds and ends that have been accumulating in the backlog. The next release, Jetsam, will be more of the same.

  • 2016.09.15 - Remove PState.dirty. We are taking this out because
    there we may decide to stop keeping track of the original version
    of the persistent object, in order to reduce memory usage.
  • 2016.09.14 - Add RepoPool.createSchema() and configuration flag
    autocreateSchema.
  • 2016.09.13 - Add logging for all Repo methods and database calls.
  • 2016.09.13 - Add API method RepoPool.closeSession(). This was
    added because leaving the Cassandra session open can cause user
    programs to fail to terminate under certain circumstances, If your
    main program is hanging when using Cassandra, please call this
    method at the end of your program.

fix recently introduced bug in CassandraRepo

09 Sep 17:45
Compare
Choose a tag to compare

the previous fix in 0.11.3 was bogus. one of those days!

this bug is a NullPointerE in Cassandra create or update methods. It occurred when optimistic locking was turned off. i need to expand my test suite to cover different configs...