├── .github ├── ci-check-samples.sh ├── determine-sdk-version.sh ├── kafka.yml ├── labeler.yml ├── patch-maven-versions.sh ├── publish-maven.sh ├── release.yml └── workflows │ ├── ci.yml │ ├── delete-pr-caches.yml │ ├── documentation.yml │ ├── fossa.yml │ ├── labeler.yml │ ├── publish-docs.yml │ └── publish.yml ├── .gitignore ├── .jvmopts ├── .scalafmt.conf ├── .vale.ini ├── CONTRIBUTING.md ├── LICENSE ├── README-vale.md ├── README.md ├── RELEASING.md ├── bin └── check-sample-protoc-version.sh ├── build.sbt ├── codegen ├── core │ └── src │ │ ├── main │ │ └── scala │ │ │ └── kalix │ │ │ └── codegen │ │ │ ├── DescriptorSet.scala │ │ │ ├── File.scala │ │ │ ├── Format.scala │ │ │ ├── Imports.scala │ │ │ ├── Log.scala │ │ │ ├── MessageType.scala │ │ │ ├── ModelBuilder.scala │ │ │ └── SourceGeneratorUtils.scala │ │ └── test │ │ ├── resources │ │ └── test-shoppingcart │ │ │ ├── shoppingcart_api.proto │ │ │ └── shoppingcart_domain.proto │ │ └── scala │ │ └── kalix │ │ └── codegen │ │ ├── ExampleSuiteBase.scala │ │ ├── PackagingSuite.scala │ │ ├── SourceGeneratorUtilsSuite.scala │ │ ├── TestData.scala │ │ └── TestProtoMessageTypeExtractor.scala ├── java-gen │ └── src │ │ ├── main │ │ └── scala │ │ │ └── kalix │ │ │ └── codegen │ │ │ └── java │ │ │ ├── ActionServiceSourceGenerator.scala │ │ │ ├── ActionTestKitGenerator.scala │ │ │ ├── AdditionalDescriptors.scala │ │ │ ├── ComponentsSourceGenerator.scala │ │ │ ├── EntityServiceSourceGenerator.scala │ │ │ ├── EventSourcedEntitySourceGenerator.scala │ │ │ ├── EventSourcedEntityTestKitGenerator.scala │ │ │ ├── JavaGeneratorUtils.scala │ │ │ ├── MainSourceGenerator.scala │ │ │ ├── ProtoMessageTypeExtractor.scala │ │ │ ├── ReplicatedEntitySourceGenerator.scala │ │ │ ├── SourceGenerator.scala │ │ │ ├── Types.scala │ │ │ ├── ValueEntitySourceGenerator.scala │ │ │ ├── ValueEntityTestKitGenerator.scala │ │ │ ├── ViewServiceSourceGenerator.scala │ │ │ └── WorkflowSourceGenerator.scala │ │ └── test │ │ ├── resources │ │ ├── descriptor-sets │ │ │ └── java-eventsourced-counter-user-function.desc │ │ └── tests │ │ │ ├── README.md │ │ │ ├── action-service │ │ │ ├── named-new-style │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── service │ │ │ │ │ │ ├── AbstractMyServiceNamedAction.java │ │ │ │ │ │ ├── MyServiceNamedActionProvider.java │ │ │ │ │ │ └── MyServiceNamedActionRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceNamedActionTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceNamedActionTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceNamedAction.java │ │ │ │ └── proto │ │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── different │ │ │ │ │ └── example-action.proto │ │ │ ├── simple-new-style │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── service │ │ │ │ │ │ ├── AbstractMyServiceAction.java │ │ │ │ │ │ ├── MyServiceActionProvider.java │ │ │ │ │ │ └── MyServiceActionRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceActionTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceActionTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceAction.java │ │ │ │ └── proto │ │ │ │ │ ├── example-action.proto │ │ │ │ │ └── external_domain.proto │ │ │ ├── simple-old-style │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── service │ │ │ │ │ │ ├── AbstractMyServiceAction.java │ │ │ │ │ │ ├── MyServiceActionProvider.java │ │ │ │ │ │ └── MyServiceActionRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceActionTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceActionTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── service │ │ │ │ │ │ └── MyServiceAction.java │ │ │ │ └── proto │ │ │ │ │ ├── example-action.proto │ │ │ │ │ └── external_domain.proto │ │ │ └── with-action-in-name │ │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.java │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ └── service │ │ │ │ │ ├── AbstractMyServiceAction.java │ │ │ │ │ ├── MyServiceActionProvider.java │ │ │ │ │ └── MyServiceActionRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceActionImplTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceActionImplTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.java │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceActionImpl.java │ │ │ │ └── proto │ │ │ │ └── example-action.proto │ │ │ ├── event-sourced-entity │ │ │ ├── absolute-packages │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ ├── counter_events.proto │ │ │ │ │ └── counter_state.proto │ │ │ ├── domain-in-service-package │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── counter_domain.proto │ │ │ ├── named-new-style-with-java-package │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── counter_domain.proto │ │ │ ├── named-new-style │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── counter_domain.proto │ │ │ ├── state-events-in-different-package │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ ├── counter_events.proto │ │ │ │ │ └── counter_state.proto │ │ │ └── unnamed-new-style │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── CounterServiceEntityIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.java │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ ├── AbstractCounterServiceEntity.java │ │ │ │ │ ├── CounterServiceEntityProvider.java │ │ │ │ │ └── CounterServiceEntityRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── CounterServiceEntityTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── CounterServiceEntityTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.java │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── CounterServiceEntity.java │ │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_domain.proto │ │ │ ├── replicated-entity │ │ │ ├── multimap-absolute-packages │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── SomeMultiMapIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ ├── AbstractSomeMultiMap.java │ │ │ │ │ │ │ ├── SomeMultiMapProvider.java │ │ │ │ │ │ │ └── SomeMultiMapRouter.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ └── KalixFactory.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ └── SomeMultiMap.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── Main.java │ │ │ │ └── proto │ │ │ │ │ ├── multi_map_api.proto │ │ │ │ │ └── multi_map_domain.proto │ │ │ ├── multimap-domain-in-service-package │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── SomeMultiMapIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ ├── AbstractSomeMultiMap.java │ │ │ │ │ │ │ ├── SomeMultiMapProvider.java │ │ │ │ │ │ │ └── SomeMultiMapRouter.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ └── KalixFactory.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── SomeMultiMap.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── Main.java │ │ │ │ └── proto │ │ │ │ │ ├── multi_map_api.proto │ │ │ │ │ └── multi_map_domain.proto │ │ │ ├── multimap-key-value-in-different-pacakge │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── SomeMultiMapIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ ├── AbstractSomeMultiMap.java │ │ │ │ │ │ │ ├── SomeMultiMapProvider.java │ │ │ │ │ │ │ └── SomeMultiMapRouter.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ └── KalixFactory.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ └── SomeMultiMap.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── Main.java │ │ │ │ └── proto │ │ │ │ │ ├── multi_map_api.proto │ │ │ │ │ ├── multi_map_key.proto │ │ │ │ │ └── multi_map_value.proto │ │ │ ├── multimap-named-new-style │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── SomeMultiMapIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ ├── AbstractSomeMultiMap.java │ │ │ │ │ │ │ ├── SomeMultiMapProvider.java │ │ │ │ │ │ │ └── SomeMultiMapRouter.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ └── KalixFactory.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ └── SomeMultiMap.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── Main.java │ │ │ │ └── proto │ │ │ │ │ ├── multi_map_api.proto │ │ │ │ │ └── multi_map_domain.proto │ │ │ ├── multimap-scalar-named-new-style │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── SomeMultiMapIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ ├── AbstractSomeMultiMap.java │ │ │ │ │ │ │ ├── SomeMultiMapProvider.java │ │ │ │ │ │ │ └── SomeMultiMapRouter.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ └── KalixFactory.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ ├── com │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── replicated │ │ │ │ │ │ │ └── multimap │ │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ └── SomeMultiMap.java │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── Main.java │ │ │ │ └── proto │ │ │ │ │ └── multi_map_api.proto │ │ │ └── multimap-unnamed-new-style │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── replicated │ │ │ │ │ └── multimap │ │ │ │ │ └── MultiMapServiceEntityIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ ├── AbstractMultiMapServiceEntity.java │ │ │ │ │ │ ├── MultiMapServiceEntityProvider.java │ │ │ │ │ │ └── MultiMapServiceEntityRouter.java │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.java │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ └── KalixFactory.java │ │ │ │ ├── generated-unmanaged │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── MultiMapServiceEntity.java │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── Main.java │ │ │ │ └── proto │ │ │ │ ├── multi_map_api.proto │ │ │ │ └── multi_map_domain.proto │ │ │ ├── value-entity │ │ │ ├── absolute-packages │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── counter_state.proto │ │ │ ├── domain-in-service-package │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── counter_domain.proto │ │ │ ├── named-new-style │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── counter_domain.proto │ │ │ ├── state-events-in-different-pacakge │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── CounterIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractCounter.java │ │ │ │ │ │ ├── CounterProvider.java │ │ │ │ │ │ └── CounterRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── CounterTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── valueentity │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── Counter.java │ │ │ │ └── proto │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── counter_state.proto │ │ │ └── unnamed-new-style │ │ │ │ ├── generated-integration-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ └── CounterServiceEntityIntegrationTest.java │ │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.java │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ └── valueentity │ │ │ │ │ ├── AbstractCounterServiceEntity.java │ │ │ │ │ ├── CounterServiceEntityProvider.java │ │ │ │ │ └── CounterServiceEntityRouter.java │ │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ └── CounterServiceEntityTestKit.java │ │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ └── CounterServiceEntityTest.java │ │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.java │ │ │ │ │ └── valueentity │ │ │ │ │ └── CounterServiceEntity.java │ │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_domain.proto │ │ │ ├── view-service │ │ │ ├── named-new-style │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── named │ │ │ │ │ │ └── view │ │ │ │ │ │ ├── AbstractMyUserByNameView.java │ │ │ │ │ │ ├── MyUserByNameViewProvider.java │ │ │ │ │ │ └── MyUserByNameViewRouter.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── named │ │ │ │ │ │ └── view │ │ │ │ │ │ └── MyUserByNameView.java │ │ │ │ └── proto │ │ │ │ │ └── example-named-views.proto │ │ │ ├── unnamed-new-style │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── unnamed │ │ │ │ │ │ └── view │ │ │ │ │ │ ├── AbstractUserByNameView.java │ │ │ │ │ │ ├── UserByNameViewProvider.java │ │ │ │ │ │ └── UserByNameViewRouter.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── unnamed │ │ │ │ │ │ └── view │ │ │ │ │ │ └── UserByNameView.java │ │ │ │ └── proto │ │ │ │ │ └── example-unnamed-views.proto │ │ │ ├── view-in-name-new-style │ │ │ │ ├── generated-managed │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Components.java │ │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ │ └── view │ │ │ │ │ │ ├── AbstractUserByNameView.java │ │ │ │ │ │ ├── UserByNameViewProvider.java │ │ │ │ │ │ └── UserByNameViewRouter.java │ │ │ │ ├── generated-unmanaged │ │ │ │ │ └── org │ │ │ │ │ │ └── example │ │ │ │ │ │ ├── Main.java │ │ │ │ │ │ └── view │ │ │ │ │ │ └── UserByNameViewImpl.java │ │ │ │ └── proto │ │ │ │ │ └── example-views.proto │ │ │ └── view-multiple-tables │ │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.java │ │ │ │ │ ├── ComponentsImpl.java │ │ │ │ │ ├── KalixFactory.java │ │ │ │ │ └── view │ │ │ │ │ ├── AbstractAnotherCustomerOrdersView.java │ │ │ │ │ ├── AbstractCustomerOrdersView.java │ │ │ │ │ ├── AnotherCustomerOrdersViewProvider.java │ │ │ │ │ ├── AnotherCustomerOrdersViewRouter.java │ │ │ │ │ ├── CustomerOrdersViewProvider.java │ │ │ │ │ └── CustomerOrdersViewRouter.java │ │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.java │ │ │ │ │ └── view │ │ │ │ │ ├── AnotherCustomerOrdersViewImpl.java │ │ │ │ │ └── CustomerOrdersView.java │ │ │ │ └── proto │ │ │ │ └── customer_orders.proto │ │ │ └── workflow │ │ │ ├── generated-integration-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── workflow │ │ │ │ └── TransferWorkflowIntegrationTest.java │ │ │ ├── generated-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Components.java │ │ │ │ ├── ComponentsImpl.java │ │ │ │ ├── KalixFactory.java │ │ │ │ ├── service │ │ │ │ ├── AbstractSomeServiceAction.java │ │ │ │ ├── SomeServiceActionProvider.java │ │ │ │ └── SomeServiceActionRouter.java │ │ │ │ └── workflow │ │ │ │ ├── AbstractTransferWorkflow.java │ │ │ │ ├── TransferWorkflowProvider.java │ │ │ │ └── TransferWorkflowRouter.java │ │ │ ├── generated-test-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── service │ │ │ │ └── SomeServiceActionTestKit.java │ │ │ ├── generated-test-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── service │ │ │ │ └── SomeServiceActionTest.java │ │ │ ├── generated-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ ├── service │ │ │ │ └── SomeServiceAction.java │ │ │ │ └── workflow │ │ │ │ └── TransferWorkflow.java │ │ │ └── proto │ │ │ ├── some_action.proto │ │ │ ├── workflow.proto │ │ │ └── workflow_domain.proto │ │ └── scala │ │ └── kalix │ │ └── codegen │ │ ├── FormatSpec.scala │ │ └── java │ │ ├── ExampleSuite.scala │ │ └── JavaGeneratorUtilsSuite.scala └── scala-gen │ └── src │ ├── main │ └── scala │ │ └── kalix │ │ └── codegen │ │ └── scalasdk │ │ ├── AbstractKalixGenerator.scala │ │ ├── DebugPrintlnLog.scala │ │ ├── KalixGenerator.scala │ │ ├── KalixTestGenerator.scala │ │ ├── KalixUnmanagedGenerator.scala │ │ ├── KalixUnmanagedTestGenerator.scala │ │ ├── ProtoMessageTypeExtractor.scala │ │ ├── gen.scala │ │ ├── genTests.scala │ │ ├── genUnmanaged.scala │ │ ├── genUnmanagedTest.scala │ │ └── impl │ │ ├── ActionServiceSourceGenerator.scala │ │ ├── ActionTestKitGenerator.scala │ │ ├── ComponentSourceGenerator.scala │ │ ├── EventSourcedEntitySourceGenerator.scala │ │ ├── EventSourcedEntityTestKitGenerator.scala │ │ ├── MainSourceGenerator.scala │ │ ├── ReplicatedEntitySourceGenerator.scala │ │ ├── ScalaGeneratorUtils.scala │ │ ├── SourceGenerator.scala │ │ ├── Types.scala │ │ ├── ValueEntitySourceGenerator.scala │ │ ├── ValueEntityTestKitGenerator.scala │ │ ├── ViewServiceSourceGenerator.scala │ │ └── WorkflowSourceGenerator.scala │ └── test │ ├── resources │ └── tests │ │ ├── README.md │ │ ├── action-service │ │ ├── named-new-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── service │ │ │ │ │ ├── AbstractMyServiceNamedAction.scala │ │ │ │ │ ├── MyServiceNamedActionProvider.scala │ │ │ │ │ └── MyServiceNamedActionRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceNamedActionTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceNamedActionSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceNamedAction.scala │ │ │ └── proto │ │ │ │ └── example-action.proto │ │ ├── simple-new-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── service │ │ │ │ │ ├── AbstractMyServiceAction.scala │ │ │ │ │ ├── MyServiceActionProvider.scala │ │ │ │ │ └── MyServiceActionRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceActionTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceActionSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceAction.scala │ │ │ └── proto │ │ │ │ ├── example-action.proto │ │ │ │ └── external_domain.proto │ │ ├── simple-old-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── service │ │ │ │ │ ├── AbstractMyServiceAction.scala │ │ │ │ │ ├── MyServiceActionProvider.scala │ │ │ │ │ └── MyServiceActionRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceActionTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceActionSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── service │ │ │ │ │ └── MyServiceAction.scala │ │ │ └── proto │ │ │ │ ├── example-action.proto │ │ │ │ └── external_domain.proto │ │ └── with-action-in-name │ │ │ ├── generated-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Components.scala │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ ├── KalixFactory.scala │ │ │ │ └── service │ │ │ │ ├── AbstractMyServiceAction.scala │ │ │ │ ├── MyServiceActionProvider.scala │ │ │ │ └── MyServiceActionRouter.scala │ │ │ ├── generated-test-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── service │ │ │ │ └── MyServiceActionImplTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── service │ │ │ │ └── MyServiceActionImplSpec.scala │ │ │ ├── generated-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Main.scala │ │ │ │ └── service │ │ │ │ └── MyServiceActionImpl.scala │ │ │ └── proto │ │ │ └── example-action.proto │ │ ├── event-sourced-entity │ │ ├── absolute-packages │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── domain │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── domain │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── domain │ │ │ │ │ └── CounterSpec.scala │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── CounterServiceIntegrationSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── domain │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ ├── counter_events.proto │ │ │ │ └── counter_state.proto │ │ ├── domain-in-service-package │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ ├── CounterServiceIntegrationSpec.scala │ │ │ │ │ └── CounterSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_domain.proto │ │ ├── named-new-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── domain │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── domain │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ ├── CounterServiceIntegrationSpec.scala │ │ │ │ │ └── domain │ │ │ │ │ └── CounterSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── domain │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_domain.proto │ │ ├── state-events-in-different-pacakge │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── domain │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── domain │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ ├── CounterServiceIntegrationSpec.scala │ │ │ │ │ └── domain │ │ │ │ │ └── CounterSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ └── domain │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ ├── counter_events.proto │ │ │ │ └── counter_state.proto │ │ └── unnamed-new-style │ │ │ ├── generated-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Components.scala │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ ├── KalixFactory.scala │ │ │ │ └── eventsourcedentity │ │ │ │ ├── AbstractCounterServiceEntity.scala │ │ │ │ ├── CounterServiceEntityProvider.scala │ │ │ │ └── CounterServiceEntityRouter.scala │ │ │ ├── generated-test-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── eventsourcedentity │ │ │ │ └── CounterServiceEntityTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── eventsourcedentity │ │ │ │ ├── CounterServiceEntitySpec.scala │ │ │ │ └── CounterServiceIntegrationSpec.scala │ │ │ ├── generated-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Main.scala │ │ │ │ └── eventsourcedentity │ │ │ │ └── CounterServiceEntity.scala │ │ │ └── proto │ │ │ ├── counter_api.proto │ │ │ └── counter_domain.proto │ │ ├── replicated-entity │ │ ├── multimap-absolute-packages │ │ │ ├── generated-managed │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractSomeMultiMap.scala │ │ │ │ │ │ ├── SomeMultiMapProvider.scala │ │ │ │ │ │ └── SomeMultiMapRouter.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ └── KalixFactory.scala │ │ │ ├── generated-unmanaged │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── SomeMultiMap.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── Main.scala │ │ │ └── proto │ │ │ │ ├── multi_map_api.proto │ │ │ │ └── multi_map_domain.proto │ │ ├── multimap-domain-in-service-package │ │ │ ├── generated-managed │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ ├── AbstractSomeMultiMap.scala │ │ │ │ │ │ ├── SomeMultiMapProvider.scala │ │ │ │ │ │ └── SomeMultiMapRouter.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ └── KalixFactory.scala │ │ │ ├── generated-unmanaged │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── SomeMultiMap.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── Main.scala │ │ │ └── proto │ │ │ │ ├── multi_map_api.proto │ │ │ │ └── multi_map_domain.proto │ │ ├── multimap-key-value-in-different-pacakge │ │ │ ├── generated-managed │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractSomeMultiMap.scala │ │ │ │ │ │ ├── SomeMultiMapProvider.scala │ │ │ │ │ │ └── SomeMultiMapRouter.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ └── KalixFactory.scala │ │ │ ├── generated-unmanaged │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── SomeMultiMap.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── Main.scala │ │ │ └── proto │ │ │ │ ├── multi_map_api.proto │ │ │ │ ├── multi_map_key.proto │ │ │ │ └── multi_map_value.proto │ │ ├── multimap-named-new-style │ │ │ ├── generated-managed │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractSomeMultiMap.scala │ │ │ │ │ │ ├── SomeMultiMapProvider.scala │ │ │ │ │ │ └── SomeMultiMapRouter.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ └── KalixFactory.scala │ │ │ ├── generated-unmanaged │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── SomeMultiMap.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── Main.scala │ │ │ └── proto │ │ │ │ ├── multi_map_api.proto │ │ │ │ └── multi_map_domain.proto │ │ ├── multimap-scalar-named-new-style │ │ │ ├── generated-managed │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ ├── AbstractSomeMultiMap.scala │ │ │ │ │ │ ├── SomeMultiMapProvider.scala │ │ │ │ │ │ └── SomeMultiMapRouter.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ └── KalixFactory.scala │ │ │ ├── generated-unmanaged │ │ │ │ ├── com │ │ │ │ │ └── example │ │ │ │ │ │ └── replicated │ │ │ │ │ │ └── multimap │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── SomeMultiMap.scala │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── Main.scala │ │ │ └── proto │ │ │ │ └── multi_map_api.proto │ │ └── multimap-unnamed-new-style │ │ │ ├── generated-managed │ │ │ ├── com │ │ │ │ └── example │ │ │ │ │ └── replicated │ │ │ │ │ └── multimap │ │ │ │ │ ├── AbstractMultiMapServiceEntity.scala │ │ │ │ │ ├── MultiMapServiceEntityProvider.scala │ │ │ │ │ └── MultiMapServiceEntityRouter.scala │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Components.scala │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ └── KalixFactory.scala │ │ │ ├── generated-unmanaged │ │ │ ├── com │ │ │ │ └── example │ │ │ │ │ └── replicated │ │ │ │ │ └── multimap │ │ │ │ │ └── MultiMapServiceEntity.scala │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── Main.scala │ │ │ └── proto │ │ │ ├── multi_map_api.proto │ │ │ └── multi_map_domain.proto │ │ ├── value-entity │ │ ├── absolute-packages │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── domain │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── domain │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── domain │ │ │ │ │ └── CounterSpec.scala │ │ │ │ │ └── valueentity │ │ │ │ │ └── CounterServiceIntegrationSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── domain │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_state.proto │ │ ├── domain-in-service-package │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── valueentity │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ ├── CounterServiceIntegrationSpec.scala │ │ │ │ │ └── CounterSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── valueentity │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_domain.proto │ │ ├── named-new-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── valueentity │ │ │ │ │ └── domain │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ └── domain │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ ├── CounterServiceIntegrationSpec.scala │ │ │ │ │ └── domain │ │ │ │ │ └── CounterSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── valueentity │ │ │ │ │ └── domain │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_domain.proto │ │ ├── state-events-in-different-pacakge │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── valueentity │ │ │ │ │ └── domain │ │ │ │ │ ├── AbstractCounter.scala │ │ │ │ │ ├── CounterProvider.scala │ │ │ │ │ └── CounterRouter.scala │ │ │ ├── generated-test-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ └── domain │ │ │ │ │ └── CounterTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── valueentity │ │ │ │ │ ├── CounterServiceIntegrationSpec.scala │ │ │ │ │ └── domain │ │ │ │ │ └── CounterSpec.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── valueentity │ │ │ │ │ └── domain │ │ │ │ │ └── Counter.scala │ │ │ └── proto │ │ │ │ ├── counter_api.proto │ │ │ │ └── counter_state.proto │ │ └── unnamed-new-style │ │ │ ├── generated-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Components.scala │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ ├── KalixFactory.scala │ │ │ │ └── valueentity │ │ │ │ ├── AbstractCounterServiceEntity.scala │ │ │ │ ├── CounterServiceEntityProvider.scala │ │ │ │ └── CounterServiceEntityRouter.scala │ │ │ ├── generated-test-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── valueentity │ │ │ │ └── CounterServiceEntityTestKit.scala │ │ │ ├── generated-test-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── valueentity │ │ │ │ ├── CounterServiceEntitySpec.scala │ │ │ │ └── CounterServiceIntegrationSpec.scala │ │ │ ├── generated-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Main.scala │ │ │ │ └── valueentity │ │ │ │ └── CounterServiceEntity.scala │ │ │ └── proto │ │ │ ├── counter_api.proto │ │ │ └── counter_domain.proto │ │ ├── view-service │ │ ├── named-new-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── named │ │ │ │ │ └── view │ │ │ │ │ ├── AbstractMyUserByNameView.scala │ │ │ │ │ ├── MyUserByNameViewProvider.scala │ │ │ │ │ └── MyUserByNameViewRouter.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── named │ │ │ │ │ └── view │ │ │ │ │ └── MyUserByNameView.scala │ │ │ └── proto │ │ │ │ └── example-named-views.proto │ │ ├── unnamed-new-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── unnamed │ │ │ │ │ └── view │ │ │ │ │ ├── AbstractUserByNameView.scala │ │ │ │ │ ├── UserByNameViewProvider.scala │ │ │ │ │ └── UserByNameViewRouter.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── unnamed │ │ │ │ │ └── view │ │ │ │ │ └── UserByNameView.scala │ │ │ └── proto │ │ │ │ └── example-unnamed-views.proto │ │ ├── view-in-name-new-style │ │ │ ├── generated-managed │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Components.scala │ │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ │ ├── KalixFactory.scala │ │ │ │ │ └── view │ │ │ │ │ ├── AbstractUserByNameView.scala │ │ │ │ │ ├── UserByNameViewProvider.scala │ │ │ │ │ └── UserByNameViewRouter.scala │ │ │ ├── generated-unmanaged │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ ├── Main.scala │ │ │ │ │ └── view │ │ │ │ │ └── UserByNameViewImpl.scala │ │ │ └── proto │ │ │ │ └── example-views.proto │ │ └── view-multiple-tables │ │ │ ├── generated-managed │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Components.scala │ │ │ │ ├── ComponentsImpl.scala │ │ │ │ ├── KalixFactory.scala │ │ │ │ └── view │ │ │ │ ├── AbstractAnotherCustomerOrdersView.scala │ │ │ │ ├── AbstractCustomerOrdersView.scala │ │ │ │ ├── AnotherCustomerOrdersViewProvider.scala │ │ │ │ ├── AnotherCustomerOrdersViewRouter.scala │ │ │ │ ├── CustomerOrdersViewProvider.scala │ │ │ │ └── CustomerOrdersViewRouter.scala │ │ │ ├── generated-unmanaged │ │ │ └── org │ │ │ │ └── example │ │ │ │ ├── Main.scala │ │ │ │ └── view │ │ │ │ ├── AnotherCustomerOrdersViewImpl.scala │ │ │ │ └── CustomerOrdersView.scala │ │ │ └── proto │ │ │ └── customer_orders.proto │ │ └── workflow │ │ ├── generated-managed │ │ └── org │ │ │ └── example │ │ │ ├── Components.scala │ │ │ ├── ComponentsImpl.scala │ │ │ ├── KalixFactory.scala │ │ │ ├── service │ │ │ ├── AbstractSomeServiceAction.scala │ │ │ ├── SomeServiceActionProvider.scala │ │ │ └── SomeServiceActionRouter.scala │ │ │ └── workflow │ │ │ ├── AbstractTransferWorkflow.scala │ │ │ ├── TransferWorkflowProvider.scala │ │ │ └── TransferWorkflowRouter.scala │ │ ├── generated-test-managed │ │ └── org │ │ │ └── example │ │ │ └── service │ │ │ └── SomeServiceActionTestKit.scala │ │ ├── generated-test-unmanaged │ │ └── org │ │ │ └── example │ │ │ └── service │ │ │ └── SomeServiceActionSpec.scala │ │ ├── generated-unmanaged │ │ └── org │ │ │ └── example │ │ │ ├── Main.scala │ │ │ ├── service │ │ │ └── SomeServiceAction.scala │ │ │ └── workflow │ │ │ └── TransferWorkflow.scala │ │ └── proto │ │ ├── some_action.proto │ │ ├── workflow.proto │ │ └── workflow_domain.proto │ └── scala │ └── kalix │ └── codegen │ └── scalasdk │ └── ExampleSuite.scala ├── devtools ├── docker-compose.yml └── src │ ├── main │ ├── resources │ │ └── reference.conf │ └── scala │ │ └── kalix │ │ └── devtools │ │ └── impl │ │ ├── DevModeSettings.scala │ │ ├── DockerComposeUtils.scala │ │ ├── HostAndPort.scala │ │ ├── ServicePortMappingsExtractor.scala │ │ ├── TracingPortExtractor.scala │ │ └── UserServicePortExtractor.scala │ └── test │ └── scala │ └── kalix │ └── devtools │ └── impl │ ├── DevModeSettingsSpec.scala │ ├── DockerComposeTestFile.scala │ ├── DockerComposeUtilsSpec.scala │ ├── HostAndPortSpec.scala │ ├── ServicePortMappingsExtractorSpec.scala │ ├── TracingPortExtractorSpec.scala │ └── UserServicePortExtractorSpec.scala ├── docs ├── .examplesignore ├── .gitignore ├── Makefile ├── README.md ├── bin │ ├── bundle.sh │ ├── deploy.sh │ └── version.sh ├── config │ └── validate-links.json ├── dev │ ├── antora.yml │ └── src │ │ ├── antora.yml │ │ └── modules │ │ └── ROOT │ │ ├── images │ │ └── new-tab.svg │ │ └── partials │ │ ├── grpc │ │ ├── using-acls.adoc │ │ └── using-jwts.adoc │ │ └── include.adoc ├── migration-guides.md ├── release-issue-template.md └── src │ ├── antora.yml │ └── modules │ ├── developing │ └── pages │ │ └── development-process-proto.adoc │ └── java-protobuf │ ├── images │ └── eventing-testkit-sample.svg │ ├── nav.adoc │ ├── pages │ ├── access-control.adoc │ ├── actions.adoc │ ├── api.adoc │ ├── call-another-service.adoc │ ├── developer-tools.adoc │ ├── event-sourced-entities.adoc │ ├── failures-and-errors.adoc │ ├── index.adoc │ ├── project-template.adoc │ ├── publishing-subscribing.adoc │ ├── quickstart │ │ ├── cr-value-entity-java.adoc │ │ ├── cr-value-entity-kafka-java.adoc │ │ ├── cr-value-entity-scala.adoc │ │ ├── cr-value-entity-views-java.adoc │ │ └── sc-eventsourced-entity-java.adoc │ ├── replicated-entity-crdt.adoc │ ├── running-locally.adoc │ ├── serving-web-resources.adoc │ ├── timers.adoc │ ├── using-jwts.adoc │ ├── value-entity.adoc │ ├── views.adoc │ ├── workflows.adoc │ └── writing-grpc-descriptors-protobuf.adoc │ └── partials │ ├── actions.adoc │ ├── effects-action.adoc │ ├── effects-api.adoc │ ├── effects-event-sourced-entity.adoc │ ├── effects-replicated-entity.adoc │ ├── effects-value-entity.adoc │ ├── effects-view.adoc │ ├── effects-workflow.adoc │ ├── env-file.txt │ ├── eventsourced-snapshots.adoc │ ├── eventsourced.adoc │ ├── important-mvn-kalixdeploy.adoc │ ├── pubsub-note.adoc │ ├── query-syntax-advanced.adoc │ ├── query-syntax-paging.adoc │ ├── query-syntax-reference.adoc │ ├── testing-entity.adoc │ └── timers-intro.adoc ├── maven-java ├── .gitignore ├── README.md ├── kalix-java-protobuf-parent │ └── pom.xml ├── kalix-maven-archetype-event-sourced-entity │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ └── resources │ │ ├── META-INF │ │ └── maven │ │ │ └── archetype-metadata.xml │ │ └── archetype-resources │ │ ├── .env │ │ ├── .gitignore │ │ ├── README.md │ │ ├── docker-compose.yml │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── __packageInPathFormat__ │ │ │ │ ├── counter_api.proto │ │ │ │ ├── domain │ │ │ │ └── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ └── resources │ │ └── logback-test.xml ├── kalix-maven-archetype-value-entity │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ └── resources │ │ ├── META-INF │ │ └── maven │ │ │ └── archetype-metadata.xml │ │ └── archetype-resources │ │ ├── .env │ │ ├── .gitignore │ │ ├── README.md │ │ ├── docker-compose.yml │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── __packageInPathFormat__ │ │ │ │ ├── counter_api.proto │ │ │ │ ├── domain │ │ │ │ └── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ └── resources │ │ └── logback-test.xml ├── kalix-maven-plugin │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── kalix │ │ │ ├── DeployMojo.java │ │ │ └── GenerateMojo.java │ │ ├── resources │ │ └── META-INF │ │ │ └── m2e │ │ │ └── lifecycle-mapping-metadata.xml │ │ └── scala │ │ └── kalix │ │ ├── RunAllMojo.scala │ │ ├── RunMojo.scala │ │ └── RunParameters.scala └── pom.xml ├── project ├── Common.scala ├── Dependencies.scala ├── ExampleSuiteCompilationProject.scala ├── IntegrationTests.scala ├── ProtocolProject.scala ├── PublishPlugin.scala ├── ReflectiveCodeGen.scala ├── SdkVersion.scala ├── build.properties └── plugins.sbt ├── publishLocally.sh ├── samples ├── java-protobuf-customer-registry-kafka-quickstart │ ├── .bundleignore │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── customer │ │ │ │ └── api │ │ │ │ ├── CustomerActionIntegrationTest.java │ │ │ │ ├── CustomerActionWithKafkaIntegrationTest.java │ │ │ │ └── CustomerIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── customer │ │ │ │ ├── Main.java │ │ │ │ ├── action │ │ │ │ └── CustomerStateSubscriptionAction.java │ │ │ │ └── domain │ │ │ │ └── Customer.java │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── action │ │ │ │ └── customer_action.proto │ │ │ │ ├── api │ │ │ │ └── customer_api.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── customer │ │ │ ├── action │ │ │ └── CustomerStateSubscriptionActionTest.java │ │ │ └── domain │ │ │ └── CustomerTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-customer-registry-quickstart │ ├── .bundleignore │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── customer │ │ │ │ └── api │ │ │ │ └── CustomerIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── customer │ │ │ │ ├── Main.java │ │ │ │ └── domain │ │ │ │ └── Customer.java │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ └── customer_api.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── customer │ │ │ └── domain │ │ │ └── CustomerTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-customer-registry-views-quickstart │ ├── .bundleignore │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ └── CustomerIntegrationTest.java │ │ │ │ └── view │ │ │ │ ├── CustomerByEmailIntegrationTest.java │ │ │ │ └── CustomerByNameIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── customer │ │ │ │ ├── Main.java │ │ │ │ ├── domain │ │ │ │ └── Customer.java │ │ │ │ └── view │ │ │ │ ├── CustomerByEmailView.java │ │ │ │ └── CustomerByNameView.java │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ └── customer_api.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── customer │ │ │ └── domain │ │ │ └── CustomerTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-doc-snippets │ ├── .env │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── JwtIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── DelegatingServiceAction.java │ │ │ │ ├── JwtServiceActionImpl.java │ │ │ │ └── json │ │ │ │ ├── JsonKeyValueMessage.java │ │ │ │ └── MyServiceAction.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── counter_api.proto │ │ │ │ ├── delegating_service.proto │ │ │ │ ├── json │ │ │ │ └── json_api.proto │ │ │ │ ├── jwt_service.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── on_startup.proto │ │ │ │ └── topics_action.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── json │ │ │ └── MyServiceActionTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-eventsourced-counter │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── CounterIntegrationTest.java │ │ │ │ └── CounterTopicIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ ├── actions │ │ │ │ ├── CounterCommandFromTopicAction.java │ │ │ │ ├── CounterJournalToTopicAction.java │ │ │ │ ├── CounterJournalToTopicWithMetaAction.java │ │ │ │ └── CounterTopicSubscriptionAction.java │ │ │ │ └── domain │ │ │ │ └── Counter.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── actions │ │ │ │ ├── counter_topic.proto │ │ │ │ └── counter_topic_sub.proto │ │ │ │ ├── counter_api.proto │ │ │ │ ├── domain │ │ │ │ └── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ ├── actions │ │ │ ├── CounterCommandFromTopicActionTest.java │ │ │ ├── CounterJournalToTopicActionTest.java │ │ │ ├── CounterJournalToTopicWithMetaActionTest.java │ │ │ └── CounterTopicSubscriptionActionTest.java │ │ │ └── domain │ │ │ └── CounterTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-eventsourced-customer-registry-subscriber │ ├── .env │ ├── README.md │ ├── docker-compose-integration.yml │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── customer │ │ │ └── CustomerIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── customer │ │ │ │ ├── Main.java │ │ │ │ ├── action │ │ │ │ └── CustomerActionImpl.java │ │ │ │ └── view │ │ │ │ └── AllCustomersViewImpl.java │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ ├── customer_action.proto │ │ │ │ ├── customer_api.proto │ │ │ │ └── publisher_api.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ └── java │ │ └── customer │ │ └── action │ │ └── CustomerActionImplTest.java ├── java-protobuf-eventsourced-customer-registry │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── customer │ │ │ └── api │ │ │ └── CustomerEntityIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── customer │ │ │ │ ├── Main.java │ │ │ │ ├── MainWithCustomViewId.java │ │ │ │ ├── api │ │ │ │ └── CustomerEventsServiceAction.java │ │ │ │ ├── domain │ │ │ │ └── CustomerEntity.java │ │ │ │ └── view │ │ │ │ ├── CustomerByCityStreamingView.java │ │ │ │ └── CustomerByNameView.java │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ ├── customer_api.proto │ │ │ │ └── direct_customer_events.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── customer │ │ │ ├── api │ │ │ └── CustomerEventsServiceActionTest.java │ │ │ └── domain │ │ │ └── CustomerEntityTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-eventsourced-shopping-cart │ ├── .env │ ├── README.md │ ├── RELEASING.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ └── ShoppingCartIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ ├── Main.java │ │ │ │ ├── domain │ │ │ │ └── ShoppingCart.java │ │ │ │ └── view │ │ │ │ └── ShoppingCartViewServiceImpl.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ ├── domain │ │ │ │ └── shoppingcart_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── shoppingcart_api.proto │ │ │ │ └── view │ │ │ │ └── shopping_cart_view_model.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── shoppingcart │ │ │ └── domain │ │ │ └── ShoppingCartTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-fibonacci-action │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── fibonacci │ │ │ └── FibonacciActionIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ └── fibonacci │ │ │ │ ├── FibonacciAction.java │ │ │ │ └── FibonacciActionGenerated.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── fibonacci │ │ │ │ ├── fibonacci.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── fibonacci │ │ │ └── FibonacciActionTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-first-service │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── CounterIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ └── domain │ │ │ │ └── Counter.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── counter_api.proto │ │ │ │ ├── domain │ │ │ │ └── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── domain │ │ │ └── CounterTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-reliable-timers │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── OrderIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ ├── actions │ │ │ │ └── OrderAction.java │ │ │ │ └── domain │ │ │ │ └── Order.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── actions │ │ │ │ └── order_action.proto │ │ │ │ ├── domain │ │ │ │ └── order_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── order_service_api.proto │ │ └── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ ├── actions │ │ │ └── OrderActionTest.java │ │ │ └── domain │ │ │ └── OrderTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-replicatedentity-examples │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── replicated │ │ │ │ ├── counter │ │ │ │ └── SomeCounterIntegrationTest.java │ │ │ │ ├── countermap │ │ │ │ └── SomeCounterMapIntegrationTest.java │ │ │ │ ├── map │ │ │ │ └── SomeMapIntegrationTest.java │ │ │ │ ├── multimap │ │ │ │ └── SomeMultiMapIntegrationTest.java │ │ │ │ ├── register │ │ │ │ └── SomeRegisterIntegrationTest.java │ │ │ │ ├── registermap │ │ │ │ └── SomeRegisterMapIntegrationTest.java │ │ │ │ └── set │ │ │ │ └── SomeSetIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── replicated │ │ │ ├── Main.java │ │ │ ├── counter │ │ │ └── domain │ │ │ │ └── SomeCounter.java │ │ │ ├── countermap │ │ │ └── domain │ │ │ │ └── SomeCounterMap.java │ │ │ ├── map │ │ │ └── domain │ │ │ │ └── SomeMap.java │ │ │ ├── multimap │ │ │ └── domain │ │ │ │ └── SomeMultiMap.java │ │ │ ├── register │ │ │ └── domain │ │ │ │ └── SomeRegister.java │ │ │ ├── registermap │ │ │ └── domain │ │ │ │ └── SomeRegisterMap.java │ │ │ └── set │ │ │ └── domain │ │ │ └── SomeSet.java │ │ ├── proto │ │ └── com │ │ │ └── example │ │ │ └── replicated │ │ │ ├── counter │ │ │ └── counter_api.proto │ │ │ ├── countermap │ │ │ └── counter_map_api.proto │ │ │ ├── kalix_policy.proto │ │ │ ├── map │ │ │ ├── domain │ │ │ │ └── map_domain.proto │ │ │ └── map_api.proto │ │ │ ├── multimap │ │ │ └── multi_map_api.proto │ │ │ ├── register │ │ │ ├── domain │ │ │ │ └── register_domain.proto │ │ │ └── register_api.proto │ │ │ ├── registermap │ │ │ ├── domain │ │ │ │ └── register_map_domain.proto │ │ │ └── register_map_api.proto │ │ │ └── set │ │ │ └── set_api.proto │ │ └── resources │ │ ├── logback-dev-mode.xml │ │ └── logback.xml ├── java-protobuf-replicatedentity-shopping-cart │ ├── .env │ ├── README.md │ ├── RELEASING.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ └── ShoppingCartIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── shoppingcart │ │ │ ├── Main.java │ │ │ └── domain │ │ │ └── ShoppingCart.java │ │ ├── proto │ │ └── com │ │ │ └── example │ │ │ └── shoppingcart │ │ │ ├── domain │ │ │ └── shoppingcart_domain.proto │ │ │ ├── kalix_policy.proto │ │ │ └── shoppingcart_api.proto │ │ └── resources │ │ ├── logback-dev-mode.xml │ │ └── logback.xml ├── java-protobuf-shopping-cart-quickstart │ ├── .bundleignore │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── shopping │ │ │ └── cart │ │ │ └── api │ │ │ └── ShoppingCartEntityIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── shopping │ │ │ │ └── cart │ │ │ │ ├── Main.java │ │ │ │ └── domain │ │ │ │ └── ShoppingCartEntity.java │ │ ├── proto │ │ │ └── shopping │ │ │ │ └── cart │ │ │ │ ├── api │ │ │ │ └── shopping_cart_api.proto │ │ │ │ ├── domain │ │ │ │ └── shopping_cart_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── shopping │ │ │ └── cart │ │ │ └── domain │ │ │ └── ShoppingCartEntityTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-tracing │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── ControllerAction.java │ │ │ │ ├── JsonResponseHandler.java │ │ │ │ └── Main.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── controller_action.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── ControllerActionTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-transfer-workflow-compensation │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── transfer │ │ │ │ └── api │ │ │ │ │ └── TransferWorkflowIntegrationTest.java │ │ │ │ └── wallet │ │ │ │ └── api │ │ │ │ ├── WalletEntityIntegrationTest.java │ │ │ │ └── WalletIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ ├── transfer │ │ │ │ └── api │ │ │ │ │ └── TransferWorkflow.java │ │ │ │ └── wallet │ │ │ │ └── api │ │ │ │ └── WalletEntity.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── transfer │ │ │ │ ├── transfer_api.proto │ │ │ │ └── transfer_domain.proto │ │ │ │ └── wallet │ │ │ │ ├── wallet_api.proto │ │ │ │ └── wallet_domain.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── wallet │ │ │ └── api │ │ │ └── WalletEntityTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-transfer-workflow │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── transfer │ │ │ │ └── api │ │ │ │ │ └── TransferWorkflowIntegrationTest.java │ │ │ │ └── wallet │ │ │ │ └── api │ │ │ │ └── WalletEntityIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ ├── transfer │ │ │ │ └── api │ │ │ │ │ └── TransferWorkflow.java │ │ │ │ └── wallet │ │ │ │ └── api │ │ │ │ └── WalletEntity.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── transfer │ │ │ │ ├── transfer_api.proto │ │ │ │ └── transfer_domain.proto │ │ │ │ └── wallet │ │ │ │ ├── wallet_api.proto │ │ │ │ └── wallet_domain.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── wallet │ │ │ └── api │ │ │ └── WalletEntityTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-valueentity-counter │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── CounterIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── Main.java │ │ │ │ ├── actions │ │ │ │ ├── CounterStateSubscriptionAction.java │ │ │ │ ├── DoubleCounterAction.java │ │ │ │ └── ExternalCounterAction.java │ │ │ │ └── domain │ │ │ │ └── Counter.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── actions │ │ │ │ ├── counter_states_sub.proto │ │ │ │ ├── double-counter.proto │ │ │ │ └── external_counter.proto │ │ │ │ ├── counter_api.proto │ │ │ │ ├── domain │ │ │ │ └── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ └── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ ├── actions │ │ │ ├── CounterStateSubscriptionActionTest.java │ │ │ ├── DoubleCounterActionTest.java │ │ │ └── ExternalCounterActionTest.java │ │ │ └── domain │ │ │ └── CounterTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-valueentity-customer-registry │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── customer │ │ │ ├── api │ │ │ └── CustomerValueEntityIntegrationTest.java │ │ │ └── view │ │ │ └── CustomersResponseByCityViewIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── customer │ │ │ │ ├── Main.java │ │ │ │ ├── action │ │ │ │ └── CustomerActionImpl.java │ │ │ │ ├── domain │ │ │ │ └── CustomerValueEntity.java │ │ │ │ └── view │ │ │ │ ├── CustomerByEmailView.java │ │ │ │ ├── CustomerByNameView.java │ │ │ │ ├── CustomerDetailsByNameView.java │ │ │ │ ├── CustomerSummaryByNameView.java │ │ │ │ ├── CustomersResponseByCityView.java │ │ │ │ └── CustomersResponseByNameView.java │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── action │ │ │ │ └── customer_action.proto │ │ │ │ ├── api │ │ │ │ └── customer_api.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── customer │ │ │ ├── action │ │ │ └── CustomerActionImplTest.java │ │ │ └── domain │ │ │ └── CustomerValueEntityTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-valueentity-shopping-cart │ ├── .env │ ├── README.md │ ├── RELEASING.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ └── ShoppingCartIntegrationTest.java │ │ └── resources │ │ │ └── logback-test.xml │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ ├── Main.java │ │ │ │ ├── ShoppingCartActionImpl.java │ │ │ │ └── domain │ │ │ │ └── ShoppingCart.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ ├── domain │ │ │ │ └── shoppingcart_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── shoppingcart_api.proto │ │ │ │ └── shoppingcart_controller_api.proto │ │ └── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── shoppingcart │ │ │ ├── ShoppingCartActionImplTest.java │ │ │ └── domain │ │ │ └── ShoppingCartTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-view-store │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── it │ │ └── java │ │ │ └── store │ │ │ ├── customer │ │ │ └── api │ │ │ │ └── CustomerEntityIntegrationTest.java │ │ │ ├── order │ │ │ └── api │ │ │ │ └── OrderEntityIntegrationTest.java │ │ │ ├── product │ │ │ └── api │ │ │ │ └── ProductEntityIntegrationTest.java │ │ │ └── view │ │ │ ├── joined │ │ │ └── JoinedCustomerOrdersViewIntegrationTest.java │ │ │ ├── nested │ │ │ └── NestedCustomerOrdersViewIntegrationTest.java │ │ │ └── structured │ │ │ └── StructuredCustomerOrdersViewIntegrationTest.java │ │ ├── main │ │ ├── java │ │ │ └── store │ │ │ │ ├── Main.java │ │ │ │ ├── customer │ │ │ │ └── domain │ │ │ │ │ └── CustomerEntity.java │ │ │ │ ├── order │ │ │ │ └── domain │ │ │ │ │ └── OrderEntity.java │ │ │ │ ├── product │ │ │ │ └── domain │ │ │ │ │ └── ProductEntity.java │ │ │ │ └── view │ │ │ │ ├── joined │ │ │ │ └── JoinedCustomerOrdersView.java │ │ │ │ ├── nested │ │ │ │ └── NestedCustomerOrdersView.java │ │ │ │ └── structured │ │ │ │ └── StructuredCustomerOrdersView.java │ │ ├── proto │ │ │ └── store │ │ │ │ ├── customer │ │ │ │ ├── api │ │ │ │ │ └── customer_api.proto │ │ │ │ └── domain │ │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── order │ │ │ │ ├── api │ │ │ │ │ └── order_api.proto │ │ │ │ └── domain │ │ │ │ │ └── order_domain.proto │ │ │ │ ├── product │ │ │ │ ├── api │ │ │ │ │ └── product_api.proto │ │ │ │ └── domain │ │ │ │ │ └── product_domain.proto │ │ │ │ └── view │ │ │ │ ├── joined │ │ │ │ └── orders_view.proto │ │ │ │ ├── nested │ │ │ │ └── orders_view.proto │ │ │ │ └── structured │ │ │ │ └── orders_view.proto │ │ └── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── store │ │ │ ├── customer │ │ │ └── domain │ │ │ │ └── CustomerEntityTest.java │ │ │ ├── order │ │ │ └── domain │ │ │ │ └── OrderEntityTest.java │ │ │ └── product │ │ │ └── domain │ │ │ └── ProductEntityTest.java │ │ └── resources │ │ └── logback-test.xml ├── java-protobuf-web-resources │ ├── .env │ ├── README.md │ ├── docker-compose.yml │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── FileServiceAction.java │ │ │ │ ├── Main.java │ │ │ │ └── ShoppingCartServiceAction.java │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── web_resources.proto │ │ └── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ ├── logback.xml │ │ │ └── web │ │ │ ├── img │ │ │ └── favicon.png │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ └── index.js │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ ├── FileServiceActionTest.java │ │ └── ShoppingCartServiceActionTest.java ├── scala-protobuf-customer-registry-quickstart │ ├── .bundleignore │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ └── customer_api.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ ├── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── customer │ │ │ ├── Main.scala │ │ │ ├── domain │ │ │ └── Customer.scala │ │ │ └── view │ │ │ ├── CustomerByEmailView.scala │ │ │ └── CustomerByNameView.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── customer │ │ ├── api │ │ └── CustomerServiceIntegrationSpec.scala │ │ └── domain │ │ └── CustomerSpec.scala ├── scala-protobuf-doc-snippets │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── counter_api.proto │ │ │ │ ├── delegating_service.proto │ │ │ │ ├── json │ │ │ │ └── json_api.proto │ │ │ │ ├── jwt_service.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── topics_action.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── DelegatingServiceAction.scala │ │ │ ├── JwtServiceActionImpl.scala │ │ │ ├── Main.scala │ │ │ ├── MyTopicsActionImpl.scala │ │ │ └── json │ │ │ ├── JsonKeyValueMessage.scala │ │ │ └── MyServiceAction.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ ├── DelegatingServiceActionSpec.scala │ │ ├── JwtIntegrationSpec.scala │ │ ├── MyTopicsActionImplSpec.scala │ │ └── json │ │ └── MyServiceActionSpec.scala ├── scala-protobuf-eventsourced-counter │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── actions │ │ │ │ ├── counter_topic.proto │ │ │ │ └── counter_topic_sub.proto │ │ │ │ ├── counter_api.proto │ │ │ │ ├── domain │ │ │ │ └── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── Main.scala │ │ │ ├── actions │ │ │ ├── CounterCommandFromTopicAction.scala │ │ │ ├── CounterJournalToTopicAction.scala │ │ │ ├── CounterJournalToTopicWithMetaAction.scala │ │ │ └── CounterTopicSubscriptionAction.scala │ │ │ └── domain │ │ │ └── Counter.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ ├── CounterServiceIntegrationSpec.scala │ │ ├── actions │ │ ├── CounterCommandFromTopicActionSpec.scala │ │ ├── CounterJournalToTopicActionSpec.scala │ │ ├── CounterJournalToTopicWithMetaActionSpec.scala │ │ └── CounterTopicSubscriptionActionSpec.scala │ │ └── domain │ │ └── CounterSpec.scala ├── scala-protobuf-eventsourced-customer-registry-subscriber │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build-customer-service-image.sh │ ├── build.sbt │ ├── docker-compose-integration.yml │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ ├── customer_action.proto │ │ │ │ ├── customer_api.proto │ │ │ │ └── publisher_api.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── customer │ │ │ ├── Main.scala │ │ │ ├── action │ │ │ └── CustomerActionImpl.scala │ │ │ └── view │ │ │ └── AllCustomersViewImpl.scala │ │ └── test │ │ └── scala │ │ └── customer │ │ ├── CustomerServiceIntegrationSpec.scala │ │ └── action │ │ └── CustomerActionImplSpec.scala ├── scala-protobuf-eventsourced-customer-registry │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── api │ │ │ │ ├── customer_api.proto │ │ │ │ └── direct_customer_events.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── customer │ │ │ ├── Main.scala │ │ │ ├── MainWithCustomViewId.scala │ │ │ ├── api │ │ │ └── CustomerEventsServiceAction.scala │ │ │ ├── domain │ │ │ └── CustomerEntity.scala │ │ │ └── view │ │ │ ├── CustomerByCityStreamingView.scala │ │ │ └── CustomerByNameView.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── customer │ │ ├── api │ │ ├── CustomerEventsServiceActionSpec.scala │ │ └── CustomerServiceIntegrationSpec.scala │ │ └── domain │ │ └── CustomerEntitySpec.scala ├── scala-protobuf-eventsourced-shopping-cart │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ ├── domain │ │ │ │ └── shoppingcart_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── shoppingcart_api.proto │ │ ├── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ └── shoppingcart │ │ │ ├── Main.scala │ │ │ └── domain │ │ │ └── ShoppingCart.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ └── shoppingcart │ │ ├── ShoppingCartServiceIntegrationSpec.scala │ │ └── domain │ │ └── ShoppingCartSpec.scala ├── scala-protobuf-fibonacci-action │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── fibonacci │ │ │ │ ├── fibonacci.proto │ │ │ │ └── kalix_policy.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ └── fibonacci │ │ │ ├── FibonacciAction.scala │ │ │ ├── FibonacciActionGenerated.scala │ │ │ └── Main.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ └── fibonacci │ │ └── FibonacciActionSpec.scala ├── scala-protobuf-first-service │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── counter_api.proto │ │ │ │ ├── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── Main.scala │ │ │ └── domain │ │ │ └── Counter.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ ├── CounterServiceIntegrationSpec.scala │ │ └── domain │ │ └── CounterSpec.scala ├── scala-protobuf-reliable-timers │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── actions │ │ │ │ └── order_action.proto │ │ │ │ ├── domain │ │ │ │ └── order_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── order_service_api.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── Main.scala │ │ │ ├── actions │ │ │ └── OrderAction.scala │ │ │ └── domain │ │ │ └── Order.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ ├── OrderServiceIntegrationSpec.scala │ │ ├── actions │ │ └── OrderActionSpec.scala │ │ └── domain │ │ └── OrderSpec.scala ├── scala-protobuf-replicatedentity-examples │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── replicated │ │ │ │ ├── counter │ │ │ │ └── counter_api.proto │ │ │ │ ├── countermap │ │ │ │ └── counter_map_api.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── map │ │ │ │ ├── domain │ │ │ │ │ └── map_domain.proto │ │ │ │ └── map_api.proto │ │ │ │ ├── multimap │ │ │ │ └── multi_map_api.proto │ │ │ │ ├── register │ │ │ │ ├── domain │ │ │ │ │ └── register_domain.proto │ │ │ │ └── register_api.proto │ │ │ │ ├── registermap │ │ │ │ ├── domain │ │ │ │ │ └── register_map_domain.proto │ │ │ │ └── register_map_api.proto │ │ │ │ └── set │ │ │ │ └── set_api.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ └── replicated │ │ │ ├── Main.scala │ │ │ ├── counter │ │ │ └── domain │ │ │ │ └── SomeCounter.scala │ │ │ ├── countermap │ │ │ └── domain │ │ │ │ └── SomeCounterMap.scala │ │ │ ├── map │ │ │ └── domain │ │ │ │ └── SomeMap.scala │ │ │ ├── multimap │ │ │ └── domain │ │ │ │ └── SomeMultiMap.scala │ │ │ ├── register │ │ │ └── domain │ │ │ │ └── SomeRegister.scala │ │ │ ├── registermap │ │ │ └── domain │ │ │ │ └── SomeRegisterMap.scala │ │ │ └── set │ │ │ └── domain │ │ │ └── SomeSet.scala │ │ └── test │ │ ├── resources │ │ ├── application.conf │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ └── replicated │ │ ├── counter │ │ └── SomeCounterIntegrationSpec.scala │ │ ├── countermap │ │ └── SomeCounterMapIntegrationSpec.scala │ │ ├── map │ │ └── SomeMapIntegrationSpec.scala │ │ ├── multimap │ │ └── SomeMultiMapIntegrationSpec.scala │ │ ├── register │ │ └── SomeRegisterIntegrationSpec.scala │ │ ├── registermap │ │ └── SomeRegisterMapIntegrationSpec.scala │ │ └── set │ │ └── SomeSetIntegrationSpec.scala ├── scala-protobuf-replicatedentity-shopping-cart │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ ├── domain │ │ │ │ └── shoppingcart_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── shoppingcart_api.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ └── shoppingcart │ │ │ ├── Main.scala │ │ │ └── domain │ │ │ └── ShoppingCart.scala │ │ └── test │ │ └── resources │ │ └── logback-test.xml ├── scala-protobuf-tracing │ ├── .env │ ├── .gitignore │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── protobuf │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── controller_action.proto │ │ │ │ └── kalix_policy.proto │ │ ├── resources │ │ │ ├── application.conf │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── ControllerAction.scala │ │ │ ├── Main.scala │ │ │ └── domain │ │ │ └── Post.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ └── ControllerActionSpec.scala ├── scala-protobuf-transfer-workflow-compensation │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── transfer │ │ │ │ ├── transfer_api.proto │ │ │ │ └── transfer_domain.proto │ │ │ │ └── wallet │ │ │ │ ├── wallet_api.proto │ │ │ │ └── wallet_domain.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── Main.scala │ │ │ ├── transfer │ │ │ └── api │ │ │ │ └── TransferWorkflow.scala │ │ │ └── wallet │ │ │ └── api │ │ │ └── WalletEntity.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ ├── transfer │ │ └── api │ │ │ └── TransferWorkflowIntegrationSpec.scala │ │ └── wallet │ │ └── api │ │ ├── WalletEntitySpec.scala │ │ └── WalletServiceIntegrationSpec.scala ├── scala-protobuf-transfer-workflow │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── transfer │ │ │ │ ├── transfer_api.proto │ │ │ │ └── transfer_domain.proto │ │ │ │ └── wallet │ │ │ │ ├── wallet_api.proto │ │ │ │ └── wallet_domain.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── Main.scala │ │ │ ├── transfer │ │ │ └── api │ │ │ │ └── TransferWorkflow.scala │ │ │ └── wallet │ │ │ └── api │ │ │ └── WalletEntity.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ ├── transfer │ │ └── api │ │ │ └── TransferWorkflowIntegrationSpec.scala │ │ └── wallet │ │ └── api │ │ ├── WalletEntitySpec.scala │ │ └── WalletServiceIntegrationSpec.scala ├── scala-protobuf-validated │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── validated │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── validated.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ └── validated │ │ │ ├── Main.scala │ │ │ └── ValidatedAction.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ └── validated │ │ ├── ValidatedActionIntegrationSpec.scala │ │ └── ValidatedActionSpec.scala ├── scala-protobuf-valueentity-counter │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── actions │ │ │ │ ├── counter_states_sub.proto │ │ │ │ ├── double-counter.proto │ │ │ │ └── external_counter.proto │ │ │ │ ├── counter_api.proto │ │ │ │ ├── domain │ │ │ │ └── counter_domain.proto │ │ │ │ └── kalix_policy.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ ├── Main.scala │ │ │ ├── actions │ │ │ ├── CounterStateSubscriptionAction.scala │ │ │ ├── DoubleCounterAction.scala │ │ │ └── ExternalCounterAction.scala │ │ │ └── domain │ │ │ └── Counter.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ ├── CounterServiceIntegrationSpec.scala │ │ ├── actions │ │ ├── CounterStateSubscriptionActionSpec.scala │ │ ├── DoubleCounterActionSpec.scala │ │ └── ExternalCounterActionSpec.scala │ │ └── domain │ │ └── CounterSpec.scala ├── scala-protobuf-valueentity-customer-registry │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── customer │ │ │ │ ├── action │ │ │ │ └── customer_action.proto │ │ │ │ ├── api │ │ │ │ └── customer_api.proto │ │ │ │ ├── domain │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ └── view │ │ │ │ └── customer_view.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── customer │ │ │ ├── Main.scala │ │ │ ├── action │ │ │ └── CustomerActionImpl.scala │ │ │ ├── domain │ │ │ └── CustomerValueEntity.scala │ │ │ └── view │ │ │ ├── CustomerByEmailView.scala │ │ │ ├── CustomerByNameView.scala │ │ │ ├── CustomerDetailsByNameView.scala │ │ │ ├── CustomerSummaryByNameView.scala │ │ │ ├── CustomersResponseByCityView.scala │ │ │ └── CustomersResponseByNameView.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── customer │ │ ├── action │ │ └── CustomerActionImplSpec.scala │ │ ├── api │ │ └── CustomerServiceIntegrationSpec.scala │ │ ├── domain │ │ └── CustomerValueEntitySpec.scala │ │ └── view │ │ └── CustomersResponseByCityViewIntegrationSpec.scala ├── scala-protobuf-valueentity-shopping-cart │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoppingcart │ │ │ │ ├── domain │ │ │ │ └── shoppingcart_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── shoppingcart_api.proto │ │ │ │ └── shoppingcart_controller_api.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ └── shoppingcart │ │ │ ├── Main.scala │ │ │ ├── ShoppingCartActionImpl.scala │ │ │ └── domain │ │ │ └── ShoppingCart.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── com │ │ └── example │ │ └── shoppingcart │ │ ├── ShoppingCartActionImplSpec.scala │ │ ├── ShoppingCartServiceIntegrationSpec.scala │ │ └── domain │ │ └── ShoppingCartSpec.scala ├── scala-protobuf-view-store │ ├── .env │ ├── .scalafmt.conf │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ │ ├── build.properties │ │ └── plugins.sbt │ └── src │ │ ├── main │ │ ├── proto │ │ │ └── store │ │ │ │ ├── customer │ │ │ │ ├── api │ │ │ │ │ └── customer_api.proto │ │ │ │ └── domain │ │ │ │ │ └── customer_domain.proto │ │ │ │ ├── kalix_policy.proto │ │ │ │ ├── order │ │ │ │ ├── api │ │ │ │ │ └── order_api.proto │ │ │ │ └── domain │ │ │ │ │ └── order_domain.proto │ │ │ │ ├── product │ │ │ │ ├── api │ │ │ │ │ └── product_api.proto │ │ │ │ └── domain │ │ │ │ │ └── product_domain.proto │ │ │ │ └── view │ │ │ │ ├── joined │ │ │ │ └── orders_view.proto │ │ │ │ ├── nested │ │ │ │ └── orders_view.proto │ │ │ │ └── structured │ │ │ │ └── orders_view.proto │ │ ├── resources │ │ │ ├── logback-dev-mode.xml │ │ │ └── logback.xml │ │ └── scala │ │ │ └── store │ │ │ ├── Main.scala │ │ │ ├── customer │ │ │ └── domain │ │ │ │ └── CustomerEntity.scala │ │ │ ├── order │ │ │ └── domain │ │ │ │ └── OrderEntity.scala │ │ │ ├── product │ │ │ └── domain │ │ │ │ └── ProductEntity.scala │ │ │ └── view │ │ │ ├── joined │ │ │ └── JoinedCustomerOrdersView.scala │ │ │ ├── nested │ │ │ └── NestedCustomerOrdersView.scala │ │ │ └── structured │ │ │ └── StructuredCustomerOrdersView.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── store │ │ ├── customer │ │ ├── api │ │ │ └── CustomersIntegrationSpec.scala │ │ └── domain │ │ │ └── CustomerEntitySpec.scala │ │ ├── order │ │ ├── api │ │ │ └── OrdersIntegrationSpec.scala │ │ └── domain │ │ │ └── OrderEntitySpec.scala │ │ ├── product │ │ ├── api │ │ │ └── ProductsIntegrationSpec.scala │ │ └── domain │ │ │ └── ProductEntitySpec.scala │ │ └── view │ │ ├── joined │ │ └── JoinedCustomerOrdersIntegrationSpec.scala │ │ ├── nested │ │ └── NestedCustomerOrdersIntegrationSpec.scala │ │ └── structured │ │ └── StructuredCustomerOrdersIntegrationSpec.scala └── scala-protobuf-web-resources │ ├── .env │ ├── README.md │ ├── build.sbt │ ├── docker-compose.yml │ ├── project │ ├── build.properties │ └── plugins.sbt │ └── src │ ├── main │ ├── proto │ │ └── com │ │ │ └── example │ │ │ ├── kalix_policy.proto │ │ │ └── web_resources.proto │ ├── resources │ │ ├── logback-dev-mode.xml │ │ ├── logback.xml │ │ └── web │ │ │ ├── img │ │ │ └── favicon.png │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ └── index.js │ └── scala │ │ └── com │ │ └── example │ │ ├── FileServiceAction.scala │ │ ├── Main.scala │ │ └── ShoppingCartServiceAction.scala │ └── test │ └── scala │ └── com │ └── example │ ├── FileServiceActionSpec.scala │ └── ShoppingCartServiceActionSpec.scala ├── sbt-plugin └── src │ ├── main │ └── scala │ │ └── kalix │ │ └── sbt │ │ └── KalixPlugin.scala │ └── sbt-test │ └── sbt-kalix │ ├── compile-only │ ├── README.md │ ├── build.sbt │ ├── project │ │ └── plugins.sbt │ ├── src │ │ └── main │ │ │ └── protobuf │ │ │ └── com │ │ │ └── example │ │ │ ├── action │ │ │ └── all_commands_api.proto │ │ │ ├── action1 │ │ │ └── simple_action.proto │ │ │ ├── action2 │ │ │ └── simple_action_api.proto │ │ │ ├── action3 │ │ │ └── some_action.proto │ │ │ ├── action4 │ │ │ └── some_other_action_api.proto │ │ │ ├── action5 │ │ │ └── yet_another_action.proto │ │ │ ├── action6 │ │ │ └── value_entity_eventing_action.proto │ │ │ ├── echo_action.proto │ │ │ ├── eventing │ │ │ └── raw_eventing_types.proto │ │ │ ├── eventsourcedentity │ │ │ ├── counter_api.proto │ │ │ ├── domain │ │ │ │ ├── counter_domain.proto │ │ │ │ └── some_event_sourced_entity_domain.proto │ │ │ └── some_event_sourced_entity_api.proto │ │ │ ├── replicated │ │ │ ├── counter │ │ │ │ └── counter_api.proto │ │ │ ├── countermap │ │ │ │ ├── counter_map_api.proto │ │ │ │ └── domain │ │ │ │ │ └── counter_map_domain.proto │ │ │ ├── map │ │ │ │ ├── domain │ │ │ │ │ └── map_domain.proto │ │ │ │ └── map_api.proto │ │ │ ├── multimap │ │ │ │ ├── domain │ │ │ │ │ └── multi_map_domain.proto │ │ │ │ └── multi_map_api.proto │ │ │ ├── register │ │ │ │ ├── domain │ │ │ │ │ └── register_domain.proto │ │ │ │ └── register_api.proto │ │ │ ├── registermap │ │ │ │ ├── domain │ │ │ │ │ └── register_map_domain.proto │ │ │ │ └── register_map_api.proto │ │ │ └── set │ │ │ │ ├── domain │ │ │ │ └── set_domain.proto │ │ │ │ └── set_api.proto │ │ │ ├── state_in_different_proto │ │ │ ├── state │ │ │ │ └── user_state.proto │ │ │ └── user_api.proto │ │ │ ├── valueentity │ │ │ ├── domain │ │ │ │ ├── some_value_entity_domain.proto │ │ │ │ └── user_domain.proto │ │ │ ├── some_value_entity_api.proto │ │ │ └── user_api.proto │ │ │ └── view │ │ │ └── user_view.proto │ └── test │ ├── eventsourcedentity │ ├── README.md │ ├── build.sbt │ ├── project │ │ └── plugins.sbt │ ├── src │ │ ├── main │ │ │ ├── protobuf │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── eventsourcedentity │ │ │ │ │ ├── counter_api.proto │ │ │ │ │ └── domain │ │ │ │ │ └── counter_domain.proto │ │ │ └── scala │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── eventsourcedentity │ │ │ │ └── domain │ │ │ │ └── Counter.scala │ │ └── test │ │ │ └── scala │ │ │ └── com │ │ │ └── example │ │ │ └── eventsourcedentity │ │ │ ├── CounterServiceIntegrationSpec.scala │ │ │ └── domain │ │ │ └── CounterSpec.scala │ └── test │ └── no-common-pkg-root │ ├── README.md │ ├── build.sbt │ ├── project │ └── plugins.sbt │ ├── src │ └── main │ │ └── protobuf │ │ ├── com │ │ └── example │ │ │ └── action_a.proto │ │ └── org │ │ └── other │ │ └── action_b.proto │ └── test ├── sdk ├── core │ └── src │ │ └── main │ │ └── java │ │ └── kalix │ │ └── replicatedentity │ │ └── ReplicatedData.java ├── java-sdk-protobuf-testkit │ └── src │ │ ├── main │ │ ├── java │ │ │ └── kalix │ │ │ │ └── javasdk │ │ │ │ └── testkit │ │ │ │ ├── ActionResult.java │ │ │ │ ├── DeferredCallDetails.java │ │ │ │ ├── EventSourcedResult.java │ │ │ │ ├── EventingTestKit.java │ │ │ │ ├── KalixTestKit.java │ │ │ │ ├── MockRegistry.java │ │ │ │ ├── ValueEntityResult.java │ │ │ │ ├── impl │ │ │ │ ├── EventSourcedEntityEffectsRunner.java │ │ │ │ └── KalixRuntimeContainer.java │ │ │ │ └── junit │ │ │ │ ├── KalixTestKitResource.java │ │ │ │ └── jupiter │ │ │ │ └── KalixTestKitExtension.java │ │ └── scala │ │ │ └── kalix │ │ │ └── javasdk │ │ │ └── testkit │ │ │ └── impl │ │ │ ├── AbstractTestKitContext.scala │ │ │ ├── ActionResultImpl.scala │ │ │ ├── EventSourcedResultImpl.scala │ │ │ ├── EventingTestKitImpl.scala │ │ │ ├── MockRegistryImpl.scala │ │ │ ├── SourcesHolder.scala │ │ │ ├── TestKitActionContext.scala │ │ │ ├── TestKitDeferredCall.scala │ │ │ ├── TestKitEventSourcedEntityCommandContext.scala │ │ │ ├── TestKitEventSourcedEntityContext.scala │ │ │ ├── TestKitEventSourcedEntityEventContext.scala │ │ │ ├── TestKitValueEntityCommandContext.scala │ │ │ ├── TestKitValueEntityContext.scala │ │ │ └── ValueEntityResultImpl.scala │ │ └── test │ │ └── scala │ │ └── kalix │ │ └── javasdk │ │ └── testkit │ │ └── impl │ │ ├── ActionResultSpec.scala │ │ ├── EventSourcedResultSpec.scala │ │ ├── IncomingMessagesImplSpec.scala │ │ ├── KalixTestKitSpec.scala │ │ ├── OutgoingMessagesImplSpec.scala │ │ └── ValueEntityResultSpec.scala ├── java-sdk-protobuf │ └── src │ │ ├── main │ │ ├── java │ │ │ ├── kalix │ │ │ │ └── javasdk │ │ │ │ │ ├── CloudEvent.java │ │ │ │ │ ├── Context.java │ │ │ │ │ ├── DeferredCall.java │ │ │ │ │ ├── EntityContext.java │ │ │ │ │ ├── EntityOptions.java │ │ │ │ │ ├── HttpResponse.java │ │ │ │ │ ├── JsonMigration.java │ │ │ │ │ ├── JsonSupport.java │ │ │ │ │ ├── JwtClaims.java │ │ │ │ │ ├── Kalix.java │ │ │ │ │ ├── KalixRunnerLicenseKeySupplier.java │ │ │ │ │ ├── Metadata.java │ │ │ │ │ ├── MetadataContext.java │ │ │ │ │ ├── PassivationStrategy.java │ │ │ │ │ ├── Principal.java │ │ │ │ │ ├── Principals.java │ │ │ │ │ ├── SideEffect.java │ │ │ │ │ ├── StatusCode.java │ │ │ │ │ ├── TraceContext.java │ │ │ │ │ ├── action │ │ │ │ │ ├── Action.java │ │ │ │ │ ├── ActionContext.java │ │ │ │ │ ├── ActionCreationContext.java │ │ │ │ │ ├── ActionOptions.java │ │ │ │ │ ├── ActionProvider.java │ │ │ │ │ └── MessageEnvelope.java │ │ │ │ │ ├── annotations │ │ │ │ │ └── Migration.java │ │ │ │ │ ├── eventsourcedentity │ │ │ │ │ ├── CommandContext.java │ │ │ │ │ ├── EventContext.java │ │ │ │ │ ├── EventSourcedEntity.java │ │ │ │ │ ├── EventSourcedEntityContext.java │ │ │ │ │ ├── EventSourcedEntityOptions.java │ │ │ │ │ ├── EventSourcedEntityProvider.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── impl │ │ │ │ │ ├── ActionFactory.java │ │ │ │ │ ├── EventSourcedEntityFactory.java │ │ │ │ │ ├── ReplicatedEntityFactory.java │ │ │ │ │ ├── ValueEntityFactory.java │ │ │ │ │ ├── ViewFactory.java │ │ │ │ │ ├── WorkflowFactory.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── logging │ │ │ │ │ └── LogbackJsonLayout.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── replicatedentity │ │ │ │ │ ├── CommandContext.java │ │ │ │ │ ├── ReplicatedCounter.java │ │ │ │ │ ├── ReplicatedCounterEntity.java │ │ │ │ │ ├── ReplicatedCounterMap.java │ │ │ │ │ ├── ReplicatedCounterMapEntity.java │ │ │ │ │ ├── ReplicatedDataFactory.java │ │ │ │ │ ├── ReplicatedEntity.java │ │ │ │ │ ├── ReplicatedEntityContext.java │ │ │ │ │ ├── ReplicatedEntityOptions.java │ │ │ │ │ ├── ReplicatedEntityProvider.java │ │ │ │ │ ├── ReplicatedMap.java │ │ │ │ │ ├── ReplicatedMapEntity.java │ │ │ │ │ ├── ReplicatedMultiMap.java │ │ │ │ │ ├── ReplicatedMultiMapEntity.java │ │ │ │ │ ├── ReplicatedRegister.java │ │ │ │ │ ├── ReplicatedRegisterEntity.java │ │ │ │ │ ├── ReplicatedRegisterMap.java │ │ │ │ │ ├── ReplicatedRegisterMapEntity.java │ │ │ │ │ ├── ReplicatedSet.java │ │ │ │ │ ├── ReplicatedSetEntity.java │ │ │ │ │ ├── ReplicatedVote.java │ │ │ │ │ ├── ReplicatedVoteEntity.java │ │ │ │ │ ├── WriteConsistency.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── timer │ │ │ │ │ └── TimerScheduler.java │ │ │ │ │ ├── valueentity │ │ │ │ │ ├── CommandContext.java │ │ │ │ │ ├── ValueEntity.java │ │ │ │ │ ├── ValueEntityContext.java │ │ │ │ │ ├── ValueEntityOptions.java │ │ │ │ │ ├── ValueEntityProvider.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── view │ │ │ │ │ ├── UpdateContext.java │ │ │ │ │ ├── View.java │ │ │ │ │ ├── ViewContext.java │ │ │ │ │ ├── ViewCreationContext.java │ │ │ │ │ ├── ViewOptions.java │ │ │ │ │ └── ViewProvider.java │ │ │ │ │ └── workflow │ │ │ │ │ ├── AbstractWorkflow.java │ │ │ │ │ ├── CommandContext.java │ │ │ │ │ ├── ProtoStepBuilder.java │ │ │ │ │ ├── ProtoWorkflow.java │ │ │ │ │ ├── StepBuilder.java │ │ │ │ │ ├── Workflow.java │ │ │ │ │ ├── WorkflowContext.java │ │ │ │ │ ├── WorkflowOptions.java │ │ │ │ │ └── WorkflowProvider.java │ │ │ └── overview.html │ │ ├── resources │ │ │ ├── META-INF │ │ │ │ └── services │ │ │ │ │ └── ch.qos.logback.classic.spi.Configurator │ │ │ └── reference.conf │ │ └── scala │ │ │ └── kalix │ │ │ └── javasdk │ │ │ ├── DeferredCallResponseException.scala │ │ │ ├── KalixRunner.scala │ │ │ └── impl │ │ │ ├── AnySupport.scala │ │ │ ├── ComponentOptions.scala │ │ │ ├── ComponentOptionsImpl.scala │ │ │ ├── Contexts.scala │ │ │ ├── DiscoveryImpl.scala │ │ │ ├── DocLinks.scala │ │ │ ├── EntityExceptions.scala │ │ │ ├── ErrorHandling.scala │ │ │ ├── GrpcClients.scala │ │ │ ├── GrpcDeferredCall.scala │ │ │ ├── MetadataImpl.scala │ │ │ ├── PassivationStrategies.scala │ │ │ ├── ProxyInfoHolder.scala │ │ │ ├── ResolvedServiceMethod.scala │ │ │ ├── RestDeferredCall.scala │ │ │ ├── SdkExecutionContext.scala │ │ │ ├── Service.scala │ │ │ ├── StatusCodeConverter.scala │ │ │ ├── WorkflowExceptions.scala │ │ │ ├── action │ │ │ ├── ActionEffectImpl.scala │ │ │ ├── ActionOptionsImpl.scala │ │ │ ├── ActionRouter.scala │ │ │ ├── ActionsImpl.scala │ │ │ └── ResolvedActionFactory.scala │ │ │ ├── effect │ │ │ ├── EffectSupport.scala │ │ │ └── SecondaryEffectImpl.scala │ │ │ ├── eventsourcedentity │ │ │ ├── EventSourcedEntitiesImpl.scala │ │ │ ├── EventSourcedEntityEffectImpl.scala │ │ │ ├── EventSourcedEntityOptionsImpl.scala │ │ │ ├── EventSourcedEntityRouter.scala │ │ │ └── ResolvedEventSourcedEntityFactory.scala │ │ │ ├── logging │ │ │ └── KalixJoranConfigurator.scala │ │ │ ├── replicatedentity │ │ │ ├── InternalReplicatedData.scala │ │ │ ├── ReplicatedCounterImpl.scala │ │ │ ├── ReplicatedCounterMapImpl.scala │ │ │ ├── ReplicatedDataFactoryImpl.scala │ │ │ ├── ReplicatedEntitiesImpl.scala │ │ │ ├── ReplicatedEntityDeltaTransformer.scala │ │ │ ├── ReplicatedEntityEffectImpl.scala │ │ │ ├── ReplicatedEntityOptionsImpl.scala │ │ │ ├── ReplicatedEntityRouter.scala │ │ │ ├── ReplicatedMapImpl.scala │ │ │ ├── ReplicatedMultiMapImpl.scala │ │ │ ├── ReplicatedRegisterImpl.scala │ │ │ ├── ReplicatedRegisterMapImpl.scala │ │ │ ├── ReplicatedSetImpl.scala │ │ │ ├── ReplicatedVoteImpl.scala │ │ │ └── ResolvedReplicatedEntityFactory.scala │ │ │ ├── telemetry │ │ │ └── Telemetry.scala │ │ │ ├── timer │ │ │ └── TimerSchedulerImpl.scala │ │ │ ├── valueentity │ │ │ ├── ResolvedValueEntityFactory.scala │ │ │ ├── ValueEntitiesImpl.scala │ │ │ ├── ValueEntityEffectImpl.scala │ │ │ ├── ValueEntityOptionsImpl.scala │ │ │ └── ValueEntityRouter.scala │ │ │ ├── view │ │ │ ├── ViewEffectImpl.scala │ │ │ ├── ViewException.scala │ │ │ ├── ViewOptionsImpl.scala │ │ │ ├── ViewRouter.scala │ │ │ └── ViewsImpl.scala │ │ │ └── workflow │ │ │ ├── ResolvedWorkflowFactory.scala │ │ │ ├── WorkflowEffectImpl.scala │ │ │ ├── WorkflowImpl.scala │ │ │ ├── WorkflowOptionsImpl.scala │ │ │ └── WorkflowRouter.scala │ │ └── test │ │ ├── java │ │ └── kalix │ │ │ └── javasdk │ │ │ ├── DummyClass.java │ │ │ ├── DummyClass2.java │ │ │ ├── DummyClass2Migration.java │ │ │ ├── DummyClassMigration.java │ │ │ ├── DummyClassRenamed.java │ │ │ ├── eventsourcedentity │ │ │ ├── AbstractCartEntity.java │ │ │ ├── CartEntity.java │ │ │ ├── CartEntityProvider.java │ │ │ └── CartEntityRouter.java │ │ │ ├── replicatedentity │ │ │ ├── AbstractCartEntity.java │ │ │ ├── CartEntity.java │ │ │ ├── CartEntityProvider.java │ │ │ └── CartEntityRouter.java │ │ │ ├── valueentity │ │ │ ├── AbstractCartEntity.java │ │ │ ├── CartEntity.java │ │ │ ├── CartEntityProvider.java │ │ │ └── CartEntityRouter.java │ │ │ └── workflow │ │ │ ├── DummyClassRenamedMigration.java │ │ │ ├── TransferWorkflow.java │ │ │ ├── TransferWorkflowProvider.java │ │ │ └── TransferWorkflowRouter.java │ │ ├── proto │ │ ├── action │ │ │ └── actionspec_api.proto │ │ ├── eventsourcedentity │ │ │ └── shoppingcart │ │ │ │ ├── shoppingcart_api.proto │ │ │ │ └── shoppingcart_domain.proto │ │ ├── replicatedentity │ │ │ └── shoppingcart │ │ │ │ ├── shoppingcart_api.proto │ │ │ │ └── shoppingcart_domain.proto │ │ ├── shoppingcart │ │ │ ├── shopping_cart_domain.proto │ │ │ └── shopping_cart_view_model.proto │ │ ├── valueentity │ │ │ └── shoppingcart │ │ │ │ ├── shoppingcart_api.proto │ │ │ │ └── shoppingcart_domain.proto │ │ └── workflow │ │ │ └── transfer_workflow.proto │ │ ├── resources │ │ ├── logback-test.xml │ │ └── user-function.desc │ │ └── scala │ │ └── kalix │ │ ├── javasdk │ │ ├── JsonSupportSpec.scala │ │ ├── KalixRunnerSpec.scala │ │ └── impl │ │ │ ├── AnySupportSpec.scala │ │ │ ├── DiscoverySpec.scala │ │ │ ├── DocLinksSpec.scala │ │ │ ├── GrpcClientsSpec.scala │ │ │ ├── MetadataImplSpec.scala │ │ │ ├── action │ │ │ └── ActionHandlerSpec.scala │ │ │ ├── eventsourcedentity │ │ │ ├── EventSourcedEntitiesImplSpec.scala │ │ │ └── TestEventSourced.scala │ │ │ ├── replicatedentity │ │ │ ├── ReplicatedEntitiesImplSpec.scala │ │ │ └── TestReplicatedEntity.scala │ │ │ ├── valueentity │ │ │ ├── TestValueEntity.scala │ │ │ └── ValueEntitiesImplSpec.scala │ │ │ └── workflow │ │ │ ├── TestWorkflow.scala │ │ │ └── WorkflowImplSpec.scala │ │ └── testkit │ │ ├── TestProtocol.scala │ │ ├── entity │ │ └── EntityMessages.scala │ │ ├── eventsourcedentity │ │ ├── EventSourcedMessages.scala │ │ └── TestEventSourcedProtocol.scala │ │ ├── replicatedentity │ │ ├── ReplicatedEntityMessages.scala │ │ └── TestReplicatedEntityProtocol.scala │ │ ├── valueentity │ │ ├── TestValueEntityProtocol.scala │ │ └── ValueEntityMessages.scala │ │ └── workflow │ │ ├── TestWorkflowProtocol.scala │ │ └── WorkflowMessages.scala ├── scala-sdk-protobuf-testkit │ └── src │ │ ├── main │ │ └── scala │ │ │ └── kalix │ │ │ └── scalasdk │ │ │ └── testkit │ │ │ ├── ActionResult.scala │ │ │ ├── DeferredCallDetails.scala │ │ │ ├── EventSourcedResult.scala │ │ │ ├── EventingTestKit.scala │ │ │ ├── KalixTestKit.scala │ │ │ ├── MockRegistry.scala │ │ │ ├── ValueEntityResult.scala │ │ │ └── impl │ │ │ ├── AbstractTestKitContext.scala │ │ │ ├── ActionResultImpl.scala │ │ │ ├── EffectUtils.scala │ │ │ ├── EventSourcedEntityEffectsRunner.scala │ │ │ ├── EventSourcedResultImpl.scala │ │ │ ├── EventingTestKitImpl.scala │ │ │ ├── MockRegistryImpl.scala │ │ │ ├── TestKitActionContext.scala │ │ │ ├── TestKitDeferredCall.scala │ │ │ ├── TestKitEventSourcedEntityCommandContext.scala │ │ │ ├── TestKitEventSourcedEntityContext.scala │ │ │ ├── TestKitEventSourcedEntityEventContext.scala │ │ │ ├── TestKitValueEntityCommandContext.scala │ │ │ ├── TestKitValueEntityContext.scala │ │ │ └── ValueEntityResultImpl.scala │ │ └── test │ │ └── scala │ │ └── kalix │ │ └── scalasdk │ │ └── testkit │ │ └── impl │ │ ├── ActionResultSpec.scala │ │ ├── EventSourcedResultSpec.scala │ │ └── ValueEntityResultSpec.scala └── scala-sdk-protobuf │ └── src │ ├── main │ └── scala │ │ └── kalix │ │ └── scalasdk │ │ ├── CloudEvent.scala │ │ ├── Context.scala │ │ ├── DeferredCall.scala │ │ ├── EntityContext.scala │ │ ├── EntityOptions.scala │ │ ├── JsonSupport.scala │ │ ├── JwtClaims.scala │ │ ├── Kalix.scala │ │ ├── KalixRunner.scala │ │ ├── Metadata.scala │ │ ├── MetadataContext.scala │ │ ├── PassivationStrategy.scala │ │ ├── Principal.scala │ │ ├── Principals.scala │ │ ├── SideEffect.scala │ │ ├── StatusCode.scala │ │ ├── TraceContext.scala │ │ ├── action │ │ ├── Action.scala │ │ ├── ActionContext.scala │ │ ├── ActionCreationContext.scala │ │ ├── ActionOptions.scala │ │ ├── ActionProvider.scala │ │ └── MessageEnvelope.scala │ │ ├── eventsourcedentity │ │ ├── CommandContext.scala │ │ ├── EventContext.scala │ │ ├── EventSourcedEntity.scala │ │ ├── EventSourcedEntityContext.scala │ │ ├── EventSourcedEntityOptions.scala │ │ └── EventSourcedEntityProvider.scala │ │ ├── impl │ │ ├── ComponentOptions.scala │ │ ├── DeferredCallAdapters.scala │ │ ├── InternalContext.scala │ │ ├── MetadataConverters.scala │ │ ├── MetadataImpl.scala │ │ ├── PassivationStrategyConverters.scala │ │ ├── Timeout.scala │ │ ├── action │ │ │ ├── ActionAdapters.scala │ │ │ ├── ActionEffectImpl.scala │ │ │ ├── ActionRouter.scala │ │ │ └── MessageEnvelopeImpl.scala │ │ ├── eventsourcedentity │ │ │ ├── EventSourcedEntityAdapters.scala │ │ │ ├── EventSourcedEntityEffectImpl.scala │ │ │ └── EventSourcedEntityRouter.scala │ │ ├── replicatedentity │ │ │ ├── ReplicatedEntityAdapters.scala │ │ │ ├── ReplicatedEntityEffectImpl.scala │ │ │ └── ReplicatedEntityRouter.scala │ │ ├── timer │ │ │ └── TimerSchedulerImpl.scala │ │ ├── valueentity │ │ │ ├── ValueEntityAdapters.scala │ │ │ ├── ValueEntityEffectImpl.scala │ │ │ └── ValueEntityRouter.scala │ │ ├── view │ │ │ ├── ViewAdapters.scala │ │ │ ├── ViewRouter.scala │ │ │ └── ViewUpdateEffectImpl.scala │ │ └── workflow │ │ │ ├── WorkflowAdapters.scala │ │ │ ├── WorkflowEffectImpl.scala │ │ │ └── WorkflowRouter.scala │ │ ├── replicatedentity │ │ ├── CommandContext.scala │ │ ├── InternalReplicatedData.scala │ │ ├── ReplicatedCounter.scala │ │ ├── ReplicatedCounterEntity.scala │ │ ├── ReplicatedCounterMap.scala │ │ ├── ReplicatedCounterMapEntity.scala │ │ ├── ReplicatedDataFactory.scala │ │ ├── ReplicatedEntity.scala │ │ ├── ReplicatedEntityContext.scala │ │ ├── ReplicatedEntityOptions.scala │ │ ├── ReplicatedEntityProvider.scala │ │ ├── ReplicatedMap.scala │ │ ├── ReplicatedMapEntity.scala │ │ ├── ReplicatedMultiMap.scala │ │ ├── ReplicatedMultiMapEntity.scala │ │ ├── ReplicatedRegister.scala │ │ ├── ReplicatedRegisterEntity.scala │ │ ├── ReplicatedRegisterMap.scala │ │ ├── ReplicatedRegisterMapEntity.scala │ │ ├── ReplicatedSet.scala │ │ ├── ReplicatedSetEntity.scala │ │ ├── ReplicatedVote.scala │ │ ├── ReplicatedVoteEntity.scala │ │ └── WriteConsistency.scala │ │ ├── timer │ │ └── TimerScheduler.scala │ │ ├── valueentity │ │ ├── CommandContext.scala │ │ ├── ValueEntity.scala │ │ ├── ValueEntityContext.scala │ │ ├── ValueEntityOptions.scala │ │ └── ValueEntityProvider.scala │ │ ├── view │ │ ├── UpdateContext.scala │ │ ├── View.scala │ │ ├── ViewContext.scala │ │ ├── ViewCreationContext.scala │ │ ├── ViewOptions.scala │ │ └── ViewProvider.scala │ │ └── workflow │ │ ├── AbstractWorkflow.scala │ │ ├── CommandContext.scala │ │ ├── ProtoStepBuilder.scala │ │ ├── ProtoWorkflow.scala │ │ ├── WorkflowContext.scala │ │ ├── WorkflowOptions.scala │ │ └── WorkflowProvider.scala │ └── test │ └── scala │ └── kalix │ └── scalasdk │ ├── JsonSupportSpec.scala │ └── impl │ └── workflow │ └── JavaWorkflowAdapterSpec.scala ├── styles ├── Lightbend │ ├── AMPM.yml │ ├── Accessibility.yml │ ├── Acronyms.yml │ ├── Adverbs.yml │ ├── Auto.yml │ ├── Avoid.yml │ ├── ComplexWords.yml │ ├── Contractions.yml │ ├── Dashes.yml │ ├── DateFormat.yml │ ├── DateNumbers.yml │ ├── DateOrder.yml │ ├── Ellipses.yml │ ├── FirstPerson.yml │ ├── Foreign.yml │ ├── Gender.yml │ ├── GenderBias.yml │ ├── GeneralURL.yml │ ├── HeadingAcronyms.yml │ ├── HeadingColons.yml │ ├── HeadingPunctuation.yml │ ├── Headings.yml │ ├── Hyphens.yml │ ├── Ordinal.yml │ ├── OxfordComma.yml │ ├── Passive.yml │ ├── Percentages.yml │ ├── Quotes.yml │ ├── RangeFormat.yml │ ├── RangeTime.yml │ ├── Ranges.yml │ ├── Readability.yml │ ├── Semicolon.yml │ ├── SentenceLength.yml │ ├── Spacing.yml │ ├── Suspended.yml │ ├── Terms.yml │ ├── URLFormat.yml │ ├── Units.yml │ ├── Vocab.yml │ ├── We.yml │ ├── Wordiness.yml │ └── meta.json ├── Microsoft │ ├── AMPM.yml │ ├── Accessibility.yml │ ├── Acronyms.yml │ ├── Adverbs.yml │ ├── Auto.yml │ ├── Avoid.yml │ ├── ComplexWords.yml │ ├── Contractions.yml │ ├── Dashes.yml │ ├── DateFormat.yml │ ├── DateNumbers.yml │ ├── DateOrder.yml │ ├── Ellipses.yml │ ├── FirstPerson.yml │ ├── Foreign.yml │ ├── Gender.yml │ ├── GenderBias.yml │ ├── GeneralURL.yml │ ├── HeadingAcronyms.yml │ ├── HeadingColons.yml │ ├── HeadingPunctuation.yml │ ├── Headings.yml │ ├── Hyphens.yml │ ├── Negative.yml │ ├── Ordinal.yml │ ├── OxfordComma.yml │ ├── Passive.yml │ ├── Percentages.yml │ ├── Quotes.yml │ ├── RangeFormat.yml │ ├── RangeTime.yml │ ├── Ranges.yml │ ├── Semicolon.yml │ ├── SentenceLength.yml │ ├── Spacing.yml │ ├── Suspended.yml │ ├── Terms.yml │ ├── URLFormat.yml │ ├── Units.yml │ ├── Vocab.yml │ ├── We.yml │ ├── Wordiness.yml │ └── meta.json ├── config │ └── vocabularies │ │ └── Base │ │ ├── accept.txt │ │ └── reject.txt └── write-good │ ├── Cliches.yml │ ├── E-Prime.yml │ ├── Illusions.yml │ ├── Passive.yml │ ├── README.md │ ├── So.yml │ ├── ThereIs.yml │ ├── TooWordy.yml │ ├── Weasel.yml │ └── meta.json ├── tck ├── README.md ├── java-tck │ └── src │ │ ├── main │ │ ├── java │ │ │ ├── com │ │ │ │ └── example │ │ │ │ │ └── Main.java │ │ │ └── kalix │ │ │ │ ├── javasdk │ │ │ │ └── tck │ │ │ │ │ ├── JavaSdkTck.java │ │ │ │ │ └── model │ │ │ │ │ ├── localpersistenceeventing │ │ │ │ │ ├── EventSourcedEntityOne.java │ │ │ │ │ ├── EventSourcedEntityOneProvider.java │ │ │ │ │ ├── EventSourcedEntityOneRouter.java │ │ │ │ │ ├── EventSourcedEntityTwo.java │ │ │ │ │ ├── EventSourcedEntityTwoProvider.java │ │ │ │ │ ├── EventSourcedEntityTwoRouter.java │ │ │ │ │ ├── JsonMessage.java │ │ │ │ │ ├── LocalPersistenceSubscriber.java │ │ │ │ │ ├── LocalPersistenceSubscriberProvider.java │ │ │ │ │ ├── LocalPersistenceSubscriberRouter.java │ │ │ │ │ ├── ValueEntityOne.java │ │ │ │ │ ├── ValueEntityOneProvider.java │ │ │ │ │ ├── ValueEntityOneRouter.java │ │ │ │ │ ├── ValueEntityTwo.java │ │ │ │ │ ├── ValueEntityTwoProvider.java │ │ │ │ │ └── ValueEntityTwoRouter.java │ │ │ │ │ └── replicatedentity │ │ │ │ │ ├── ReplicatedEntityConfiguredEntity.java │ │ │ │ │ ├── ReplicatedEntityConfiguredEntityProvider.java │ │ │ │ │ ├── ReplicatedEntityConfiguredEntityRouter.java │ │ │ │ │ ├── ReplicatedEntityTckModelEntity.java │ │ │ │ │ ├── ReplicatedEntityTckModelEntityProvider.java │ │ │ │ │ ├── ReplicatedEntityTckModelEntityRouter.java │ │ │ │ │ ├── ReplicatedEntityTwoEntity.java │ │ │ │ │ ├── ReplicatedEntityTwoEntityProvider.java │ │ │ │ │ └── ReplicatedEntityTwoEntityRouter.java │ │ │ │ └── tck │ │ │ │ └── model │ │ │ │ ├── action │ │ │ │ ├── ActionTckModelImpl.java │ │ │ │ └── ActionTwoImpl.java │ │ │ │ ├── eventsourcedentity │ │ │ │ ├── EventSourcedConfiguredEntity.java │ │ │ │ ├── EventSourcedTckModelEntity.java │ │ │ │ └── EventSourcedTwoEntity.java │ │ │ │ ├── valueentity │ │ │ │ ├── ValueEntityConfiguredEntity.java │ │ │ │ ├── ValueEntityTckModelEntity.java │ │ │ │ └── ValueEntityTwoEntity.java │ │ │ │ └── view │ │ │ │ ├── ViewTckModelImpl.java │ │ │ │ └── ViewTckSourceEntity.java │ │ ├── proto │ │ │ └── kalix │ │ │ │ └── tck │ │ │ │ └── model │ │ │ │ ├── action │ │ │ │ └── action.proto │ │ │ │ ├── eventing │ │ │ │ └── local_persistence_eventing.proto │ │ │ │ ├── eventsourcedentity │ │ │ │ ├── event_sourced_configured.proto │ │ │ │ ├── event_sourced_entity_api.proto │ │ │ │ ├── event_sourced_tck_model.proto │ │ │ │ └── event_sourced_two.proto │ │ │ │ ├── replicatedentity │ │ │ │ └── replicated_entity.proto │ │ │ │ ├── valueentity │ │ │ │ ├── value_entity_api.proto │ │ │ │ ├── value_entity_configured.proto │ │ │ │ ├── value_entity_tck_model.proto │ │ │ │ └── value_entity_two.proto │ │ │ │ └── view │ │ │ │ └── view.proto │ │ └── resources │ │ │ └── logback.xml │ │ └── test │ │ ├── java │ │ └── kalix │ │ │ └── javasdk │ │ │ └── tck │ │ │ └── RunTck.java │ │ └── resources │ │ └── logback-test.xml └── scala-tck │ └── src │ ├── main │ ├── proto │ └── scala │ │ └── kalix │ │ └── tck │ │ └── model │ │ ├── Main.scala │ │ ├── TckService.scala │ │ ├── action │ │ ├── ActionTckModelImpl.scala │ │ └── ActionTwoImpl.scala │ │ ├── eventsourcedentity │ │ ├── EventSourcedConfiguredEntity.scala │ │ ├── EventSourcedTckModelEntity.scala │ │ └── EventSourcedTwoEntity.scala │ │ ├── valueentity │ │ ├── ValueEntityConfiguredEntity.scala │ │ ├── ValueEntityTckModelEntity.scala │ │ └── ValueEntityTwoEntity.scala │ │ └── view │ │ ├── ViewTckModelImpl.scala │ │ └── ViewTckSourceEntity.scala │ └── test │ ├── java │ └── kalix │ │ └── javasdk │ │ └── tck │ │ └── RunTck.java │ └── resources │ └── logback-test.xml ├── updateRuntimeVersions.sh ├── updateSamplesVersions.sh └── updateSdkVersions.sh /.github/ci-check-samples.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ALL_OK=true 3 | for SAMPLE in samples/java* samples/scala* 4 | do 5 | SAMPLE_NAME="${SAMPLE#samples/}" 6 | if [ $(grep -c ${SAMPLE_NAME} .github/workflows/ci.yml) -lt 1 ] ; then 7 | echo "${SAMPLE_NAME} is missing CI-tests" 8 | ALL_OK=false 9 | else 10 | echo "${SAMPLE_NAME} found" 11 | fi 12 | done 13 | $ALL_OK 14 | -------------------------------------------------------------------------------- /.github/determine-sdk-version.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | echo "Extracting version from sbt build" 3 | # deliberately not using `--client` 4 | sbt --no-colors "print coreSdk/version" | tail -n 1 | tr -d '\n' > ~/kalix-sdk-version.txt 5 | -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/marketplace/actions/labeler 2 | 3 | kalix-runtime: 4 | - '**/*' 5 | 6 | java-sdk-protobuf: 7 | - sdk/java-sdk-protobuf/**/* 8 | - sdk/java-sdk-protobuf-testkit/**/* 9 | - maven-java/**/* 10 | - codegen/java-gen/**/* 11 | 12 | scala-sdk-protobuf: 13 | - sdk/scala-sdk-protobuf/**/* 14 | - sdk/scala-sdk-protobuf-testkit/**/* 15 | - sbt-plugin/**/* 16 | - codegen/scala-gen/**/* 17 | 18 | Documentation: 19 | - docs/**/* 20 | - samples/**/* 21 | -------------------------------------------------------------------------------- /.github/patch-maven-versions.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | # update poms with the version extracted from sbt dynver 4 | mvn --quiet --batch-mode --activate-profiles patch-version versions:set -DnewVersion=${SDK_VERSION} 5 | 6 | ( # also needs to change kalix-sdk.version in parent pom 7 | cd kalix-java-protobuf-parent 8 | sed -i.bak "s/\(.*\)<\/kalix-sdk.version>/$SDK_VERSION<\/kalix-sdk.version>/" pom.xml 9 | rm pom.xml.bak 10 | ) 11 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | # https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#configuring-automatically-generated-release-notes 2 | changelog: 3 | categories: 4 | - title: 'Java SDK' 5 | labels: 6 | - 'java-sdk' 7 | - title: 'Java/Protobuf SDK' 8 | labels: 9 | - 'java-sdk-protobuf' 10 | - title: 'Scala/Protobuf SDK' 11 | labels: 12 | - 'scala-sdk-protobuf' 13 | - title: 'Documentation' 14 | labels: 15 | - 'Documentation' 16 | - title: 'Other' 17 | labels: 18 | - "*" 19 | -------------------------------------------------------------------------------- /.github/workflows/labeler.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/marketplace/actions/labeler 2 | 3 | name: "Pull Request Labeler" 4 | on: 5 | - pull_request_target 6 | 7 | jobs: 8 | triage: 9 | runs-on: ubuntu-latest 10 | permissions: 11 | contents: read 12 | pull-requests: write 13 | steps: 14 | # https://github.com/actions/labeler/releases 15 | # v4.0.3 16 | - uses: actions/labeler@ba790c862c380240c6d5e7427be5ace9a05c754b 17 | with: 18 | repo-token: "${{ secrets.GITHUB_TOKEN }}" 19 | -------------------------------------------------------------------------------- /.jvmopts: -------------------------------------------------------------------------------- 1 | # This is used to configure the sbt instance for local development 2 | # and running tests on Github Actions 3 | 4 | -Xms2G 5 | -Xmx4G -------------------------------------------------------------------------------- /.vale.ini: -------------------------------------------------------------------------------- 1 | StylesPath = styles 2 | 3 | MinAlertLevel = error 4 | Vocab = Base 5 | 6 | Packages = Microsoft, write-good 7 | 8 | [*.{md,adoc}] 9 | BasedOnStyles = Vale, Lightbend, write-good 10 | 11 | # Override the alert level of certain styles 12 | Lightbend.Contractions = suggestion 13 | Lightbend.Avoid = warning 14 | write-good.So = suggestion 15 | write-good.ThereIs = suggestion 16 | Lightbend.Foreign = warning 17 | Lightbend.HeadingColons = warning 18 | Lightbend.RangeFormat = suggestion 19 | Lightbend.URLFormat = suggestion 20 | Lightbend.Auto = warning 21 | -------------------------------------------------------------------------------- /codegen/core/src/main/scala/kalix/codegen/Log.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.codegen 6 | 7 | trait Log { 8 | // On sbt we don't have a neat way to hook into logging, 9 | // so there debug/info messages are either silent or println'ed, and 10 | // all other problems should be fatal. 11 | def debug(message: String): Unit 12 | def warn(message: String): Unit 13 | def info(message: String): Unit 14 | } 15 | -------------------------------------------------------------------------------- /codegen/core/src/test/resources/test-shoppingcart/shoppingcart_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | // These are the messages that get persisted - the current state (Cart). 4 | syntax = "proto3"; 5 | 6 | package com.example.shoppingcart.domain; 7 | 8 | option java_outer_classname = "ShoppingCartDomain"; 9 | 10 | message LineItem { 11 | string productId = 1; 12 | string name = 2; 13 | int32 quantity = 3; 14 | } 15 | 16 | // The shopping cart state. 17 | message Cart { 18 | repeated LineItem items = 1; 19 | } 20 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/action-service/simple-new-style/proto/external_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.external; 5 | 6 | option java_outer_classname = "ExternalDomain"; 7 | 8 | message Empty { 9 | 10 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/action-service/simple-old-style/proto/external_domain.proto: -------------------------------------------------------------------------------- 1 | ../../simple-new-style/proto/external_domain.proto -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/action-service/with-action-in-name/proto/example-action.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.example.service; 5 | 6 | import "google/protobuf/empty.proto"; 7 | import "kalix/annotations.proto"; 8 | 9 | option java_outer_classname = "ServiceOuterClass"; 10 | 11 | // to test that we generate a reasonable name 12 | service MyServiceAction { 13 | option (kalix.service) = { 14 | type : SERVICE_TYPE_ACTION 15 | }; 16 | 17 | rpc simpleMethod(MyRequest) returns (google.protobuf.Empty) {} 18 | } 19 | 20 | message MyRequest {} -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/absolute-packages/proto/counter_events.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.events; 6 | 7 | option java_outer_classname = "OuterCounterEvents"; 8 | 9 | message Increased { 10 | int32 value = 1; 11 | } 12 | 13 | message Decreased { 14 | int32 value = 1; 15 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/absolute-packages/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/domain-in-service-package/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | 13 | message Increased { 14 | int32 value = 1; 15 | } 16 | 17 | message Decreased { 18 | int32 value = 1; 19 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/named-new-style-with-java-package/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package example.eventsourcedentity.domain; 6 | 7 | option java_package = "org.example.eventsourcedentity.domain"; 8 | option java_outer_classname = "CounterDomain"; 9 | 10 | message CounterState { 11 | int32 value = 1; 12 | } 13 | 14 | message Increased { 15 | int32 value = 1; 16 | } 17 | 18 | message Decreased { 19 | int32 value = 1; 20 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/named-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | 13 | message Increased { 14 | int32 value = 1; 15 | } 16 | 17 | message Decreased { 18 | int32 value = 1; 19 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/state-events-in-different-package/proto/counter_events.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.events; 6 | 7 | option java_outer_classname = "OuterCounterEvents"; 8 | 9 | message Increased { 10 | int32 value = 1; 11 | } 12 | 13 | message Decreased { 14 | int32 value = 1; 15 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/state-events-in-different-package/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/event-sourced-entity/unnamed-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | 13 | message Increased { 14 | int32 value = 1; 15 | } 16 | 17 | message Decreased { 18 | int32 value = 1; 19 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/replicated-entity/multimap-absolute-packages/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/replicated-entity/multimap-domain-in-service-package/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/replicated-entity/multimap-key-value-in-different-pacakge/proto/multi_map_key.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain.key; 6 | 7 | option java_outer_classname = "SomeMultiMapDomainKey"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/replicated-entity/multimap-key-value-in-different-pacakge/proto/multi_map_value.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain.value; 6 | 7 | option java_outer_classname = "SomeMultiMapDomainValue"; 8 | 9 | 10 | message SomeValue { 11 | string value = 1; 12 | } 13 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/replicated-entity/multimap-named-new-style/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/replicated-entity/multimap-unnamed-new-style/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/value-entity/absolute-packages/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/value-entity/domain-in-service-package/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/value-entity/named-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/value-entity/state-events-in-different-pacakge/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/value-entity/unnamed-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/view-service/named-new-style/generated-managed/org/example/named/view/AbstractMyUserByNameView.java: -------------------------------------------------------------------------------- 1 | package org.example.named.view; 2 | 3 | import kalix.javasdk.view.View; 4 | 5 | // This code is managed by Kalix tooling. 6 | // It will be re-generated to reflect any changes to your protobuf definitions. 7 | // DO NOT EDIT 8 | 9 | public abstract class AbstractMyUserByNameView extends View { 10 | 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/view-service/unnamed-new-style/generated-managed/org/example/unnamed/view/AbstractUserByNameView.java: -------------------------------------------------------------------------------- 1 | package org.example.unnamed.view; 2 | 3 | import kalix.javasdk.view.View; 4 | 5 | // This code is managed by Kalix tooling. 6 | // It will be re-generated to reflect any changes to your protobuf definitions. 7 | // DO NOT EDIT 8 | 9 | public abstract class AbstractUserByNameView extends View { 10 | 11 | 12 | } 13 | 14 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/view-service/view-in-name-new-style/generated-managed/org/example/view/AbstractUserByNameView.java: -------------------------------------------------------------------------------- 1 | package org.example.view; 2 | 3 | import kalix.javasdk.view.View; 4 | 5 | // This code is managed by Kalix tooling. 6 | // It will be re-generated to reflect any changes to your protobuf definitions. 7 | // DO NOT EDIT 8 | 9 | public abstract class AbstractUserByNameView extends View { 10 | 11 | public abstract View.UpdateEffect updateCustomer( 12 | UserViewModel.UserState state, 13 | UserViewModel.UserState userState); 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/view-service/view-multiple-tables/generated-managed/org/example/Components.java: -------------------------------------------------------------------------------- 1 | package org.example; 2 | 3 | import kalix.javasdk.DeferredCall; 4 | 5 | // This code is managed by Kalix tooling. 6 | // It will be re-generated to reflect any changes to your protobuf definitions. 7 | // DO NOT EDIT 8 | 9 | /** 10 | * Not intended for user extension, provided through generated implementation 11 | */ 12 | public interface Components { 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/workflow/proto/some_action.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.example.service; 5 | 6 | import "kalix/annotations.proto"; 7 | import "google/protobuf/empty.proto"; 8 | 9 | option java_outer_classname = "SomeServiceOuterClass"; 10 | 11 | service SomeService { 12 | option (kalix.codegen) = { 13 | action: {} 14 | }; 15 | 16 | rpc simpleMethod(SomeRequest) returns (google.protobuf.Empty) {} 17 | } 18 | 19 | message SomeRequest {} -------------------------------------------------------------------------------- /codegen/java-gen/src/test/resources/tests/workflow/proto/workflow_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.example.workflow.domain; 5 | 6 | option java_outer_classname = "OuterTransferState"; 7 | 8 | message TransferState { 9 | string from = 1; 10 | string to = 2; 11 | double amount = 3; 12 | string log = 4; 13 | repeated string sign_offs = 5; 14 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/main/scala/kalix/codegen/scalasdk/DebugPrintlnLog.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.codegen.scalasdk 6 | 7 | import kalix.codegen.Log 8 | 9 | case class DebugPrintlnLog(debugEnabled: Boolean) extends Log { 10 | override def debug(message: String): Unit = 11 | if (debugEnabled) println(s"[DEBUG] $message") 12 | override def warn(message: String): Unit = 13 | if (debugEnabled) println(s"[WARNING] $message") 14 | override def info(message: String): Unit = 15 | if (debugEnabled) println(s"[INFO] $message") 16 | } 17 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/main/scala/kalix/codegen/scalasdk/genTests.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.codegen.scalasdk 6 | 7 | import protocbridge.SandboxedJvmGenerator 8 | 9 | object genTests { 10 | def apply(options: Seq[String] = Seq.empty): (SandboxedJvmGenerator, Seq[String]) = 11 | gen(options, "kalix.codegen.scalasdk.KalixTestGenerator$") 12 | } 13 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/main/scala/kalix/codegen/scalasdk/genUnmanaged.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.codegen.scalasdk 6 | 7 | import protocbridge.SandboxedJvmGenerator 8 | 9 | object genUnmanaged { 10 | def apply(options: Seq[String] = Seq.empty): (SandboxedJvmGenerator, Seq[String]) = 11 | gen(options, "kalix.codegen.scalasdk.KalixUnmanagedGenerator$") 12 | } 13 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/main/scala/kalix/codegen/scalasdk/genUnmanagedTest.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.codegen.scalasdk 6 | 7 | import protocbridge.SandboxedJvmGenerator 8 | 9 | object genUnmanagedTest { 10 | def apply(options: Seq[String] = Seq.empty): (SandboxedJvmGenerator, Seq[String]) = 11 | gen(options, "kalix.codegen.scalasdk.KalixUnmanagedTestGenerator$") 12 | } 13 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/action-service/simple-new-style/proto/external_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.external; 5 | 6 | option java_outer_classname = "ExternalDomain"; 7 | 8 | message Empty { 9 | 10 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/action-service/simple-old-style/proto/external_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.external; 5 | 6 | option java_outer_classname = "ExternalDomain"; 7 | 8 | message Empty { 9 | 10 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/action-service/with-action-in-name/proto/example-action.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.example.service; 5 | 6 | import "google/protobuf/empty.proto"; 7 | import "kalix/annotations.proto"; 8 | 9 | option java_outer_classname = "ServiceOuterClass"; 10 | 11 | // to test that we generate a reasonable name 12 | service MyServiceAction { 13 | option (kalix.service) = { 14 | type : SERVICE_TYPE_ACTION 15 | }; 16 | 17 | rpc simpleMethod(MyRequest) returns (google.protobuf.Empty) {} 18 | } 19 | 20 | message MyRequest {} -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/event-sourced-entity/absolute-packages/proto/counter_events.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.events; 6 | 7 | option java_outer_classname = "OuterCounterEvents"; 8 | 9 | message Increased { 10 | int32 value = 1; 11 | } 12 | 13 | message Decreased { 14 | int32 value = 1; 15 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/event-sourced-entity/absolute-packages/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/event-sourced-entity/domain-in-service-package/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | 13 | message Increased { 14 | int32 value = 1; 15 | } 16 | 17 | message Decreased { 18 | int32 value = 1; 19 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/event-sourced-entity/named-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | 13 | message Increased { 14 | int32 value = 1; 15 | } 16 | 17 | message Decreased { 18 | int32 value = 1; 19 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/event-sourced-entity/state-events-in-different-pacakge/proto/counter_events.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.events; 6 | 7 | option java_outer_classname = "OuterCounterEvents"; 8 | 9 | message Increased { 10 | int32 value = 1; 11 | } 12 | 13 | message Decreased { 14 | int32 value = 1; 15 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/event-sourced-entity/state-events-in-different-pacakge/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/event-sourced-entity/unnamed-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.eventsourcedentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | 13 | message Increased { 14 | int32 value = 1; 15 | } 16 | 17 | message Decreased { 18 | int32 value = 1; 19 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/replicated-entity/multimap-absolute-packages/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/replicated-entity/multimap-domain-in-service-package/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/replicated-entity/multimap-key-value-in-different-pacakge/proto/multi_map_key.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain.key; 6 | 7 | option java_outer_classname = "SomeMultiMapDomainKey"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/replicated-entity/multimap-key-value-in-different-pacakge/proto/multi_map_value.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain.value; 6 | 7 | option java_outer_classname = "SomeMultiMapDomainValue"; 8 | 9 | 10 | message SomeValue { 11 | string value = 1; 12 | } 13 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/replicated-entity/multimap-named-new-style/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/replicated-entity/multimap-unnamed-new-style/proto/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/value-entity/absolute-packages/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/value-entity/domain-in-service-package/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/value-entity/named-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/value-entity/state-events-in-different-pacakge/proto/counter_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity.state; 6 | 7 | option java_outer_classname = "OuterCounterState"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/value-entity/unnamed-new-style/proto/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package org.example.valueentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/view-service/named-new-style/generated-managed/org/example/named/view/AbstractMyUserByNameView.scala: -------------------------------------------------------------------------------- 1 | package org.example.named.view 2 | 3 | import kalix.scalasdk.view.View 4 | 5 | // This code is managed by Kalix tooling. 6 | // It will be re-generated to reflect any changes to your protobuf definitions. 7 | // DO NOT EDIT 8 | 9 | abstract class AbstractMyUserByNameView extends View[UserState] { 10 | override def emptyState: UserState = 11 | null // emptyState is only used with transform_updates=true 12 | } 13 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/view-service/named-new-style/generated-unmanaged/org/example/named/view/MyUserByNameView.scala: -------------------------------------------------------------------------------- 1 | package org.example.named.view 2 | 3 | import kalix.scalasdk.view.View.UpdateEffect 4 | import kalix.scalasdk.view.ViewContext 5 | 6 | // This class was initially generated based on the .proto definition by Kalix tooling. 7 | // 8 | // As long as this file exists it will not be overwritten: you can maintain it yourself, 9 | // or delete it so it is regenerated as needed. 10 | 11 | class MyUserByNameView(context: ViewContext) extends AbstractMyUserByNameView 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/view-service/unnamed-new-style/generated-managed/org/example/unnamed/view/AbstractUserByNameView.scala: -------------------------------------------------------------------------------- 1 | package org.example.unnamed.view 2 | 3 | import kalix.scalasdk.view.View 4 | 5 | // This code is managed by Kalix tooling. 6 | // It will be re-generated to reflect any changes to your protobuf definitions. 7 | // DO NOT EDIT 8 | 9 | abstract class AbstractUserByNameView extends View[UserState] { 10 | override def emptyState: UserState = 11 | null // emptyState is only used with transform_updates=true 12 | } 13 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/view-service/unnamed-new-style/generated-unmanaged/org/example/unnamed/view/UserByNameView.scala: -------------------------------------------------------------------------------- 1 | package org.example.unnamed.view 2 | 3 | import kalix.scalasdk.view.View.UpdateEffect 4 | import kalix.scalasdk.view.ViewContext 5 | 6 | // This class was initially generated based on the .proto definition by Kalix tooling. 7 | // 8 | // As long as this file exists it will not be overwritten: you can maintain it yourself, 9 | // or delete it so it is regenerated as needed. 10 | 11 | class UserByNameView(context: ViewContext) extends AbstractUserByNameView 12 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/view-service/view-in-name-new-style/generated-managed/org/example/view/AbstractUserByNameView.scala: -------------------------------------------------------------------------------- 1 | package org.example.view 2 | 3 | import kalix.scalasdk.view.View 4 | 5 | // This code is managed by Kalix tooling. 6 | // It will be re-generated to reflect any changes to your protobuf definitions. 7 | // DO NOT EDIT 8 | 9 | abstract class AbstractUserByNameView extends View[UserState] { 10 | def updateCustomer( 11 | state: UserState, 12 | userState: UserState): View.UpdateEffect[UserState] 13 | } 14 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/view-service/view-multiple-tables/generated-managed/org/example/Components.scala: -------------------------------------------------------------------------------- 1 | package org.example 2 | 3 | 4 | 5 | 6 | // This code is managed by Kalix tooling. 7 | // It will be re-generated to reflect any changes to your protobuf definitions. 8 | // DO NOT EDIT 9 | 10 | /** 11 | * Not intended for user extension, provided through generated implementation 12 | */ 13 | trait Components { 14 | import Components._ 15 | 16 | 17 | 18 | } 19 | 20 | object Components{ 21 | 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/workflow/proto/some_action.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.example.service; 5 | 6 | import "kalix/annotations.proto"; 7 | import "google/protobuf/empty.proto"; 8 | 9 | option java_outer_classname = "SomeServiceOuterClass"; 10 | 11 | service SomeService { 12 | option (kalix.codegen) = { 13 | action: {} 14 | }; 15 | 16 | rpc simpleMethod(SomeRequest) returns (google.protobuf.Empty) {} 17 | } 18 | 19 | message SomeRequest {} -------------------------------------------------------------------------------- /codegen/scala-gen/src/test/resources/tests/workflow/proto/workflow_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | package org.example.workflow.domain; 5 | 6 | option java_outer_classname = "OuterTransferState"; 7 | 8 | message TransferState { 9 | string from = 1; 10 | string to = 2; 11 | double amount = 3; 12 | string log = 4; 13 | repeated string sign_offs = 5; 14 | } -------------------------------------------------------------------------------- /devtools/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # this is a dummy yml file we need in order to test that DockerComposeUtils loads a docker-compose.yml 2 | # this file will NOT be packaged or used in any context other than DockerComposeUtilsSpec 3 | # DockerComposeUtils will look up for such a file at the root of the current jvm process -------------------------------------------------------------------------------- /devtools/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | 2 | kalix { 3 | # Default docker-compose file to use in dev-mode. 4 | # 5 | # When starting Kalix locally in development mode, the file pointed by this settings 6 | # will be used to start docker-compose. The file must be at the root of the project. 7 | # 8 | # Usually, this file is included in all available templates and contains the Kalix Runtime image 9 | # to be used during development. 10 | # 11 | # If set to 'none', the service will start without starting the containerized Kalix Runtime. 12 | dev-mode.docker-compose-file=docker-compose.yml 13 | } 14 | -------------------------------------------------------------------------------- /devtools/src/main/scala/kalix/devtools/impl/UserServicePortExtractor.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.devtools.impl 6 | object UserServicePortExtractor { 7 | 8 | private val ExtractPort = """USER_SERVICE_PORT:.*?(\d+).?""".r 9 | private val ExtractLegacyPort = """USER_FUNCTION_PORT:.*?(\d+).?""".r 10 | 11 | def unapply(line: String): Option[Int] = 12 | line.trim match { 13 | case ExtractPort(port) => Some(port.toInt) 14 | case ExtractLegacyPort(port) => Some(port.toInt) 15 | case _ => None 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/.examplesignore: -------------------------------------------------------------------------------- 1 | target 2 | *.md 3 | .classpath 4 | .project 5 | .settings 6 | .idea 7 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | /.cache/ 2 | /.deploy/ 3 | /build/ 4 | /dev/build/ 5 | -------------------------------------------------------------------------------- /docs/bin/version.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # Version for docs, based on nearest git tag. 4 | # This is always a tagged/released version, not a dynamic version. 5 | 6 | readonly prefix="v" 7 | readonly tag=$(git describe --tags --abbrev=0 --match "$prefix[0-9]*" 2> /dev/null) 8 | [ -n "$tag" ] && echo "${tag#$prefix}" || echo "0.0.0" 9 | -------------------------------------------------------------------------------- /docs/config/validate-links.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignorePatterns": [ 3 | { "pattern": "^https://mvnrepository\\.com" }, 4 | { "pattern": "^http://127.0.0.1:8080" }, 5 | { "pattern": "^http://jaeger:4317"}, 6 | { "pattern": "^http://localhost:16686"}, 7 | { "pattern": "^https://supertokens.com/blog/are-you-using-jwts-for-user-sessions-in-the-correct-way"} 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /docs/dev/antora.yml: -------------------------------------------------------------------------------- 1 | site: 2 | title: "Kalix Documentation" 3 | 4 | content: 5 | sources: 6 | - url: .. 7 | branches: [HEAD] 8 | start_paths: [docs/src, docs/build/src/managed, docs/dev/src] 9 | 10 | ui: 11 | bundle: 12 | url: https://lightbend.github.io/antora-supplemental-ui-lightbend-theme/default_ui/ui-bundle-1582458925.zip 13 | snapshot: true 14 | 15 | runtime: 16 | fetch: true 17 | 18 | asciidoc: 19 | attributes: 20 | review: '' 21 | todo: '' 22 | page-pagination: '' 23 | page-toctitle: 'On This Page' 24 | 25 | output: 26 | clean: true 27 | -------------------------------------------------------------------------------- /docs/dev/src/antora.yml: -------------------------------------------------------------------------------- 1 | name: "" 2 | version: master 3 | 4 | nav: 5 | - modules/java/nav.adoc 6 | - modules/java-protobuf/nav.adoc 7 | -------------------------------------------------------------------------------- /docs/dev/src/modules/ROOT/images/new-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/dev/src/modules/ROOT/partials/grpc/using-acls.adoc: -------------------------------------------------------------------------------- 1 | // this is just a placeholder so we can compile sdk docs here 2 | // the real file can be found in kalix-docs repo -------------------------------------------------------------------------------- /docs/dev/src/modules/ROOT/partials/grpc/using-jwts.adoc: -------------------------------------------------------------------------------- 1 | // this is just a placeholder so we can compile sdk docs here 2 | // the real file can be found in kalix-docs repo -------------------------------------------------------------------------------- /docs/dev/src/modules/ROOT/partials/include.adoc: -------------------------------------------------------------------------------- 1 | :tab-icon: image:ROOT:new-tab.svg[width=12] 2 | :minimum_docker_version: 20.10.14 -------------------------------------------------------------------------------- /docs/src/antora.yml: -------------------------------------------------------------------------------- 1 | name: "" 2 | version: master 3 | -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/pages/api.adoc: -------------------------------------------------------------------------------- 1 | = Java API docs 2 | 3 | include::ROOT:partial$include.adoc[] 4 | 5 | API documentation: 6 | 7 | * link:{attachmentsdir}/api/index.html[Java/Protobuf SDK {tab-icon}, window="new"] 8 | * link:{attachmentsdir}/testkit/index.html[Java/Protobuf SDK TestKit {tab-icon}, window="new"] 9 | * link:{attachmentsdir}/scala-api/index.html[Scala/Protobuf SDK {tab-icon}, window="new"] 10 | * link:{attachmentsdir}/scala-testkit-api/index.html[Scala/Protobuf SDK TestKit {tab-icon}, window="new"] 11 | 12 | -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/effects-action.adoc: -------------------------------------------------------------------------------- 1 | == Action's Effect API 2 | 3 | The Action's Effect defines the operations that Kalix should perform when an incoming message is handled by an Action. 4 | 5 | An Action Effect can either: 6 | 7 | * reply with a message to the caller 8 | * reply with a message to be published to a topic (in case the method is a publisher) 9 | * forward the message to another component 10 | * return an error 11 | * ignore the call 12 | -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/effects-event-sourced-entity.adoc: -------------------------------------------------------------------------------- 1 | == Event Sourced Entity's Effect API 2 | 3 | The Event Sourced Entity's Effect defines the operations that Kalix should perform when an incoming command is handled by an Event Sourced Entity. 4 | 5 | An Event Sourced Entity Effect can either: 6 | 7 | * emit events and send a reply to the caller 8 | * directly reply to the caller if the command is not requesting any state change 9 | * rejected the command by returning an error 10 | * instruct Kalix to delete the entity 11 | -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/effects-replicated-entity.adoc: -------------------------------------------------------------------------------- 1 | == Replicated Entity's Effect API 2 | 3 | The Replicated Entity's Effect defines the operations that Kalix should perform when an incoming command is handled by a Replicated Entity. 4 | 5 | A Replicated Entity Effect can either: 6 | 7 | * update the entity state and send a reply to the caller 8 | * directly reply to the caller if the command is not requesting any state change 9 | * rejected the command by returning an error 10 | * instruct Kalix to delete the entity -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/effects-value-entity.adoc: -------------------------------------------------------------------------------- 1 | == Value Entity's Effect API 2 | 3 | The Value Entity's Effect defines the operations that Kalix should perform when an incoming command is handled by a Value Entity. 4 | 5 | A Value Entity Effect can either: 6 | 7 | * update the entity state and send a reply to the caller 8 | * directly reply to the caller if the command is not requesting any state change 9 | * rejected the command by returning an error 10 | * instruct Kalix to delete the entity 11 | -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/effects-view.adoc: -------------------------------------------------------------------------------- 1 | == View's Effect API 2 | 3 | The View's Effect defines the operations that Kalix should perform when an event, a message or a state change is handled by a View. 4 | 5 | A View Effect can either: 6 | 7 | * update the view state 8 | * delete the view state 9 | * ignore the event or state change notification (and not update the view state) 10 | -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/effects-workflow.adoc: -------------------------------------------------------------------------------- 1 | == Workflow's Effect API 2 | 3 | The Workflow's Effect defines the operations that Kalix should perform when an incoming command is handled by a Workflow. 4 | 5 | A Workflow Effect can either: 6 | 7 | * update the state of the workflow 8 | * define the next step to be executed (transition) 9 | * pause the workflow 10 | * end the workflow 11 | * fail the step or reject a command by returning an error 12 | * reply to incoming commands 13 | -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/important-mvn-kalixdeploy.adoc: -------------------------------------------------------------------------------- 1 | IMPORTANT: If you time stamp your image. For example, `${project.version}-${build.timestamp}` you must always run both targets in one pass, i.e. `mvn deploy kalix:deploy`. You cannot run `mvn deploy` first and then `mvn kalix:deploy` because they will have different timestamps and thus different `dockerTag`s. This makes it impossible to reference the image in the repository from the second target. -------------------------------------------------------------------------------- /docs/src/modules/java-protobuf/partials/pubsub-note.adoc: -------------------------------------------------------------------------------- 1 | [NOTE] 2 | ==== 3 | In the Protobuf descriptors, only topic names are referenced and no additional details about how to connect to the topics are needed. When deploying the application there must be a broker configuration in the Kalix project, with credentials and details on how connect to the broker. For details about configuring a broker see https://docs.kalix.io/operations/message-brokers.html[Configure message brokers] 4 | ==== -------------------------------------------------------------------------------- /maven-java/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .settings 3 | .vscode 4 | .project 5 | .idea 6 | *.iml 7 | .DS_Store 8 | target 9 | -------------------------------------------------------------------------------- /maven-java/README.md: -------------------------------------------------------------------------------- 1 | # kalix-maven-java 2 | 3 | This Maven parent project bundles projects to support the Apache Maven/Java toolchain. 4 | 5 | Please navigate to each project's README to comprehend what is provided in detail. 6 | 7 | * [kalix-maven-plugin](kalix-maven-plugin/README.md) 8 | * [kalix-maven-archetype](kalix-maven-archetype-value-entity/README.md) 9 | * [kalix-maven-archetype-event-sourced-entity](kalix-maven-archetype-event-sourced-entity/README.md) 10 | 11 | See instructions for local building and testing in [Contributing](../CONTRIBUTING.md). 12 | -------------------------------------------------------------------------------- /maven-java/kalix-maven-archetype-event-sourced-entity/src/main/resources/archetype-resources/.gitignore: -------------------------------------------------------------------------------- 1 | # Eclipse 2 | .classpath 3 | .project 4 | .settings/ 5 | 6 | # Intellij 7 | .idea/ 8 | *.iml 9 | *.iws 10 | 11 | # Mac 12 | .DS_Store 13 | 14 | # VSCode 15 | .vscode 16 | 17 | # Maven 18 | log/ 19 | target/ 20 | -------------------------------------------------------------------------------- /maven-java/kalix-maven-archetype-event-sourced-entity/src/main/resources/archetype-resources/src/main/proto/__packageInPathFormat__/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ${package}.domain; 4 | 5 | option java_outer_classname = "CounterDomain"; 6 | 7 | message CounterState { 8 | int32 value = 1; 9 | } 10 | 11 | message ValueIncreased { 12 | int32 value = 1; 13 | } 14 | 15 | message ValueDecreased { 16 | int32 value = 1; 17 | } 18 | 19 | message ValueReset { 20 | } 21 | -------------------------------------------------------------------------------- /maven-java/kalix-maven-archetype-event-sourced-entity/src/main/resources/archetype-resources/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/maven-java/kalix-maven-archetype-event-sourced-entity/src/main/resources/archetype-resources/src/main/resources/application.conf -------------------------------------------------------------------------------- /maven-java/kalix-maven-archetype-value-entity/src/main/resources/archetype-resources/.gitignore: -------------------------------------------------------------------------------- 1 | # Eclipse 2 | .classpath 3 | .project 4 | .settings/ 5 | 6 | # Intellij 7 | .idea/ 8 | *.iml 9 | *.iws 10 | 11 | # Mac 12 | .DS_Store 13 | 14 | # VSCode 15 | .vscode 16 | 17 | # Maven 18 | log/ 19 | target/ 20 | -------------------------------------------------------------------------------- /maven-java/kalix-maven-archetype-value-entity/src/main/resources/archetype-resources/src/main/proto/__packageInPathFormat__/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package ${package}.domain; 4 | 5 | option java_outer_classname = "CounterDomain"; 6 | 7 | message CounterState { 8 | int32 value = 1; 9 | } 10 | -------------------------------------------------------------------------------- /maven-java/kalix-maven-archetype-value-entity/src/main/resources/archetype-resources/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/maven-java/kalix-maven-archetype-value-entity/src/main/resources/archetype-resources/src/main/resources/application.conf -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-kafka-quickstart/.bundleignore: -------------------------------------------------------------------------------- 1 | target 2 | .* 3 | dependency-reduced-pom.xml 4 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-kafka-quickstart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-kafka-quickstart/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-customer-registry-kafka-quickstart/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-quickstart/.bundleignore: -------------------------------------------------------------------------------- 1 | target 2 | .* 3 | dependency-reduced-pom.xml 4 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-quickstart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-quickstart/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-customer-registry-quickstart/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-views-quickstart/.bundleignore: -------------------------------------------------------------------------------- 1 | target 2 | .* 3 | dependency-reduced-pom.xml 4 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-views-quickstart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-views-quickstart/src/main/java/customer/view/CustomerByEmailView.java: -------------------------------------------------------------------------------- 1 | /* This code was generated by Kalix tooling. 2 | * As long as this file exists it will not be re-generated. 3 | * You are free to make changes to this file. 4 | */ 5 | package customer.view; 6 | 7 | import kalix.javasdk.view.ViewContext; 8 | import customer.domain.CustomerDomain; 9 | 10 | public class CustomerByEmailView extends AbstractCustomerByEmailView { 11 | 12 | public CustomerByEmailView(ViewContext context) {} 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /samples/java-protobuf-customer-registry-views-quickstart/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-customer-registry-views-quickstart/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-doc-snippets/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-doc-snippets/README.md: -------------------------------------------------------------------------------- 1 | # Misc documentation snippets 2 | 3 | This project is only for documentation purposes. It is only compiled. 4 | -------------------------------------------------------------------------------- /samples/java-protobuf-doc-snippets/src/main/proto/com/example/delegating_service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package com.example; 3 | 4 | // tag::service[] 5 | import "kalix/annotations.proto"; 6 | 7 | option java_outer_classname = "DelegatingServiceApi"; 8 | 9 | message Request { 10 | string counter_id = 1; 11 | } 12 | 13 | message Result { 14 | int32 value = 1; 15 | } 16 | 17 | service DelegatingService { 18 | option (kalix.codegen) = { 19 | action: {} 20 | }; 21 | 22 | rpc AddAndReturn(Request) returns (Result); 23 | } 24 | // end::service[] 25 | -------------------------------------------------------------------------------- /samples/java-protobuf-doc-snippets/src/main/proto/com/example/kalix_policy.proto: -------------------------------------------------------------------------------- 1 | // This is the default Access Control List (ACL) for all components of this Kalix Service 2 | // tag::default[] 3 | syntax = "proto3"; 4 | 5 | package com.example; 6 | 7 | import "kalix/annotations.proto"; // <1> 8 | 9 | option (kalix.file).acl = { 10 | allow: { service: "*" } // <2> 11 | }; 12 | // end::default[] -------------------------------------------------------------------------------- /samples/java-protobuf-doc-snippets/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-doc-snippets/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-counter/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-counter/src/main/proto/com/example/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; 4 | 5 | option java_outer_classname = "CounterDomain"; 6 | 7 | message CounterState { 8 | int32 value = 1; 9 | } 10 | 11 | message ValueIncreased { 12 | int32 value = 1; 13 | } 14 | 15 | message ValueDecreased { 16 | int32 value = 1; 17 | } 18 | 19 | message ValueReset { 20 | } 21 | -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-counter/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-eventsourced-counter/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-customer-registry-subscriber/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9001 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8081 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-customer-registry-subscriber/src/main/proto/customer/api/customer_action.proto: -------------------------------------------------------------------------------- 1 | 2 | syntax = "proto3"; 3 | 4 | package customer.action; 5 | 6 | import "google/protobuf/empty.proto"; 7 | import "kalix/annotations.proto"; 8 | import "customer/api/customer_api.proto"; 9 | 10 | option java_outer_classname = "CustomerActionProto"; 11 | 12 | service CustomerAction { 13 | option (kalix.codegen) = { 14 | action: {} 15 | }; 16 | 17 | rpc Create(customer.api.Customer) returns (google.protobuf.Empty) {} 18 | } 19 | -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-customer-registry-subscriber/src/main/proto/customer/kalix_policy.proto: -------------------------------------------------------------------------------- 1 | // This is the default Access Control List (ACL) for all components of this Kalix Service 2 | syntax = "proto3"; 3 | 4 | package customer; 5 | 6 | import "kalix/annotations.proto"; 7 | 8 | // Allow any client to access the components of this Kalix service. This can be overridden explicitly 9 | // per component or method using annotations. 10 | // Documentation at https://docs.kalix.io/java-protobuf/access-control.html 11 | option (kalix.file).acl = { 12 | allow: { principal: ALL } 13 | }; -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-customer-registry-subscriber/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-eventsourced-customer-registry-subscriber/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-customer-registry/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-customer-registry/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-eventsourced-customer-registry/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-shopping-cart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-shopping-cart/RELEASING.md: -------------------------------------------------------------------------------- 1 | # Publishing 2 | 3 | The samples are published as Docker images to `grc.io/kalix-public`. 4 | 5 | To publish the images, ensure that you have the right permissions and configure `gcloud` to connect 6 | 7 | ```shell 8 | # needs to be done if not logged in 9 | gcloud auth login 10 | 11 | # needs to be done once 12 | gcloud auth configure-docker 13 | ``` 14 | 15 | ```shell 16 | mvn package docker:push 17 | ``` 18 | -------------------------------------------------------------------------------- /samples/java-protobuf-eventsourced-shopping-cart/src/main/resources/application.conf: -------------------------------------------------------------------------------- 1 | 2 | # //tag::snapshot-every[] 3 | kalix.event-sourced-entity.snapshot-every = 100 4 | # //end::snapshot-every[] 5 | -------------------------------------------------------------------------------- /samples/java-protobuf-fibonacci-action/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-fibonacci-action/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-fibonacci-action/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-first-service/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-first-service/src/main/proto/com/example/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; 4 | 5 | option java_outer_classname = "CounterDomain"; 6 | 7 | message CounterState { 8 | int32 value = 1; 9 | } 10 | -------------------------------------------------------------------------------- /samples/java-protobuf-first-service/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-first-service/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-reliable-timers/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-reliable-timers/src/main/proto/com/example/domain/order_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; 4 | 5 | option java_outer_classname = "OrderDomain"; 6 | 7 | message OrderState { 8 | string order_number = 1; 9 | bool confirmed = 2; 10 | bool placed = 3; 11 | string item = 4; 12 | int32 quantity = 5; 13 | } 14 | -------------------------------------------------------------------------------- /samples/java-protobuf-replicatedentity-examples/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-replicatedentity-examples/README.md: -------------------------------------------------------------------------------- 1 | # Replicated Entity examples 2 | 3 | Examples of the different Replicated Data types for documentation. 4 | -------------------------------------------------------------------------------- /samples/java-protobuf-replicatedentity-shopping-cart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-replicatedentity-shopping-cart/RELEASING.md: -------------------------------------------------------------------------------- 1 | # Publishing 2 | 3 | The samples are published as Docker images to `grc.io/kalix-public`. 4 | 5 | To publish the images, ensure that you have the right permissions and configure `gcloud` to connect 6 | 7 | ```shell 8 | # needs to be done if not logged in 9 | gcloud auth login 10 | 11 | # needs to be done once 12 | gcloud auth configure-docker 13 | ``` 14 | 15 | ```shell 16 | mvn package docker:push 17 | ``` 18 | -------------------------------------------------------------------------------- /samples/java-protobuf-replicatedentity-shopping-cart/src/main/proto/com/example/shoppingcart/domain/shoppingcart_domain.proto: -------------------------------------------------------------------------------- 1 | // The messages and data that will be replicated for the shopping cart. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.shoppingcart.domain; // <1> 6 | 7 | option java_outer_classname = "ShoppingCartDomain"; // <2> 8 | 9 | message Product { 10 | string id = 1; 11 | string name = 2; 12 | } 13 | -------------------------------------------------------------------------------- /samples/java-protobuf-shopping-cart-quickstart/.bundleignore: -------------------------------------------------------------------------------- 1 | target 2 | .* 3 | dependency-reduced-pom.xml 4 | -------------------------------------------------------------------------------- /samples/java-protobuf-shopping-cart-quickstart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-tracing/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-tracing/src/main/proto/com/example/controller_action.proto: -------------------------------------------------------------------------------- 1 | // This is the public API offered by your entity. 2 | syntax = "proto3"; 3 | 4 | import "kalix/annotations.proto"; 5 | import "google/api/annotations.proto"; 6 | import "google/protobuf/empty.proto"; 7 | 8 | package com.example; 9 | 10 | option java_outer_classname = "ControllerActionApi"; 11 | 12 | message MessageResponse { 13 | string message = 1; 14 | } 15 | 16 | service Controller { 17 | option (kalix.codegen) = { 18 | action: {} 19 | }; 20 | 21 | rpc CallAsyncEndpoint(google.protobuf.Empty) returns (MessageResponse){} 22 | } -------------------------------------------------------------------------------- /samples/java-protobuf-tracing/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-tracing/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-transfer-workflow-compensation/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-transfer-workflow-compensation/src/main/proto/com/example/wallet/wallet_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.wallet.domain; 4 | 5 | option java_outer_classname = "WalletDomain"; 6 | 7 | 8 | message WalletState { 9 | string id = 1; 10 | int32 balance = 2; 11 | } -------------------------------------------------------------------------------- /samples/java-protobuf-transfer-workflow-compensation/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-transfer-workflow-compensation/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-transfer-workflow/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-transfer-workflow/src/main/proto/com/example/wallet/wallet_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.wallet.domain; 4 | 5 | option java_outer_classname = "WalletDomain"; 6 | 7 | 8 | message WalletState { 9 | string id = 1; 10 | int32 balance = 2; 11 | } -------------------------------------------------------------------------------- /samples/java-protobuf-transfer-workflow/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-transfer-workflow/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-counter/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-counter/src/main/proto/com/example/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; // <1> 4 | 5 | option java_outer_classname = "CounterDomain"; // <2> 6 | 7 | message CounterState { // <3> 8 | int32 value = 1; 9 | } 10 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-customer-registry/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-customer-registry/src/main/java/customer/view/CustomerByEmailView.java: -------------------------------------------------------------------------------- 1 | /* This code is managed by Kalix tooling. 2 | * It will be re-generated to reflect any changes to your protobuf definitions. 3 | * DO NOT EDIT 4 | */ 5 | package customer.view; 6 | 7 | import kalix.javasdk.view.View; 8 | import kalix.javasdk.view.ViewContext; 9 | import customer.domain.CustomerDomain; 10 | import java.util.function.Function; 11 | 12 | public class CustomerByEmailView extends AbstractCustomerByEmailView { 13 | 14 | public CustomerByEmailView(ViewContext context) {} 15 | 16 | } 17 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-customer-registry/src/main/java/customer/view/CustomerByNameView.java: -------------------------------------------------------------------------------- 1 | /* This code is managed by Kalix tooling. 2 | * It will be re-generated to reflect any changes to your protobuf definitions. 3 | * DO NOT EDIT 4 | */ 5 | package customer.view; 6 | 7 | import kalix.javasdk.view.ViewContext; 8 | import customer.domain.CustomerDomain; 9 | 10 | public class CustomerByNameView extends AbstractCustomerByNameView { 11 | 12 | public CustomerByNameView(ViewContext context) {} 13 | 14 | } 15 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-customer-registry/src/main/java/customer/view/CustomerDetailsByNameView.java: -------------------------------------------------------------------------------- 1 | package customer.view; 2 | 3 | import kalix.javasdk.view.ViewContext; 4 | 5 | public class CustomerDetailsByNameView extends AbstractCustomerDetailsByNameView { 6 | 7 | public CustomerDetailsByNameView(ViewContext context) {} 8 | 9 | } 10 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-customer-registry/src/main/java/customer/view/CustomerSummaryByNameView.java: -------------------------------------------------------------------------------- 1 | /* This code is managed by Kalix tooling. 2 | * It will be re-generated to reflect any changes to your protobuf definitions. 3 | * DO NOT EDIT 4 | */ 5 | package customer.view; 6 | 7 | import kalix.javasdk.view.ViewContext; 8 | import customer.domain.CustomerDomain; 9 | 10 | public class CustomerSummaryByNameView extends AbstractCustomerSummaryByNameView { 11 | 12 | public CustomerSummaryByNameView(ViewContext context) {} 13 | 14 | } 15 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-customer-registry/src/main/java/customer/view/CustomersResponseByNameView.java: -------------------------------------------------------------------------------- 1 | /* This code is managed by Kalix tooling. 2 | * It will be re-generated to reflect any changes to your protobuf definitions. 3 | * DO NOT EDIT 4 | */ 5 | package customer.view; 6 | 7 | import kalix.javasdk.view.ViewContext; 8 | import customer.domain.CustomerDomain; 9 | 10 | public class CustomersResponseByNameView extends AbstractCustomersResponseByNameView { 11 | 12 | public CustomersResponseByNameView(ViewContext context) {} 13 | 14 | } 15 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-customer-registry/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-valueentity-customer-registry/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-shopping-cart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-valueentity-shopping-cart/RELEASING.md: -------------------------------------------------------------------------------- 1 | # Publishing 2 | 3 | The samples are published as Docker images to `grc.io/kalix-public`. 4 | 5 | To publish the images, ensure that you have the right permissions and configure `gcloud` to connect 6 | 7 | ```shell 8 | # needs to be done if not logged in 9 | gcloud auth login 10 | 11 | # needs to be done once 12 | gcloud auth configure-docker 13 | ``` 14 | 15 | ```shell 16 | mvn package docker:push 17 | ``` 18 | -------------------------------------------------------------------------------- /samples/java-protobuf-view-store/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-view-store/src/main/proto/store/customer/domain/customer_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package store.customer.domain; 4 | 5 | message CustomerState { 6 | string customer_id = 1; 7 | string email = 2; 8 | string name = 3; 9 | Address address = 4; 10 | } 11 | 12 | message Address { 13 | string street = 1; 14 | string city = 2; 15 | } 16 | 17 | message CustomerCreated { 18 | CustomerState customer = 1; 19 | } 20 | 21 | message CustomerNameChanged { 22 | string new_name = 1; 23 | } 24 | 25 | message CustomerAddressChanged { 26 | Address new_address = 1; 27 | } 28 | -------------------------------------------------------------------------------- /samples/java-protobuf-view-store/src/main/proto/store/order/domain/order_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package store.order.domain; 4 | 5 | // tag::domain[] 6 | import "google/protobuf/timestamp.proto"; 7 | 8 | message OrderState { 9 | string order_id = 1; 10 | string product_id = 2; 11 | string customer_id = 3; 12 | int32 quantity = 4; 13 | google.protobuf.Timestamp created = 5; 14 | } 15 | // end::domain[] 16 | -------------------------------------------------------------------------------- /samples/java-protobuf-view-store/src/main/proto/store/product/domain/product_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package store.product.domain; 4 | 5 | // tag::domain[] 6 | message ProductState { 7 | string product_id = 1; 8 | string product_name = 2; 9 | Money price = 3; 10 | } 11 | 12 | message Money { 13 | string currency = 1; 14 | int64 units = 2; 15 | int32 cents = 3; 16 | } 17 | 18 | message ProductCreated { 19 | ProductState product = 1; 20 | } 21 | 22 | message ProductNameChanged { 23 | string new_name = 1; 24 | } 25 | 26 | message ProductPriceChanged { 27 | Money new_price = 1; 28 | } 29 | // end::domain[] 30 | -------------------------------------------------------------------------------- /samples/java-protobuf-web-resources/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/java-protobuf-web-resources/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-web-resources/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/java-protobuf-web-resources/src/main/resources/web/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/java-protobuf-web-resources/src/main/resources/web/img/favicon.png -------------------------------------------------------------------------------- /samples/java-protobuf-web-resources/src/main/resources/web/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 50px; 3 | } 4 | -------------------------------------------------------------------------------- /samples/java-protobuf-web-resources/src/main/resources/web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Kalix Web Resources - Demo

