Releases: cph-cachet/carp.core-kotlin
Version 1.0.0-alpha.21
- Updated JSON serialization format to use class discriminators instead of array polymorphism, and serialize
UUID
andDataType
as primitive types (#157) - Upgraded to Kotlin 1.4.10.
- Dependency on
kotlin.reflect
has been removed. - Bugfix: incorrect return type for
Array.size
in TypeScript declarations (b2ff238)
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.20
This release is faulty; do not use: #159
- Updated JSON serialization format to use class discriminators instead of array polymorphism, and serialize
UUID
andDataType
as primitive types (#157) - Upgraded to Kotlin 1.4.10.
- Dependency on
kotlin.reflect
has been removed. - Bugfix: incorrect return type for
Array.size
in TypeScript declarations (b2ff238)
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.19
- Upgraded to Kotlin 1.4.0 and kotlinx.serialization 1.0.0-RC. (#152) As part of this upgrade, the TypeScript declarations have changed.
- Immutability checking at runtime replaced with a static checker plugin. (#149)
- Bugfix:
ManualTrigger
was not properly implemented before. (45f6c18)
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.18
Application service changes:
- Changed
DeploymentService.getParticipationInvitations
togetActiveParticipationInvitations
, which no longer returns stopped deployments and now also contains the registration state of the devices the participant is invited to use. (854d3f7) - Added
creationDate
to all aggregate roots. Concretely, this meansStudyRuntime
on the client subsystem, andStudyDeployment
on the deployment subsystem now havecreationDate
set whenever they are created. (9f5a073)
New extensibility:
- Support deploying custom protocol definitions to clients, deviating from the CARP core protocol domain objects. (e611d9d)
- Option to add application-specific data to
StudyInvitation
which can be sent to users when they are invited to studies. (5d465c5)
Bugfixes/enhancements:
StudyProtocol.description
was not persisted in snapshot. (4a2d4c4)- Don't unnecessarily call the deployment subsystem from study subsystem when there are no deployments yet. (1b2d7b3)
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.17
Protocol changes/additions:
- Helpers for testing (see README):
infrastructure.test
holds stubs of protocol domain objects which can be used for testing.- Added
String.makeUnknown
helper methods to replace protocol domain object types in JSON strings with unknown types for testing (5fae88b).
Common:
- Bugfix: JVM
DateTime.toString()
did not always have 3 digits decimal precision (1e1ff63).
Deployment:
- Bugfix:
StudyDeployment.getRemainingDevicesReadyToDeploy
expected all devices to be registered (e86ef70). Now only dependent devices need to be. - Bugfix: Replace
MasterDeviceDeployment
checksum withlastUpdateDate
(2607e02). This is a more robust implementation to verify ondeviceDeployed
whether the most recentMasterDeviceDeployment
was deployed.
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.16
Study protocol changes/additions:
- Support for sampling configurations (#124):
DeviceDescriptor
can store new default sampling configurations for available sensors on the device, identified byDataType
, which override the defaults for theDeviceDescriptor
.- A DSL for setting up
DeviceDescriptor
's, including the sampling configuration (exemplified bySmartphone
). Check the updated protocols code sample in the README to see what this looks like. - Introduction of
DataTypeSamplingScheme
which stores type information and sampling configuration options (and builders). As part of these changes, thePhoneSensorMeasureFactory
interface was removed. - Moved access to smartphone sensor measures to
Smartphone.Sensors
, anticipating the need to add others later such as surveys.
description
andcreationDate
added toStudyProtocol
. (c1a9d01)Stepcount
no longer has aninterval
option (e4a6a1e); this is not how stepcount is physically measured/supported by devices.StartOfStudyTrigger
is now a more genericElapsedTimeTrigger
. (5f5f318)- Added
ScheduledTrigger
using RFC 5545 recurrence rule notation to create schedules. (c1635ec) - Added
ManualTrigger
. (0d49d4d)
DeploymentService
changes:
StudyDeployment
andStudyDeploymentStatus
now containstartTime
, which is set once all required devices have been deployed and all devices have been registered for the first time.deploymentSuccessful
requires all devices to be registered. (2599df6)- Bugfix: deployment could never be ready when there were connected devices. (479afd8)
- Bugfix:
registerDevice
should not be idempotent when deployment has stopped. (5e79493) deployParticipantGroup
is now idempotent as long as the study deployment is running. (aef4aa5)
Repository changes:
- Added a
ClientRepository
for the client subsystem, replacingClientManager
snapshots. (e455407) - All repository interfaces of all subsystems are now defined as suspending functions. (bdcac5c)
Study.ParticipationAdded
event now containsstudyDeploymentId
. (ce6ca92)
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.15
The study subsystem now has access to deployment statuses. This can be used to show an overview of all running study deployments—or participant groups, as they are now called in the study subsystem. Participant groups can later carry extra study-subsystem-specific information, but there is a one-to-one mapping to deployments.
- Upgraded to Kotlin 1.3.72
DeploymentService
changes:
- State-machine based
StudyDeploymentStatus
using sealed classes, containing aDeviceDeploymentStatus
per device in the deployment. The different states are:Invited
,DeployingDevices
,DeploymentReady
, andStopped
. - All devices (including connected) require registration on the back-end before a deployment can be considered ready (
DeploymentReady
). - State-machine based
DeviceDeploymentStatus
using sealed classes, also listingremainingDevicesToRegisterBeforeDeployment
. The different states are:Unregistered
,Registered
,Deployed
, andNeedsRedeployment
. registerDevice
is now idempotent.
New DeploymentService
endpoints:
deploymentSuccessful
: called by client (master) devices to indicate to all stakeholders in the study deployment that deployment was successful and the device is ready to run the study.unregisterDevice
: to change devices during a study deployment, they need to be unregistered to then allow subsequent registration of a new device (registerDevice
). This might invalidate the current deployment of other devices at which point they will be requested to be redeployed (NeedsRedeployment
). This can be used, e.g., in case a previous deployment failed and you want to try out deploying on a new device.stop
: stops a study deployment after which no further changes are allowed and no more data will be collected.
StudyService
changes:
deployParticipantGroup
returnsParticipantGroupStatus
, containing theStudyDeploymentStatus
and deanonymized IDs of participants.
New StudyService
endpoints:
getParticipantGroupStatusList
: get the status of all deployed participant groups in a study.stopParticipantGroup
: the endpoint to stop study deployments from the study subsystem, where they are known as 'participant groups'. This call gets redirected to the deployment subsystem.
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.14
- Information on available actions added to
StudyStatus
(#112) - New
StudyService
endpoints:setInternalDescription
setInvitation
getStudyDetails
description
added toStudy
description
added toStudyInvitation
- Upgrade to Kotlin 1.3.71
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.13
- Updated dependencies, primarily Kotlin 1.3.70 and kotlinx.serialization 0.20.0.
- Added TypeScript descriptors for all objects depended on by
StudyService
. - Added
AggregateRoot
base class toStudy
,StudyProtocol
, andStudyDeployment
, which keeps tracks of changes applied to aggregate root objects. These changes can be 'consumed' by calling.consumeEvents()
in a repository implementation ofupdate( aggregateRootObject )
to have detailed information on which fields need to be updated. This simplifies repository implementations using a relational database.
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp
Version 1.0.0-alpha.12
AccountService
invites receives additional additional study details (StudyInvitation
andDeviceDescriptor
of the devices to deploy), andinviteExistingAccount
takesaccountId
rather than identity.Participation
is now stored withinStudyDeployment
, rather than a separate repository method.- New
DeploymentService
endpoint:getParticipationInvitations
- New
StudyService
endpoints:getStudiesOverview
addParticipant
getParticipants
setProtocol
goLive
deployParticipantGroup
- Refactoring: moved 'user' objects, such as
StudyOwner
touser
namespace. - Bugfix:
AltBeaconDeviceRegistration
could not be serialized in JS.
Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp