All Versions
29
Latest Version
Avg Release Cycle
63 days
Latest Release
2512 days ago

Changelog History
Page 2

  • v0.18.0 Changes

    • โœ… 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.
  • v0.17.0 Changes

    • ๐Ÿšš 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.
  • v0.16.0 Changes

    • 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.
  • v0.15.0 Changes

    • ๐Ÿšš 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.

  • v0.14.0 Changes

    • 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".
  • v0.13.1 Changes

    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.

  • v0.13.0 Changes

    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.
  • v0.12.0 Changes

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

    • ๐Ÿšš 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 autogenerateSchema.
    • ๐ŸŒฒ 2016.09.13 - Add logging for all Repo methods and database calls.
    • 2016.09.13 - Add API method RepoPool.closeConnection(). 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.
  • v0.11.0 Changes

    • 2016.08.29 - Add factory methods for EType and all its descendents. The older pattern of making embeddable companion objects into ETypes (e.g., case class Email extends EType[Email]) still works, but now you can just mention the EType directly, when building your subdomain. (E.g., Subdomain(???, ???, ETypePool(EType[Email]))).
    • 2016.08.28 - Get rid of DerivedType.polyType and DerivedPType.polyPType. DerivedType and DerivedPType are now abstract classes instead of traits, so users may need to reorder their inheritance with clauses. (It's highly unlikely a user would have been be using these traits to extend a class.)
  • v0.10.0 Changes

    • ๐ŸŒ 2016.08.25 - Fix JSON translation of DateTimes to use time zone codes instead of offsets. Fix JSON parser to respect the time zone in the string representation of the DateTime.
    • 2016.08.24 - Add optimistic locking. To turn it on, you will need to set longevity.optimisticLocking = true in your typesafe config.
    • โœ… 2016.08.23 - Add LongevityContext.testDataGenerator.
    • ๐Ÿ‘ 2016.08.17 - Add support for Persistents and Embeddables that are case objects.
    • 2016.07.29 - Add LongevityConfig for well-typed configuration. Users can use LongevityConfig instead of a Typesafe Config to configure their context. Just use the LongevityContext constructor instead of the LongevityContext.apply factor method.
    • 2016.07.29 - Make PType.indexes optional. You used to have to declare an empty indexes singleton object within your PType if you had no indexes. Now, you can just leave it out. This should have no effect on existing code, but you can go back and remove empty indexes objects if you want.
    • 2016.07.22 - Make Akka Streams an optional dependency. If you are using Repo.streamByQuery, you must now declare a dependency on Akka Streams yourself: libraryDependencies += "com.typesafe.akka" %% "akka-stream" % "2.4.9".