gdbots/pbj-php

View on GitHub
CHANGELOG-0.x.md

Summary

Maintainability
Test Coverage
# CHANGELOG for 0.x
This changelog references the relevant changes done in 0.x versions.


## v0.4.0
* issue #18: Create MessageTrait with base methods for all mixins/traits.
* issue #19: [Field,FieldBuilder,Schema] Allow mixin fields to be declared overridable.
* Eliminated use of `CorrelatorTrait` and `MicrotimeTrait` as it doesn't align with the compiler strategy.
* issue #20: Add `retries` field to commands and request mixins.
* Moved `generateMessageRef` and `getUriTemplateVars` down to `Message` interface.


## v0.3.2
* issue #16: [DateType] Convert DateType to UTC as well to ensure comparisons are consistent.


## v0.3.1
* [AssertionFailed] Make exception message more helpful by including the field name.
* [MessageRef] Catch empty id and use 'null' if provided value is empty.  temp fix for YamlSerializer::deserialize issue.


## v0.3.0
* issue #13: Adding `isInSet`, `isInList`, `isInMap` to [Message] and implemented in [AbstractMessage].
* issue #13: For convenience, added `getFromListAt` and `getFromMap` to [Message] and implemented in [AbstractMessage].
* issue #12: Added [ItemMarshaler] for DynamoDb items for "aws/aws-sdk-php" library.
* issue #11: Added [DocumentMarshaler] and [MappingFactory] for "ruflin/elastica" library.
* [BooleanType] Modified to not be `allowedInSet`.
* Removed interface and abstract class implementation from mixins.  Mixins must only provide fields and a trait for convenience.
  It is up to the concrete message to implement interfaces and use those traits.  Compiler/generator will handle this eventually.
* Now using psr4 for less nesting of directories.
* Removed docblocks for expected Message methods to prevent IDE confusion when resolving methods, returning static and using static methods.
  This means that traits will appear to be calling non-existent functions but they will exist, once added to a class implementing Message.
* [Message] now provides `generateEtag` for creating an md5 hash of the current message payload.
* [MessageResolver] Added `findOneUsingMixin` and `findAllUsingMixin` static methods for finding schemas by mixins.


## v0.2.2
* Rename composer package to `gdbots/pbj`.


## v0.2.1
* issue #8: [EntityMixin] Make the type for `_id` an `IdentifierType` and use a random uuid as default.
* issue #8: [Entity] Changed entity id field name from `id` to `_id` and removed `setEntityId` from interface.
* issue #6: [PhpArraySerializer] Do not try to deserialize a null value, instead clear the field.
* issue #5: [MessageRef] The `id` will now support any string matching `/^[A-Za-z0-9:_\-]+$/`.
* issue #4: [Field] TimestampType default can now be disabled with `useTypeDefault = false`.
* [Format] Added "hashtag" option and implemented check in [StringType].


## v0.2.0
* issue #1: [Type] Add `isMessage` method to interface for simple check to determine if fields contain a nested message.
* issue #1: [MessageType] Impements `anyOfClassNames` so a field can support an array of possible messages.
* issue #2: [Type] Removed `allowedInSetOrList` and added `allowedInSet` since all field rules except `set` support all types.
* [Message] Removed `removeFromList` method from interface and abstract message.
* [Message] Added `removeFromListAt` method to interface and abstract message.
* [MessageRef], [MessageRefType] Added new class for creating links/references to other messages.
* Removed all correl_id fields from extensions and hasCorrelId, getCorrelId, setCorrelId, in favor of `correlator`.
* Killed all `Extension` classes and converted them to `Mixins`.
* [Schema] Eliminated schema extension capability, must use mixins now as `Schema` is now marked as final.
* [Schema] `create` method removed, use the constructor instead.
* [Field] When the field type is a `Message` the className option can be a class or interface.
* Added formats `slug` and `dated-slug` options for string type.
* Added [IdentifierType] which supports class names for explicit identifiers.


## v0.1.0
* Initial version.