9 | 10 |
    11 | 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-customer-registry-quickstart/.bundleignore: -------------------------------------------------------------------------------- 1 | target 2 | .* 3 | dependency-reduced-pom.xml 4 | -------------------------------------------------------------------------------- /samples/scala-protobuf-customer-registry-quickstart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-customer-registry-quickstart/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-customer-registry-quickstart/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-customer-registry-quickstart/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/scala-protobuf-customer-registry-quickstart/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/scala-protobuf-customer-registry-quickstart/src/main/scala/customer/view/CustomerByEmailView.scala: -------------------------------------------------------------------------------- 1 | /* This code was generated by Kalix tooling. 2 | * As long as this file exists it will not be re-generated. 3 | * You are free to make changes to this file. 4 | */ 5 | package customer.view 6 | 7 | import kalix.scalasdk.view.View.UpdateEffect 8 | import kalix.scalasdk.view.ViewContext 9 | import customer.domain.CustomerState 10 | 11 | class CustomerByEmailView(context: ViewContext) extends AbstractCustomerByEmailView { 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /samples/scala-protobuf-customer-registry-quickstart/src/main/scala/customer/view/CustomerByNameView.scala: -------------------------------------------------------------------------------- 1 | /* This code was generated by Kalix tooling. 2 | * As long as this file exists it will not be re-generated. 3 | * You are free to make changes to this file. 4 | */ 5 | package customer.view 6 | 7 | import kalix.scalasdk.view.View.UpdateEffect 8 | import kalix.scalasdk.view.ViewContext 9 | import customer.domain.CustomerState 10 | 11 | class CustomerByNameView(context: ViewContext) extends AbstractCustomerByNameView { 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /samples/scala-protobuf-doc-snippets/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-doc-snippets/README.md: -------------------------------------------------------------------------------- 1 | # Misc documentation snippets 2 | 3 | This project is only for documentation purposes. It is only compiled. 4 | -------------------------------------------------------------------------------- /samples/scala-protobuf-doc-snippets/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-doc-snippets/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-doc-snippets/src/main/proto/com/example/delegating_service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package com.example; 3 | 4 | // tag::service[] 5 | import "kalix/annotations.proto"; 6 | 7 | message Request { 8 | string counter_id = 1; 9 | } 10 | 11 | message Result { 12 | int32 value = 1; 13 | } 14 | 15 | service DelegatingService { 16 | option (kalix.codegen) = { 17 | action: {} 18 | }; 19 | 20 | rpc AddAndReturn(Request) returns (Result); 21 | } 22 | // end::service[] 23 | -------------------------------------------------------------------------------- /samples/scala-protobuf-doc-snippets/src/main/proto/com/example/kalix_policy.proto: -------------------------------------------------------------------------------- 1 | // This is the default Access Control List (ACL) for all components of this Kalix Service 2 | // tag::default[] 3 | syntax = "proto3"; 4 | 5 | package com.example; 6 | 7 | import "kalix/annotations.proto"; // <1> 8 | 9 | option (kalix.file).acl = { 10 | allow: { service: "*" } // <2> 11 | }; 12 | // end::default[] -------------------------------------------------------------------------------- /samples/scala-protobuf-doc-snippets/src/main/scala/com/example/json/JsonKeyValueMessage.scala: -------------------------------------------------------------------------------- 1 | package com.example.json 2 | 3 | case class JsonKeyValueMessage(key: String, value: Int) 4 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-counter/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-counter/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-counter/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-counter/src/main/proto/com/example/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; 4 | 5 | message CounterState { 6 | int32 value = 1; 7 | } 8 | 9 | message ValueIncreased { 10 | int32 value = 1; 11 | } 12 | 13 | message ValueDecreased { 14 | int32 value = 1; 15 | } 16 | 17 | message ValueReset { 18 | } 19 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry-subscriber/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9001 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8081 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry-subscriber/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry-subscriber/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry-subscriber/src/main/proto/customer/api/customer_action.proto: -------------------------------------------------------------------------------- 1 | 2 | syntax = "proto3"; 3 | 4 | package customer.action; 5 | 6 | import "google/protobuf/empty.proto"; 7 | import "kalix/annotations.proto"; 8 | import "customer/api/customer_api.proto"; 9 | 10 | service CustomerAction { 11 | option (kalix.codegen) = { 12 | action: {} 13 | }; 14 | 15 | rpc Create(customer.api.Customer) returns (google.protobuf.Empty) {} 16 | } 17 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry-subscriber/src/main/proto/customer/kalix_policy.proto: -------------------------------------------------------------------------------- 1 | // This is the default Access Control List (ACL) for all components of this Kalix Service 2 | syntax = "proto3"; 3 | 4 | package customer; 5 | 6 | import "kalix/annotations.proto"; 7 | 8 | // Allow any client to access the components of this Kalix service. This can be overridden explicitly 9 | // per component or method using annotations. 10 | // Documentation at https://docs.kalix.io/java-protobuf/access-control.html 11 | option (kalix.file).acl = { 12 | allow: { principal: ALL } 13 | }; -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-customer-registry/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-shopping-cart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-shopping-cart/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-shopping-cart/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-eventsourced-shopping-cart/src/main/resources/application.conf: -------------------------------------------------------------------------------- 1 | 2 | # //tag::snapshot-every[] 3 | kalix.event-sourced-entity.snapshot-every = 100 4 | # //end::snapshot-every[] 5 | -------------------------------------------------------------------------------- /samples/scala-protobuf-fibonacci-action/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-fibonacci-action/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-fibonacci-action/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-first-service/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-first-service/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-first-service/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-first-service/src/main/proto/com/example/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; 4 | 5 | message CounterState { 6 | int32 value = 1; 7 | } 8 | -------------------------------------------------------------------------------- /samples/scala-protobuf-reliable-timers/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-reliable-timers/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-reliable-timers/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-reliable-timers/src/main/proto/com/example/domain/order_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; 4 | 5 | option java_outer_classname = "OrderDomain"; 6 | 7 | message OrderState { 8 | string order_number = 1; 9 | bool confirmed = 2; 10 | bool placed = 3; 11 | string item = 4; 12 | int32 quantity = 5; 13 | } 14 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-examples/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-examples/README.md: -------------------------------------------------------------------------------- 1 | # Replicated Entity examples 2 | 3 | Examples of the different Replicated Data types for documentation. 4 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-examples/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-examples/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-examples/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | kalix.passivation-timeout = 2s 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-shopping-cart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-shopping-cart/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-shopping-cart/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-replicatedentity-shopping-cart/src/main/proto/com/example/shoppingcart/domain/shoppingcart_domain.proto: -------------------------------------------------------------------------------- 1 | // The messages and data that will be replicated for the shopping cart. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.shoppingcart.domain; // <1> 6 | 7 | message Product { 8 | string id = 1; 9 | string name = 2; 10 | } 11 | -------------------------------------------------------------------------------- /samples/scala-protobuf-tracing/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-tracing/.gitignore: -------------------------------------------------------------------------------- 1 | boot/ 2 | lib_managed/ 3 | src_managed/ 4 | .bsp 5 | 6 | # intellij 7 | /src/intellij*/*.iml 8 | /src/intellij*/*.ipr 9 | /src/intellij*/*.iws 10 | **/.cache 11 | /.idea 12 | /.settings 13 | 14 | # vscode 15 | /.vscode 16 | 17 | # sbt's target directories 18 | /target/ 19 | /project/target 20 | /project/plugins/project/ 21 | /project/project 22 | /project/**/target/ 23 | /test/macro-annot/target/ 24 | /test/files/target/ 25 | /test/target/ 26 | /build-sbt/ 27 | local.sbt 28 | jitwatch.out 29 | 30 | # metals 31 | .metals 32 | .bloop 33 | project/**/metals.sbt -------------------------------------------------------------------------------- /samples/scala-protobuf-tracing/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-tracing/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-tracing/src/main/protobuf/com/example/controller_action.proto: -------------------------------------------------------------------------------- 1 | // This is the public API offered by your entity. 2 | syntax = "proto3"; 3 | 4 | import "kalix/annotations.proto"; 5 | import "google/api/annotations.proto"; 6 | import "google/protobuf/empty.proto"; 7 | 8 | package com.example; 9 | 10 | option java_outer_classname = "ControllerActionApi"; 11 | 12 | message MessageResponse { 13 | string message = 1; 14 | } 15 | 16 | service Controller { 17 | option (kalix.codegen) = { 18 | action: {} 19 | }; 20 | 21 | rpc CallAsyncEndpoint(google.protobuf.Empty) returns (MessageResponse){} 22 | } -------------------------------------------------------------------------------- /samples/scala-protobuf-tracing/src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/scala-protobuf-tracing/src/main/resources/application.conf -------------------------------------------------------------------------------- /samples/scala-protobuf-tracing/src/main/scala/com/example/domain/Post.scala: -------------------------------------------------------------------------------- 1 | package com.example.domain 2 | 3 | case class Post(userId: String, id: String, title: String, body: String) 4 | 5 | -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow-compensation/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow-compensation/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow-compensation/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow-compensation/src/main/proto/com/example/wallet/wallet_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.wallet.domain; 4 | 5 | message WalletState { 6 | string id = 1; 7 | int32 balance = 2; 8 | } -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-transfer-workflow/src/main/proto/com/example/wallet/wallet_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.wallet.domain; 4 | 5 | message WalletState { 6 | string id = 1; 7 | int32 balance = 2; 8 | } -------------------------------------------------------------------------------- /samples/scala-protobuf-validated/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-validated/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-counter/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-counter/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-counter/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-counter/src/main/proto/com/example/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.example.domain; // <1> 4 | 5 | message CounterState { // <2> 6 | int32 value = 1; 7 | } 8 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/src/main/scala/customer/view/CustomerByEmailView.scala: -------------------------------------------------------------------------------- 1 | /* This code was generated by Kalix tooling. 2 | * As long as this file exists it will not be re-generated. 3 | * You are free to make changes to this file. 4 | */ 5 | package customer.view 6 | 7 | import kalix.scalasdk.view.View.UpdateEffect 8 | import kalix.scalasdk.view.ViewContext 9 | import customer.domain.CustomerState 10 | 11 | class CustomerByEmailView(context: ViewContext) extends AbstractCustomerByEmailView { 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/src/main/scala/customer/view/CustomerByNameView.scala: -------------------------------------------------------------------------------- 1 | /* This code was generated by Kalix tooling. 2 | * As long as this file exists it will not be re-generated. 3 | * You are free to make changes to this file. 4 | */ 5 | package customer.view 6 | 7 | import kalix.scalasdk.view.View.UpdateEffect 8 | import kalix.scalasdk.view.ViewContext 9 | import customer.domain.CustomerState 10 | 11 | class CustomerByNameView(context: ViewContext) extends AbstractCustomerByNameView { 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/src/main/scala/customer/view/CustomerDetailsByNameView.scala: -------------------------------------------------------------------------------- 1 | package customer.view 2 | 3 | import kalix.scalasdk.view.ViewContext 4 | 5 | class CustomerDetailsByNameView(context: ViewContext) extends AbstractCustomerDetailsByNameView {} 6 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/src/main/scala/customer/view/CustomerSummaryByNameView.scala: -------------------------------------------------------------------------------- 1 | /* This code was generated by Kalix tooling. 2 | * As long as this file exists it will not be re-generated. 3 | * You are free to make changes to this file. 4 | */ 5 | package customer.view 6 | 7 | import kalix.scalasdk.view.View.UpdateEffect 8 | import kalix.scalasdk.view.ViewContext 9 | import customer.domain.CustomerState 10 | 11 | class CustomerSummaryByNameView(context: ViewContext) extends AbstractCustomerSummaryByNameView { 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/src/main/scala/customer/view/CustomersResponseByCityView.scala: -------------------------------------------------------------------------------- 1 | package customer.view 2 | 3 | import kalix.scalasdk.view.ViewContext 4 | 5 | // This class was initially generated based on the .proto definition by Kalix tooling. 6 | // 7 | // As long as this file exists it will not be overwritten: you can maintain it yourself, 8 | // or delete it so it is regenerated as needed. 9 | 10 | class CustomersResponseByCityView(context: ViewContext) extends AbstractCustomersResponseByCityView 11 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-customer-registry/src/main/scala/customer/view/CustomersResponseByNameView.scala: -------------------------------------------------------------------------------- 1 | /* This code was generated by Kalix tooling. 2 | * As long as this file exists it will not be re-generated. 3 | * You are free to make changes to this file. 4 | */ 5 | package customer.view 6 | 7 | import kalix.scalasdk.view.View.UpdateEffect 8 | import kalix.scalasdk.view.ViewContext 9 | import customer.domain.CustomerState 10 | 11 | class CustomersResponseByNameView(context: ViewContext) extends AbstractCustomersResponseByNameView { 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-shopping-cart/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-shopping-cart/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-valueentity-shopping-cart/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-view-store/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-view-store/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-view-store/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") 7 | -------------------------------------------------------------------------------- /samples/scala-protobuf-view-store/src/main/proto/store/customer/domain/customer_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package store.customer.domain; 4 | 5 | message CustomerState { 6 | string customer_id = 1; 7 | string email = 2; 8 | string name = 3; 9 | Address address = 4; 10 | } 11 | 12 | message Address { 13 | string street = 1; 14 | string city = 2; 15 | } 16 | 17 | message CustomerCreated { 18 | CustomerState customer = 1; 19 | } 20 | 21 | message CustomerNameChanged { 22 | string new_name = 1; 23 | } 24 | 25 | message CustomerAddressChanged { 26 | Address new_address = 1; 27 | } 28 | -------------------------------------------------------------------------------- /samples/scala-protobuf-view-store/src/main/proto/store/order/domain/order_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package store.order.domain; 4 | 5 | // tag::domain[] 6 | import "google/protobuf/timestamp.proto"; 7 | 8 | message OrderState { 9 | string order_id = 1; 10 | string product_id = 2; 11 | string customer_id = 3; 12 | int32 quantity = 4; 13 | google.protobuf.Timestamp created = 5; 14 | } 15 | // end::domain[] 16 | -------------------------------------------------------------------------------- /samples/scala-protobuf-view-store/src/main/proto/store/product/domain/product_domain.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package store.product.domain; 4 | 5 | // tag::domain[] 6 | message ProductState { 7 | string product_id = 1; 8 | string product_name = 2; 9 | Money price = 3; 10 | } 11 | 12 | message Money { 13 | string currency = 1; 14 | int64 units = 2; 15 | int32 cents = 3; 16 | } 17 | 18 | message ProductCreated { 19 | ProductState product = 1; 20 | } 21 | 22 | message ProductNameChanged { 23 | string new_name = 1; 24 | } 25 | 26 | message ProductPriceChanged { 27 | Money new_price = 1; 28 | } 29 | // end::domain[] 30 | -------------------------------------------------------------------------------- /samples/scala-protobuf-web-resources/.env: -------------------------------------------------------------------------------- 1 | # this is the port where the kalix runtime container will be exposed 2 | # when running multiple services on your local machine, make sure that this port is unique 3 | ADVERTISED_HTTP_PORT=9000 4 | 5 | # this is the port where the user services (your application) will open 6 | # when running multiple services on your local machine, make sure that this port is unique 7 | USER_SERVICE_PORT=8080 8 | 9 | # this variable defines the host where the kalix runtime (running in docker) 10 | # will reach the user service in local development 11 | USER_SERVICE_HOST=host.docker.internal 12 | -------------------------------------------------------------------------------- /samples/scala-protobuf-web-resources/project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.9.9 2 | -------------------------------------------------------------------------------- /samples/scala-protobuf-web-resources/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | 3 | addSbtPlugin("io.kalix" % "sbt-kalix" % System.getProperty("kalix-sdk.version", "1.5.10")) 4 | addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") 5 | addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") 6 | addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2") -------------------------------------------------------------------------------- /samples/scala-protobuf-web-resources/src/main/resources/web/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/samples/scala-protobuf-web-resources/src/main/resources/web/img/favicon.png -------------------------------------------------------------------------------- /samples/scala-protobuf-web-resources/src/main/resources/web/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 50px; 3 | } 4 | -------------------------------------------------------------------------------- /samples/scala-protobuf-web-resources/src/main/resources/web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

    Kalix Web Resources - Demo

    9 | 10 |
      11 | 12 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/README.md: -------------------------------------------------------------------------------- 1 | This 'scripted' test checks that various variations of proto definitions 2 | generate code that indeed compiles. 3 | 4 | The proto files in the scripted test are also used in the 5 | codegen/java-gen-compilation-tests subproject for testing 6 | Java codegen. -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/build.sbt: -------------------------------------------------------------------------------- 1 | scalaVersion := "2.13.14" 2 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 3 | enablePlugins(KalixPlugin) 4 | 5 | libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "3.2.12" % Test) 6 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | sys.props.get("plugin.version") match { 3 | case Some(x) => addSbtPlugin("io.kalix" % "sbt-kalix" % x) 4 | case _ => sys.error("""|The system property 'plugin.version' is not defined. 5 | |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) 6 | } 7 | addSbtPlugin("com.lightbend.akka.grpc" % "sbt-akka-grpc" % "2.4.4") // FIXME should be included via sbt-kalix 8 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/action1/simple_action.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.action1; 6 | 7 | // no java_multiple_files option, classes will be wrapped in outer class 8 | // no java_outer_classname option, will default to "SimpleActionOuterClass" 9 | 10 | import "kalix/annotations.proto"; 11 | 12 | message Request {} 13 | message Response {} 14 | 15 | service SimpleAction { 16 | option (kalix.codegen) = { 17 | action: { } 18 | }; 19 | 20 | rpc Method(Request) returns (Response); 21 | } 22 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/action2/simple_action_api.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.action2; 6 | 7 | // no java_multiple_files option, classes will be wrapped in outer class 8 | // no java_outer_classname option, will default to "SimpleActionApi" 9 | 10 | import "kalix/annotations.proto"; 11 | 12 | message Request {} 13 | message Response {} 14 | 15 | service AnotherSimpleAction { 16 | option (kalix.codegen) = { 17 | action: { } 18 | }; 19 | 20 | rpc Method(Request) returns (Response); 21 | } 22 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/action3/some_action.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.action3; 6 | 7 | option java_multiple_files = true; 8 | // no java_outer_classname option, will default to "SomeActionOuterClass" 9 | 10 | import "kalix/annotations.proto"; 11 | 12 | message Request {} 13 | message Response {} 14 | 15 | service SomeAction { 16 | option (kalix.codegen) = { 17 | action: { } 18 | }; 19 | 20 | rpc Method(Request) returns (Response); 21 | } 22 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/action4/some_other_action_api.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.action4; 6 | 7 | option java_multiple_files = true; 8 | // no java_outer_classname option, will default to "SomeOtherActionApi" 9 | 10 | import "kalix/annotations.proto"; 11 | 12 | message Request {} 13 | message Response {} 14 | 15 | service SomeOtherAction { 16 | option (kalix.codegen) = { 17 | action: { } 18 | }; 19 | 20 | rpc Method(Request) returns (Response); 21 | } 22 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/action5/yet_another_action.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.action5; 6 | 7 | option java_multiple_files = true; 8 | option java_outer_classname = "YetAnotherActionApi"; 9 | 10 | import "kalix/annotations.proto"; 11 | 12 | message Request {} 13 | message Response {} 14 | 15 | service YetAnotherAction { 16 | option (kalix.codegen) = { 17 | action: { } 18 | }; 19 | 20 | rpc Method(Request) returns (Response); 21 | } 22 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/eventsourcedentity/domain/counter_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.eventsourcedentity.domain; 6 | 7 | option java_outer_classname = "CounterDomain"; 8 | 9 | message CounterState { 10 | int32 value = 1; 11 | } 12 | 13 | message Increased { 14 | int32 value = 1; 15 | } 16 | 17 | message Decreased { 18 | int32 value = 1; 19 | } -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/eventsourcedentity/domain/some_event_sourced_entity_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.eventsourcedentity.domain; 6 | 7 | option java_multiple_files = true; 8 | // no java_outer_classname option, will default to "SomeEventSourcedEntityDomain" 9 | 10 | message SomeEventSourcedEntityState { 11 | string some_field = 1; 12 | } 13 | 14 | message SomeEvent { 15 | string some_field = 1; 16 | } 17 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/replicated/countermap/domain/counter_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.countermap.domain; 6 | 7 | import "kalix/annotations.proto"; 8 | 9 | option java_outer_classname = "SomeCounterMapDomain"; 10 | 11 | message SomeKey { 12 | string key = 1; 13 | } 14 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/replicated/map/domain/map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.map.domain; 6 | 7 | option java_outer_classname = "SomeMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/replicated/multimap/domain/multi_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.multimap.domain; 6 | 7 | option java_outer_classname = "SomeMultiMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/replicated/register/domain/register_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.register.domain; 6 | 7 | option java_outer_classname = "SomeRegisterDomain"; 8 | 9 | message SomeValue { 10 | string value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/replicated/registermap/domain/register_map_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.registermap.domain; 6 | 7 | option java_outer_classname = "SomeRegisterMapDomain"; 8 | 9 | message SomeKey { 10 | string key = 1; 11 | } 12 | 13 | message SomeValue { 14 | string value = 1; 15 | } 16 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/replicated/set/domain/set_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.replicated.set.domain; 6 | 7 | option java_outer_classname = "SomeSetDomain"; 8 | 9 | message SomeElement { 10 | string value = 1; 11 | } 12 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/state_in_different_proto/state/user_state.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.state_in_different_proto.state; 6 | 7 | message UserState { 8 | string name = 1; 9 | } 10 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/valueentity/domain/some_value_entity_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.valueentity.domain; 6 | 7 | option java_multiple_files = true; 8 | // no java_outer_classname option, will default to "SomeValueEntityDomain" 9 | 10 | message SomeValueEntityState { 11 | string some_field = 1; 12 | } 13 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/compile-only/src/main/protobuf/com/example/valueentity/domain/user_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | syntax = "proto3"; 4 | 5 | package com.example.valueentity.domain; 6 | 7 | option java_outer_classname = "UserDomain"; 8 | 9 | message UserState { 10 | string name = 1; 11 | } 12 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/eventsourcedentity/README.md: -------------------------------------------------------------------------------- 1 | This test checks a minimal 'eventsourcedentity' project. Implementations are provided 2 | and tests should be green. -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/eventsourcedentity/build.sbt: -------------------------------------------------------------------------------- 1 | scalaVersion := "2.13.14" 2 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 3 | enablePlugins(KalixPlugin) 4 | 5 | testOptions ++=( 6 | // Skip integration tests in CircleCI since to be able to connect to docker 7 | // we'd have to switch to the 'machine' executor 8 | if (sys.env.get("CIRCLECI").contains("true")) 9 | Seq(Tests.Filter(name => !name.endsWith("IntegrationSpec"))) 10 | else 11 | Nil 12 | ) 13 | 14 | libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "3.2.12" % Test) 15 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/eventsourcedentity/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | sys.props.get("plugin.version") match { 3 | case Some(x) => addSbtPlugin("io.kalix" % "sbt-kalix" % x) 4 | case _ => sys.error("""|The system property 'plugin.version' is not defined. 5 | |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) 6 | } 7 | addSbtPlugin("com.lightbend.akka.grpc" % "sbt-akka-grpc" % "2.4.4") // FIXME should be included via sbt-kalix 8 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/eventsourcedentity/test: -------------------------------------------------------------------------------- 1 | > test -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/no-common-pkg-root/README.md: -------------------------------------------------------------------------------- 1 | This 'scripted' test checks that proto services with no common package works. -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/no-common-pkg-root/build.sbt: -------------------------------------------------------------------------------- 1 | scalaVersion := "2.13.14" 2 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 3 | enablePlugins(KalixPlugin) 4 | 5 | libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "3.2.12" % Test) 6 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/no-common-pkg-root/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | resolvers += "Akka library repository".at("https://repo.akka.io/maven") 2 | sys.props.get("plugin.version") match { 3 | case Some(x) => addSbtPlugin("io.kalix" % "sbt-kalix" % x) 4 | case _ => sys.error("""|The system property 'plugin.version' is not defined. 5 | |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) 6 | } 7 | addSbtPlugin("com.lightbend.akka.grpc" % "sbt-akka-grpc" % "2.4.4") // FIXME should be included via sbt-kalix 8 | -------------------------------------------------------------------------------- /sbt-plugin/src/sbt-test/sbt-kalix/no-common-pkg-root/test: -------------------------------------------------------------------------------- 1 | # heterogenous packages in proto, generation should fail 2 | -> compile 3 | 4 | # explicitly configure root, should pass now 5 | > 'set rootPackage := Some("my.root")' 6 | 7 | > compile -------------------------------------------------------------------------------- /sdk/core/src/main/java/kalix/replicatedentity/ReplicatedData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.replicatedentity; 6 | 7 | /** Root interface for all data entries in Replicated Entities. */ 8 | public interface ReplicatedData {} 9 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/Context.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk; 6 | 7 | import akka.stream.Materializer; 8 | 9 | /** Root class of all contexts. */ 10 | public interface Context { 11 | /** 12 | * An Akka Stream materializer to use for running streams. Needed for example in a command handler 13 | * which accepts streaming elements but returns a single async reply once all streamed elements 14 | * has been consumed. 15 | */ 16 | Materializer materializer(); 17 | } 18 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/EntityContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk; 6 | 7 | /** 8 | * Root context for all contexts that pertain to entities, that is, things that are addressable via 9 | * an entity id. 10 | */ 11 | public interface EntityContext extends Context { 12 | 13 | /** 14 | * The id of the entity that this context is for. 15 | * 16 | * @return The entity id. 17 | */ 18 | String entityId(); 19 | } 20 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/MetadataContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk; 6 | 7 | /** Context that provides access to metadata. */ 8 | public interface MetadataContext extends Context { 9 | /** Get the metadata associated with this context. */ 10 | Metadata metadata(); 11 | } 12 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/eventsourcedentity/EventContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.eventsourcedentity; 6 | 7 | /** Context for an event. */ 8 | public interface EventContext extends EventSourcedEntityContext { 9 | /** 10 | * The sequence number of the current event being processed. 11 | * 12 | * @return The sequence number. 13 | */ 14 | long sequenceNumber(); 15 | } 16 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/eventsourcedentity/EventSourcedEntityContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.eventsourcedentity; 6 | 7 | import kalix.javasdk.EntityContext; 8 | 9 | /** Root context for all event sourcing contexts. */ 10 | public interface EventSourcedEntityContext extends EntityContext {} 11 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/eventsourcedentity/package-info.java: -------------------------------------------------------------------------------- 1 | /** Event Sourced Entity support. */ 2 | package kalix.javasdk.eventsourcedentity; 3 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/impl/WorkflowFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.impl; 6 | 7 | import kalix.javasdk.impl.workflow.WorkflowRouter; 8 | import kalix.javasdk.workflow.WorkflowContext; 9 | 10 | public interface WorkflowFactory { 11 | 12 | WorkflowRouter create(WorkflowContext context); 13 | } 14 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/impl/package-info.java: -------------------------------------------------------------------------------- 1 | /** Internal implementation classes for Kalix Java Support. */ 2 | package kalix.javasdk.impl; 3 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedCounterEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | public class ReplicatedCounterEntity extends ReplicatedEntity { 8 | @Override 9 | public final ReplicatedCounter emptyData(ReplicatedDataFactory factory) { 10 | return factory.newCounter(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedCounterMapEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | public class ReplicatedCounterMapEntity extends ReplicatedEntity> { 8 | @Override 9 | public final ReplicatedCounterMap emptyData(ReplicatedDataFactory factory) { 10 | return factory.newReplicatedCounterMap(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedEntityContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | import kalix.javasdk.EntityContext; 8 | 9 | /** Root context for all Replicated Entity contexts. */ 10 | public interface ReplicatedEntityContext extends EntityContext {} 11 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedMapEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | import kalix.replicatedentity.ReplicatedData; 8 | 9 | public class ReplicatedMapEntity 10 | extends ReplicatedEntity> { 11 | @Override 12 | public final ReplicatedMap emptyData(ReplicatedDataFactory factory) { 13 | return factory.newReplicatedMap(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedMultiMapEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | public class ReplicatedMultiMapEntity extends ReplicatedEntity> { 8 | @Override 9 | public final ReplicatedMultiMap emptyData(ReplicatedDataFactory factory) { 10 | return factory.newReplicatedMultiMap(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedRegisterMapEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | public class ReplicatedRegisterMapEntity 8 | extends ReplicatedEntity> { 9 | @Override 10 | public final ReplicatedRegisterMap emptyData(ReplicatedDataFactory factory) { 11 | return factory.newReplicatedRegisterMap(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedSetEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | public class ReplicatedSetEntity extends ReplicatedEntity> { 8 | @Override 9 | public final ReplicatedSet emptyData(ReplicatedDataFactory factory) { 10 | return factory.newReplicatedSet(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/ReplicatedVoteEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.replicatedentity; 6 | 7 | public class ReplicatedVoteEntity extends ReplicatedEntity { 8 | @Override 9 | public final ReplicatedVote emptyData(ReplicatedDataFactory factory) { 10 | return factory.newVote(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/replicatedentity/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Replicated Entity support. 3 | * 4 | *

      The data stored by a replicated entity can be stored in a subtype of {@link 5 | * kalix.replicatedentity.ReplicatedData}. These can be created using a {@link 6 | * kalix.javasdk.replicatedentity.ReplicatedDataFactory}. 7 | */ 8 | package kalix.javasdk.replicatedentity; 9 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/valueentity/ValueEntityContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.valueentity; 6 | 7 | /** Root context for all value based entity contexts. */ 8 | public interface ValueEntityContext extends kalix.javasdk.EntityContext {} 9 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/valueentity/package-info.java: -------------------------------------------------------------------------------- 1 | /** Value Entity support. */ 2 | package kalix.javasdk.valueentity; 3 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/view/ViewContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.view; 6 | 7 | import kalix.javasdk.Context; 8 | 9 | /** Context for views. */ 10 | public interface ViewContext extends Context { 11 | /** 12 | * The id of the view that this context is for. 13 | * 14 | * @return The view id. 15 | */ 16 | String viewId(); 17 | } 18 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/view/ViewCreationContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.view; 6 | 7 | /** 8 | * Creation context for {@link View} entities. 9 | * 10 | *

      This may be accepted as an argument to the constructor of a view. 11 | */ 12 | public interface ViewCreationContext extends ViewContext {} 13 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/kalix/javasdk/workflow/WorkflowOptions.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.workflow; 6 | 7 | import kalix.javasdk.impl.workflow.WorkflowOptionsImpl; 8 | 9 | public interface WorkflowOptions extends kalix.javasdk.impl.ComponentOptions { 10 | 11 | static WorkflowOptions defaults() { 12 | return WorkflowOptionsImpl.defaults(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/java/overview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | These are the API docs for the Kalix Java Support project. 8 | 9 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/resources/META-INF/services/ch.qos.logback.classic.spi.Configurator: -------------------------------------------------------------------------------- 1 | kalix.javasdk.impl.logging.KalixJoranConfigurator -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/scala/kalix/javasdk/DeferredCallResponseException.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk 6 | 7 | import kalix.javasdk.StatusCode.ErrorCode 8 | 9 | /** Exception used when a DeferredCall fails to wrap the origin error, plus the error code associated. */ 10 | case class DeferredCallResponseException(description: String, errorCode: ErrorCode, cause: Throwable) 11 | extends RuntimeException(cause) 12 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/scala/kalix/javasdk/impl/ComponentOptionsImpl.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.impl 6 | 7 | import java.util 8 | import java.util.Collections 9 | 10 | private[impl] final case class ComponentOptionsImpl(override val forwardHeaders: java.util.Set[String]) 11 | extends ComponentOptions { 12 | 13 | override def withForwardHeaders(headers: util.Set[String]): ComponentOptions = 14 | copy(forwardHeaders = Collections.unmodifiableSet(new util.HashSet(headers))); 15 | } 16 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/scala/kalix/javasdk/impl/PassivationStrategies.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.impl 6 | 7 | import kalix.javasdk.PassivationStrategy 8 | 9 | import java.time.Duration 10 | 11 | private[kalix] case class Timeout private (duration: Option[Duration]) extends PassivationStrategy { 12 | 13 | def this() = { 14 | this(None) // use the timeout from the default or customized settings 15 | } 16 | 17 | def this(duration: Duration) = { 18 | this(Some(duration)) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/scala/kalix/javasdk/impl/action/ActionOptionsImpl.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.impl.action 6 | 7 | import kalix.javasdk.action.ActionOptions 8 | 9 | import java.util 10 | 11 | private[kalix] final case class ActionOptionsImpl(override val forwardHeaders: java.util.Set[String]) 12 | extends ActionOptions { 13 | def withForwardHeaders(headers: util.Set[String]): ActionOptions = copy(forwardHeaders = headers) 14 | } 15 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/main/scala/kalix/javasdk/impl/view/ViewOptionsImpl.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.impl.view 6 | 7 | import kalix.javasdk.view.ViewOptions 8 | 9 | import java.util 10 | 11 | /** 12 | * INTERNAL API 13 | */ 14 | private[kalix] final case class ViewOptionsImpl(override val forwardHeaders: java.util.Set[String]) 15 | extends ViewOptions { 16 | def withForwardHeaders(headers: util.Set[String]): ViewOptions = copy(forwardHeaders = headers) 17 | } 18 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/test/proto/replicatedentity/shoppingcart/shoppingcart_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | // These are the messages that get persisted - the current state (Cart). 4 | 5 | syntax = "proto3"; 6 | 7 | package com.example.replicatedentity.shoppingcart.domain; 8 | 9 | option java_outer_classname = "ShoppingCartDomain"; 10 | 11 | message LineItem { 12 | string productId = 1; 13 | string name = 2; 14 | int32 quantity = 3; 15 | } 16 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/test/proto/valueentity/shoppingcart/shoppingcart_domain.proto: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 Lightbend Inc. 2 | 3 | // These are the messages that get persisted - the current state (Cart). 4 | 5 | syntax = "proto3"; 6 | 7 | package com.example.valueentity.shoppingcart.domain; 8 | 9 | option java_outer_classname = "ShoppingCartDomain"; 10 | 11 | message LineItem { 12 | string productId = 1; 13 | string name = 2; 14 | int32 quantity = 3; 15 | } 16 | 17 | // The shopping cart state. 18 | message Cart { 19 | repeated LineItem items = 1; 20 | } 21 | -------------------------------------------------------------------------------- /sdk/java-sdk-protobuf/src/test/resources/user-function.desc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/sdk/java-sdk-protobuf/src/test/resources/user-function.desc -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf-testkit/src/main/scala/kalix/scalasdk/testkit/DeferredCallDetails.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.testkit 6 | 7 | import kalix.scalasdk.DeferredCall 8 | 9 | trait DeferredCallDetails[I, O] extends DeferredCall[I, O] { 10 | 11 | /** @return The name of the service being called */ 12 | def serviceName: String 13 | 14 | /** @return The method name being called */ 15 | def methodName: String 16 | } 17 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/Context.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk 6 | 7 | import akka.stream.Materializer 8 | 9 | trait Context { 10 | 11 | /** 12 | * An Akka Stream materializer to use for running streams. Needed for example in a command handler which accepts 13 | * streaming elements but returns a single async reply once all streamed elements has been consumed. 14 | */ 15 | def materializer(): Materializer 16 | } 17 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/EntityContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk 6 | 7 | /** 8 | * Root context for all contexts that pertain to entities, that is, things that are addressable via an entity id. 9 | */ 10 | trait EntityContext extends Context { 11 | 12 | /** 13 | * The id of the entity that this context is for. 14 | * 15 | * @return 16 | * The entity id. 17 | */ 18 | def entityId: String 19 | } 20 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/MetadataContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk 6 | 7 | /** Context that provides access to metadata. */ 8 | trait MetadataContext extends Context { 9 | 10 | /** Get the metadata associated with this context. */ 11 | def metadata: Metadata 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/action/ActionProvider.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.action 6 | 7 | import com.google.protobuf.Descriptors 8 | import kalix.scalasdk.impl.action.ActionRouter 9 | 10 | trait ActionProvider[A <: Action] { 11 | def options: ActionOptions 12 | 13 | def serviceDescriptor: Descriptors.ServiceDescriptor 14 | 15 | def newRouter(context: ActionCreationContext): ActionRouter[A] 16 | 17 | def additionalDescriptors: Seq[Descriptors.FileDescriptor] 18 | } 19 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/eventsourcedentity/EventContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.eventsourcedentity 6 | 7 | trait EventContext extends EventSourcedEntityContext { 8 | def sequenceNumber: Long 9 | } 10 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/eventsourcedentity/EventSourcedEntityContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.eventsourcedentity 6 | 7 | import kalix.scalasdk.EntityContext 8 | 9 | /** Root context for all event sourcing contexts. */ 10 | trait EventSourcedEntityContext extends EntityContext 11 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/impl/Timeout.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.impl 6 | import scala.concurrent.duration.FiniteDuration 7 | import kalix.scalasdk.PassivationStrategy 8 | 9 | private[kalix] final case class Timeout(duration: Option[FiniteDuration]) extends PassivationStrategy 10 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/impl/action/MessageEnvelopeImpl.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.impl.action 6 | 7 | import kalix.scalasdk.Metadata 8 | import kalix.scalasdk.action.MessageEnvelope 9 | 10 | private[scalasdk] final case class MessageEnvelopeImpl[T](payload: T, metadata: Metadata) extends MessageEnvelope[T] 11 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/impl/valueentity/ValueEntityRouter.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.impl.valueentity 6 | 7 | import kalix.scalasdk.valueentity.CommandContext 8 | import kalix.scalasdk.valueentity.ValueEntity 9 | 10 | /** 11 | * INTERNAL API, but used by generated code. 12 | */ 13 | abstract class ValueEntityRouter[S, E <: ValueEntity[S]](val entity: E) { 14 | def handleCommand(commandName: String, state: S, command: Any, context: CommandContext): ValueEntity.Effect[_] 15 | } 16 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/impl/workflow/WorkflowRouter.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.impl.workflow 6 | 7 | import kalix.scalasdk.workflow.AbstractWorkflow 8 | import kalix.scalasdk.workflow.CommandContext 9 | 10 | /** 11 | * INTERNAL API, but used by generated code. 12 | */ 13 | abstract class WorkflowRouter[S >: Null, E <: AbstractWorkflow[S]](val workflow: E) { 14 | def handleCommand(commandName: String, state: S, command: Any, context: CommandContext): AbstractWorkflow.Effect[_] 15 | } 16 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/replicatedentity/CommandContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.replicatedentity 6 | 7 | import kalix.scalasdk.MetadataContext 8 | 9 | trait CommandContext extends ReplicatedEntityContext with MetadataContext 10 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/replicatedentity/ReplicatedEntityContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.replicatedentity 6 | 7 | import kalix.scalasdk.EntityContext 8 | 9 | /** Root context for all Replicated Entity contexts. */ 10 | trait ReplicatedEntityContext extends EntityContext 11 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/valueentity/ValueEntityContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.valueentity 6 | 7 | import kalix.scalasdk.EntityContext 8 | 9 | /** Root context for all value based entity contexts. */ 10 | trait ValueEntityContext extends EntityContext 11 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/view/ViewContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.view 6 | 7 | import kalix.scalasdk.Context 8 | 9 | /** Context for views. */ 10 | trait ViewContext extends Context { 11 | 12 | /** 13 | * The id of the view that this context is for. 14 | * 15 | * @return 16 | * The view id. 17 | */ 18 | def viewId: String 19 | } 20 | -------------------------------------------------------------------------------- /sdk/scala-sdk-protobuf/src/main/scala/kalix/scalasdk/view/ViewCreationContext.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.scalasdk.view 6 | 7 | /** 8 | * Creation context for [[View]] entities. 9 | * 10 | * This may be accepted as an argument to the constructor of a view. 11 | */ 12 | trait ViewCreationContext extends ViewContext 13 | -------------------------------------------------------------------------------- /styles/Lightbend/AMPM.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: Use 'AM' or 'PM' (preceded by a space). 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2}[AP]M' 8 | - '\d{1,2} ?[ap]m' 9 | - '\d{1,2} ?[aApP]\.[mM]\.' 10 | -------------------------------------------------------------------------------- /styles/Lightbend/Auto.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, don't hyphenate '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto 4 | ignorecase: true 5 | level: error 6 | action: 7 | name: convert 8 | params: 9 | - simple 10 | tokens: 11 | - 'auto-\w+' 12 | -------------------------------------------------------------------------------- /styles/Lightbend/Avoid.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s'. See the A-Z word list for details." 3 | # See the A-Z word list 4 | link: https://docs.microsoft.com/en-us/style-guide 5 | ignorecase: true 6 | level: error 7 | tokens: 8 | - abortion 9 | - and so on 10 | - app(?:lication)?s? (?:developer|program) 11 | - app(?:lication)? file 12 | - backbone 13 | - backend 14 | - contiguous selection 15 | -------------------------------------------------------------------------------- /styles/Lightbend/Dashes.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Remove the spaces around '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes 4 | ignorecase: true 5 | nonword: true 6 | level: error 7 | action: 8 | name: edit 9 | params: 10 | - remove 11 | - ' ' 12 | tokens: 13 | - '[—–]\s|\s[—–]' 14 | -------------------------------------------------------------------------------- /styles/Lightbend/DateFormat.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: Use 'July 31, 2016' format, not '%s'. 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}' 9 | -------------------------------------------------------------------------------- /styles/Lightbend/DateOrder.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Always spell out the name of the month." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '\b\d{1,2}/\d{1,2}/(?:\d{4}|\d{2})\b' 9 | -------------------------------------------------------------------------------- /styles/Lightbend/Ellipses.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, don't use an ellipsis." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/ellipses 4 | nonword: true 5 | level: warning 6 | action: 7 | name: remove 8 | tokens: 9 | - '\.\.\.' 10 | -------------------------------------------------------------------------------- /styles/Lightbend/FirstPerson.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use first person (such as '%s') sparingly." 3 | link: https://docs.microsoft.com/en-us/style-guide/grammar/person 4 | ignorecase: true 5 | level: warning 6 | nonword: true 7 | tokens: 8 | - (?:^|\s)I\s 9 | - (?:^|\s)I,\s 10 | - \bI'd\b 11 | - \bI'll\b 12 | - \bI'm\b 13 | - \bI've\b 14 | - \bme\b 15 | - \bmy\b 16 | - \bmine\b 17 | -------------------------------------------------------------------------------- /styles/Lightbend/Foreign.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Use '%s' instead of '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | action: 8 | name: replace 9 | swap: 10 | '\b(?:eg|e\.g\.)[\s,]': for example 11 | '\b(?:ie|i\.e\.)[\s,]': that is 12 | 13 | -------------------------------------------------------------------------------- /styles/Lightbend/Gender.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s'." 3 | link: https://github.com/MicrosoftDocs/microsoft-style-guide/blob/master/styleguide/grammar/nouns-pronouns.md#pronouns-and-gender 4 | level: error 5 | ignorecase: true 6 | tokens: 7 | - he/she 8 | - s/he 9 | -------------------------------------------------------------------------------- /styles/Lightbend/GeneralURL.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "For a general audience, use 'address' rather than 'URL'." 3 | link: https://docs.microsoft.com/en-us/style-guide/urls-web-addresses 4 | level: warning 5 | action: 6 | name: replace 7 | params: 8 | - URL 9 | - address 10 | tokens: 11 | - URL 12 | -------------------------------------------------------------------------------- /styles/Lightbend/HeadingAcronyms.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using acronyms in a title or heading." 3 | link: https://docs.microsoft.com/en-us/style-guide/acronyms#be-careful-with-acronyms-in-titles-and-headings 4 | level: warning 5 | scope: heading 6 | tokens: 7 | - '[A-Z]{2,4}' 8 | -------------------------------------------------------------------------------- /styles/Lightbend/HeadingColons.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Capitalize '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/colons 4 | nonword: true 5 | level: error 6 | scope: heading 7 | tokens: 8 | - ':\s[a-z]' 9 | -------------------------------------------------------------------------------- /styles/Lightbend/HeadingPunctuation.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use end punctuation in headings." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods 4 | nonword: true 5 | level: warning 6 | scope: heading 7 | action: 8 | name: edit 9 | params: 10 | - remove 11 | - '.?!' 12 | tokens: 13 | - '[a-z][.?!](?:\s|$)' 14 | -------------------------------------------------------------------------------- /styles/Lightbend/Headings.yml: -------------------------------------------------------------------------------- 1 | extends: capitalization 2 | message: "'%s' should use sentence-style capitalization." 3 | link: https://docs.microsoft.com/en-us/style-guide/capitalization 4 | level: suggestion 5 | scope: heading 6 | match: $sentence 7 | indicators: 8 | - ':' 9 | exceptions: 10 | - Azure 11 | - CLI 12 | - Code 13 | - Cosmos 14 | - Docker 15 | - Emmet 16 | - I 17 | - Kubernetes 18 | - Linux 19 | - macOS 20 | - Marketplace 21 | - MongoDB 22 | - REPL 23 | - Studio 24 | - TypeScript 25 | - URLs 26 | - Visual 27 | - VS 28 | - Windows 29 | -------------------------------------------------------------------------------- /styles/Lightbend/Hyphens.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' doesn't need a hyphen." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens 4 | level: warning 5 | ignorecase: false 6 | nonword: true 7 | action: 8 | name: edit 9 | params: 10 | - replace 11 | - '-' 12 | - ' ' 13 | tokens: 14 | - '\s[^\s-]+ly-' 15 | -------------------------------------------------------------------------------- /styles/Lightbend/Ordinal.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't add -ly to an ordinal number." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | level: error 5 | action: 6 | name: edit 7 | params: 8 | - trim 9 | - ly 10 | tokens: 11 | - firstly 12 | - secondly 13 | - thirdly 14 | -------------------------------------------------------------------------------- /styles/Lightbend/OxfordComma.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use the Oxford comma in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/commas 4 | scope: sentence 5 | level: suggestion 6 | nonword: true 7 | tokens: 8 | - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]' 9 | -------------------------------------------------------------------------------- /styles/Lightbend/Percentages.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use a numeral plus the units." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | tokens: 7 | - '\b[a-zA-z]+\spercent\b' 8 | -------------------------------------------------------------------------------- /styles/Lightbend/Quotes.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: 'Punctuation should be inside the quotes.' 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/quotation-marks 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '["“][^"”“]+["”][.,]' 8 | -------------------------------------------------------------------------------- /styles/Lightbend/RangeFormat.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use an en dash in a range of numbers." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - replace 10 | - '-' 11 | - '–' 12 | tokens: 13 | - '\b\d+\s?[-]\s?\d+\b' 14 | -------------------------------------------------------------------------------- /styles/Lightbend/RangeTime.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use 'to' instead of a dash in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - replace 10 | - '[-–]' 11 | - 'to' 12 | tokens: 13 | - '\b(?:AM|PM)\s?[-–]\s?.+(?:AM|PM)\b' 14 | -------------------------------------------------------------------------------- /styles/Lightbend/Ranges.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In most cases, use 'from' or 'through' to describe a range of numbers." 3 | link: 'https://docs.microsoft.com/en-us/style-guide/numbers' 4 | nonword: true 5 | level: warning 6 | tokens: 7 | - '\b\d+\s?[-–]\s?\d+\b' 8 | -------------------------------------------------------------------------------- /styles/Lightbend/Readability.yml: -------------------------------------------------------------------------------- 1 | extends: readability 2 | message: "Grade level (%s) too high!" 3 | link: https://docs.errata.ai/vale/styles#readability 4 | level: warning 5 | grade: 10 6 | metrics: 7 | - Flesch-Kincaid 8 | - Gunning Fog 9 | - Coleman-Liau 10 | - SMOG 11 | - Automated Readability -------------------------------------------------------------------------------- /styles/Lightbend/Semicolon.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to simplify this sentence." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/semicolons 4 | nonword: true 5 | scope: sentence 6 | level: suggestion 7 | tokens: 8 | - ';' 9 | -------------------------------------------------------------------------------- /styles/Lightbend/SentenceLength.yml: -------------------------------------------------------------------------------- 1 | extends: occurrence 2 | message: "Try to keep sentences short (< 30 words)." 3 | scope: sentence 4 | level: suggestion 5 | max: 30 6 | token: \b(\w+)\b 7 | 8 | -------------------------------------------------------------------------------- /styles/Lightbend/Spacing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' should have one or two spaces." 3 | level: error 4 | nonword: true 5 | tokens: 6 | - '[a-z][.?!] {3,}[A-Z]' 7 | - '[a-z][.?!][A-Z]' 8 | -------------------------------------------------------------------------------- /styles/Lightbend/Suspended.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s' unless space is limited." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - '\w+- and \w+-' 8 | -------------------------------------------------------------------------------- /styles/Lightbend/URLFormat.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Use '%s' instead of '%s'." 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: replace 7 | swap: 8 | URL for: URL of 9 | an URL: a URL 10 | 11 | -------------------------------------------------------------------------------- /styles/Lightbend/Units.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't spell out the number in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms 4 | level: error 5 | raw: 6 | - '[a-zA-Z]+\s' 7 | tokens: 8 | - '(?:centi|milli)?meters' 9 | - '(?:kilo)?grams' 10 | - '(?:kilo)?meters' 11 | - '(?:mega)?pixels' 12 | - cm 13 | - inches 14 | - lb 15 | - miles 16 | - pounds 17 | -------------------------------------------------------------------------------- /styles/Lightbend/Vocab.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Verify your use of '%s' with the A-Z word list." 3 | link: 'https://docs.microsoft.com/en-us/style-guide' 4 | level: suggestion 5 | ignorecase: true 6 | tokens: 7 | - above 8 | - accessible 9 | - actionable 10 | - against 11 | - alarm 12 | - alert 13 | - alias 14 | - allows? 15 | - and/or 16 | - as well as 17 | - assure 18 | - author 19 | - avg 20 | - beta 21 | - ensure 22 | - he 23 | - insure 24 | - sample 25 | - she 26 | -------------------------------------------------------------------------------- /styles/Lightbend/We.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to avoid using first-person plural like '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/grammar/person#avoid-first-person-plural 4 | level: warning 5 | ignorecase: true 6 | tokens: 7 | - we 8 | - we'(?:ve|re) 9 | - ours? 10 | - us 11 | - let's 12 | -------------------------------------------------------------------------------- /styles/Lightbend/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/Microsoft/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /styles/Microsoft/AMPM.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: Use 'AM' or 'PM' (preceded by a space). 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '\d{1,2}[AP]M' 8 | - '\d{1,2} ?[ap]m' 9 | - '\d{1,2} ?[aApP]\.[mM]\.' 10 | -------------------------------------------------------------------------------- /styles/Microsoft/Auto.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, don't hyphenate '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto 4 | ignorecase: true 5 | level: error 6 | action: 7 | name: convert 8 | params: 9 | - simple 10 | tokens: 11 | - 'auto-\w+' 12 | -------------------------------------------------------------------------------- /styles/Microsoft/Avoid.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s'. See the A-Z word list for details." 3 | # See the A-Z word list 4 | link: https://docs.microsoft.com/en-us/style-guide 5 | ignorecase: true 6 | level: error 7 | tokens: 8 | - abortion 9 | - and so on 10 | - app(?:lication)?s? (?:developer|program) 11 | - app(?:lication)? file 12 | - backbone 13 | - backend 14 | - contiguous selection 15 | -------------------------------------------------------------------------------- /styles/Microsoft/Dashes.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Remove the spaces around '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes 4 | ignorecase: true 5 | nonword: true 6 | level: error 7 | action: 8 | name: edit 9 | params: 10 | - remove 11 | - ' ' 12 | tokens: 13 | - '[—–]\s|\s[—–]' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/DateFormat.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: Use 'July 31, 2016' format, not '%s'. 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/DateOrder.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Always spell out the name of the month." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '\b\d{1,2}/\d{1,2}/(?:\d{4}|\d{2})\b' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/Ellipses.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In general, don't use an ellipsis." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/ellipses 4 | nonword: true 5 | level: warning 6 | action: 7 | name: remove 8 | tokens: 9 | - '\.\.\.' 10 | -------------------------------------------------------------------------------- /styles/Microsoft/FirstPerson.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use first person (such as '%s') sparingly." 3 | link: https://docs.microsoft.com/en-us/style-guide/grammar/person 4 | ignorecase: true 5 | level: warning 6 | nonword: true 7 | tokens: 8 | - (?:^|\s)I\s 9 | - (?:^|\s)I,\s 10 | - \bI'd\b 11 | - \bI'll\b 12 | - \bI'm\b 13 | - \bI've\b 14 | - \bme\b 15 | - \bmy\b 16 | - \bmine\b 17 | -------------------------------------------------------------------------------- /styles/Microsoft/Foreign.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Use '%s' instead of '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words 4 | ignorecase: true 5 | level: error 6 | nonword: true 7 | action: 8 | name: replace 9 | swap: 10 | '\b(?:eg|e\.g\.)[\s,]': for example 11 | '\b(?:ie|i\.e\.)[\s,]': that is 12 | 13 | -------------------------------------------------------------------------------- /styles/Microsoft/Gender.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s'." 3 | link: https://github.com/MicrosoftDocs/microsoft-style-guide/blob/master/styleguide/grammar/nouns-pronouns.md#pronouns-and-gender 4 | level: error 5 | ignorecase: true 6 | tokens: 7 | - he/she 8 | - s/he 9 | -------------------------------------------------------------------------------- /styles/Microsoft/GeneralURL.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "For a general audience, use 'address' rather than 'URL'." 3 | link: https://docs.microsoft.com/en-us/style-guide/urls-web-addresses 4 | level: warning 5 | action: 6 | name: replace 7 | params: 8 | - URL 9 | - address 10 | tokens: 11 | - URL 12 | -------------------------------------------------------------------------------- /styles/Microsoft/HeadingAcronyms.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Avoid using acronyms in a title or heading." 3 | link: https://docs.microsoft.com/en-us/style-guide/acronyms#be-careful-with-acronyms-in-titles-and-headings 4 | level: warning 5 | scope: heading 6 | tokens: 7 | - '[A-Z]{2,4}' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/HeadingColons.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Capitalize '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/colons 4 | nonword: true 5 | level: error 6 | scope: heading 7 | tokens: 8 | - ':\s[a-z]' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/HeadingPunctuation.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use end punctuation in headings." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods 4 | nonword: true 5 | level: warning 6 | scope: heading 7 | action: 8 | name: edit 9 | params: 10 | - remove 11 | - '.?!' 12 | tokens: 13 | - '[a-z][.?!](?:\s|$)' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/Headings.yml: -------------------------------------------------------------------------------- 1 | extends: capitalization 2 | message: "'%s' should use sentence-style capitalization." 3 | link: https://docs.microsoft.com/en-us/style-guide/capitalization 4 | level: suggestion 5 | scope: heading 6 | match: $sentence 7 | indicators: 8 | - ':' 9 | exceptions: 10 | - Azure 11 | - CLI 12 | - Code 13 | - Cosmos 14 | - Docker 15 | - Emmet 16 | - I 17 | - Kubernetes 18 | - Linux 19 | - macOS 20 | - Marketplace 21 | - MongoDB 22 | - REPL 23 | - Studio 24 | - TypeScript 25 | - URLs 26 | - Visual 27 | - VS 28 | - Windows 29 | -------------------------------------------------------------------------------- /styles/Microsoft/Hyphens.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' doesn't need a hyphen." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens 4 | level: warning 5 | ignorecase: false 6 | nonword: true 7 | action: 8 | name: edit 9 | params: 10 | - replace 11 | - '-' 12 | - ' ' 13 | tokens: 14 | - '\s[^\s-]+ly-' 15 | -------------------------------------------------------------------------------- /styles/Microsoft/Negative.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Form a negative number with an en dash, not a hyphen." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - replace 10 | - '-' 11 | - '–' 12 | tokens: 13 | - '\s-\d+\s' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/Ordinal.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't add -ly to an ordinal number." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | level: error 5 | action: 6 | name: edit 7 | params: 8 | - trim 9 | - ly 10 | tokens: 11 | - firstly 12 | - secondly 13 | - thirdly 14 | -------------------------------------------------------------------------------- /styles/Microsoft/OxfordComma.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use the Oxford comma in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/commas 4 | scope: sentence 5 | level: suggestion 6 | nonword: true 7 | tokens: 8 | - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/Percentages.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use a numeral plus the units." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | tokens: 7 | - '\b[a-zA-z]+\spercent\b' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/Quotes.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: 'Punctuation should be inside the quotes.' 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/quotation-marks 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '["“][^"”“]+["”][.,]' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/RangeFormat.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use an en dash in a range of numbers." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - replace 10 | - '-' 11 | - '–' 12 | tokens: 13 | - '\b\d+\s?[-]\s?\d+\b' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/RangeTime.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Use 'to' instead of a dash in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - replace 10 | - '[-–]' 11 | - 'to' 12 | tokens: 13 | - '\b(?:AM|PM)\s?[-–]\s?.+(?:AM|PM)\b' 14 | -------------------------------------------------------------------------------- /styles/Microsoft/Ranges.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "In most cases, use 'from' or 'through' to describe a range of numbers." 3 | link: 'https://docs.microsoft.com/en-us/style-guide/numbers' 4 | nonword: true 5 | level: warning 6 | tokens: 7 | - '\b\d+\s?[-–]\s?\d+\b' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/Semicolon.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to simplify this sentence." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/semicolons 4 | nonword: true 5 | scope: sentence 6 | level: suggestion 7 | tokens: 8 | - ';' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/SentenceLength.yml: -------------------------------------------------------------------------------- 1 | extends: occurrence 2 | message: "Try to keep sentences short (< 30 words)." 3 | scope: sentence 4 | level: suggestion 5 | max: 30 6 | token: \b(\w+)\b 7 | 8 | -------------------------------------------------------------------------------- /styles/Microsoft/Spacing.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "'%s' should have one space." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods 4 | level: error 5 | nonword: true 6 | tokens: 7 | - '[a-z][.?!] {2,}[A-Z]' 8 | - '[a-z][.?!][A-Z]' 9 | -------------------------------------------------------------------------------- /styles/Microsoft/Suspended.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use '%s' unless space is limited." 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens 4 | ignorecase: true 5 | level: warning 6 | tokens: 7 | - '\w+- and \w+-' 8 | -------------------------------------------------------------------------------- /styles/Microsoft/URLFormat.yml: -------------------------------------------------------------------------------- 1 | extends: substitution 2 | message: "Use '%s' instead of '%s'." 3 | ignorecase: true 4 | level: error 5 | action: 6 | name: replace 7 | swap: 8 | URL for: URL of 9 | an URL: a URL 10 | 11 | -------------------------------------------------------------------------------- /styles/Microsoft/Units.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't spell out the number in '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms 4 | level: error 5 | raw: 6 | - '[a-zA-Z]+\s' 7 | tokens: 8 | - '(?:centi|milli)?meters' 9 | - '(?:kilo)?grams' 10 | - '(?:kilo)?meters' 11 | - '(?:mega)?pixels' 12 | - cm 13 | - inches 14 | - lb 15 | - miles 16 | - pounds 17 | -------------------------------------------------------------------------------- /styles/Microsoft/Vocab.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Verify your use of '%s' with the A-Z word list." 3 | link: 'https://docs.microsoft.com/en-us/style-guide' 4 | level: suggestion 5 | ignorecase: true 6 | tokens: 7 | - above 8 | - accessible 9 | - actionable 10 | - against 11 | - alarm 12 | - alert 13 | - alias 14 | - allows? 15 | - and/or 16 | - as well as 17 | - assure 18 | - author 19 | - avg 20 | - beta 21 | - ensure 22 | - he 23 | - insure 24 | - sample 25 | - she 26 | -------------------------------------------------------------------------------- /styles/Microsoft/We.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to avoid using first-person plural like '%s'." 3 | link: https://docs.microsoft.com/en-us/style-guide/grammar/person#avoid-first-person-plural 4 | level: warning 5 | ignorecase: true 6 | tokens: 7 | - we 8 | - we'(?:ve|re) 9 | - ours? 10 | - us 11 | - let's 12 | -------------------------------------------------------------------------------- /styles/Microsoft/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/Microsoft/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /styles/config/vocabularies/Base/reject.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lightbend/kalix-jvm-sdk/2c6e94f2ec45c9b3cec0f3c954e54f55cc375035/styles/config/vocabularies/Base/reject.txt -------------------------------------------------------------------------------- /styles/write-good/E-Prime.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Try to avoid using '%s'." 3 | ignorecase: true 4 | level: suggestion 5 | tokens: 6 | - am 7 | - are 8 | - aren't 9 | - be 10 | - been 11 | - being 12 | - he's 13 | - here's 14 | - here's 15 | - how's 16 | - i'm 17 | - is 18 | - isn't 19 | - it's 20 | - she's 21 | - that's 22 | - there's 23 | - they're 24 | - was 25 | - wasn't 26 | - we're 27 | - were 28 | - weren't 29 | - what's 30 | - where's 31 | - who's 32 | - you're 33 | -------------------------------------------------------------------------------- /styles/write-good/Illusions.yml: -------------------------------------------------------------------------------- 1 | extends: repetition 2 | message: "'%s' is repeated!" 3 | level: warning 4 | alpha: true 5 | action: 6 | name: edit 7 | params: 8 | - truncate 9 | - " " 10 | tokens: 11 | - '[^\s]+' 12 | -------------------------------------------------------------------------------- /styles/write-good/So.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't start a sentence with '%s'." 3 | level: error 4 | raw: 5 | - '(?:[;-]\s)so[\s,]|\bSo[\s,]' 6 | -------------------------------------------------------------------------------- /styles/write-good/ThereIs.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't start a sentence with '%s'." 3 | ignorecase: false 4 | level: error 5 | raw: 6 | - '(?:[;-]\s)There\s(is|are)|\bThere\s(is|are)\b' 7 | -------------------------------------------------------------------------------- /styles/write-good/meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "feed": "https://github.com/errata-ai/write-good/releases.atom", 3 | "vale_version": ">=1.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /tck/README.md: -------------------------------------------------------------------------------- 1 | # Kalix TCK implementation for Java Protobuf SDK 2 | 3 | Run the TCK (against the Kalix TCK docker image): 4 | 5 | ``` 6 | sbt javaTck/Test/run 7 | ``` 8 | -------------------------------------------------------------------------------- /tck/java-tck/src/main/java/kalix/javasdk/tck/model/localpersistenceeventing/JsonMessage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.javasdk.tck.model.localpersistenceeventing; 6 | 7 | public class JsonMessage { 8 | public JsonMessage(String message) { 9 | this.message = message; 10 | } 11 | 12 | public JsonMessage() {} 13 | 14 | public String message; 15 | } 16 | -------------------------------------------------------------------------------- /tck/java-tck/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %date{ISO8601} %-5level %logger - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tck/java-tck/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %date{ISO8601} %-5level %logger - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tck/scala-tck/src/main/proto: -------------------------------------------------------------------------------- 1 | ../../../java-tck/src/main/proto -------------------------------------------------------------------------------- /tck/scala-tck/src/main/scala/kalix/tck/model/action/ActionTwoImpl.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.tck.model.action 6 | 7 | import kalix.scalasdk.action.Action 8 | 9 | class ActionTwoImpl extends AbstractActionTwoAction { 10 | 11 | override def call(otherRequest: OtherRequest): Action.Effect[Response] = 12 | effects.reply(Response.defaultInstance) 13 | } 14 | -------------------------------------------------------------------------------- /tck/scala-tck/src/main/scala/kalix/tck/model/valueentity/ValueEntityConfiguredEntity.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.tck.model.valueentity 6 | 7 | import kalix.scalasdk.valueentity.ValueEntity 8 | 9 | /** A value entity. */ 10 | class ValueEntityConfiguredEntity extends AbstractValueEntityConfiguredEntity { 11 | override def emptyState: Persisted = Persisted.defaultInstance 12 | 13 | override def call(currentState: Persisted, request: Request): ValueEntity.Effect[Response] = 14 | effects.reply(Response.defaultInstance) 15 | } 16 | -------------------------------------------------------------------------------- /tck/scala-tck/src/main/scala/kalix/tck/model/valueentity/ValueEntityTwoEntity.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.tck.model.valueentity 6 | 7 | import kalix.scalasdk.valueentity.ValueEntity 8 | 9 | /** A value entity. */ 10 | class ValueEntityTwoEntity extends AbstractValueEntityTwoEntity { 11 | override def emptyState: Persisted = Persisted.defaultInstance 12 | 13 | override def call(currentState: Persisted, request: Request): ValueEntity.Effect[Response] = 14 | effects.reply(Response.defaultInstance) 15 | } 16 | -------------------------------------------------------------------------------- /tck/scala-tck/src/main/scala/kalix/tck/model/view/ViewTckSourceEntity.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2021-2024 Lightbend Inc. 3 | */ 4 | 5 | package kalix.tck.model.view 6 | 7 | /** A value entity. */ 8 | class ViewTckSourceEntity extends AbstractViewTckSourceEntity { 9 | override def emptyState: Ignore = Ignore.defaultInstance 10 | 11 | } 12 | -------------------------------------------------------------------------------- /tck/scala-tck/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %date{ISO8601} %-5level %logger - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | --------------------------------------------------------------------------------