Posted on January 16, 2019

Spine 1.0.0-pre3


This pre-release brings several fixes and API improvements to the base library.


  • required option now works for oneof fields (#240);
  • repeated fields now may be included in FieldMasks (#250);
  • removed ValidatingBuilders for standard types (#252);
  • removed modelCompiler. generateBuildersFromClasspath (#252);
  • ValidatingBuilders generation attempts are dropped and warnings are not logged any more (#268).
  • generated field annotation lookup bug is fixed (#269);
  • ValidatingBuilders for nested types are now generated (#272);
  • constraint validation error messages are now more readable (#279);

API improvements

  • (is) and (every_is) options now allow implementing existing Java interfaces (#248);
  • introduced (set_once) field option, which does not allow to change the value of a field after it was once set (#257, #275);
  • numeric and boolean Protobuf types do not support (required); a message is logged on the option misuse; (#266);
  • generated identifier types now support factory methods for convenience (#267);
  • generated code is now marked with Java annotation types which can be specified (#280);
  • selected generated methods and classes now can be marked as @Internal (#284, #287).

Core Java

This pre-release brings many internal changes, simplifications, and development infrastructure refactoring.

Framework API Changes

  • the Sharding and all the connected concepts are deleted (#929);
  • the Model Verifier plugin now runs the command handler signature checks and fails/logs warnings on signature mismatches (#930);
  • BoundedContextBuilder now facades the context components building (such as IntegrationBus) (#929);
  • PmSubject class is added in order to allow testing process managers using Truth (#939);
  • Entity hierarchy is flattened and cleaned up (#940);
  • the version of Gradle is updated to 5.1.1 which affects the users of Spine Gradle plugins (#932).

Various Fixes

  • @VisibleForTesting annotation on ProcessManager.getBuilder() method is properly documented (#913);
  • internal API clean up (#933);
  • make the RecordBasedRepository able to find archived or/and deleted entities (#939).