From be4d7c5eaf707f49701bfab5bb8255b672f5d72f Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Sat, 25 Jan 2025 02:48:48 +0000 Subject: [PATCH 1/3] Update scalafmt-core to 3.8.6 --- .scalafmt.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.scalafmt.conf b/.scalafmt.conf index fe91cfb2..6366e928 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,4 +1,4 @@ -version = "3.8.5" +version = "3.8.6" project.git = true runner.dialect = scala3 align.preset = none From 6c4d49e59539bf0ccb3bb0a580ddfa122e4d3cc6 Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Sat, 25 Jan 2025 02:49:15 +0000 Subject: [PATCH 2/3] Reformat with scalafmt 3.8.6 Executed command: scalafmt --non-interactive --- .../domain/MockedServiceResponse.scala | 12 +- .../main/scala/camundala/domain/exports.scala | 104 ++++++++-------- .../camundala/domain/EnumValueTest.scala | 5 +- .../domain/MockedServiceResponseTest.scala | 6 +- .../scala/camundala/bpmn/BpmnProcessDsl.scala | 6 +- .../scala/camundala/bpmn/CamundaInOuts.scala | 10 +- .../camundala/bpmn/CamundaProperty.scala | 14 +-- .../camundala/bpmn/CamundaVariable.scala | 101 ++++++++-------- .../scala/camundala/bpmn/FieldNamesOf.scala | 2 +- .../src/main/scala/camundala/bpmn/dmns.scala | 38 +++--- .../main/scala/camundala/bpmn/exports.scala | 49 ++++---- .../src/main/scala/camundala/bpmn/model.scala | 51 ++++---- .../camundala/bpmn/CamundaVariableTest.scala | 16 +-- .../scala/camundala/bpmn/exportsTest.scala | 6 +- .../camundala/api/AbstractApiCreator.scala | 6 +- .../main/scala/camundala/api/ApiBaseDsl.scala | 2 +- .../main/scala/camundala/api/ApiConfig.scala | 22 ++-- .../main/scala/camundala/api/ApiCreator.scala | 18 ++- .../camundala/api/ApiProjectConfig.scala | 2 +- .../api/CamundaPostmanApiCreator.scala | 30 ++--- .../camundala/api/DocProjectConfig.scala | 2 +- .../camundala/api/ModelerTemplGenerator.scala | 60 +++++----- .../camundala/api/ModelerTemplUpdater.scala | 24 ++-- .../camundala/api/PostmanApiCreator.scala | 27 +++-- .../api/ProcessReferenceCreator.scala | 3 +- .../scala/camundala/api/TapirApiCreator.scala | 32 ++--- .../scala/camundala/api/VersionHelper.scala | 12 +- 03-api/src/main/scala/camundala/api/ast.scala | 6 +- .../main/scala/camundala/api/exports.scala | 10 +- .../src/main/scala/camundala/api/model.scala | 20 ++-- .../scala/camundala/api/ApiCreatorTest.scala | 8 +- .../scala/camundala/api/TestApiCreator.scala | 12 +- .../scala/camundala/api/exportsTest.scala | 14 +-- .../scala/camundala/dmn/DmnConfigWriter.scala | 2 +- .../dmn/DmnTesterConfigCreator.scala | 29 ++--- .../camundala/dmn/DmnTesterHelpers.scala | 8 +- .../camundala/dmn/DmnTesterStarter.scala | 6 +- .../scala/camundala/simulation/Logging.scala | 8 +- .../camundala/simulation/ResultChecker.scala | 65 +++++----- .../camundala/simulation/SimulationDsl.scala | 36 +++--- .../camundala/simulation/TestOverrides.scala | 12 +- .../main/scala/camundala/simulation/ast.scala | 26 ++-- .../simulation/custom/CustomSimulation.scala | 10 +- .../custom/DmnScenarioExtensions.scala | 20 ++-- .../simulation/custom/SEventExtensions.scala | 32 ++--- .../custom/SScenarioExtensions.scala | 42 +++---- .../simulation/custom/SStepExtensions.scala | 22 ++-- .../custom/SSubProcessExtensions.scala | 2 +- .../custom/SUserTaskExtensions.scala | 18 +-- .../simulation/custom/ScenarioData.scala | 10 +- .../simulation/custom/SimulationHelper.scala | 25 ++-- .../custom/SimulationTestFramework.scala | 23 ++-- .../camundala/simulation/custom/auth.scala | 8 +- .../camundala/worker/EngineContext.scala | 26 ++-- .../main/scala/camundala/worker/Handler.scala | 3 +- .../scala/camundala/worker/JobWorker.scala | 1 + .../scala/camundala/worker/WorkerApp.scala | 7 +- .../scala/camundala/worker/WorkerDsl.scala | 39 +++--- .../camundala/worker/WorkerExecutor.scala | 3 +- .../scala/camundala/worker/ZioLogger.scala | 2 +- .../src/main/scala/camundala/worker/ast.scala | 22 ++-- .../main/scala/camundala/worker/exports.scala | 2 +- .../test/scala/camundala/worker/astTest.scala | 16 +-- .../camundala.worker.WorkerExecutorTest.scala | 22 ++-- .../main/scala/camundala/camunda/Mocker.scala | 14 +-- .../scala/camundala/camunda/Validator.scala | 10 +- .../main/scala/camundala/camunda/model.scala | 36 +++--- .../camundala/camunda8/RestEndpoint.scala | 12 +- .../scala/camundala/camunda8/Validator.scala | 4 +- 04-helper/initHelperCompany.sc | 2 +- .../dev/DevCompanyCamundalaHelper.scala | 8 +- .../helper/dev/DevCompanyHelper.scala | 11 +- .../camundala/helper/dev/DevHelper.scala | 83 +++++++------ .../dev/company/CompanyDocsGenerator.scala | 19 +-- .../helper/dev/company/CompanyGenerator.scala | 7 +- .../dev/company/CompanyWrapperGenerator.scala | 83 +++++++------ .../dev/company/docs/DependencyCreator.scala | 8 +- .../company/docs/DependencyGraphCreator.scala | 24 ++-- .../company/docs/DependencyValidator.scala | 4 +- .../company/docs/DevStatisticsCreator.scala | 14 ++- .../dev/company/docs/ReleaseConfig.scala | 2 +- .../helper/dev/company/exports.scala | 6 +- .../helper/dev/deploy/DeployHelper.scala | 4 +- .../helper/dev/docker/DockerHelper.scala | 2 +- .../helper/dev/publish/ChangeLogUpdater.scala | 19 ++- .../helper/dev/publish/PublishHelper.scala | 18 +-- .../camundala/helper/dev/publish/WebDAV.scala | 28 ++--- .../helper/dev/update/ApiGenerator.scala | 2 +- .../dev/update/ApiGeneratorGenerator.scala | 6 +- .../helper/dev/update/BpmnGenerator.scala | 16 +-- .../dev/update/DirectoryGenerator.scala | 2 +- .../helper/dev/update/DmnGenerator.scala | 1 - .../dev/update/GenericFileGenerator.scala | 4 +- .../helper/dev/update/SbtGenerator.scala | 26 ++-- .../dev/update/SbtSettingsGenerator.scala | 14 +-- .../helper/dev/update/ScriptCreator.scala | 5 +- .../helper/dev/update/SetupGenerator.scala | 1 - .../helper/dev/update/WorkerGenerator.scala | 18 +-- .../camundala/helper/dev/update/exports.scala | 21 ++-- .../helper/openApi/BpmnClassesCreator.scala | 26 ++-- .../helper/openApi/BpmnClassesGenerator.scala | 6 +- .../helper/openApi/BpmnCreator.scala | 34 +++--- .../openApi/BpmnSuperClassGenerator.scala | 2 +- .../helper/openApi/CreatorHelper.scala | 26 ++-- .../helper/openApi/GeneratorHelper.scala | 12 +- .../helper/openApi/OpenApiConfig.scala | 28 ++--- .../openApi/ServiceClassesCreator.scala | 8 +- .../openApi/ServiceClassesGenerator.scala | 6 +- .../helper/openApi/WorkerGenerator.scala | 6 +- .../scala/camundala/helper/openApi/adt.scala | 12 +- .../helper/util/CompanyVersionHelper.scala | 3 - .../camundala/helper/util/DevConfig.scala | 14 ++- .../camundala/helper/util/ReposConfig.scala | 4 +- .../helper/openApi/ProjectApiGenerator.scala | 4 +- .../camunda7/worker/C7WorkerHandler.scala | 22 ++-- .../camunda7/worker/Camunda7Context.scala | 2 - .../camunda7/worker/CamundaHelper.scala | 26 ++-- .../worker/ProcessVariablesExtractor.scala | 20 ++-- .../camunda7/worker/RestApiClient.scala | 26 ++-- .../worker/oauth/OAuthPasswordFlow.scala | 6 +- .../camunda7/worker/oauth/TokenService.scala | 10 +- .../camunda/InterceptorConfiguration.scala | 2 +- .../camunda/WorkerAccessTokenProvider.scala | 12 +- .../camunda7/worker/C7WorkerHandlerTest.scala | 6 +- .../camundala/worker/c8zio/C7Client.scala | 9 +- .../camundala/worker/c8zio/C7Context.scala | 5 +- .../worker/c8zio/C7WorkerRegistry.scala | 2 +- .../worker/c8zio/CamundaHelper.scala | 4 +- .../c8zio/ProcessVariablesExtractor.scala | 24 ++-- .../c8zio/oauth/OAuthPasswordFlow.scala | 6 +- .../worker/c8zio/oauth/TokenService.scala | 10 +- .../camundala/worker/c8zio/C8Client.scala | 15 +-- .../camundala/worker/c8zio/C8Context.scala | 5 +- .../camundala/worker/c8zio/C8Worker.scala | 31 ++--- .../demos/bpmn/BadScenarioExample.scala | 4 +- .../examples/demos/bpmn/DateExample.scala | 4 +- .../demos/bpmn/DecisionResultTypes.scala | 8 +- .../examples/demos/bpmn/EnumExample.scala | 8 +- .../demos/bpmn/EnumWorkerExample.scala | 16 +-- .../demos/bpmn/GenericServiceExample.scala | 6 +- .../demos/bpmn/SignalMessageExample.scala | 14 +-- .../bpmn/SimulationTestOverridesExample.scala | 6 +- .../examples/demos/bpmn/TestDomain.scala | 10 +- .../examples/demos/bpmn/TimerExample.scala | 4 +- .../demos/bpmn/VariablesExample.scala | 4 +- .../demos/api/ProjectApiCreator.scala | 8 +- .../examples/demos/dmn/ProjectDmnTester.scala | 4 +- .../DecisionResultTypesSimulation.scala | 4 +- .../simulation/OAuthExampleSimulation.scala | 12 +- .../SignalMessageExampleSimulation.scala | 3 +- .../simulation/TimerExampleSimulation.scala | 2 +- .../demos/newWorker/CompanyBpmnDsl.scala | 14 +-- .../newWorker/CompanyWorkerHandler.scala | 7 +- .../demos/newWorker/ExampleJobWorker.scala | 4 +- .../demos/newWorker/TestWorkerApp.scala | 7 +- .../demos/worker/EnumExampleWorker.scala | 6 +- .../invoice/bpmn/ArchiveInvoice.scala | 6 +- .../invoice/bpmn/ComposedWorkerExample.scala | 6 +- .../invoice/bpmn/InvoiceReceipt.scala | 16 +-- .../examples/invoice/bpmn/ReviewInvoice.scala | 12 +- .../invoice/bpmn/ServiceMethodApis.scala | 30 ++--- .../examples/invoice/bpmn/StarWarsApi.scala | 28 ++--- .../examples/invoice/bpmn/exports.scala | 2 +- .../invoice/api/ProjectApiCreator.scala | 14 +-- .../invoice/dmn/ProjectDmnTester.scala | 6 +- .../simulation/InvoiceSimulation.scala | 24 ++-- .../ServiceMethodApisSimulation.scala | 2 +- .../StarWarsPeopleDetailSimulation.scala | 6 +- .../invoice/worker/ArchiveCompanyWorker.scala | 4 +- .../invoice/worker/AsyncTestWorker.scala | 6 +- .../invoice/worker/ComposedWorker.scala | 6 +- .../invoice/worker/InvoiceReceiptWorker.scala | 2 +- .../myCompany/MyCompanyDocCreator.scala | 2 +- .../scala/camundala/myCompany/exports.scala | 5 +- .../examples/twitter/bpmn/TwitterApi.scala | 12 +- .../twitter/api/ProjectApiCreator.scala | 4 +- .../simulation/TwitterSimulation.scala | 2 +- .../RejectionNotificationDelegate.scala | 2 +- .../c7/services/TweetContentDelegate.scala | 4 +- .../examples/twitter/api/TwitterApi.scala | 14 +-- .../twitter/api/TwitterApiCreator.scala | 2 +- .../twitter/process/TwitterWorker.scala | 6 +- build.sbt | 4 +- project/Dependencies.scala | 112 +++++++++--------- project/Settings.scala | 59 +++++---- 185 files changed, 1425 insertions(+), 1373 deletions(-) diff --git a/01-domain/src/main/scala/camundala/domain/MockedServiceResponse.scala b/01-domain/src/main/scala/camundala/domain/MockedServiceResponse.scala index 806dbf98..70cef09b 100644 --- a/01-domain/src/main/scala/camundala/domain/MockedServiceResponse.scala +++ b/01-domain/src/main/scala/camundala/domain/MockedServiceResponse.scala @@ -24,7 +24,7 @@ case class MockedServiceResponse[ }) // be sure ServiceOut is set! - def unsafeBody: ServiceOut = respBody.toOption.get + def unsafeBody: ServiceOut = respBody.toOption.get def headersAsMap: Map[String, String] = respHeaders .map(_.toList) @@ -73,11 +73,11 @@ object MockedServiceResponse: : InOutEncoder[MockedServiceResponse[ServiceOut]] = Encoder.instance { response => Json.obj( - "respStatus" -> Json.fromInt(response.respStatus), - "respBody" -> ( + "respStatus" -> Json.fromInt(response.respStatus), + "respBody" -> ( response.respBody match case Right(value) => value.asJson.deepDropNullValues - case Left(err) => err.getOrElse(Json.Null) + case Left(err) => err.getOrElse(Json.Null) ), "respHeaders" -> response.respHeaders .map(_.map(Json.fromString)) @@ -89,8 +89,8 @@ object MockedServiceResponse: : InOutDecoder[MockedServiceResponse[ServiceOut]] = Decoder.instance { cursor => for - respStatus <- cursor.downField("respStatus").as[Int] - respBody <- + respStatus <- cursor.downField("respStatus").as[Int] + respBody <- if respStatus < 300 then cursor.downField("respBody").as[ServiceOut].map(Right(_)) else cursor.downField("respBody").as[Option[Json]].map(Left(_)) diff --git a/01-domain/src/main/scala/camundala/domain/exports.scala b/01-domain/src/main/scala/camundala/domain/exports.scala index 5a985aca..37ac2adc 100644 --- a/01-domain/src/main/scala/camundala/domain/exports.scala +++ b/01-domain/src/main/scala/camundala/domain/exports.scala @@ -15,26 +15,28 @@ import scala.language.implicitConversions export io.circe.Codec as CirceCodec export io.circe.{Decoder, HCursor, Json} -type InOutCodec[T] = io.circe.Codec[T] +type InOutCodec[T] = io.circe.Codec[T] type InOutEncoder[T] = io.circe.Encoder[T] type InOutDecoder[T] = io.circe.Decoder[T] // Circe Enum codec -inline def deriveInOutCodec[A](using inline A: Mirror.Of[A]): InOutCodec[A] = +inline def deriveInOutCodec[A](using inline A: Mirror.Of[A]): InOutCodec[A] = deriveInOutCodec("type") inline def deriveInOutCodec[A](discriminator: String)(using inline A: Mirror.Of[A]): InOutCodec[A] = io.circe.derivation.ConfiguredCodec.derived(using - Configuration.default // .withDefaults - .withDiscriminator(discriminator)) + Configuration.default // .withDefaults + .withDiscriminator(discriminator) + ) inline def deriveInOutEncoder[A](using inline A: Mirror.Of[A]): InOutEncoder[A] = deriveInOutEncoder("type") inline def deriveInOutEncoder[A](discriminator: String)(using inline A: Mirror.Of[A] ): InOutEncoder[A] = io.circe.derivation.ConfiguredEncoder.derived(using - Configuration.default // .withDefaults - .withDiscriminator(discriminator)) + Configuration.default // .withDefaults + .withDiscriminator(discriminator) + ) inline def deriveInOutDecoder[A](using inline A: Mirror.Of[A]): InOutDecoder[A] = deriveInOutDecoder("type") @@ -42,8 +44,9 @@ inline def deriveInOutDecoder[A](discriminator: String)(using inline A: Mirror.Of[A] ): InOutDecoder[A] = io.circe.derivation.ConfiguredDecoder.derived(using - Configuration.default // .withDefaults - .withDiscriminator(discriminator)) + Configuration.default // .withDefaults + .withDiscriminator(discriminator) + ) inline def deriveEnumInOutCodec[A](using inline A: Mirror.SumOf[A]): InOutCodec[A] = given Configuration = Configuration.default @@ -70,7 +73,7 @@ def customDecodeAccumulating[T](c: HCursor)(using InOutDecoder[T]): Either[Decod .left.map: case err if err.size == 1 => err.head - case errors => + case errors => errors.head.copy( message = errors.foldLeft("")((result, error) => @@ -108,14 +111,14 @@ given InOutCodec[IntOrString] = CirceCodec.from( new Encoder[IntOrString]: final def apply(a: IntOrString): Json = a match case s: String => Json.fromString(s) - case i: Int => Json.fromInt(i) + case i: Int => Json.fromInt(i) ) type IntOrString = Int | String -given ApiSchema[IntOrString] = Schema.derivedUnion +given ApiSchema[IntOrString] = Schema.derivedUnion type IntOrBoolean = Int | Boolean -given ApiSchema[IntOrBoolean] = Schema.derivedUnion +given ApiSchema[IntOrBoolean] = Schema.derivedUnion given InOutCodec[IntOrBoolean] = CirceCodec.from( new Decoder[IntOrBoolean]: final def apply(c: HCursor): Decoder.Result[IntOrBoolean] = @@ -126,60 +129,60 @@ given InOutCodec[IntOrBoolean] = CirceCodec.from( new Encoder[IntOrBoolean]: final def apply(a: IntOrBoolean): Json = a match case s: Boolean => Json.fromBoolean(s) - case i: Int => Json.fromInt(i) + case i: Int => Json.fromInt(i) ) case class NoInput() object NoInput: - given ApiSchema[NoInput] = deriveApiSchema + given ApiSchema[NoInput] = deriveApiSchema given InOutCodec[NoInput] = deriveCodec case class NoConfig() object NoConfig: - given ApiSchema[NoConfig] = deriveApiSchema + given ApiSchema[NoConfig] = deriveApiSchema given InOutCodec[NoConfig] = deriveCodec case class NoOutput() object NoOutput: - given ApiSchema[NoOutput] = deriveApiSchema + given ApiSchema[NoOutput] = deriveApiSchema given InOutCodec[NoOutput] = deriveCodec enum ProcessStatus: case succeeded, `output-mocked`, failed, notValid, canceled object ProcessStatus: - given ApiSchema[ProcessStatus] = deriveEnumApiSchema - given ApiSchema[ProcessStatus.succeeded.type] = deriveEnumApiSchema - given ApiSchema[ProcessStatus.`output-mocked`.type] = deriveEnumApiSchema - given ApiSchema[ProcessStatus.failed.type] = deriveEnumApiSchema - given ApiSchema[ProcessStatus.notValid.type] = deriveEnumApiSchema - given ApiSchema[ProcessStatus.canceled.type] = deriveEnumApiSchema - given InOutCodec[ProcessStatus] = deriveEnumInOutCodec - given InOutCodec[ProcessStatus.succeeded.type] = deriveEnumValueInOutCodec + given ApiSchema[ProcessStatus] = deriveEnumApiSchema + given ApiSchema[ProcessStatus.succeeded.type] = deriveEnumApiSchema + given ApiSchema[ProcessStatus.`output-mocked`.type] = deriveEnumApiSchema + given ApiSchema[ProcessStatus.failed.type] = deriveEnumApiSchema + given ApiSchema[ProcessStatus.notValid.type] = deriveEnumApiSchema + given ApiSchema[ProcessStatus.canceled.type] = deriveEnumApiSchema + given InOutCodec[ProcessStatus] = deriveEnumInOutCodec + given InOutCodec[ProcessStatus.succeeded.type] = deriveEnumValueInOutCodec given InOutCodec[ProcessStatus.`output-mocked`.type] = deriveEnumValueInOutCodec - given InOutCodec[ProcessStatus.failed.type] = deriveEnumValueInOutCodec - given InOutCodec[ProcessStatus.notValid.type] = deriveEnumValueInOutCodec - given InOutCodec[ProcessStatus.canceled.type] = deriveEnumValueInOutCodec + given InOutCodec[ProcessStatus.failed.type] = deriveEnumValueInOutCodec + given InOutCodec[ProcessStatus.notValid.type] = deriveEnumValueInOutCodec + given InOutCodec[ProcessStatus.canceled.type] = deriveEnumValueInOutCodec end ProcessStatus @deprecated("Use _ProcessStatus_") enum ProcessEndStatus: case succeeded, `output-mocked` object ProcessEndStatus: - given ApiSchema[ProcessEndStatus] = deriveEnumApiSchema + given ApiSchema[ProcessEndStatus] = deriveEnumApiSchema given InOutCodec[ProcessEndStatus] = deriveEnumInOutCodec @deprecated("Use _ProcessStatus_") enum NotValidStatus: case notValid, canceled object NotValidStatus: - given ApiSchema[NotValidStatus] = deriveEnumApiSchema + given ApiSchema[NotValidStatus] = deriveEnumApiSchema given InOutCodec[NotValidStatus] = deriveEnumInOutCodec @deprecated("Use _ProcessStatus_") enum CanceledStatus: case canceled object CanceledStatus: - given ApiSchema[CanceledStatus] = deriveEnumApiSchema + given ApiSchema[CanceledStatus] = deriveEnumApiSchema given InOutCodec[CanceledStatus] = deriveEnumInOutCodec @deprecated @@ -194,8 +197,9 @@ object GenericServiceIn: val name = serviceName.split("-") .last if Seq("get", "post", "put", "delete").contains(name.toLowerCase) - then serviceName // keep the name as it is + then serviceName // keep the name as it is else name + end shortServiceName end GenericServiceIn @@ -209,7 +213,7 @@ case class FileInOut( end FileInOut object FileInOut: - given ApiSchema[FileInOut] = deriveApiSchema + given ApiSchema[FileInOut] = deriveApiSchema given InOutCodec[FileInOut] = deriveCodec /** In Camunda 8 only json is allowed! @@ -222,7 +226,7 @@ case class FileRefInOut( ) object FileRefInOut: - given ApiSchema[FileRefInOut] = deriveApiSchema + given ApiSchema[FileRefInOut] = deriveApiSchema given InOutCodec[FileRefInOut] = deriveCodec // Use this in the DSL to avoid Option[?] @@ -231,7 +235,7 @@ case class Optable[Out](value: Option[Out]) object Optable: given fromOpt[T]: Conversion[Option[T], Optable[T]] = Optable(_) - given fromValue[T]: Conversion[T, Optable[T]] = v => Optable(Option(v)) + given fromValue[T]: Conversion[T, Optable[T]] = v => Optable(Option(v)) //json def throwErr(err: String) = @@ -239,14 +243,14 @@ def throwErr(err: String) = def toJson(json: String): Json = parser.parse(json) match - case Right(v) => v.deepDropNullValues + case Right(v) => v.deepDropNullValues case Left(exc) => throwErr(s"Could not create Json from your String -> $exc") -val testModeDescr = +val testModeDescr = "This flag indicades that this is a test - in the process it can behave accordingly." // descriptions -val deprecatedDescr = +val deprecatedDescr = "See https://pme123.github.io/camundala/specification.html#supported-general-variables" @deprecated("Change to serviceTask") def serviceNameDescr(serviceName: String) = @@ -300,7 +304,7 @@ def outputServiceMockDescr[ServiceOut: InOutEncoder](mock: ServiceOut) = |""".stripMargin @deprecated(deprecatedDescr) -val handledErrorsDescr = +val handledErrorsDescr = "A comma separated list of HTTP-Status-Codes, that are modelled in the BPMN as Business-Exceptions - see Outputs. z.B: `404,500`" val regexHandledErrorsDescr = """If you specified _handledErrors_, you can specify Regexes that all must match the error messages. @@ -317,7 +321,7 @@ extension (str: String) val result = str.foldLeft(""): case r -> c if c.isUpper => s"$r $c" - case r -> c => + case r -> c => s"$r$c" result.split("-") .map: p => @@ -326,32 +330,32 @@ extension (str: String) end niceName end extension -def prettyUriString(uri: Uri) = +def prettyUriString(uri: Uri) = URLDecoder.decode( uri.toString, Charset.defaultCharset() ) def prettyString(obj: Any, depth: Int = 0, paramName: Option[String] = None): String = - val indent = " " * depth - val prettyName = paramName.fold("")(x => s"$x: ") - val ptype = obj match + val indent = " " * depth + val prettyName = paramName.fold("")(x => s"$x: ") + val ptype = obj match case _: Iterable[Any] => "" - case obj: Product => obj.productPrefix - case _ => obj.toString + case obj: Product => obj.productPrefix + case _ => obj.toString val nameWithType = s"\n$indent$prettyName$ptype" obj match - case None => "" - case Some(value) => s"${prettyString(value, depth, paramName)}" - case uri: Uri => s"\n$indent$prettyName${prettyUriString(uri)}" + case None => "" + case Some(value) => s"${prettyString(value, depth, paramName)}" + case uri: Uri => s"\n$indent$prettyName${prettyUriString(uri)}" case seq: Iterable[Any] => val seqStr = seq.map(prettyString(_, depth + 1)) if seqStr.isEmpty then "" else s"$nameWithType[${seqStr.mkString}\n$indent]" - case obj: Product => + case obj: Product => val objStr = (obj.productIterator zip obj.productElementNames) .map { case (subObj, paramName) => prettyString(subObj, depth + 1, Some(paramName)) } if objStr.isEmpty then s"$nameWithType" else s"$nameWithType{${objStr.mkString}\n$indent}" - case _ => + case _ => s"$nameWithType" end match end prettyString diff --git a/01-domain/src/test/scala/camundala/domain/EnumValueTest.scala b/01-domain/src/test/scala/camundala/domain/EnumValueTest.scala index 42f27d0c..19ccd309 100644 --- a/01-domain/src/test/scala/camundala/domain/EnumValueTest.scala +++ b/01-domain/src/test/scala/camundala/domain/EnumValueTest.scala @@ -3,7 +3,6 @@ package camundala.domain import io.circe.* import io.circe.Decoder.Result - class EnumValueTest extends munit.FunSuite: inline def deriveEnumValueEncoder[A]: Encoder[A] = @@ -20,7 +19,7 @@ class EnumValueTest extends munit.FunSuite: CirceCodec.from(deriveEnumValueDecoder[A], deriveEnumValueEncoder[A]) test("CmsTest encode and decode enum type"): - val obj = MyClass(MyEnum.Y) + val obj = MyClass(MyEnum.Y) val json = obj.asJson assertEquals(Json.obj("processStatus" -> Json.fromString("Y")), json) assertEquals(Right(obj), json.as[MyClass]) @@ -31,7 +30,7 @@ class EnumValueTest extends munit.FunSuite: case class MyClass(processStatus: MyEnum.Y.type) object MyClass: - given InOutCodec[MyClass] = deriveInOutCodec + given InOutCodec[MyClass] = deriveInOutCodec given InOutCodec[MyEnum.Y.type] = deriveEnumValueInOutCodec enum MyEnum: diff --git a/01-domain/src/test/scala/camundala/domain/MockedServiceResponseTest.scala b/01-domain/src/test/scala/camundala/domain/MockedServiceResponseTest.scala index 1ec26211..01832380 100644 --- a/01-domain/src/test/scala/camundala/domain/MockedServiceResponseTest.scala +++ b/01-domain/src/test/scala/camundala/domain/MockedServiceResponseTest.scala @@ -30,19 +30,19 @@ case class TestWithMock( ) object TestWithMock: - given ApiSchema[TestWithMock] = deriveApiSchema + given ApiSchema[TestWithMock] = deriveApiSchema given InOutCodec[TestWithMock] = deriveCodec end TestWithMock case class Error(msg: String = "failed") object Error: - given ApiSchema[Error] = deriveApiSchema + given ApiSchema[Error] = deriveApiSchema given InOutCodec[Error] = deriveCodec end Error case class Success(ok: String = "hello") object Success: - given ApiSchema[Success] = deriveApiSchema + given ApiSchema[Success] = deriveApiSchema given InOutCodec[Success] = deriveCodec end Success diff --git a/02-bpmn/src/main/scala/camundala/bpmn/BpmnProcessDsl.scala b/02-bpmn/src/main/scala/camundala/bpmn/BpmnProcessDsl.scala index e9647a06..04855748 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/BpmnProcessDsl.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/BpmnProcessDsl.scala @@ -12,14 +12,14 @@ trait BpmnProcessDsl extends BpmnDsl: def process[ In <: Product: InOutEncoder: InOutDecoder: Schema, Out <: Product: InOutEncoder: InOutDecoder: Schema, - InitIn <: Product: InOutEncoder: Schema, + InitIn <: Product: InOutEncoder: Schema ]( in: In = NoInput(), out: Out = NoOutput(), - initIn: InitIn = NoInput(), + initIn: InitIn = NoInput() ): Process[In, Out, InitIn] = Process(InOutDescr(processName, in, out, Some(description)), initIn, processLabels) - + def process[ In <: Product: InOutEncoder: InOutDecoder: Schema, Out <: Product: InOutEncoder: InOutDecoder: Schema diff --git a/02-bpmn/src/main/scala/camundala/bpmn/CamundaInOuts.scala b/02-bpmn/src/main/scala/camundala/bpmn/CamundaInOuts.scala index e3fbb081..e532c179 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/CamundaInOuts.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/CamundaInOuts.scala @@ -15,7 +15,7 @@ case class StartProcessIn( withVariablesInReturn: Boolean = true ) object StartProcessIn: - given ApiSchema[StartProcessIn] = deriveApiSchema + given ApiSchema[StartProcessIn] = deriveApiSchema given InOutCodec[StartProcessIn] = deriveCodec case class CorrelateMessageIn( @@ -33,7 +33,7 @@ case class CorrelateMessageIn( variablesInResultEnabled: Boolean = true ) object CorrelateMessageIn: - given ApiSchema[CorrelateMessageIn] = deriveApiSchema + given ApiSchema[CorrelateMessageIn] = deriveApiSchema given InOutCodec[CorrelateMessageIn] = deriveCodec case class SendSignalIn( @@ -61,7 +61,7 @@ Note: If no execution id is defined the signal is broadcasted to all subscribed ) object SendSignalIn: - given ApiSchema[SendSignalIn] = deriveApiSchema + given ApiSchema[SendSignalIn] = deriveApiSchema given InOutCodec[SendSignalIn] = deriveCodec @description( @@ -72,7 +72,7 @@ case class EvaluateDecisionIn( variables: Map[String, CamundaVariable] ) object EvaluateDecisionIn: - given ApiSchema[EvaluateDecisionIn] = deriveApiSchema + given ApiSchema[EvaluateDecisionIn] = deriveApiSchema given InOutCodec[EvaluateDecisionIn] = deriveCodec case class CompleteTaskOut( @@ -82,6 +82,6 @@ case class CompleteTaskOut( variables: Map[String, CamundaVariable] ) object CompleteTaskOut: - given ApiSchema[CompleteTaskOut] = deriveApiSchema + given ApiSchema[CompleteTaskOut] = deriveApiSchema given InOutCodec[CompleteTaskOut] = deriveCodec end CompleteTaskOut diff --git a/02-bpmn/src/main/scala/camundala/bpmn/CamundaProperty.scala b/02-bpmn/src/main/scala/camundala/bpmn/CamundaProperty.scala index 61e6aebe..f6c964cc 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/CamundaProperty.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/CamundaProperty.scala @@ -59,14 +59,14 @@ object CamundaProperty: given InOutDecoder[CamundaProperty] = (c: HCursor) => for - name <- c.downField("name").as[String] + name <- c.downField("name").as[String] valueType <- c.downField("type").as[String] - anyValue = c.downField("value") - value <- CamundaVariable.decodeValue( - valueType, - anyValue, - c.downField("valueInfo") - ) + anyValue = c.downField("value") + value <- CamundaVariable.decodeValue( + valueType, + anyValue, + c.downField("valueInfo") + ) yield new CamundaProperty(name, value) def from(vars: FormVariables): Seq[CamundaProperty] = diff --git a/02-bpmn/src/main/scala/camundala/bpmn/CamundaVariable.scala b/02-bpmn/src/main/scala/camundala/bpmn/CamundaVariable.scala index 71fe25c5..094bcd18 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/CamundaVariable.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/CamundaVariable.scala @@ -10,69 +10,71 @@ import scala.annotation.tailrec import java.time.LocalDate sealed trait CamundaVariable: - + def value: Any def toJson: Json = import CamundaVariable.* this match - case CNull => + case CNull => Json.Null - case CString(value, _) => + case CString(value, _) => Json.fromString(value) case CInteger(value, _) => Json.fromInt(value) - case CLong(value, _) => + case CLong(value, _) => Json.fromLong(value) case CBoolean(value, _) => Json.fromBoolean(value) - case CDouble(value, _) => + case CDouble(value, _) => Json.fromDoubleOrNull(value) - case file: CFile => + case file: CFile => file.asJson - case CJson(value, _) => + case CJson(value, _) => parser.parse(value).getOrElse(Json.obj()) + end match + end toJson end CamundaVariable object CamundaVariable: given InOutEncoder[CamundaVariable] = Encoder.instance { - case v: CString => v.asJson + case v: CString => v.asJson case v: CInteger => v.asJson - case v: CLong => v.asJson - case v: CDouble => v.asJson + case v: CLong => v.asJson + case v: CDouble => v.asJson case v: CBoolean => v.asJson - case v: CFile => v.asJson - case v: CJson => v.asJson.deepDropNullValues - case CNull => Json.Null + case v: CFile => v.asJson + case v: CJson => v.asJson.deepDropNullValues + case CNull => Json.Null } given ApiSchema[CamundaVariable] = deriveApiSchema - given ApiSchema[CString] = deriveApiSchema + given ApiSchema[CString] = deriveApiSchema given InOutCodec[CString] = deriveInOutCodec - given ApiSchema[CInteger] = deriveApiSchema + given ApiSchema[CInteger] = deriveApiSchema given InOutCodec[CInteger] = deriveInOutCodec - given ApiSchema[CLong] = deriveApiSchema + given ApiSchema[CLong] = deriveApiSchema given InOutCodec[CLong] = deriveInOutCodec - given ApiSchema[CDouble] = deriveApiSchema + given ApiSchema[CDouble] = deriveApiSchema given InOutCodec[CDouble] = deriveInOutCodec - given ApiSchema[CBoolean] = deriveApiSchema + given ApiSchema[CBoolean] = deriveApiSchema given InOutCodec[CBoolean] = deriveInOutCodec - given ApiSchema[CFile] = deriveApiSchema + given ApiSchema[CFile] = deriveApiSchema given InOutCodec[CFile] = deriveInOutCodec - given ApiSchema[CFileValueInfo] = deriveApiSchema + given ApiSchema[CFileValueInfo] = deriveApiSchema given InOutCodec[CFileValueInfo] = deriveInOutCodec - given ApiSchema[CJson] = deriveApiSchema + given ApiSchema[CJson] = deriveApiSchema given InOutCodec[CJson] = deriveInOutCodec def toCamunda[T <: Product: InOutEncoder]( @@ -97,9 +99,9 @@ object CamundaVariable: value: Any ): CamundaVariable = value match - case None => CNull - case Some(v) => objectToCamunda(product, key, v) - case f @ FileInOut(fileName, _, mimeType) => + case None => CNull + case Some(v) => objectToCamunda(product, key, v) + case f @ FileInOut(fileName, _, mimeType) => CFile( f.contentAsBase64, CFileValueInfo( @@ -112,37 +114,37 @@ object CamundaVariable: .downField(key) .as[Json] match case Right(str) if str.isString => CString(str.asString.get) // Pure Enum! - case Right(v) => CJson(v.toString) - case Left(ex) => throwErr(s"$key of $v could NOT be Parsed to a JSON!\n$ex") + case Right(v) => CJson(v.toString) + case Left(ex) => throwErr(s"$key of $v could NOT be Parsed to a JSON!\n$ex") case v => valueToCamunda(v) def valueToCamunda(value: Any): CamundaVariable = value match - case v: String => + case v: String => CString(v) - case v: Int => + case v: Int => CInteger(v) - case v: Long => + case v: Long => CLong(v) - case v: Boolean => + case v: Boolean => CBoolean(v) - case v: Float => + case v: Float => CDouble(v.toDouble) - case v: Double => + case v: Double => CDouble(v) - case v: scala.reflect.Enum => + case v: scala.reflect.Enum => CString(v.toString) - case ld: LocalDate => + case ld: LocalDate => CString(ld.toString) - case ldt: LocalDateTime => + case ldt: LocalDateTime => CString(ldt.toString) case other if other == null => CNull - case v: Json => + case v: Json => CJson(v.toString) - case other => + case other => throwErr(s"Unexpected Value to map to CamundaVariable: $other") case object CNull extends CamundaVariable: @@ -181,8 +183,8 @@ object CamundaVariable: (c: HCursor) => for valueType <- c.downField("type").as[String] - anyValue = c.downField("value") - value <- decodeValue(valueType, anyValue, c.downField("valueInfo")) + anyValue = c.downField("value") + value <- decodeValue(valueType, anyValue, c.downField("valueInfo")) yield value def decodeValue( @@ -191,15 +193,15 @@ object CamundaVariable: valueInfo: ACursor ): Either[DecodingFailure, CamundaVariable] = valueType match - case "Null" => Right(CNull) + case "Null" => Right(CNull) case "Boolean" => anyValue.as[Boolean].map(CBoolean(_)) case "Integer" => anyValue.as[Int].map(CInteger(_)) - case "Long" => anyValue.as[Long].map(CLong(_)) - case "Double" => anyValue.as[Double].map(CDouble(_)) - case "Json" => anyValue.as[String].map(CJson(_)) - case "File" => + case "Long" => anyValue.as[Long].map(CLong(_)) + case "Double" => anyValue.as[Double].map(CDouble(_)) + case "Json" => anyValue.as[String].map(CJson(_)) + case "File" => valueInfo.as[CFileValueInfo].map(vi => CFile("not_set", vi)) - case _ => anyValue.as[String].map(CString(_)) + case _ => anyValue.as[String].map(CString(_)) type JsonToCamundaValue = CamundaVariable | Map[String, CamundaVariable] | Seq[Any] @@ -215,9 +217,9 @@ object CamundaVariable: def onNumber(value: JsonNumber): CamundaVariable = value.toBigDecimal .map { - case v if v.isValidInt => CInteger(v.intValue) + case v if v.isValidInt => CInteger(v.intValue) case v if v.isValidLong => CLong(v.longValue) - case v => CDouble(v.doubleValue) + case v => CDouble(v.doubleValue) } .getOrElse(CDouble(value.toDouble)) @@ -240,9 +242,8 @@ object CamundaVariable: .toMap .map((k, v) => k -> (jsonToCamundaValue(v) match - case cv: CamundaVariable => cv - case _: (Map[?, ?] | Seq[?]) => CJson(v.toString) - ) + case cv: CamundaVariable => cv + case _: (Map[?, ?] | Seq[?]) => CJson(v.toString)) ) end CamundaVariable diff --git a/02-bpmn/src/main/scala/camundala/bpmn/FieldNamesOf.scala b/02-bpmn/src/main/scala/camundala/bpmn/FieldNamesOf.scala index 6a84106b..4fab4984 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/FieldNamesOf.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/FieldNamesOf.scala @@ -6,7 +6,7 @@ object FieldNamesOf: def allFieldNames[T: Type](using Quotes): Expr[Seq[String]] = import quotes.reflect.* - val tpe = TypeRepr.of[T] + val tpe = TypeRepr.of[T] val fields = if tpe.typeSymbol.children.isEmpty then tpe.typeSymbol.primaryConstructor.paramSymss.flatten.map(_.name) diff --git a/02-bpmn/src/main/scala/camundala/bpmn/dmns.scala b/02-bpmn/src/main/scala/camundala/bpmn/dmns.scala index 854de67e..122e2db6 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/dmns.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/dmns.scala @@ -26,8 +26,8 @@ type DmnValueSimple = String | Boolean | Int | Long | Double | LocalDate | type DmnValueType = DmnValueSimple | scala.reflect.Enum enum DecisionResultType: - case singleEntry // TypedValue - case singleResult // Map(String, Object) + case singleEntry // TypedValue + case singleResult // Map(String, Object) case collectEntries // List(Object) case resultList // List(Map(String, Object)) end DecisionResultType @@ -43,7 +43,7 @@ case class DecisionDmn[ Activity[In, Out, DecisionDmn[In, Out]]: lazy val inOutType: InOutType = InOutType.Dmn - override val label: String = + override val label: String = """// use singleEntry / collectEntries / singleResult / resultList | dmn""".stripMargin lazy val decisionDefinitionKey: String = inOutDescr.id @@ -96,10 +96,10 @@ given LocalDateTimeJsonDecoder: InOutDecoder[LocalDateTime] = .flatMap: dateStr => Try(LocalDateTime.parse(dateStr)) match case Success(date) => Right(date) - case Failure(_) => + case Failure(_) => Try(LocalDateTime.ofInstant(Instant.parse(dateStr), ZoneId.systemDefault())) match case Success(date) => Right(date) - case Failure(_) => + case Failure(_) => Left(DecodingFailure(s"Could not parse LocalDateTime from $dateStr", c.history)) given InOutDecoder[ZonedDateTime] = @@ -114,7 +114,7 @@ given InOutDecoder[ZonedDateTime] = case class SingleEntry[Out <: DmnValueType: InOutEncoder: InOutDecoder: ClassTag]( result: Out ): - lazy val toCamunda: CamundaVariable = CamundaVariable.valueToCamunda(result) + lazy val toCamunda: CamundaVariable = CamundaVariable.valueToCamunda(result) val decisionResultType: DecisionResultType = DecisionResultType.singleEntry end SingleEntry @@ -154,7 +154,7 @@ end SingleEntry case class CollectEntries[Out <: DmnValueType: InOutEncoder: InOutDecoder: Schema]( result: Seq[Out] ): - lazy val toCamunda: Seq[CamundaVariable] = + lazy val toCamunda: Seq[CamundaVariable] = result.map(CamundaVariable.valueToCamunda) val decisionResultType: DecisionResultType = DecisionResultType.collectEntries end CollectEntries @@ -198,7 +198,7 @@ case class SingleResult[Out <: Product: InOutEncoder: InOutDecoder: Schema](resu lazy val toCamunda: Map[String, CamundaVariable] = CamundaVariable.toCamunda(result) - val decisionResultType: DecisionResultType = DecisionResultType.singleResult + val decisionResultType: DecisionResultType = DecisionResultType.singleResult end SingleResult object SingleResult: @@ -237,7 +237,7 @@ case class ResultList[Out <: Product: InOutEncoder: InOutDecoder: Schema]( lazy val toCamunda: Seq[Map[String, CamundaVariable]] = result.map(CamundaVariable.toCamunda) - val decisionResultType: DecisionResultType = DecisionResultType.resultList + val decisionResultType: DecisionResultType = DecisionResultType.resultList end ResultList object ResultList: @@ -318,18 +318,16 @@ extension (output: Product) output.productIterator.size == 1 && (output.productIterator.next() match case _: DmnValueType => true - case _ => false - ) + case _ => false) def isSingleResult = output.productIterator.size == 1 && (output.productIterator.next() match case _: Iterable[?] => false - case p: Product => + case p: Product => p.productIterator.size > 1 && p.productIterator.forall(_.isInstanceOf[DmnValueType]) - case _ => false - ) + case _ => false) def isCollectEntries: Boolean = output.productIterator.size == 1 && @@ -337,11 +335,10 @@ extension (output: Product) case p: Iterable[?] => p.headOption match case Some(p: DmnValueType) => true - case o => false - case o => false - ) + case o => false + case o => false) - def isResultList = + def isResultList = output.productIterator.size == 1 && (output.productIterator.next() match case p: Iterable[?] => @@ -349,9 +346,8 @@ extension (output: Product) case Some(p: Product) => p.productIterator.size > 1 && p.productIterator.forall(_.isInstanceOf[DmnValueType]) - case o => false - case o => false - ) + case o => false + case o => false) def hasManyOutputVars: Boolean = isSingleResult || isResultList end extension // Product diff --git a/02-bpmn/src/main/scala/camundala/bpmn/exports.scala b/02-bpmn/src/main/scala/camundala/bpmn/exports.scala index c3d3ee5d..00622cae 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/exports.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/exports.scala @@ -103,18 +103,23 @@ object GeneralVariables: given InOutCodec[GeneralVariables] = CirceCodec.from(decoder, deriveInOutEncoder) given ApiSchema[GeneralVariables] = deriveApiSchema - implicit val decoder: Decoder[GeneralVariables] = new Decoder[GeneralVariables] : + implicit val decoder: Decoder[GeneralVariables] = new Decoder[GeneralVariables]: final def apply(c: HCursor): Decoder.Result[GeneralVariables] = for - servicesMocked <- c.downField("servicesMocked").as[Option[Boolean]].map(_.getOrElse(false)) - mockedWorkers <- c.downField("mockedWorkers").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) - outputMock <- c.downField("outputMock").as[Option[Json]] - outputServiceMock <- c.downField("outputServiceMock").as[Option[Json]] - manualOutMapping <- c.downField("manualOutMapping").as[Option[Boolean]].map(_.getOrElse(false)) - outputVariables <- c.downField("outputVariables").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) - handledErrors <- c.downField("handledErrors").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) - regexHandledErrors <- c.downField("regexHandledErrors").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) - impersonateUserId <- c.downField("impersonateUserId").as[Option[String]] + servicesMocked <- c.downField("servicesMocked").as[Option[Boolean]].map(_.getOrElse(false)) + mockedWorkers <- + c.downField("mockedWorkers").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) + outputMock <- c.downField("outputMock").as[Option[Json]] + outputServiceMock <- c.downField("outputServiceMock").as[Option[Json]] + manualOutMapping <- + c.downField("manualOutMapping").as[Option[Boolean]].map(_.getOrElse(false)) + outputVariables <- + c.downField("outputVariables").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) + handledErrors <- + c.downField("handledErrors").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) + regexHandledErrors <- + c.downField("regexHandledErrors").as[Option[Seq[String]]].map(_.getOrElse(Seq.empty)) + impersonateUserId <- c.downField("impersonateUserId").as[Option[String]] yield GeneralVariables( servicesMocked, mockedWorkers, @@ -201,33 +206,33 @@ lazy val NewName = """^.+\-(.+V.+\-(.+))$""".r // mycompany-myproject-myproces lazy val OldName1 = """^.+\-(.+\.(post|get|patch|put|delete))$""".r // mycompany-myproject-myprocessV1.MyWorker.get or mycompany-myproject-MyWorker.get - use NewName for the new naming convention lazy val OldName2 = - """^.+\-(.+V.+\.(.+))$""".r // mycompany-myproject-myprocessV1.MyWorker - use NewName for the new naming convention + """^.+\-(.+V.+\.(.+))$""".r // mycompany-myproject-myprocessV1.MyWorker - use NewName for the new naming convention lazy val OldName31 = - """^.+\-.+(\-(.+\-..+\-.+))$""".r // mycompany-myproject-myprocess-other-MyWorker - use NewName for the new naming convention + """^.+\-.+(\-(.+\-..+\-.+))$""".r // mycompany-myproject-myprocess-other-MyWorker - use NewName for the new naming convention lazy val OldName32 = - """^.+\-.+(\-(.+\-.+))$""".r // mycompany-myproject-myprocess-MyWorker - use NewName for the new naming convention + """^.+\-.+(\-(.+\-.+))$""".r // mycompany-myproject-myprocess-MyWorker - use NewName for the new naming convention lazy val OldName4 = - """^.+\-.+\-(.+)$""".r // mycompany-myproject-myprocess.MyWorker - use NewName for the new naming convention + """^.+\-.+\-(.+)$""".r // mycompany-myproject-myprocess.MyWorker - use NewName for the new naming convention def shortenName(name: String): String = name match - case OldName1(n, _) if n.count(_ == '.') == 1 => + case OldName1(n, _) if n.count(_ == '.') == 1 => n - case OldName1(n, _) => + case OldName1(n, _) => println("OldName1+: " + n) n.split("\\.").drop(1).mkString(".") - case NewName(_, n) => + case NewName(_, n) => println("NewName: " + n) n - case OldName2(_, n) => + case OldName2(_, n) => n - case OldName31(_, n) => + case OldName31(_, n) => n - case OldName32(_, n) => + case OldName32(_, n) => n - case OldName4(n) => + case OldName4(n) => n - case _ => // something else + case _ => // something else name lazy val diagramPath: os.RelPath = os.rel / "src" / "main" / "resources" / "camunda" diff --git a/02-bpmn/src/main/scala/camundala/bpmn/model.scala b/02-bpmn/src/main/scala/camundala/bpmn/model.scala index 0a271a0d..2cb69006 100644 --- a/02-bpmn/src/main/scala/camundala/bpmn/model.scala +++ b/02-bpmn/src/main/scala/camundala/bpmn/model.scala @@ -45,16 +45,16 @@ trait InOut[ def otherEnumInExamples: Option[Seq[In]] def otherEnumOutExamples: Option[Seq[Out]] - lazy val id: String = inOutDescr.id + lazy val id: String = inOutDescr.id lazy val descr: Option[String] = inOutDescr.descr - lazy val in: In = inOutDescr.in - lazy val out: Out = inOutDescr.out + lazy val in: In = inOutDescr.in + lazy val out: Out = inOutDescr.out - def camundaInMap: Map[String, CamundaVariable] = + def camundaInMap: Map[String, CamundaVariable] = CamundaVariable.toCamunda(in) lazy val camundaOutMap: Map[String, CamundaVariable] = CamundaVariable.toCamunda(out) - def camundaToCheckMap: Map[String, CamundaVariable] = + def camundaToCheckMap: Map[String, CamundaVariable] = camundaOutMap.filterNot(_._1 == "type") // type used for Sum types - cannot be tested def withInOutDescr(inOutDescr: InOutDescr[In, Out]): T @@ -85,7 +85,7 @@ end InOut trait ProcessElement extends Product: def id: String def typeName: String = getClass.getSimpleName - def label: String = typeName.head.toString.toLowerCase + typeName.tail + def label: String = typeName.head.toString.toLowerCase + typeName.tail def descr: Option[String] end ProcessElement @@ -231,7 +231,7 @@ enum StartEventType: object StartEventType: given InOutCodec[StartEventType] = deriveCodec - given ApiSchema[StartEventType] = deriveApiSchema + given ApiSchema[StartEventType] = deriveApiSchema sealed trait ExternalTask[ In <: Product: InOutEncoder: InOutDecoder: Schema, @@ -243,22 +243,22 @@ sealed trait ExternalTask[ protected def outputVariables: Seq[String] protected def handledErrors: Seq[ErrorCodeType] protected def regexHandledErrors: Seq[String] - lazy val inOutType: InOutType = InOutType.Worker + lazy val inOutType: InOutType = InOutType.Worker def processName: String = GenericExternalTaskProcessName - override def camundaInMap: Map[String, CamundaVariable] = + override def camundaInMap: Map[String, CamundaVariable] = super.camundaInMap + - (InputParams.handledErrors.toString -> CamundaVariable.valueToCamunda( + (InputParams.handledErrors.toString -> CamundaVariable.valueToCamunda( handledErrors.map(_.toString).asJson.deepDropNullValues )) + (InputParams.regexHandledErrors.toString -> CamundaVariable .valueToCamunda(regexHandledErrors.asJson.deepDropNullValues)) + - (InputParams.topicName.toString -> CamundaVariable + (InputParams.topicName.toString -> CamundaVariable .valueToCamunda(topicName)) + - (InputParams.manualOutMapping.toString -> CamundaVariable + (InputParams.manualOutMapping.toString -> CamundaVariable .valueToCamunda(manualOutMapping)) + - (InputParams.outputVariables.toString -> CamundaVariable + (InputParams.outputVariables.toString -> CamundaVariable .valueToCamunda(outputVariables.asJson.deepDropNullValues)) end ExternalTask @@ -289,7 +289,7 @@ case class ServiceTask[ ) extends ExternalTask[In, Out, ServiceTask[In, Out, ServiceIn, ServiceOut]]: lazy val dynamicOutMock: Option[In => Out] = None @deprecated("Use _topicName_") - lazy val serviceName: String = inOutDescr.id + lazy val serviceName: String = inOutDescr.id def withInOutDescr( descr: InOutDescr[In, Out] @@ -304,7 +304,8 @@ case class ServiceTask[ def mockWith(outputMock: Out): ServiceTask[In, Out, ServiceIn, ServiceOut] = copy(outputMock = Some(outputMock)) - def mockWith(outputMock: In => MockedServiceResponse[ServiceOut]): ServiceTask[In, Out, ServiceIn, ServiceOut] = + def mockWith(outputMock: In => MockedServiceResponse[ServiceOut]) + : ServiceTask[In, Out, ServiceIn, ServiceOut] = copy(dynamicServiceOutMock = Some(outputMock)) def mockServicesWithDefault: ServiceTask[In, Out, ServiceIn, ServiceOut] = @@ -588,7 +589,7 @@ end SignalEvent object SignalEvent: - val Dynamic_ProcessInstance = "{processInstanceId}" + val Dynamic_ProcessInstance = "{processInstanceId}" def init(id: String): SignalEvent[NoInput] = SignalEvent( id, @@ -600,7 +601,7 @@ case class TimerEvent( title: String, inOutDescr: InOutDescr[NoInput, NoOutput] ) extends ReceiveEvent[NoInput, TimerEvent]: - lazy val inOutType: InOutType = InOutType.Timer + lazy val inOutType: InOutType = InOutType.Timer lazy val otherEnumInExamples: Option[Seq[NoInput]] = None def withInOutDescr(descr: InOutDescr[NoInput, NoOutput]): TimerEvent = @@ -615,24 +616,24 @@ end TimerEvent def valueToJson(value: Any): Json = value match - case v: Int => + case v: Int => Json.fromInt(v) - case v: Long => + case v: Long => Json.fromLong(v) - case v: Boolean => + case v: Boolean => Json.fromBoolean(v) - case v: Float => + case v: Float => Json.fromFloat(v).getOrElse(Json.Null) - case v: Double => + case v: Double => Json.fromDouble(v).getOrElse(Json.Null) - case null => + case null => Json.Null - case ld: LocalDate => + case ld: LocalDate => Json.fromString(ld.toString) case ldt: LocalDateTime => Json.fromString(ldt.toString) case zdt: ZonedDateTime => Json.fromString(zdt.toString) - case v => + case v => Json.fromString(v.toString) end valueToJson diff --git a/02-bpmn/src/test/scala/camundala/bpmn/CamundaVariableTest.scala b/02-bpmn/src/test/scala/camundala/bpmn/CamundaVariableTest.scala index fc478655..6854a108 100644 --- a/02-bpmn/src/test/scala/camundala/bpmn/CamundaVariableTest.scala +++ b/02-bpmn/src/test/scala/camundala/bpmn/CamundaVariableTest.scala @@ -21,10 +21,10 @@ class CamundaVariableTest extends FunSuite: variable, Map( "addressChangeCountryPolicy" -> CBoolean(true), - "expiresInDays" -> CInteger(3), - "staffMemberId" -> CLong(2L), - "leadInstruction" -> CString("hello"), - "other" -> CJson( + "expiresInDays" -> CInteger(3), + "staffMemberId" -> CLong(2L), + "leadInstruction" -> CString("hello"), + "other" -> CJson( """{ | "other" : true |}""".stripMargin @@ -37,9 +37,9 @@ class CamundaVariableTest extends FunSuite: assertEquals( variable, Map( - "other" -> CBoolean(true), + "other" -> CBoolean(true) ) - ) + ) end CamundaVariableTest @@ -52,7 +52,7 @@ case class Out( ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveInOutCodec case class Other( @@ -60,5 +60,5 @@ case class Other( ) object Other: - given ApiSchema[Other] = deriveApiSchema + given ApiSchema[Other] = deriveApiSchema given InOutCodec[Other] = deriveInOutCodec diff --git a/02-bpmn/src/test/scala/camundala/bpmn/exportsTest.scala b/02-bpmn/src/test/scala/camundala/bpmn/exportsTest.scala index 0d6110f5..9c385ea4 100644 --- a/02-bpmn/src/test/scala/camundala/bpmn/exportsTest.scala +++ b/02-bpmn/src/test/scala/camundala/bpmn/exportsTest.scala @@ -41,8 +41,6 @@ class exportsTest extends munit.FunSuite: "myprocess-GetMyWorker" ) - - test("mycompany-myproject-myprocess.MyWorker OLD4"): assertEquals( shortenName("mycompany-myproject-myprocess.MyWorker"), @@ -61,6 +59,4 @@ class exportsTest extends munit.FunSuite: "mycompany-myproject.myprocess.GetMyWorker" ) - - -end exportsTest \ No newline at end of file +end exportsTest diff --git a/03-api/src/main/scala/camundala/api/AbstractApiCreator.scala b/03-api/src/main/scala/camundala/api/AbstractApiCreator.scala index 2a109784..e78caf14 100644 --- a/03-api/src/main/scala/camundala/api/AbstractApiCreator.scala +++ b/03-api/src/main/scala/camundala/api/AbstractApiCreator.scala @@ -28,7 +28,7 @@ trait AbstractApiCreator extends ProcessReferenceCreator: groupAnchor: Option[String] = None ): String = val projName = s"${apiConfig.docBaseUrl}/$projectName" - val anchor = groupAnchor + val anchor = groupAnchor .map(_ => s"operation/${name.replace(" ", "%20")}" ) @@ -40,8 +40,8 @@ trait AbstractApiCreator extends ProcessReferenceCreator: def endpointName: String = val name = (inOutApi, inOutApi.inOut.in) match case (_: ServiceWorkerApi[?, ?, ?, ?], _) => inOutApi.inOutDescr.shortName - case (_, gs: GenericServiceIn) => gs.shortServiceName - case _ => inOutApi.inOutDescr.shortName + case (_, gs: GenericServiceIn) => gs.shortServiceName + case _ => inOutApi.inOutDescr.shortName s"${inOutApi.inOutType}: $name" end extension diff --git a/03-api/src/main/scala/camundala/api/ApiBaseDsl.scala b/03-api/src/main/scala/camundala/api/ApiBaseDsl.scala index 6db63456..97c5c221 100644 --- a/03-api/src/main/scala/camundala/api/ApiBaseDsl.scala +++ b/03-api/src/main/scala/camundala/api/ApiBaseDsl.scala @@ -24,7 +24,7 @@ trait ApiBaseDsl: def api[ In <: Product: InOutEncoder: InOutDecoder: Schema, Out <: Product: InOutEncoder: InOutDecoder: Schema: ClassTag, - InitIn <: Product: InOutEncoder: InOutDecoder: Schema, + InitIn <: Product: InOutEncoder: InOutDecoder: Schema ](pApi: ProcessApi[In, Out, InitIn])(body: InOutApi[?, ?]*): ProcessApi[In, Out, InitIn] = pApi.withApis(body.toList) diff --git a/03-api/src/main/scala/camundala/api/ApiConfig.scala b/03-api/src/main/scala/camundala/api/ApiConfig.scala index d121a4b6..bb48a271 100644 --- a/03-api/src/main/scala/camundala/api/ApiConfig.scala +++ b/03-api/src/main/scala/camundala/api/ApiConfig.scala @@ -40,7 +40,7 @@ case class ApiConfig( .distinct lazy val init: Unit = projectsConfig.init(tempGitDir) - + def withTenantId(tenantId: String): ApiConfig = copy(tenantId = Some(tenantId)) @@ -94,10 +94,10 @@ object ApiConfig: end ApiConfig case class ProjectsConfig( - // Path to your ApiProjectConf - default is os.pwd / PROJECT.conf - projectConfPath: os.RelPath = defaultProjectConfigPath, - // grouped configs per GitRepos - so it is possible to use projects from different Repos - perGitRepoConfigs: Seq[ProjectsPerGitRepoConfig] = Seq.empty + // Path to your ApiProjectConf - default is os.pwd / PROJECT.conf + projectConfPath: os.RelPath = defaultProjectConfigPath, + // grouped configs per GitRepos - so it is possible to use projects from different Repos + perGitRepoConfigs: Seq[ProjectsPerGitRepoConfig] = Seq.empty ): lazy val isConfigured: Boolean = perGitRepoConfigs.nonEmpty @@ -126,10 +126,10 @@ case class ProjectsConfig( lazy val colors: Seq[(String, String)] = projectConfigs.map { project => project.name -> project.color } - - def colorForId(refName:String, ownProjectName: String): Option[(String, String)] = + + def colorForId(refName: String, ownProjectName: String): Option[(String, String)] = colors.find: - case (id, _) => refName.startsWith(id) && ! refName.startsWith(ownProjectName) + case (id, _) => refName.startsWith(id) && !refName.startsWith(ownProjectName) def hasProjectGroup( projectName: String, @@ -146,7 +146,7 @@ case class ProjectsConfig( .replace( s"${projectName.replace(s"$companyId-", "")}-", "" - ) // myproject-myprocess -> myprocess + ) // myproject-myprocess -> myprocess end refIdentShort // if projectName is not known @@ -155,7 +155,7 @@ case class ProjectsConfig( projectNames.find(refIdent.startsWith) .map(pn => - refIdent.replace(s"$pn-", "") // case myCompany-myProject-myProcess + refIdent.replace(s"$pn-", "") // case myCompany-myProject-myProcess .replace(s"$companyId-", "") // case myCompany-myProject > where no myProcess ) .orElse( // case myProject-myProcess @@ -173,7 +173,7 @@ case class ProjectsConfig( .map(_.name) .getOrElse("NO PROJECT FOUND") end projectNameForRef - + end ProjectsConfig case class ProjectsPerGitRepoConfig( diff --git a/03-api/src/main/scala/camundala/api/ApiCreator.scala b/03-api/src/main/scala/camundala/api/ApiCreator.scala index 29c73e7f..3f2e741c 100644 --- a/03-api/src/main/scala/camundala/api/ApiCreator.scala +++ b/03-api/src/main/scala/camundala/api/ApiCreator.scala @@ -27,7 +27,12 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: def document(apis: CApi*): Unit = val apiDoc = ApiDoc(apis.toList) apiConfig.init // pulls all dependencies. - ModelerTemplGenerator(version, apiConfig.modelerTemplateConfig, projectName, apiProjectConfig.companyName).generate( + ModelerTemplGenerator( + version, + apiConfig.modelerTemplateConfig, + projectName, + apiProjectConfig.companyName + ).generate( collectApis(apiDoc) ) ModelerTemplUpdater(apiConfig, apiProjectConfig).update() @@ -281,7 +286,8 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: protected def dependencies: String = - def docPortal(projectName: String) = s"${apiConfig.docBaseUrl.getOrElse("NOT_SET")}/$projectName/OpenApi.html" + def docPortal(projectName: String) = + s"${apiConfig.docBaseUrl.getOrElse("NOT_SET")}/$projectName/OpenApi.html" val projects = apiConfig.projectsConfig.perGitRepoConfigs.flatMap(_.projects) println(s"Projects: $projects") @@ -292,7 +298,9 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: | |${ docProjectConfig.dependencies - .map(dep => s"- _**[${dep.projectName}](${documentations.getOrElse(dep.projectName, "NOT FOUND")})**_") + .map(dep => + s"- _**[${dep.projectName}](${documentations.getOrElse(dep.projectName, "NOT FOUND")})**_" + ) .mkString("\n") } |""".stripMargin @@ -398,7 +406,7 @@ trait ApiCreator extends PostmanApiCreator, TapirApiCreator, App: s"""It is also possible to use a _comma separated_ String, |like `"$example"`""".stripMargin - private lazy val packageConfPath = apiConfig.basePath / apiConfig.projectsConfig.projectConfPath - private lazy val docProjectConfig = DocProjectConfig(apiProjectConfig) + private lazy val packageConfPath = apiConfig.basePath / apiConfig.projectsConfig.projectConfPath + private lazy val docProjectConfig = DocProjectConfig(apiProjectConfig) end ApiCreator diff --git a/03-api/src/main/scala/camundala/api/ApiProjectConfig.scala b/03-api/src/main/scala/camundala/api/ApiProjectConfig.scala index 4d7493e1..f5e4976e 100644 --- a/03-api/src/main/scala/camundala/api/ApiProjectConfig.scala +++ b/03-api/src/main/scala/camundala/api/ApiProjectConfig.scala @@ -77,7 +77,7 @@ case class VersionConfig(major: Int, minor: Int, patch: Int, isSnapshot: Boolean lazy val versionAsInt: Int = major * 100000 + minor * 1000 + patch - override def toString: String = s"$minorVersion.$patch${if isSnapshot then "-SNAPSHOT" else ""}" + override def toString: String = s"$minorVersion.$patch${if isSnapshot then "-SNAPSHOT" else ""}" def isHigherThan(config: VersionConfig): Boolean = versionAsInt > config.versionAsInt end VersionConfig diff --git a/03-api/src/main/scala/camundala/api/CamundaPostmanApiCreator.scala b/03-api/src/main/scala/camundala/api/CamundaPostmanApiCreator.scala index edfd5be6..5d8c2311 100644 --- a/03-api/src/main/scala/camundala/api/CamundaPostmanApiCreator.scala +++ b/03-api/src/main/scala/camundala/api/CamundaPostmanApiCreator.scala @@ -75,9 +75,9 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: process.inOut.startEventType match case StartEventType.Message => correlateMessage(tag) - case StartEventType.Signal => + case StartEventType.Signal => sendSignal(tag) - case _ => + case _ => startProcessNone(tag, isGroup) end startProcess @@ -85,7 +85,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: tag: String, isGroup: Boolean ): PublicEndpoint[?, Unit, ?, Any] = - val path = + val path = tenantIdPath( "process-definition" / "key" / process.endpointPath(isGroup), "start" @@ -105,7 +105,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: end startProcessNone private def correlateMessage(tag: String): PublicEndpoint[?, Unit, ?, Any] = - val path = "message" / s"--REMOVE:${process.id}--" + val path = "message" / s"--REMOVE:${process.id}--" val input = process .toPostmanInput((example: FormVariables) => CorrelateMessageIn( @@ -129,7 +129,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: end correlateMessage private def sendSignal(tag: String): PublicEndpoint[?, Unit, ?, Any] = - val path = "signal" / s"--REMOVE:${process.id}--" + val path = "signal" / s"--REMOVE:${process.id}--" val input = process .toPostmanInput((example: FormVariables) => SendSignalIn( @@ -158,7 +158,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: def startProcess( tag: String ): PublicEndpoint[?, Unit, ?, Any] = - val path = + val path = tenantIdPath( "process-definition" / "key" / externalTaskApi.processName, s"start--REMOVE:${externalTaskApi.id}--" @@ -178,7 +178,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: end startProcess private def correlateMessage(tag: String): PublicEndpoint[?, Unit, ?, Any] = - val path = "message" / s"--REMOVE:${externalTaskApi.id}--" + val path = "message" / s"--REMOVE:${externalTaskApi.id}--" val input = externalTaskApi .toPostmanInput((example: FormVariables) => CorrelateMessageIn( @@ -202,7 +202,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: end correlateMessage private def sendSignal(tag: String): PublicEndpoint[?, Unit, ?, Any] = - val path = "signal" / s"--REMOVE:${externalTaskApi.id}--" + val path = "signal" / s"--REMOVE:${externalTaskApi.id}--" val input = externalTaskApi .toPostmanInput((example: FormVariables) => SendSignalIn( @@ -282,15 +282,15 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: def evaluateDecision(tag: String): PublicEndpoint[?, Unit, ?, Any] = val decisionDmn = api.inOut.asInstanceOf[DecisionDmn[?, ?]] - val path = tenantIdPath( + val path = tenantIdPath( "decision-definition" / "key" / definitionKeyPath( decisionDmn.decisionDefinitionKey ) / s"--REMOVE:${api.id}--", "evaluate" ) - val input = api + val input = api .toPostmanInput((example: FormVariables) => EvaluateDecisionIn(example)) - val descr = s""" + val descr = s""" |${api.descr} | |Decision DMN: @@ -304,7 +304,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: def correlateMessage(tag: String): PublicEndpoint[?, Unit, ?, Any] = val event = api.inOut.asInstanceOf[MessageEvent[?]] - val path = "message" / s"--REMOVE:${event.messageName}--" + val path = "message" / s"--REMOVE:${event.messageName}--" val input = api .toPostmanInput((example: FormVariables) => CorrelateMessageIn( @@ -328,7 +328,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: def sendSignal(tag: String): PublicEndpoint[?, Unit, ?, Any] = val event = api.inOut.asInstanceOf[SignalEvent[?]] - val path = "signal" / s"--REMOVE:${event.messageName}--" + val path = "signal" / s"--REMOVE:${event.messageName}--" val input = api .toPostmanInput((example: FormVariables) => SendSignalIn( @@ -363,7 +363,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: def executeTimer(tag: String): PublicEndpoint[?, Unit, ?, Any] = val event = api.inOut.asInstanceOf[TimerEvent] - val path = "job" / jobIdPath() / "execute" / s"--REMOVE:${event.id}--" + val path = "job" / jobIdPath() / "execute" / s"--REMOVE:${event.id}--" api .postmanBaseEndpoint(tag, None, "ExecuteTimer", Some(api.descr)) .in(path) @@ -382,7 +382,7 @@ trait CamundaPostmanApiCreator extends PostmanApiCreator: inOutApi.inOut.in match case _: NoInput => None - case _ => + case _ => Some( jsonBody[T] .examples(examples.map { case ex @ InOutExample(label, _) => diff --git a/03-api/src/main/scala/camundala/api/DocProjectConfig.scala b/03-api/src/main/scala/camundala/api/DocProjectConfig.scala index bc9b8f64..3fd165aa 100644 --- a/03-api/src/main/scala/camundala/api/DocProjectConfig.scala +++ b/03-api/src/main/scala/camundala/api/DocProjectConfig.scala @@ -55,5 +55,5 @@ object DocProjectConfig: isWorker ) end apply - + end DocProjectConfig diff --git a/03-api/src/main/scala/camundala/api/ModelerTemplGenerator.scala b/03-api/src/main/scala/camundala/api/ModelerTemplGenerator.scala index 0aeb63a7..33b64112 100644 --- a/03-api/src/main/scala/camundala/api/ModelerTemplGenerator.scala +++ b/03-api/src/main/scala/camundala/api/ModelerTemplGenerator.scala @@ -15,13 +15,13 @@ final case class ModelerTemplGenerator( def generate(apis: List[InOutApi[?, ?]]): Unit = os.makeDir.all(config.templatePath) apis.foreach: - case api: ExternalTaskApi[?, ?] => + case api: ExternalTaskApi[?, ?] => println(s"ExternalTaskApi supported for Modeler Template: ${api.id}") generateTempl(api) case api: ProcessApi[?, ?, ?] if !api.inOut.in.isInstanceOf[GenericServiceIn] => println(s"ProcessApi supported for Modeler Template: ${api.id} - ${api.name}") generateTempl(api) - case api => + case api => println( s"API NOT supported for Modeler Template: ${api.getClass.getSimpleName} - ${api.id}" ) @@ -44,7 +44,7 @@ final case class ModelerTemplGenerator( else PropType.`camunda:outputParameter` ) val niceName = inOut.niceName.replace(s"${companyName.head.toUpper}${companyName.tail} ", "") - val templ = MTemplate( + val templ = MTemplate( inOut.id, inOut.id, inOut.descr.getOrElse("").split("---").head, @@ -78,7 +78,7 @@ final case class ModelerTemplGenerator( private def generateTempl(inOut: ExternalTaskApi[?, ?]): Unit = val vars = inOut match case _: ServiceWorkerApi[?, ?, ?, ?] => TemplMapperHelper.serviceWorkerVariables - case _ => TemplMapperHelper.customWorkerVariables + case _ => TemplMapperHelper.customWorkerVariables generateTempl( inOut.inOutDescr, AppliesTo.activity, @@ -104,15 +104,15 @@ final case class ModelerTemplGenerator( TemplMapperHelper.mapping(name, value) else name, binding = propType match - case PropType.`camunda:in` => PropBinding.`camunda:in`( + case PropType.`camunda:in` => PropBinding.`camunda:in`( `type` = propType, target = name ) - case PropType.`camunda:out` => PropBinding.`camunda:out`( + case PropType.`camunda:out` => PropBinding.`camunda:out`( `type` = propType, source = name ) - case PropType.`camunda:inputParameter` => PropBinding.`camunda:inputParameter`( + case PropType.`camunda:inputParameter` => PropBinding.`camunda:inputParameter`( `type` = propType, name = name ) @@ -120,7 +120,7 @@ final case class ModelerTemplGenerator( `type` = propType, source = TemplMapperHelper.mapping(name, value) ) - case _ => + case _ => throw new IllegalArgumentException(s"PropType not expected for mappings: $propType") ) end mappings @@ -168,7 +168,7 @@ final case class MTemplate( object MTemplate: given InOutCodec[MTemplate] = deriveInOutCodec - given ApiSchema[MTemplate] = deriveApiSchema + given ApiSchema[MTemplate] = deriveApiSchema final case class ElementType( value: AppliesTo @@ -176,10 +176,10 @@ final case class ElementType( object ElementType: lazy val callActivity: ElementType = ElementType(AppliesTo.`bpmn:CallActivity`) - lazy val serviceTask: ElementType = ElementType(AppliesTo.`bpmn:ServiceTask`) + lazy val serviceTask: ElementType = ElementType(AppliesTo.`bpmn:ServiceTask`) given InOutCodec[ElementType] = deriveInOutCodec - given ApiSchema[ElementType] = deriveApiSchema + given ApiSchema[ElementType] = deriveApiSchema end ElementType final case class TemplProp( @@ -192,19 +192,19 @@ final case class TemplProp( ) object TemplProp: - lazy val businessKey = TemplProp( + lazy val businessKey = TemplProp( `type` = TemplType.Hidden, value = "#{execution.processBusinessKey}", // group = Some(PropGroup.callActivity.id), binding = PropBinding.`camunda:in:businessKey`() ) - def name(value: String) = TemplProp( + def name(value: String) = TemplProp( `type` = TemplType.Hidden, value = value, // group = Some(PropGroup.callActivity.id), binding = PropBinding.property(name = "name") ) - def calledElement(value: String) = TemplProp( + def calledElement(value: String) = TemplProp( `type` = TemplType.Hidden, value = value, // group = Some(PropGroup.callActivity.id), @@ -216,14 +216,14 @@ object TemplProp: value = value, binding = PropBinding.property(name = "camunda:topic") ) - lazy val serviceTaskType = TemplProp( + lazy val serviceTaskType = TemplProp( `type` = TemplType.Hidden, value = "external", binding = PropBinding.property(name = "camunda:type") ) given InOutCodec[TemplProp] = deriveInOutCodec - given ApiSchema[TemplProp] = deriveApiSchema + given ApiSchema[TemplProp] = deriveApiSchema end TemplProp enum PropBinding: @@ -256,7 +256,7 @@ end PropBinding object PropBinding: given InOutCodec[PropBinding] = deriveInOutCodec - given ApiSchema[PropBinding] = deriveApiSchema + given ApiSchema[PropBinding] = deriveApiSchema final case class PropGroup( id: PropGroupId, @@ -268,55 +268,55 @@ object PropGroup: PropGroupId.calledProcess, "Called Process" ) - val inMappings = PropGroup( + val inMappings = PropGroup( PropGroupId.inMappings, "In Mappings" ) - val outMapping = PropGroup( + val outMapping = PropGroup( PropGroupId.outMappings, "Out Mappings" ) - val inputs = PropGroup( + val inputs = PropGroup( PropGroupId.inputs, "Inputs" ) - val outputs = PropGroup( + val outputs = PropGroup( PropGroupId.outputs, "Outputs" ) given InOutCodec[PropGroup] = deriveInOutCodec - given ApiSchema[PropGroup] = deriveApiSchema + given ApiSchema[PropGroup] = deriveApiSchema end PropGroup enum TemplType: case String, Text, Boolean, Dropdown, Hidden object TemplType: given InOutCodec[TemplType] = deriveEnumInOutCodec - given ApiSchema[TemplType] = deriveApiSchema + given ApiSchema[TemplType] = deriveApiSchema enum PropType: case property, `camunda:in:businessKey`, `camunda:in`, `camunda:out`, `camunda:inputParameter`, `camunda:outputParameter` object PropType: given InOutCodec[PropType] = deriveEnumInOutCodec - given ApiSchema[PropType] = deriveApiSchema + given ApiSchema[PropType] = deriveApiSchema enum PropGroupId: case calledProcess, inMappings, outMappings, inputs, outputs object PropGroupId: given InOutCodec[PropGroupId] = deriveEnumInOutCodec - given ApiSchema[PropGroupId] = deriveApiSchema + given ApiSchema[PropGroupId] = deriveApiSchema enum AppliesTo: case `bpmn:Activity`, `bpmn:CallActivity`, `bpmn:ServiceTask` object AppliesTo: - lazy val activity = Seq(AppliesTo.`bpmn:Activity`) // all + lazy val activity = Seq(AppliesTo.`bpmn:Activity`) // all lazy val callActivity = Seq(AppliesTo.`bpmn:CallActivity`) - lazy val serviceTask = Seq(AppliesTo.`bpmn:ServiceTask`) + lazy val serviceTask = Seq(AppliesTo.`bpmn:ServiceTask`) given InOutCodec[AppliesTo] = deriveEnumInOutCodec - given ApiSchema[AppliesTo] = deriveApiSchema + given ApiSchema[AppliesTo] = deriveApiSchema end AppliesTo case class InputParamForTempl( @@ -347,7 +347,7 @@ object TemplMapperHelper: InputParamForTempl(outputVariables, _.productElementNames.mkString(", ")), optionalMapping(outputMock), InputParamForTempl(handledErrors, "handledError1, handledError2"), - InputParamForTempl(regexHandledErrors, "errorRegex1, errorRegex2"), + InputParamForTempl(regexHandledErrors, "errorRegex1, errorRegex2") ) def processVariables: Seq[InputParamForTempl] = Seq( @@ -366,6 +366,6 @@ object TemplMapperHelper: def mapping(name: String, elem: Any): String = elem match case _: Option[?] => optionalMapping(name) - case _ => s"#{$name}" + case _ => s"#{$name}" end TemplMapperHelper diff --git a/03-api/src/main/scala/camundala/api/ModelerTemplUpdater.scala b/03-api/src/main/scala/camundala/api/ModelerTemplUpdater.scala index 89c2311d..b28a1e43 100644 --- a/03-api/src/main/scala/camundala/api/ModelerTemplUpdater.scala +++ b/03-api/src/main/scala/camundala/api/ModelerTemplUpdater.scala @@ -10,7 +10,7 @@ import scala.xml.* import scala.xml.transform.{RewriteRule, RuleTransformer} case class ModelerTemplUpdater(apiConfig: ApiConfig, apiProjectConfig: ApiProjectConfig): - + def update(): Unit = updateTemplates() updateBpmnColors() @@ -18,7 +18,7 @@ case class ModelerTemplUpdater(apiConfig: ApiConfig, apiProjectConfig: ApiProjec private def updateTemplates(): Unit = docProjectConfig.dependencies .foreach: c => - val toPath = templConfig.templatePath / "dependencies" + val toPath = templConfig.templatePath / "dependencies" os.makeDir.all(toPath) val fromPath = apiConfig.tempGitDir / c.projectName / templConfig.templateRelativePath println(s"Fetch dependencies: ${c.projectName} > $fromPath") @@ -60,19 +60,19 @@ case class ModelerTemplUpdater(apiConfig: ApiConfig, apiProjectConfig: ApiProjec .map: extractUsesRefs end updateBpmnColors - - private lazy val templConfig = apiConfig.modelerTemplateConfig - private lazy val projectsConfig = apiConfig.projectsConfig + + private lazy val templConfig = apiConfig.modelerTemplateConfig + private lazy val projectsConfig = apiConfig.projectsConfig private lazy val docProjectConfig: DocProjectConfig = DocProjectConfig(apiProjectConfig) - private lazy val colorMap = apiConfig.projectsConfig.colors.toMap + private lazy val colorMap = apiConfig.projectsConfig.colors.toMap private def extractUsesRefs(bpmnPath: os.Path, xmlStr: String) = println(s" - ${bpmnPath.last}") - val xml: Node = XML.load(new StringReader(xmlStr)) + val xml: Node = XML.load(new StringReader(xmlStr)) val callActivities = (xml \\ "callActivity") .map: ca => val calledElement = ca \@ "calledElement" - val id = ca \@ "id" + val id = ca \@ "id" println(s"CHANGED -> $calledElement > $id --") calledElement -> id @@ -81,7 +81,7 @@ case class ModelerTemplUpdater(apiConfig: ApiConfig, apiProjectConfig: ApiProjec val workerRef = br .attribute("http://camunda.org/schema/1.0/bpmn", "topic") .get - val id = br \@ "id" + val id = br \@ "id" println(s"CHANGED workerRef -> $workerRef > $id --") workerRef.toString -> id @@ -90,7 +90,7 @@ case class ModelerTemplUpdater(apiConfig: ApiConfig, apiProjectConfig: ApiProjec val decisionRef = br .attribute("http://camunda.org/schema/1.0/bpmn", "decisionRef") .get - val id = br \@ "id" + val id = br \@ "id" println(s"CHANGED decisionRef -> $decisionRef > $id --") decisionRef.toString -> id @@ -99,7 +99,7 @@ case class ModelerTemplUpdater(apiConfig: ApiConfig, apiProjectConfig: ApiProjec case refName -> elemId => apiConfig.projectsConfig .colorForId(refName, docProjectConfig.projectName) - .map (_ -> elemId).toSeq + .map(_ -> elemId).toSeq .foldLeft(xml): case (xmlResult, project -> color -> id) => println(s" -> $project > $id -- $color") @@ -111,6 +111,6 @@ case class ModelerTemplUpdater(apiConfig: ApiConfig, apiProjectConfig: ApiProjec override def transform(n: Node): Seq[Node] = n match case e: Elem if e.label == "BPMNShape" && (e \@ "bpmnElement").equals(id) => e % Attribute("color", "background-color", Text(s"${colorMap(project)}"), Null) - case x => x + case x => x end ModelerTemplUpdater diff --git a/03-api/src/main/scala/camundala/api/PostmanApiCreator.scala b/03-api/src/main/scala/camundala/api/PostmanApiCreator.scala index c5e458a8..69b6d0fe 100644 --- a/03-api/src/main/scala/camundala/api/PostmanApiCreator.scala +++ b/03-api/src/main/scala/camundala/api/PostmanApiCreator.scala @@ -18,15 +18,15 @@ trait PostmanApiCreator extends AbstractApiCreator: def createPostman(): Seq[PublicEndpoint[?, Unit, ?, Any]] = println(s"Start Grouped API: ${cApi.name}") cApi match - case pa: ProcessApi[?, ?, ?] => + case pa: ProcessApi[?, ?, ?] => createPostmanForProcess(pa, pa.name) ++ pa.apis.flatMap( _.createPostman(cApi.name) ) case da: DecisionDmnApi[?, ?] => createPostmanForDecisionDmn(da.toActivityApi, da.name) - case gApi: CApiGroup => + case gApi: CApiGroup => gApi.apis.flatMap(_.createPostman(cApi.name, true)) - case _: CApi => + case _: CApi => cApi.createPostman(cApi.name, true) end match @@ -41,30 +41,30 @@ trait PostmanApiCreator extends AbstractApiCreator: case pa @ ProcessApi(name, inOut, _, apis, _) if apis.isEmpty => println(s"${inOut.getClass.getSimpleName}: $tag - $name") createPostmanForProcess(pa, tag, isGroup) - case aa @ ActivityApi(name, inOut, _) => + case aa @ ActivityApi(name, inOut, _) => println(s"${inOut.getClass.getSimpleName}: $tag - $name") inOut match - case _: UserTask[?, ?] => + case _: UserTask[?, ?] => createPostmanForUserTask(aa, tag) case _: DecisionDmn[?, ?] => createPostmanForDecisionDmn(aa, tag) - case _: MessageEvent[?] => + case _: MessageEvent[?] => createPostmanForMessageEvent(aa, tag) - case _: SignalEvent[?] => + case _: SignalEvent[?] => createPostmanForSignalEvent(aa, tag) - case _: TimerEvent => + case _: TimerEvent => createPostmanForTimerEvent(aa, tag) end match case pa @ ProcessApi(name, _, _, apis, _) if apis.forall(_.isInstanceOf[ActivityApi[?, ?]]) => createPostmanForProcess(pa, tag) ++ apis.flatMap(_.createPostman(tag)) - case api @ ServiceWorkerApi(_, _, _) => + case api @ ServiceWorkerApi(_, _, _) => createPostmanForExternalTask(api, tag) - case api @ CustomWorkerApi(_, _, _) => + case api @ CustomWorkerApi(_, _, _) => createPostmanForExternalTask(api, tag) - case da: DecisionDmnApi[?, ?] => + case da: DecisionDmnApi[?, ?] => createPostmanForDecisionDmn(da.toActivityApi, tag) - case ga => + case ga => throw IllegalArgumentException( s"Sorry, only one level of GroupedApi is allowed!\n - $ga" ) @@ -139,11 +139,12 @@ trait PostmanApiCreator extends AbstractApiCreator: inOutApi.inOut.in match case gs: GenericServiceIn => inOutApi.id / s"--REMOVE${gs.serviceName}--" - case _ => + case _ => if isGroup then inOutApi.id / s"--REMOVE${inOutApi.name.replace(" ", "")}--" else inOutApi.id + end extension protected def tenantIdPath( basePath: EndpointInput[?], diff --git a/03-api/src/main/scala/camundala/api/ProcessReferenceCreator.scala b/03-api/src/main/scala/camundala/api/ProcessReferenceCreator.scala index 7996bd51..0bfb7708 100644 --- a/03-api/src/main/scala/camundala/api/ProcessReferenceCreator.scala +++ b/03-api/src/main/scala/camundala/api/ProcessReferenceCreator.scala @@ -36,8 +36,7 @@ trait ProcessReferenceCreator: os.walk(absBpmnPath) else println(s"THIS PATH DOES NOT EXIST: $projectName") - Seq.empty - ) + Seq.empty) } .map { case projectName -> path => diff --git a/03-api/src/main/scala/camundala/api/TapirApiCreator.scala b/03-api/src/main/scala/camundala/api/TapirApiCreator.scala index 8fe2c7e1..635e6189 100644 --- a/03-api/src/main/scala/camundala/api/TapirApiCreator.scala +++ b/03-api/src/main/scala/camundala/api/TapirApiCreator.scala @@ -11,7 +11,7 @@ trait TapirApiCreator extends AbstractApiCreator: println(s"Start API: ${apiDoc.apis.size} top level APIs") apiDoc.apis.flatMap { case groupedApi: GroupedApi => groupedApi.create() - case cApi: CApi => throw IllegalArgumentException( + case cApi: CApi => throw IllegalArgumentException( s"Sorry, the top level must be a GroupedApi (Group or Process)!\n - Not ${cApi.getClass}" ) } @@ -25,7 +25,7 @@ trait TapirApiCreator extends AbstractApiCreator: pa.createEndpoint(pa.id, false, pa.additionalDescr) ++ pa.createInitEndpoint(pa.id) ++ pa.apis.flatMap(_.create(pa.id, false)) - case _: CApiGroup => + case _: CApiGroup => groupedApi.apis.flatMap(_.create(groupedApi.name, true)) end match end create @@ -37,14 +37,14 @@ trait TapirApiCreator extends AbstractApiCreator: cApi match case da @ DecisionDmnApi(_, _, _, _) => da.createEndpoint(tag, tagIsFix, da.additionalDescr) - case aa @ ActivityApi(_, _, _) => + case aa @ ActivityApi(_, _, _) => aa.createEndpoint(tag, tagIsFix) case pa @ ProcessApi(name, _, _, apis, _) if apis.isEmpty => pa.createEndpoint(tag, tagIsFix, pa.additionalDescr) - case spa: ExternalTaskApi[?, ?] => + case spa: ExternalTaskApi[?, ?] => spa.createEndpoint(tag, tagIsFix, spa.additionalDescr) - case ga => + case ga => throw IllegalArgumentException( s"Sorry, only one level of GroupedApi is allowed!\n - $ga" ) @@ -76,7 +76,7 @@ trait TapirApiCreator extends AbstractApiCreator: |""".stripMargin ) .head - )// renders `In` as input: .map(ep => processApi.toInput.map(ep.in).getOrElse(ep)) + ) // renders `In` as input: .map(ep => processApi.toInput.map(ep.in).getOrElse(ep)) .map(ep => ep.out(processApi.toInitIn)) else Seq.empty @@ -84,11 +84,11 @@ trait TapirApiCreator extends AbstractApiCreator: private def hasInitIn: Boolean = processApi.inOut.initIn match - case _: NoOutput => + case _: NoOutput => false case i if i.getClass == processApi.inOut.in.getClass => false - case _ => + case _ => true end hasInitIn @@ -111,7 +111,7 @@ trait TapirApiCreator extends AbstractApiCreator: tagIsFix: Boolean, additionalDescr: Option[String] = None ): Seq[PublicEndpoint[?, Unit, ?, Any]] = - val eTag = if tagIsFix then tagFull else shortenTag(tagFull) + val eTag = if tagIsFix then tagFull else shortenTag(tagFull) println(s"createEndpoint: $tagIsFix $tagFull >> $eTag") val endpointName = if inOutApi.name == tagFull then "Process" else inOutApi.endpointName Seq( @@ -130,11 +130,11 @@ trait TapirApiCreator extends AbstractApiCreator: end createEndpoint def path(tag: String): EndpointInput[Unit] = - val refId = refIdentShort(inOutApi.id, projectName) + val refId = refIdentShort(inOutApi.id, projectName) val tagPath = tag.replace(" ", "") inOutApi.inOut.in match - case gs: GenericServiceIn => + case gs: GenericServiceIn => inOutApi.inOutType.toString / refId / gs.serviceName case _ if tagPath == refId => if inOutApi.name == refId then @@ -142,7 +142,7 @@ trait TapirApiCreator extends AbstractApiCreator: else inOutApi.inOutType.toString / refId / inOutApi.name .replace(" ", "") - case _ => + case _ => if inOutApi.name == refId then inOutApi.inOutType.toString / tagPath / refId else @@ -157,7 +157,7 @@ trait TapirApiCreator extends AbstractApiCreator: inOutApi.inOut.in match case _: NoInput => None - case _ => + case _ => Some( inOutApi.inMapper .examples(inOutApi.apiExamples.inputExamples.fetchExamples.map { @@ -174,7 +174,7 @@ trait TapirApiCreator extends AbstractApiCreator: inOutApi.inOut.out match case _: NoOutput => None - case _ => + case _ => Some( inOutApi.outMapper .examples(inOutApi.apiExamples.outputExamples.fetchExamples.map { @@ -194,12 +194,12 @@ trait TapirApiCreator extends AbstractApiCreator: pa.inOut.in match case gs: GenericServiceIn => gs.serviceName - case _ => pa.id + case _ => pa.id def additionalDescr: Option[String] = if apiConfig.projectsConfig.isConfigured then val usedByDescr = UsedByReferenceCreator(processName).create() - val usesDescr = UsesReferenceCreator(processName).create() + val usesDescr = UsesReferenceCreator(processName).create() Some(s"\n\n${usedByDescr.mkString}${usesDescr.mkString}") else None end extension diff --git a/03-api/src/main/scala/camundala/api/VersionHelper.scala b/03-api/src/main/scala/camundala/api/VersionHelper.scala index 22c4b2f7..5c8e56c2 100644 --- a/03-api/src/main/scala/camundala/api/VersionHelper.scala +++ b/03-api/src/main/scala/camundala/api/VersionHelper.scala @@ -5,7 +5,7 @@ import camundala.api.{ApiProjectConfig, DependencyConfig} import scala.jdk.CollectionConverters.* case class VersionHelper( - projectConf: ApiProjectConfig, + projectConf: ApiProjectConfig ): lazy val dependencyVersions: Map[String, String] = @@ -48,7 +48,7 @@ case class VersionHelper( name.split("-").toList match case head :: tail => head + tail.map(n => n.head.toUpper + n.tail).mkString - case other => other + case other => other end VersionHelper @@ -60,7 +60,7 @@ object VersionHelper: // this expects a projectName in this pattern mycompany-myproject def repoSearch(projectName: String): String = repoSearch(projectName, projectName.split("-").head) - + def repoSearch(project: String, org: String): String = val searchResult = os.proc( "cs", @@ -68,11 +68,11 @@ object VersionHelper: s"$org:$project:" ).call() val versionRegex = """(\d+\.\d+\.\d+)""".r - val versionStr = + val versionStr = searchResult.out.text() .split("\n").toList .filter(_.trim.matches(versionRegex.regex)) - .map:v => + .map: v => val vers = v.split("\\.") .filterNot(_.trim.toIntOption.isEmpty) .map: nr => @@ -82,7 +82,7 @@ object VersionHelper: .sortBy(_._2)(Ordering[String].reverse) .headOption .map(_._1) - val version = versionStr.getOrElse: + val version = versionStr.getOrElse: println( s"${Console.YELLOW_B}NOT FOUND!${Console.RESET} - Result from Maven Central:\n ${searchResult.out.text()}" + s"Check: cs complete-dep $org:$project:" diff --git a/03-api/src/main/scala/camundala/api/ast.scala b/03-api/src/main/scala/camundala/api/ast.scala index 1c0f9a53..cb3cda06 100644 --- a/03-api/src/main/scala/camundala/api/ast.scala +++ b/03-api/src/main/scala/camundala/api/ast.scala @@ -128,7 +128,7 @@ case class ProcessApi[ ): InOutApi[In, Out] = copy(apiExamples = examples) - override def apiDescription(companyName:String): String = + override def apiDescription(companyName: String): String = s"""${super.apiDescription(companyName)} | |${inOut.in match @@ -138,8 +138,8 @@ case class ProcessApi[ } |${generalVariablesDescr(inOut.out, "")}""".stripMargin - // this function needs to be here as circe does not find the JsonEncoder in the extension method - lazy val initInMapper: EndpointIO.Body[String, InitIn] = jsonBody[InitIn] + // this function needs to be here as circe does not find the JsonEncoder in the extension method + lazy val initInMapper: EndpointIO.Body[String, InitIn] = jsonBody[InitIn] end ProcessApi diff --git a/03-api/src/main/scala/camundala/api/exports.scala b/03-api/src/main/scala/camundala/api/exports.scala index 77479282..24857bea 100644 --- a/03-api/src/main/scala/camundala/api/exports.scala +++ b/03-api/src/main/scala/camundala/api/exports.scala @@ -4,16 +4,16 @@ import os.CommandResult import camundala.bpmn.shortenName import camundala.domain.* -val catalogFileName = "catalog.md" +val catalogFileName = "catalog.md" val defaultProjectConfigPath = os.rel / "PROJECT.conf" -lazy val projectsPath = os.pwd / "projects" +lazy val projectsPath = os.pwd / "projects" def shortenTag(refIdentShort: String) = val tag = shortenName(refIdentShort) tag.head.toUpper + tag.tail.map { - case c: Char if c.isUpper => s" $c" - case c => s"$c" - }.mkString.replace(".", " ").replace("-", " ").replace("_", " ").replace(" ", " ") + case c: Char if c.isUpper => s" $c" + case c => s"$c" + }.mkString.replace(".", " ").replace("-", " ").replace("_", " ").replace(" ", " ") end shortenTag extension (proc: os.proc) diff --git a/03-api/src/main/scala/camundala/api/model.scala b/03-api/src/main/scala/camundala/api/model.scala index bd574a45..bc648af3 100644 --- a/03-api/src/main/scala/camundala/api/model.scala +++ b/03-api/src/main/scala/camundala/api/model.scala @@ -17,7 +17,7 @@ case class RequestErrorOutput( examples: Map[ExampleName, CamundaError] = Map.empty ) object RequestErrorOutput: - given ApiSchema[RequestErrorOutput] = deriveApiSchema + given ApiSchema[RequestErrorOutput] = deriveApiSchema given InOutCodec[RequestErrorOutput] = deriveCodec end RequestErrorOutput @@ -27,7 +27,7 @@ case class CamundaError( ) object CamundaError: given InOutCodec[CamundaError] = deriveCodec - given ApiSchema[CamundaError] = deriveApiSchema + given ApiSchema[CamundaError] = deriveApiSchema end CamundaError case class CamundaAuthError( @@ -39,11 +39,11 @@ case class CamundaAuthError( resourceId: String = "Mary" ) object CamundaAuthError: - given ApiSchema[CamundaAuthError] = deriveApiSchema + given ApiSchema[CamundaAuthError] = deriveApiSchema given InOutCodec[CamundaAuthError] = deriveCodec end CamundaAuthError -given ApiSchema[StatusCode] = Schema(SchemaType.SInteger()) +given ApiSchema[StatusCode] = Schema(SchemaType.SInteger()) given InOutEncoder[StatusCode] = Encoder.instance(st => st.code.asJson) given InOutDecoder[StatusCode] = (c: HCursor) => c.value.as[Int].map(StatusCode(_)) @@ -68,7 +68,7 @@ case class GetActiveJobIn( active: Boolean = true ) object GetActiveJobIn: - given ApiSchema[GetActiveJobIn] = deriveApiSchema + given ApiSchema[GetActiveJobIn] = deriveApiSchema given InOutCodec[GetActiveJobIn] = deriveCodec /* @@ -94,7 +94,7 @@ case class CompleteTaskIn( withVariablesInReturn: Boolean = true ) object CompleteTaskIn: - given ApiSchema[CompleteTaskIn] = deriveApiSchema + given ApiSchema[CompleteTaskIn] = deriveApiSchema given InOutCodec[CompleteTaskIn] = deriveCodec @description( @@ -118,13 +118,13 @@ case class GetActiveTaskIn( active: Boolean = true ) object GetActiveTaskIn: - given ApiSchema[GetActiveTaskIn] = deriveApiSchema + given ApiSchema[GetActiveTaskIn] = deriveApiSchema given InOutCodec[GetActiveTaskIn] = deriveCodec case class RequestInput[T](examples: Map[ExampleName, T]): def :+(label: String, example: T): RequestInput[T] = copy(examples = examples + (label -> example)) - lazy val noInput: Boolean = + lazy val noInput: Boolean = examples.isEmpty end RequestInput @@ -140,7 +140,7 @@ case class RequestOutput[T]( statusCode: StatusCode, examples: Map[ExampleName, T] ): - lazy val noOutdput: Boolean = + lazy val noOutdput: Boolean = examples.isEmpty def :+(label: String, example: T): RequestOutput[T] = copy(examples = examples + (label -> example)) @@ -229,6 +229,6 @@ case class GetActiveTaskOut( id: String = "f150c3f1-13f5-11ec-936e-0242ac1d0007" ) object GetActiveTaskOut: - given ApiSchema[GetActiveTaskOut] = deriveApiSchema + given ApiSchema[GetActiveTaskOut] = deriveApiSchema given InOutCodec[GetActiveTaskOut] = deriveCodec end GetActiveTaskOut diff --git a/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala b/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala index 573eeacc..5b2087f4 100644 --- a/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala +++ b/03-api/src/test/scala/camundala/api/ApiCreatorTest.scala @@ -10,14 +10,14 @@ class ApiCreatorTest extends munit.FunSuite, DefaultApiCreator: lazy val projectName = "ApiCreatorTest" def jiraUrls: Map[String, String] = Map( - "MAP" -> "https://myJira.ch/browse", + "MAP" -> "https://myJira.ch/browse", "OTHER" -> "https://otherJira.ch/browse" ) - def title: String = ??? - def version: String = ??? + def title: String = ??? + def version: String = ??? lazy val companyProjectVersion: String = "0.1.0" - lazy val projectDescr: String = "" + lazy val projectDescr: String = "" test("testReplaceJira") { assertEquals( diff --git a/03-api/src/test/scala/camundala/api/TestApiCreator.scala b/03-api/src/test/scala/camundala/api/TestApiCreator.scala index bcdcbfc4..8ff28777 100644 --- a/03-api/src/test/scala/camundala/api/TestApiCreator.scala +++ b/03-api/src/test/scala/camundala/api/TestApiCreator.scala @@ -11,9 +11,9 @@ object TestApiCreator extends DefaultApiCreator, BpmnProcessDsl, App: def title = "Test API" - def version = "1.0" + def version = "1.0" lazy val companyProjectVersion: String = "0.1.0" - lazy val projectDescr: String = "" + lazy val projectDescr: String = "" override val apiConfig: ApiConfig = ApiConfig("DemoConfig") @@ -48,7 +48,7 @@ object Sample extends BpmnProcessDsl: address: Address = Address() ) object SampleIn: - given ApiSchema[SampleIn] = deriveApiSchema + given ApiSchema[SampleIn] = deriveApiSchema given InOutCodec[SampleIn] = deriveCodec end SampleIn @@ -61,7 +61,7 @@ object Sample extends BpmnProcessDsl: country: String = "CH" ) object Address: - given ApiSchema[Address] = deriveApiSchema + given ApiSchema[Address] = deriveApiSchema given InOutCodec[Address] = deriveCodec end Address @@ -71,12 +71,12 @@ object Sample extends BpmnProcessDsl: outputValue: String = "Just some text" ) object SampleOut: - given ApiSchema[SampleOut] = deriveApiSchema + given ApiSchema[SampleOut] = deriveApiSchema given InOutCodec[SampleOut] = deriveCodec end SampleOut lazy val standardSample: SampleIn = SampleIn() - val descr = + val descr = s"""This runs the Sample Process. |""".stripMargin diff --git a/03-api/src/test/scala/camundala/api/exportsTest.scala b/03-api/src/test/scala/camundala/api/exportsTest.scala index a19ce2ae..33240362 100644 --- a/03-api/src/test/scala/camundala/api/exportsTest.scala +++ b/03-api/src/test/scala/camundala/api/exportsTest.scala @@ -2,30 +2,30 @@ package camundala.api class exportsTest extends munit.FunSuite: - test("camundala.api.DefaultApiCreator UNDEFINED") : + test("camundala.api.DefaultApiCreator UNDEFINED"): assertEquals( shortenTag("camundala.api.DefaultApiCreator"), "Camundala api Default Api Creator" ) - test("mycompany-myproject-myprocess.MyWorker") : + test("mycompany-myproject-myprocess.MyWorker"): assertEquals( shortenTag("mycompany-myproject-myprocess.MyWorker"), "Myprocess My Worker" ) - test("mycompany-myproject-myprocess.MyWorker.get") : + test("mycompany-myproject-myprocess.MyWorker.get"): assertEquals( shortenTag("mycompany-myproject-myprocess.MyWorker.get"), "My Worker get" ) - test("mycompany-myproject-myprocessV2-GetMyWorker") : + test("mycompany-myproject-myprocessV2-GetMyWorker"): assertEquals( shortenTag("mycompany-myproject-myprocessV2-MyWorker"), "My Worker" ) - test("mycompany-myproject-myprocessV4.MyWorker") : + test("mycompany-myproject-myprocessV4.MyWorker"): assertEquals( shortenTag("mycompany-myproject-myprocessV4.MyWorker"), "My Worker" ) - -end exportsTest \ No newline at end of file + +end exportsTest diff --git a/03-dmn/src/main/scala/camundala/dmn/DmnConfigWriter.scala b/03-dmn/src/main/scala/camundala/dmn/DmnConfigWriter.scala index 5efa2384..8574329a 100644 --- a/03-dmn/src/main/scala/camundala/dmn/DmnConfigWriter.scala +++ b/03-dmn/src/main/scala/camundala/dmn/DmnConfigWriter.scala @@ -22,7 +22,7 @@ trait DmnConfigWriter extends DmnTesterHelpers: ).body match case Right(_) => println(s"Successfully updated ${dmnConfig.decisionId}") - case Left(v) => println(s"Problem updating $configPath: \n $v") + case Left(v) => println(s"Problem updating $configPath: \n $v") end match end updateConfig diff --git a/03-dmn/src/main/scala/camundala/dmn/DmnTesterConfigCreator.scala b/03-dmn/src/main/scala/camundala/dmn/DmnTesterConfigCreator.scala index 6dcd8572..4654ee8d 100644 --- a/03-dmn/src/main/scala/camundala/dmn/DmnTesterConfigCreator.scala +++ b/03-dmn/src/main/scala/camundala/dmn/DmnTesterConfigCreator.scala @@ -13,15 +13,16 @@ import scala.reflect.ClassTag trait DmnTesterConfigCreator extends DmnConfigWriter, DmnTesterStarter: // the path where the DMNs are - protected def dmnBasePath: os.Path = starterConfig.dmnPaths.head + protected def dmnBasePath: os.Path = starterConfig.dmnPaths.head // the path where the DMN Configs are - protected def dmnConfigPath: os.Path = starterConfig.dmnConfigPaths.head + protected def dmnConfigPath: os.Path = starterConfig.dmnConfigPaths.head // creating the Path to the DMN - by default the _dmnName_ is `decisionDmn.decisionDefinitionKey`. protected def defaultDmnPath(dmnName: String): os.Path = val dmnPath = dmnBasePath / s"${dmnName.replace(s"${starterConfig.companyName}-", "")}.dmn" - if (!dmnPath.toIO.exists()) + if !dmnPath.toIO.exists() then throw FileNotFoundException(s"There is no DMN in $dmnPath") dmnPath + end defaultDmnPath protected def createDmnConfigs(dmnTesterObjects: DmnTesterObject[?]*): Unit = startDmnTester @@ -43,10 +44,10 @@ trait DmnTesterConfigCreator extends DmnConfigWriter, DmnTesterStarter: dmnTesterObjects .filterNot(_._inTestMode) .map { dmnTO => - val dmn = dmnTO.dDmn + val dmn = dmnTO.dDmn val in: Product = dmn.in - val inputs = toInputs(in, dmnTO) - val variables = toVariables(in) + val inputs = toInputs(in, dmnTO) + val variables = toVariables(in) DmnConfig( dmn.decisionDefinitionKey, TesterData(inputs, variables), @@ -76,11 +77,11 @@ trait DmnTesterConfigCreator extends DmnConfigWriter, DmnTesterStarter: ): TesterInput = val unwrapValue = value match case d: LocalDateTime => d.toString - case Some(v) => v - case v => v - val isNullable = value match + case Some(v) => v + case v => v + val isNullable = value match case Some(_) => true - case _ => false + case _ => false // noinspection ScalaUnnecessaryParentheses unwrapValue match case v: (Double | Int | Long | Short | String | Float) => @@ -89,13 +90,13 @@ trait DmnTesterConfigCreator extends DmnConfigWriter, DmnTesterStarter: isNullable, addTestValues.getOrElse(k, List(TesterValue.fromAny(v))) ) - case _: Boolean => + case _: Boolean => TesterInput( k, isNullable, List(TesterValue.fromAny(true), toTesterValue(false)) ) - case v: scala.reflect.Enum => + case v: scala.reflect.Enum => val e: { def values: Array[?] } = v.asInstanceOf[{ def values: Array[?] }] TesterInput( @@ -103,7 +104,7 @@ trait DmnTesterConfigCreator extends DmnConfigWriter, DmnTesterStarter: isNullable, addTestValues.getOrElse(k, e.values.map(v => toTesterValue(v)).toList) ) - case v => + case v => throw new IllegalArgumentException( s"Not supported for DMN Input ($k -> $v)" ) @@ -134,7 +135,7 @@ trait DmnTesterConfigCreator extends DmnConfigWriter, DmnTesterStarter: value match // enums not supported in DmnTester 2.13 case e: scala.reflect.Enum => TesterValue.fromAny(e.toString) - case v => TesterValue.fromAny(v) + case v => TesterValue.fromAny(v) extension [In <: Product](dmnTO: DmnTesterObject[In]) diff --git a/03-dmn/src/main/scala/camundala/dmn/DmnTesterHelpers.scala b/03-dmn/src/main/scala/camundala/dmn/DmnTesterHelpers.scala index b6d22be9..15881c5c 100644 --- a/03-dmn/src/main/scala/camundala/dmn/DmnTesterHelpers.scala +++ b/03-dmn/src/main/scala/camundala/dmn/DmnTesterHelpers.scala @@ -5,11 +5,11 @@ import sttp.client3.* trait DmnTesterHelpers: protected def starterConfig: DmnTesterStarterConfig - protected def projectBasePath: os.Path = os.pwd - private lazy val exposedPort: Int = starterConfig.exposedPort + protected def projectBasePath: os.Path = os.pwd + private lazy val exposedPort: Int = starterConfig.exposedPort protected lazy val client: SimpleHttpClient = SimpleHttpClient() - protected lazy val apiUrl = s"http://localhost:$exposedPort/api" - protected lazy val infoUrl = s"http://localhost:$exposedPort/info" + protected lazy val apiUrl = s"http://localhost:$exposedPort/api" + protected lazy val infoUrl = s"http://localhost:$exposedPort/info" protected case class DmnTesterStarterConfig( companyName: String, diff --git a/03-dmn/src/main/scala/camundala/dmn/DmnTesterStarter.scala b/03-dmn/src/main/scala/camundala/dmn/DmnTesterStarter.scala index 9a25971b..6bca7f44 100644 --- a/03-dmn/src/main/scala/camundala/dmn/DmnTesterStarter.scala +++ b/03-dmn/src/main/scala/camundala/dmn/DmnTesterStarter.scala @@ -35,7 +35,7 @@ trait DmnTesterStarter extends DmnTesterHelpers, App: .response(asString) ) .body match - case Left(_) => + case Left(_) => false case Right(result) if !result.contains(getClass.getName) => println( @@ -45,12 +45,12 @@ trait DmnTesterStarter extends DmnTesterHelpers, App: runDocker() waitForServer true - case Right(result) => + case Right(result) => println(s"Docker is Running for project: $result.") true ) match case Success(value) => value - case Failure(_) => false + case Failure(_) => false protected def runDocker(): Unit = println(s"Start Docker for ${starterConfig.containerName}!") diff --git a/03-simulation/src/main/scala/camundala/simulation/Logging.scala b/03-simulation/src/main/scala/camundala/simulation/Logging.scala index e5fec72d..c0ba42bc 100644 --- a/03-simulation/src/main/scala/camundala/simulation/Logging.scala +++ b/03-simulation/src/main/scala/camundala/simulation/Logging.scala @@ -6,8 +6,8 @@ import java.time.format.DateTimeFormatter trait Logging: def debug(msg: String): LogEntry = LogEntry(LogLevel.DEBUG, msg) - def info(msg: String): LogEntry = LogEntry(LogLevel.INFO, msg) - def warn(msg: String): LogEntry = LogEntry(LogLevel.WARN, msg) + def info(msg: String): LogEntry = LogEntry(LogLevel.INFO, msg) + def warn(msg: String): LogEntry = LogEntry(LogLevel.WARN, msg) def error(msg: String): LogEntry = LogEntry(LogLevel.ERROR, msg) given Conversion[LogEntry, Seq[LogEntry]] = Seq(_) @@ -39,7 +39,7 @@ enum LogLevel(val color: String) extends Ordered[LogLevel]: override def compare(that: LogLevel): Int = that.ordinal - ordinal case DEBUG extends LogLevel(Console.GREEN) - case INFO extends LogLevel(Console.GREEN) - case WARN extends LogLevel(Console.MAGENTA) + case INFO extends LogLevel(Console.GREEN) + case WARN extends LogLevel(Console.MAGENTA) case ERROR extends LogLevel(Console.RED) end LogLevel diff --git a/03-simulation/src/main/scala/camundala/simulation/ResultChecker.scala b/03-simulation/src/main/scala/camundala/simulation/ResultChecker.scala index b93b7c58..020c67c3 100644 --- a/03-simulation/src/main/scala/camundala/simulation/ResultChecker.scala +++ b/03-simulation/src/main/scala/camundala/simulation/ResultChecker.scala @@ -20,7 +20,7 @@ trait ResultChecker: withOverrides.testOverrides match case Some(TestOverrides(overrides)) => checkO(overrides, result) - case _ => + case _ => checkP(withOverrides.camundaToCheckMap, result) private def checkO( @@ -29,33 +29,33 @@ trait ResultChecker: ) = overrides .map { - case TestOverride(Some(k), Exists, _) => + case TestOverride(Some(k), Exists, _) => checkExistsInResult(result, k) - case TestOverride(Some(k), NotExists, _) => + case TestOverride(Some(k), NotExists, _) => val matches = !result.exists(_.key == k) if !matches then println(s"!!! $k did EXIST in $result") matches - case TestOverride(Some(k), IsEquals, Some(v)) => + case TestOverride(Some(k), IsEquals, Some(v)) => val r = result.find(_.key == k) checkExistsInResult(result, k) && checkIsEqualValue(k, v, r.get.value) - case TestOverride(Some(k), HasSize, Some(value)) => - val r = result.find(_.key == k) + case TestOverride(Some(k), HasSize, Some(value)) => + val r = result.find(_.key == k) val matches = r.exists { _.value match case CJson(j, _) => (toJson(j).asArray, value) match case (Some(vector), CInteger(s, _)) => vector.size == s - case _ => + case _ => false - case _ => false + case _ => false } if !matches then println(s"!!! $k has NOT Size $value in $r") matches case TestOverride(Some(k), Contains, Some(value)) => - val r = result.find(_.key == k) + val r = result.find(_.key == k) val matches = r.exists { _.value match case CJson(j, _) => @@ -64,20 +64,20 @@ trait ResultChecker: vector .exists(x => value match - case CString(v, _) => + case CString(v, _) => x.asString.contains(v) case CInteger(v, _) => x.asNumber.contains(v) case CBoolean(v, _) => x.asBoolean.contains(v) - case _ => x.toString == value.value.toString + case _ => x.toString == value.value.toString ) - case _ => + case _ => false - case _ => false + case _ => false } if !matches then println(s"!!! $k does NOT contains $value in $r") matches - case _ => + case _ => println( s"!!! Only ${TestOverrideType.values.mkString(", ")} for TestOverrides supported." ) @@ -99,22 +99,22 @@ trait ResultChecker: s"!!! Size '${result.size}' of collection is NOT equal to $size in $result" ) matches - case TestOverride(None, Contains, Some(expected)) => - val exp = expected match + case TestOverride(None, Contains, Some(expected)) => + val exp = expected match case CJson(jsonStr, _) => parse(jsonStr) match case Right(json) => CamundaVariable.jsonToCamundaValue(json) - case Left(ex) => + case Left(ex) => throwErr(s"Problem parsing Json: $jsonStr\n$ex") - case other => other + case other => other val matches = result.contains(exp) if !matches then println( s"!!! Result '$result' of collection does NOT contain to $expected" ) matches - case _ => + case _ => println( s"!!! Only ${TestOverrideType.values.mkString(", ")} for TestOverrides supported." ) @@ -128,7 +128,7 @@ trait ResultChecker: ): Boolean = camundaVariableMap .map { - case key -> CNull => // must not be in the result + case key -> CNull => // must not be in the result result .find(p => p.key == key && p.value != CNull @@ -154,7 +154,7 @@ trait ResultChecker: val matches = expectedValue match case CFile(_, CFileValueInfo(pFileName, _), _) => cFileName == pFileName - case o => + case o => false if !matches then println( @@ -166,10 +166,10 @@ trait ResultChecker: end if matches case CamundaProperty(key, CJson(cValue, _)) => - val resultJson = toJson(cValue) + val resultJson = toJson(cValue) val expectedJson = toJson(expectedValue.value.toString) checkJson(expectedJson, resultJson, key) - case CamundaProperty(_, cValue) => + case CamundaProperty(_, cValue) => checkIsEqualValue(key, expectedValue, cValue) } .getOrElse { @@ -188,6 +188,7 @@ trait ResultChecker: if !matches then println(s"!!! $key did NOT exist in $result") matches + end checkExistsInResult private def checkIsEqualValue[T <: Product]( key: String, @@ -209,7 +210,7 @@ trait ResultChecker: | - result : ${resultValue.value}""".stripMargin ) if expectedValue.value.toString.contains("\n") then // compare each line for complex strings - val result = resultValue.value.toString.split("\n") + val result = resultValue.value.toString.split("\n") val expected = expectedValue.value.toString.split("\n") result.zip(expected).foreach: case (r, e) => @@ -237,15 +238,15 @@ trait ResultChecker: ): Unit = if expJson != resJson then (expJson, resJson) match - case _ if expJson.isArray && resJson.isArray => + case _ if expJson.isArray && resJson.isArray => val expJsonArray = expJson.asArray.toList.flatten val resJsonArray = resJson.asArray.toList.flatten for (expJson, resJson) <- expJsonArray.zipAll( - resJsonArray, - Json.Null, - Json.Null - ) + resJsonArray, + Json.Null, + Json.Null + ) do compareJsons( expJson, @@ -256,8 +257,8 @@ trait ResultChecker: case _ if expJson.isObject && resJson.isObject => val expJsonObj = expJson.asObject.get val resJsonObj = resJson.asObject.get - val expKeys = expJsonObj.keys.toSeq - val resKeys = resJsonObj.keys.toSeq + val expKeys = expJsonObj.keys.toSeq + val resKeys = resJsonObj.keys.toSeq val commonKeys = expKeys.intersect(resKeys).toSet val uniqueKeys = (expKeys ++ resKeys).toSet.diff(commonKeys) for key <- commonKeys do @@ -277,7 +278,7 @@ trait ResultChecker: diffs += s"$path.$key: ${json.noSpaces} (field in result not expected)" } end for - case _ => + case _ => diffs += s"$path: ${expJson.noSpaces} (expected) != ${resJson.noSpaces} (result)" compareJsons(expectedJson, resultJson, "") diff --git a/03-simulation/src/main/scala/camundala/simulation/SimulationDsl.scala b/03-simulation/src/main/scala/camundala/simulation/SimulationDsl.scala index 8aa75799..34c11c33 100644 --- a/03-simulation/src/main/scala/camundala/simulation/SimulationDsl.scala +++ b/03-simulation/src/main/scala/camundala/simulation/SimulationDsl.scala @@ -11,7 +11,7 @@ trait SimulationDsl[T] extends TestOverrideExtensions: def simulate(body: => (Seq[SScenario] | SScenario)*): Unit = try val scenarios = body.flatMap: - case s: Seq[?] => s.collect { case ss: SScenario => ss } + case s: Seq[?] => s.collect { case ss: SScenario => ss } case s: SScenario => Seq(s) val modScen = @@ -19,7 +19,7 @@ trait SimulationDsl[T] extends TestOverrideExtensions: then scenarios.map: case s if s.isOnly => s - case s => s.ignored + case s => s.ignored else scenarios run(SSimulation(modScen.toList)) // runs Scenarios @@ -43,8 +43,8 @@ trait SimulationDsl[T] extends TestOverrideExtensions: outputMock: Out, outputServiceMock: MockedServiceResponse[ServiceOut] ): Seq[ExternalTaskScenario] = - val withDefaultMock = task.mockServicesWithDefault - val withOutputMock = task + val withDefaultMock = task.mockServicesWithDefault + val withOutputMock = task .mockWith(outputMock) .withOut(outputMock) val withServiceOutputMock = task @@ -154,23 +154,23 @@ trait SimulationDsl[T] extends TestOverrideExtensions: STimerEvent(nameOfVariable(event), event) extension (event: MessageEvent[?]) - def waitFor(readyVariable: String): SMessageEvent = + def waitFor(readyVariable: String): SMessageEvent = event.waitFor(readyVariable, true) def waitFor(readyVariable: String, readyValue: Any): SMessageEvent = SMessageEvent(event.name, event, Some(readyVariable), readyValue) - def start: SMessageEvent = + def start: SMessageEvent = SMessageEvent(event.name, event).start end extension extension (event: SignalEvent[?]) - def waitFor(readyVariable: String): SSignalEvent = + def waitFor(readyVariable: String): SSignalEvent = event.waitFor(readyVariable, true) def waitFor(readyVariable: String, readyValue: Any = true): SSignalEvent = SSignalEvent(event.name, event, readyVariable, readyValue) end extension extension (event: TimerEvent) - def waitFor(readyVariable: String): STimerEvent = + def waitFor(readyVariable: String): STimerEvent = event.waitFor(readyVariable, true) def waitFor(readyVariable: String, readyValue: Any): STimerEvent = STimerEvent(event.name, event, Some(readyVariable), readyValue) @@ -304,22 +304,22 @@ trait SimulationDsl[T] extends TestOverrideExtensions: serviceScenario(task, task.out, task.defaultServiceOutMock) inline def badScenario( - inline process: Process[?, ?, ?], - status: Int, - errorMsg: Optable[String] = None - ): BadScenario = + inline process: Process[?, ?, ?], + status: Int, + errorMsg: Optable[String] = None + ): BadScenario = BadScenario(nameOfVariable(process), process, status, errorMsg.value, isOnly = true) inline def incidentScenario( - inline process: Process[?, ?, ?], - incidentMsg: String - )(body: SStep*): IncidentScenario = + inline process: Process[?, ?, ?], + incidentMsg: String + )(body: SStep*): IncidentScenario = IncidentScenario(nameOfVariable(process), process, body.toList, incidentMsg, isOnly = true) inline def incidentScenario( - inline process: Process[?, ?, ?], - incidentMsg: String - ): IncidentScenario = + inline process: Process[?, ?, ?], + incidentMsg: String + ): IncidentScenario = incidentScenario(process, incidentMsg)() end only diff --git a/03-simulation/src/main/scala/camundala/simulation/TestOverrides.scala b/03-simulation/src/main/scala/camundala/simulation/TestOverrides.scala index c6d9f1ef..d26dbcfb 100644 --- a/03-simulation/src/main/scala/camundala/simulation/TestOverrides.scala +++ b/03-simulation/src/main/scala/camundala/simulation/TestOverrides.scala @@ -23,7 +23,7 @@ enum TestOverrideType: object TestOverrideType: given InOutCodec[TestOverrideType] = deriveCodec - given ApiSchema[TestOverrideType] = deriveApiSchema + given ApiSchema[TestOverrideType] = deriveApiSchema def addOverride[ T <: Product @@ -33,21 +33,21 @@ def addOverride[ overrideType: TestOverrideType, value: Option[CamundaVariable] = None ): TestOverrides = - val testOverride = TestOverride(key, overrideType, value) + val testOverride = TestOverride(key, overrideType, value) val newOverrides: Seq[TestOverride] = model match case TestOverrides(overrides) => overrides :+ testOverride - case _ => + case _ => Seq(testOverride) TestOverrides(newOverrides) end addOverride object TestOverrides: - given ApiSchema[TestOverrides] = deriveApiSchema + given ApiSchema[TestOverrides] = deriveApiSchema given InOutCodec[TestOverrides] = deriveInOutCodec object TestOverride: - given ApiSchema[TestOverride] = deriveApiSchema + given ApiSchema[TestOverride] = deriveApiSchema given InOutCodec[TestOverride] = deriveInOutCodec trait TestOverrideExtensions: @@ -128,7 +128,7 @@ trait TestOverrideExtensions: val v = value match case _: scala.reflect.Enum => value case _: (Seq[?] | Product) => value.asJson - case _ => value + case _ => value Some(CamundaVariable.valueToCamunda(v)) end camundaVariable end extension diff --git a/03-simulation/src/main/scala/camundala/simulation/ast.scala b/03-simulation/src/main/scala/camundala/simulation/ast.scala index 57119891..8463a8ea 100644 --- a/03-simulation/src/main/scala/camundala/simulation/ast.scala +++ b/03-simulation/src/main/scala/camundala/simulation/ast.scala @@ -15,7 +15,7 @@ sealed trait WithTestOverrides[T <: WithTestOverrides[T]]: .map(_ :+ testOverride) .getOrElse(TestOverrides(Seq(testOverride))) ) - lazy val camundaToCheckMap: Map[String, CamundaVariable] = + lazy val camundaToCheckMap: Map[String, CamundaVariable] = inOut.camundaToCheckMap end WithTestOverrides @@ -56,8 +56,8 @@ case class ProcessScenario( def add(testOverride: TestOverride): ProcessScenario = copy(testOverrides = addOverride(testOverride)) - def ignored: ProcessScenario = copy(isIgnored = true) - def only: ProcessScenario = copy(isOnly = true) + def ignored: ProcessScenario = copy(isIgnored = true) + def only: ProcessScenario = copy(isOnly = true) def withSteps(steps: List[SStep]): SScenario = copy(steps = steps) end ProcessScenario @@ -76,7 +76,7 @@ case class ExternalTaskScenario( WithTestOverrides[ExternalTaskScenario]: lazy val steps: List[SStep] = List.empty - def inOut: InOut[?, ?, ?] = process + def inOut: InOut[?, ?, ?] = process def add(testOverride: TestOverride): ExternalTaskScenario = copy(testOverrides = addOverride(testOverride)) @@ -118,9 +118,9 @@ case class BadScenario( isOnly: Boolean = false ) extends IsProcessScenario: lazy val inOut: Process[?, ?, ?] = process - lazy val steps: List[SStep] = List.empty - def ignored: BadScenario = copy(isIgnored = true) - def only: BadScenario = copy(isOnly = true) + lazy val steps: List[SStep] = List.empty + def ignored: BadScenario = copy(isIgnored = true) + def only: BadScenario = copy(isOnly = true) def withSteps(steps: List[SStep]): SScenario = this @@ -157,7 +157,7 @@ case class IncidentServiceScenario( isOnly: Boolean = false ) extends IsIncidentScenario: lazy val inOut: ExternalTask[?, ?, ?] = process - lazy val steps: List[SStep] = List.empty + lazy val steps: List[SStep] = List.empty def ignored: IncidentServiceScenario = copy(isIgnored = true) @@ -172,10 +172,10 @@ sealed trait SStep extends ScenarioOrStep sealed trait SInServiceOuttep extends SStep, WithTestOverrides[SInServiceOuttep]: - lazy val inOutDescr: InOutDescr[?, ?] = inOut.inOutDescr - lazy val id: String = inOutDescr.id - lazy val descr: Option[String] = inOutDescr.descr - lazy val camundaInMap: Map[String, CamundaVariable] = inOut.camundaInMap + lazy val inOutDescr: InOutDescr[?, ?] = inOut.inOutDescr + lazy val id: String = inOutDescr.id + lazy val descr: Option[String] = inOutDescr.descr + lazy val camundaInMap: Map[String, CamundaVariable] = inOut.camundaInMap lazy val camundaOutMap: Map[String, CamundaVariable] = inOut.camundaOutMap end SInServiceOuttep @@ -199,7 +199,7 @@ case class SSubProcess( ) extends SInServiceOuttep, HasProcessSteps: - lazy val processName: String = process.processName + lazy val processName: String = process.processName lazy val inOut: Process[?, ?, ?] = process def add(testOverride: TestOverride): SSubProcess = diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/CustomSimulation.scala b/03-simulation/src/main/scala/camundala/simulation/custom/CustomSimulation.scala index eabd59af..3fd57651 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/CustomSimulation.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/CustomSimulation.scala @@ -18,11 +18,11 @@ abstract class CustomSimulation .sequence( sim.scenarios .map { - case scen: ProcessScenario => scen.run() + case scen: ProcessScenario => scen.run() case scen: ExternalTaskScenario => scen.run() - case scen: IsIncidentScenario => scen.run() - case scen: DmnScenario => scen.run() - case scen: BadScenario => scen.run() + case scen: IsIncidentScenario => scen.run() + case scen: DmnScenario => scen.run() + case scen: BadScenario => scen.run() } ) .map( @@ -31,7 +31,7 @@ abstract class CustomSimulation d => d, d => d ) - val log = + val log = data.logEntries .filter(config.logLevel) .map(_.toString) diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/DmnScenarioExtensions.scala b/03-simulation/src/main/scala/camundala/simulation/custom/DmnScenarioExtensions.scala index 397fafe0..4fc58d51 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/DmnScenarioExtensions.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/DmnScenarioExtensions.scala @@ -17,14 +17,14 @@ trait DmnScenarioExtensions extends SScenarioExtensions: } def evaluate()(using data: ScenarioData): ResultType = - val dmn = scenario.inOut + val dmn = scenario.inOut val body = EvaluateDecisionIn( dmn.camundaInMap ).asJson.deepDropNullValues.toString - val uri = config.tenantId match + val uri = config.tenantId match case Some(tenantId) => uri"${config.endpoint}/decision-definition/key/${dmn.decisionDefinitionKey}/tenant-id/$tenantId/evaluate" - case None => + case None => uri"${config.endpoint}/decision-definition/key/${dmn.decisionDefinitionKey}/evaluate" val request = basicRequest @@ -51,10 +51,10 @@ trait DmnScenarioExtensions extends SScenarioExtensions: private def evaluateDmn(resultSeq: Seq[Map[String, CamundaVariable]])(using data: ScenarioData ): ResultType = - val result = resultSeq + val result = resultSeq val decisionDmn: DecisionDmn[?, ?] = scenario.inOut - val check: ResultType = decisionDmn.out match - case expected: SingleEntry[?] => + val check: ResultType = decisionDmn.out match + case expected: SingleEntry[?] => for given ScenarioData <- if result.size == 1 && result.head.size == 1 then @@ -75,7 +75,7 @@ trait DmnScenarioExtensions extends SScenarioExtensions: ) ) yield summon[ScenarioData] - case expected: SingleResult[?] => + case expected: SingleResult[?] => for given ScenarioData <- if @@ -101,7 +101,7 @@ trait DmnScenarioExtensions extends SScenarioExtensions: case expected: CollectEntries[?] => val resultValues = result.map(_.values.head) scenario.testOverrides match - case None => + case None => if (result.isEmpty && expected.toCamunda.isEmpty) || (result.nonEmpty && @@ -130,7 +130,7 @@ trait DmnScenarioExtensions extends SScenarioExtensions: case expected: ResultList[?] => scenario.testOverrides match - case None => + case None => if (result.isEmpty && expected.toCamunda.isEmpty) || (result.nonEmpty && @@ -155,7 +155,7 @@ trait DmnScenarioExtensions extends SScenarioExtensions: ) ) end if - case _ => + case _ => Left( summon[ScenarioData].error( s"Unknown Type ${decisionDmn.out.getClass}: ${decisionDmn.out}" diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/SEventExtensions.scala b/03-simulation/src/main/scala/camundala/simulation/custom/SEventExtensions.scala index c1ef60f1..65cbe589 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/SEventExtensions.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/SEventExtensions.scala @@ -10,13 +10,13 @@ trait SEventExtensions extends SimulationHelper: extension (sEvent: SEvent) def loadVariable()(using data: ScenarioData): ResultType = val variableName = sEvent.readyVariable - val readyValue = sEvent.readyValue + val readyValue = sEvent.readyValue def loadVariable( processInstanceId: Any )(data: ScenarioData): ResultType = - val uri = + val uri = uri"${config.endpoint}/history/variable-instance?variableName=$variableName&processInstanceId=$processInstanceId&deserializeValues=false" - val request = basicRequest + val request = basicRequest .auth() .get(uri) given ScenarioData = data @@ -43,6 +43,7 @@ trait SEventExtensions extends SimulationHelper: s"Variable found for '${sEvent.name}' but not ready ($variableName = '$readyValue' (result: '$value'))" ) ) + end if } .left .flatMap { _ => @@ -67,8 +68,8 @@ trait SEventExtensions extends SimulationHelper: for // default: try until it returns status 200 given ScenarioData <- sEvent.optReadyVariable - .map(_ => sEvent.loadVariable()) - .getOrElse(Right(summon[ScenarioData])) + .map(_ => sEvent.loadVariable()) + .getOrElse(Right(summon[ScenarioData])) given ScenarioData <- sendMsg() yield summon[ScenarioData] @@ -77,16 +78,16 @@ trait SEventExtensions extends SimulationHelper: val processInstanceId: Option[String] = if sEvent.processInstanceId then Some(data.context.processInstanceId) else None - val tenant = // only set if there is no processInstanceId + val tenant = // only set if there is no processInstanceId if sEvent.processInstanceId then None else config.tenantId - val body = CorrelateMessageIn( + val body = CorrelateMessageIn( messageName = event.messageName, tenantId = tenant, processInstanceId = processInstanceId, processVariables = Some(event.camundaInMap) ).asJson.deepDropNullValues.toString - val uri = uri"${config.endpoint}/message" + val uri = uri"${config.endpoint}/message" val request = basicRequest .auth() @@ -116,7 +117,7 @@ trait SEventExtensions extends SimulationHelper: end extension // SReceiveMessageEvent extension (sEvent: SSignalEvent) - def event = sEvent.inOut + def event = sEvent.inOut def sendSignal()(using ScenarioData): ResultType = for given ScenarioData <- sEvent.loadVariable() @@ -128,10 +129,13 @@ trait SEventExtensions extends SimulationHelper: ): ResultType = val body = SendSignalIn( // supports dynamic processInstanceId - name = event.messageName.replace(SignalEvent.Dynamic_ProcessInstance, data.context.processInstanceId), + name = event.messageName.replace( + SignalEvent.Dynamic_ProcessInstance, + data.context.processInstanceId + ), variables = Some(event.camundaInMap) ).asJson.deepDropNullValues.toString - val uri = uri"${config.endpoint}/signal" + val uri = uri"${config.endpoint}/signal" val request = basicRequest .auth() @@ -153,8 +157,8 @@ trait SEventExtensions extends SimulationHelper: for // default it waits until there is a job ready given ScenarioData <- sEvent.optReadyVariable - .map(_ => sEvent.loadVariable()) - .getOrElse(Right(summon[ScenarioData])) + .map(_ => sEvent.loadVariable()) + .getOrElse(Right(summon[ScenarioData])) given ScenarioData <- job() given ScenarioData <- executeTimer() yield summon[ScenarioData] @@ -165,7 +169,7 @@ trait SEventExtensions extends SimulationHelper: def getJob( processInstanceId: Any )(data: ScenarioData): ResultType = - val uri = + val uri = uri"${config.endpoint}/job?processInstanceId=$processInstanceId" val request = basicRequest .auth() diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/SScenarioExtensions.scala b/03-simulation/src/main/scala/camundala/simulation/custom/SScenarioExtensions.scala index b4a85fc1..3042566c 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/SScenarioExtensions.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/SScenarioExtensions.scala @@ -17,17 +17,17 @@ trait SScenarioExtensions extends SStepExtensions: processInstance: Option[ProcessInstance] ) object ProcessInstanceOrExecution: - given ApiSchema[ProcessInstanceOrExecution] = deriveApiSchema + given ApiSchema[ProcessInstanceOrExecution] = deriveApiSchema given InOutCodec[ProcessInstanceOrExecution] = deriveInOutCodec case class Execution(processInstanceId: String) object Execution: - given ApiSchema[Execution] = deriveApiSchema + given ApiSchema[Execution] = deriveApiSchema given InOutCodec[Execution] = deriveInOutCodec case class ProcessInstance(id: String) object ProcessInstance: - given ApiSchema[ProcessInstance] = Schema.derived + given ApiSchema[ProcessInstance] = Schema.derived given InOutCodec[ProcessInstance] = deriveInOutCodec extension (scenario: IsProcessScenario) @@ -62,13 +62,13 @@ trait SScenarioExtensions extends SStepExtensions: data: ScenarioData ): ResultType = val process = scenario.process - val body = CorrelateMessageIn( + val body = CorrelateMessageIn( messageName = process.processName, tenantId = config.tenantId, businessKey = Some(scenario.name), processVariables = Some(process.camundaInMap) ).asJson.deepDropNullValues.toString - val uri = uri"${config.endpoint}/message" + val uri = uri"${config.endpoint}/message" val request = basicRequest .auth() @@ -81,11 +81,11 @@ trait SScenarioExtensions extends SStepExtensions: .as[List[ProcessInstanceOrExecution]] .map { pioe => val processInstanceId = pioe match - case ProcessInstanceOrExecution(Some(exec), None) :: _ => + case ProcessInstanceOrExecution(Some(exec), None) :: _ => exec.processInstanceId case ProcessInstanceOrExecution(None, Some(procInst)) :: _ => procInst.id - case other => s"PROCESS ID not found in $other" + case other => s"PROCESS ID not found in $other" data .withProcessInstanceId(processInstanceId) .info( @@ -104,14 +104,14 @@ trait SScenarioExtensions extends SStepExtensions: private def prepareStartProcess() = val process = scenario.process - val body = StartProcessIn( + val body = StartProcessIn( process.camundaInMap, businessKey = Some(scenario.name) ).asJson.deepDropNullValues.toString - val uri = config.tenantId match + val uri = config.tenantId match case Some(tenantId) => uri"${config.endpoint}/process-definition/key/${process.processName}/tenant-id/$tenantId/start" - case None => + case None => uri"${config.endpoint}/process-definition/key/${process.processName}/start" val request: Request[Either[String, String], Any] = basicRequest @@ -137,8 +137,8 @@ trait SScenarioExtensions extends SStepExtensions: given ScenarioData = data for given ScenarioData <- scenario.startType match - case ProcessStartType.START => scenario.startProcess() - case ProcessStartType.MESSAGE => scenario.sendMessage() + case ProcessStartType.START => scenario.startProcess() + case ProcessStartType.MESSAGE => scenario.sendMessage() given ScenarioData <- scenario.runSteps() given ScenarioData <- scenario.check() yield summon[ScenarioData] @@ -159,8 +159,8 @@ trait SScenarioExtensions extends SStepExtensions: given ScenarioData = data for given ScenarioData <- scenario.startType match - case ProcessStartType.START => scenario.startProcess() - case ProcessStartType.MESSAGE => scenario.sendMessage() + case ProcessStartType.START => scenario.startProcess() + case ProcessStartType.MESSAGE => scenario.sendMessage() given ScenarioData <- scenario.check() yield summon[ScenarioData] end for @@ -176,8 +176,8 @@ trait SScenarioExtensions extends SStepExtensions: given ScenarioData <- scenario.startProcess() given ScenarioData <- scenario.runSteps() given ScenarioData <- checkIncident()( - summon[ScenarioData].withRequestCount(0) - ) + summon[ScenarioData].withRequestCount(0) + ) yield summon[ScenarioData] end for } @@ -213,7 +213,7 @@ trait SScenarioExtensions extends SStepExtensions: s"Incident Message only in Root incident $rootCauseIncidentId" ) ) - case _ => + case _ => Left( data .error( @@ -221,7 +221,7 @@ trait SScenarioExtensions extends SStepExtensions: ) ) } - case _ => + case _ => given ScenarioData = data scenario.tryOrFail(checkIncident()) } @@ -248,14 +248,14 @@ trait SScenarioExtensions extends SStepExtensions: given ScenarioData = data .info(s"Process '${scenario.name}' startProcess") .debug(s"- URI: ${request.uri}") - val response = request.send(backend) + val response = request.send(backend) (response.code.code match case scenario.status => Right( data.info(s"Status matched for BadScenario (${scenario.status})") ) - case other => + case other => Left( data.error( s"Status NOT matched for BadScenario (expected: ${scenario.status}, actual: $other)" @@ -267,7 +267,7 @@ trait SScenarioExtensions extends SStepExtensions: response.body match case Left(body) if body.contains(errMsg) => Right(data.info(s"Body contains correct errorMsg: '$errMsg'")) - case msg => + case msg => Left( data .error(s"Error Message not found in Body.") diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/SStepExtensions.scala b/03-simulation/src/main/scala/camundala/simulation/custom/SStepExtensions.scala index a23433c6..8d6affdd 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/SStepExtensions.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/SStepExtensions.scala @@ -14,15 +14,15 @@ trait SStepExtensions data: ScenarioData ): ResultType = step match - case ut: SUserTask => + case ut: SUserTask => ut.getAndComplete() - case e: SMessageEvent => + case e: SMessageEvent => e.sendMessage() - case e: SSignalEvent => + case e: SSignalEvent => e.sendSignal() - case e: STimerEvent => + case e: STimerEvent => e.getAndExecute() - case sp: SSubProcess => + case sp: SSubProcess => for given ScenarioData <- sp.switchToSubProcess() given ScenarioData <- sp.runSteps() @@ -43,7 +43,7 @@ trait SStepExtensions case (Right(data), step) => given ScenarioData = data step.run() - case (leftData, _) => leftData + case (leftData, _) => leftData } def check()(using @@ -57,9 +57,9 @@ trait SStepExtensions def checkVars()(using data: ScenarioData): ResultType = val processInstanceId = data.context.processInstanceId - val uri = + val uri = uri"${config.endpoint}/history/variable-instance?processInstanceIdIn=$processInstanceId&executionIdIn=$processInstanceId&deserializeValues=false" - val request = basicRequest + val request = basicRequest .auth() .get(uri) runRequest(request, s"Process '${hasProcessSteps.name}' checkVars")((body, data) => @@ -96,12 +96,12 @@ trait SStepExtensions def checkFinished()(data: ScenarioData): ResultType = val processInstanceId = data.context.processInstanceId - val uri = + val uri = uri"${config.endpoint}/history/process-instance/$processInstanceId" - val request = basicRequest + val request = basicRequest .auth() .get(uri) - given ScenarioData = data + given ScenarioData = data runRequest(request, s"Process '${hasProcessSteps.name}' checkProcess") { (body, data) => body.hcursor diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/SSubProcessExtensions.scala b/03-simulation/src/main/scala/camundala/simulation/custom/SSubProcessExtensions.scala index 4aa1cb3f..c155668c 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/SSubProcessExtensions.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/SSubProcessExtensions.scala @@ -10,7 +10,7 @@ trait SSubProcessExtensions extends SimulationHelper: val superProcessInstanceId = data.context.processInstanceId def processInstance()(data: ScenarioData): ResultType = - val uri = + val uri = uri"${config.endpoint}/process-instance?superProcessInstance=$superProcessInstanceId&active=true&processDefinitionKey=${process.processName}" val request = basicRequest .auth() diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/SUserTaskExtensions.scala b/03-simulation/src/main/scala/camundala/simulation/custom/SUserTaskExtensions.scala index df80a053..52bd7612 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/SUserTaskExtensions.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/SUserTaskExtensions.scala @@ -26,9 +26,9 @@ trait SUserTaskExtensions extends SimulationHelper: processInstanceId: Any, taskDefinitionKey: String )(data: ScenarioData): ResultType = - val uri = + val uri = uri"${config.endpoint}/task?processInstanceId=$processInstanceId&taskDefinitionKey=$taskDefinitionKey" - val request = basicRequest + val request = basicRequest .auth() .get(uri) given ScenarioData = data @@ -65,9 +65,9 @@ trait SUserTaskExtensions extends SimulationHelper: def checkForm()(using data: ScenarioData): ResultType = val processInstanceId = data.context.processInstanceId - val uri = + val uri = uri"${config.endpoint}/process-instance/$processInstanceId/variables?deserializeValues=false" - val request = basicRequest + val request = basicRequest .auth() .get(uri) @@ -107,14 +107,14 @@ trait SUserTaskExtensions extends SimulationHelper: end checkForm private def completeTask()(using data: ScenarioData): ResultType = - val taskId = data.context.taskId - val backend = HttpClientSyncBackend() - val uri = + val taskId = data.context.taskId + val backend = HttpClientSyncBackend() + val uri = uri"${config.endpoint}/task/$taskId/complete?deserializeValues=false" - val body = CompleteTaskOut( + val body = CompleteTaskOut( userTask.camundaOutMap ).asJson.deepDropNullValues.toString - val request = basicRequest + val request = basicRequest .auth() .contentType("application/json") .body(body) diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/ScenarioData.scala b/03-simulation/src/main/scala/camundala/simulation/custom/ScenarioData.scala index 22a13b84..150482d0 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/ScenarioData.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/ScenarioData.scala @@ -21,22 +21,22 @@ case class ScenarioData( def withProcessInstanceId(processInstanceId: String): ScenarioData = copy(context = context.copy(processInstanceId = processInstanceId)) - def switchToSubProcess(): ScenarioData = + def switchToSubProcess(): ScenarioData = copy(context = context.copy(rootProcessInstanceId = context.processInstanceId, processInstanceId = notSet) ) - def switchToMainProcess(): ScenarioData = + def switchToMainProcess(): ScenarioData = copy(context = context.copy( rootProcessInstanceId = notSet, processInstanceId = context.rootProcessInstanceId ) ) - def withTaskId(taskId: String): ScenarioData = + def withTaskId(taskId: String): ScenarioData = copy(context = context.copy(taskId = taskId)) - def withJobId(jobId: String): ScenarioData = + def withJobId(jobId: String): ScenarioData = copy(context = context.copy(jobId = jobId)) - def withRequestCount(requestCount: Int): ScenarioData = + def withRequestCount(requestCount: Int): ScenarioData = copy(context = context.copy(requestCount = requestCount)) end ScenarioData diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/SimulationHelper.scala b/03-simulation/src/main/scala/camundala/simulation/custom/SimulationHelper.scala index 343ea765..81796dae 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/SimulationHelper.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/SimulationHelper.scala @@ -14,8 +14,8 @@ trait SimulationHelper extends ResultChecker, Logging: def config: SimulationConfig[RequestT[Empty, Either[String, String], Any]] = SimulationConfig[RequestT[Empty, Either[String, String], Any]]() - lazy val backend: SttpBackend[Identity, Any] = HttpClientSyncBackend() - lazy val cockpitUrl = + lazy val backend: SttpBackend[Identity, Any] = HttpClientSyncBackend() + lazy val cockpitUrl = config.endpoint.replace("/engine-rest", "/camunda/app/cockpit/default") extension (request: RequestT[Empty, Either[String, String], Any]) def auth(): RequestT[Empty, Either[String, String], Any] = @@ -36,6 +36,7 @@ trait SimulationHelper extends ResultChecker, Logging: .info(err.toString) ) ) + end extension protected def handleNon2xxResponse( httpStatus: StatusCode, @@ -147,7 +148,7 @@ trait SimulationHelper extends ResultChecker, Logging: ) ) } - case _ => + case _ => Right( data .debug( @@ -170,12 +171,12 @@ trait SimulationHelper extends ResultChecker, Logging: handleBody: (Json, ScenarioData) => ResultType ): ResultType = val processInstanceId = data.context.processInstanceId - val uri = rootIncidentId match + val uri = rootIncidentId match case Some(incId) => uri"${config.endpoint}/incident?incidentId=$incId&deserializeValues=false" - case None => + case None => uri"${config.endpoint}/incident?processInstanceId=$processInstanceId&deserializeValues=false" - val request = basicRequest + val request = basicRequest .auth() .get(uri) @@ -192,13 +193,13 @@ trait SimulationHelper extends ResultChecker, Logging: ): Either[ScenarioData, (Option[String], String, String)] = val arr = body.hcursor.downArray (for - maybeIncMessage <- arr - .downField("incidentMessage") - .as[Option[String]] - id <- arr.downField("id").as[String] + maybeIncMessage <- arr + .downField("incidentMessage") + .as[Option[String]] + id <- arr.downField("id").as[String] rootCauseIncidentId <- arr - .downField("rootCauseIncidentId") - .as[String] + .downField("rootCauseIncidentId") + .as[String] yield (maybeIncMessage, id, rootCauseIncidentId)).left .map { ex => data diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/SimulationTestFramework.scala b/03-simulation/src/main/scala/camundala/simulation/custom/SimulationTestFramework.scala index cde3492c..117436de 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/SimulationTestFramework.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/SimulationTestFramework.scala @@ -25,8 +25,8 @@ final class SimulationTestFramework extends sbt.testing.Framework: end SimulationTestFramework object SimulationFingerprint extends sbt.testing.SubclassFingerprint: - def superclassName(): String = "camundala.simulation.custom.CustomSimulation" - final def isModule() = false + def superclassName(): String = "camundala.simulation.custom.CustomSimulation" + final def isModule() = false final def requireNoArgConstructor() = true end SimulationFingerprint @@ -45,19 +45,19 @@ final class SimulationRunner( td, (loggers, eventHandler) => Future { - val startTime = System.currentTimeMillis() + val startTime = System.currentTimeMillis() val futSimResults = Class .forName(td.fullyQualifiedName()) .getDeclaredConstructor() .newInstance() .asInstanceOf[CustomSimulation] .simulation - val simResults = Await.result(futSimResults, 5.minutes) - val time = System.currentTimeMillis() - startTime - val timeInSec = time / 1000 - val name = td.fullyQualifiedName().split('.').last - val line = "~" * (((maxLine - 5) - name.length) / 2) - val logLevel = simResults.head._1 + val simResults = Await.result(futSimResults, 5.minutes) + val time = System.currentTimeMillis() - startTime + val timeInSec = time / 1000 + val name = td.fullyQualifiedName().split('.').last + val line = "~" * (((maxLine - 5) - name.length) / 2) + val logLevel = simResults.head._1 println( s"""${logLevel.color}${s"$line START $name $line" .takeRight(maxLine)}${Console.RESET} @@ -80,7 +80,7 @@ final class SimulationRunner( def status(): sbt.testing.Status = logLevel match case LogLevel.ERROR => sbt.testing.Status.Failure - case _ => + case _ => sbt.testing.Status.Success def selector(): sbt.testing.NestedTestSelector = @@ -91,8 +91,7 @@ final class SimulationRunner( def fingerprint(): sbt.testing.Fingerprint = td.fingerprint() - def duration(): Long = time - ) + def duration(): Long = time) } } ) diff --git a/03-simulation/src/main/scala/camundala/simulation/custom/auth.scala b/03-simulation/src/main/scala/camundala/simulation/custom/auth.scala index 0f453252..402a9dbe 100644 --- a/03-simulation/src/main/scala/camundala/simulation/custom/auth.scala +++ b/03-simulation/src/main/scala/camundala/simulation/custom/auth.scala @@ -4,8 +4,8 @@ package custom import sttp.client3.* trait BasicSimulationDsl extends CustomSimulation: - def username = "demo" - def password = "demo" + def username = "demo" + def password = "demo" override def config: SimulationConfig[RequestT[Empty, Either[String, String], Any]] = super.config .withAuthHeader((r: RequestT[Empty, Either[String, String], Any]) => @@ -29,7 +29,7 @@ trait OAuthSimulationDsl extends CustomSimulation: ) private lazy val getToken: String = - val uri = uri"${fsso.url}/token" + val uri = uri"${fsso.url}/token" val request = basicRequest .header("Content-Type", "application/x-www-form-urlencoded") .body(fsso.bodyForm) @@ -44,7 +44,7 @@ trait OAuthSimulationDsl extends CustomSimulation: .as[String] ) match case Right(token) => token - case Left(err) => + case Left(err) => throw new IllegalArgumentException(s"Could not get a token!\n$err") end match end getToken diff --git a/03-worker/src/main/scala/camundala/worker/EngineContext.scala b/03-worker/src/main/scala/camundala/worker/EngineContext.scala index 4adb7ee9..5b5c3c6d 100644 --- a/03-worker/src/main/scala/camundala/worker/EngineContext.scala +++ b/03-worker/src/main/scala/camundala/worker/EngineContext.scala @@ -48,8 +48,8 @@ trait EngineContext: value: Any ): Any = value match - case None | null => null - case Some(v) => objectToEngineObject(product, key, v) + case None | null => null + case Some(v) => objectToEngineObject(product, key, v) case v: (Product | Iterable[?] | Map[?, ?]) => product.asJson.hcursor .downField(key) @@ -63,17 +63,17 @@ trait EngineContext: def valueToEngineObject(value: Any): Any = value match - case v: scala.reflect.Enum => + case v: scala.reflect.Enum => v.toString - case ld: LocalDate => + case ld: LocalDate => ld.toString - case ldt: LocalDateTime => + case ldt: LocalDateTime => ldt.toString case other if other == null => null - case v: Json => + case v: Json => jsonToEngineValue(v) - case other => + case other => other def domainObjToEngineObject[A <: Product: InOutCodec](variable: A): Any = @@ -81,15 +81,15 @@ trait EngineContext: def jsonToEngineValue(json: Json): Any = json match - case j if j.isNull => null - case j if j.isNumber => + case j if j.isNull => null + case j if j.isNumber => j.asNumber.get.toBigDecimal.get match - case n if n.isValidInt => n.toInt + case n if n.isValidInt => n.toInt case n if n.isValidLong => n.toLong - case n => n.toDouble + case n => n.toDouble case j if j.isBoolean => j.asBoolean.get - case j if j.isString => j.asString.get - case j => + case j if j.isString => j.asString.get + case j => toEngineObject(j.deepDropNullValues) end jsonToEngineValue diff --git a/03-worker/src/main/scala/camundala/worker/Handler.scala b/03-worker/src/main/scala/camundala/worker/Handler.scala index 0a03b5da..b9ec2cc3 100644 --- a/03-worker/src/main/scala/camundala/worker/Handler.scala +++ b/03-worker/src/main/scala/camundala/worker/Handler.scala @@ -14,7 +14,7 @@ trait WorkerHandler: def topic: String def applicationName: String - def registerHandler( register: => Unit): Unit = + def registerHandler(register: => Unit): Unit = val appPackageName = applicationName.replace("-", ".") val testMode = sys.env.get("WORKER_TEST_MODE").contains("true") // did not work with lazy val if testMode || getClass.getName.startsWith(appPackageName) @@ -65,7 +65,6 @@ object ValidationHandler: funct(in) end ValidationHandler - type InitProcessFunction = EngineContext ?=> Either[InitProcessError, Map[String, Any]] diff --git a/03-worker/src/main/scala/camundala/worker/JobWorker.scala b/03-worker/src/main/scala/camundala/worker/JobWorker.scala index 5a019b0f..366b8f51 100644 --- a/03-worker/src/main/scala/camundala/worker/JobWorker.scala +++ b/03-worker/src/main/scala/camundala/worker/JobWorker.scala @@ -23,6 +23,7 @@ trait JobWorker: errorHandled && regexHandledErrors.forall(regex => errorMsg.matches(s".*$regex.*") ) + end regexMatchesAll protected def filteredOutput( outputVariables: Seq[String], diff --git a/03-worker/src/main/scala/camundala/worker/WorkerApp.scala b/03-worker/src/main/scala/camundala/worker/WorkerApp.scala index 52bac4a7..48974e7a 100644 --- a/03-worker/src/main/scala/camundala/worker/WorkerApp.scala +++ b/03-worker/src/main/scala/camundala/worker/WorkerApp.scala @@ -10,16 +10,17 @@ trait WorkerApp extends ZIOAppDefault: protected var theWorkers: Set[JobWorker] = uninitialized override val bootstrap: ZLayer[ZIOAppArgs, Any, Any] = ZioLogger.logger - + def workers(dWorkers: (JobWorker | Seq[JobWorker])*): Unit = theWorkers = dWorkers .flatMap: case d: JobWorker => Seq(d) - case s: Seq[?] => s.collect{case d: JobWorker => d} + case s: Seq[?] => s.collect { case d: JobWorker => d } .toSet override def run: ZIO[Any, Any, Any] = for _ <- logInfo("Starting WorkerApp") _ <- collectAllPar(workerRegistries.map(_.register(theWorkers))) - yield () + yield () +end WorkerApp diff --git a/03-worker/src/main/scala/camundala/worker/WorkerDsl.scala b/03-worker/src/main/scala/camundala/worker/WorkerDsl.scala index 7d26cc4e..e2c119e4 100644 --- a/03-worker/src/main/scala/camundala/worker/WorkerDsl.scala +++ b/03-worker/src/main/scala/camundala/worker/WorkerDsl.scala @@ -7,7 +7,7 @@ import camundala.worker.CamundalaWorkerError.* import scala.reflect.ClassTag trait WorkerDsl[In <: Product: InOutCodec, Out <: Product: InOutCodec] - extends JobWorker: + extends JobWorker: // needed that it can be called from CSubscriptionPostProcessor def worker: Worker[In, Out, ?] @@ -112,12 +112,12 @@ trait ServiceWorkerDsl[ protected def serviceTask: ServiceTask[In, Out, ServiceIn, ServiceOut] protected def apiUri(in: In): Uri // input must be valid - so no errors // optional - protected def method: Method = Method.GET + protected def method: Method = Method.GET protected def querySegments(in: In): Seq[QuerySegmentOrParam] = Seq.empty // input must be valid - so no errors - // mocking out from outService and headers - protected def inputMapper(in: In): Option[ServiceIn] = None // input must be valid - so no errors - protected def inputHeaders(in: In): Map[String, String] = + // mocking out from outService and headers + protected def inputMapper(in: In): Option[ServiceIn] = None // input must be valid - so no errors + protected def inputHeaders(in: In): Map[String, String] = Map.empty // input must be valid - so no errors protected def outputMapper( serviceOut: ServiceResponse[ServiceOut], @@ -136,10 +136,10 @@ trait ServiceWorkerDsl[ in: In ): Either[ServiceMappingError, Out] = serviceResponse.outputBody match - case _: NoOutput => Right(serviceTask.out) + case _: NoOutput => Right(serviceTask.out) case Some(_: NoOutput) => Right(serviceTask.out) - case None => Right(serviceTask.out) - case _ => + case None => Right(serviceTask.out) + case _ => Left(ServiceMappingError(s"There is an outputMapper missing for '${getClass.getName}'.")) end defaultOutMapper @@ -170,15 +170,17 @@ private trait InitProcessDsl[ protected def customInit(in: In): InitIn // by default the InConfig is initialized - final def initProcess(in: In)(using engineContext: EngineContext): Either[InitProcessError, Map[String, Any]] = + final def initProcess(in: In)(using + engineContext: EngineContext + ): Either[InitProcessError, Map[String, Any]] = val inConfig = in match case i: WithConfig[?] => initConfig( i.inConfig.asInstanceOf[Option[InConfig]], i.defaultConfig.asInstanceOf[InConfig] ) - case _ => Map.empty - val custom = engineContext.toEngineObject(customInit(in)) + case _ => Map.empty + val custom = engineContext.toEngineObject(customInit(in)) Right(inConfig ++ custom) end initProcess @@ -197,20 +199,23 @@ private trait InitProcessDsl[ defaultConfig: InConfig )(using engineContext: EngineContext): Map[String, Any] = val defaultJson = defaultConfig.asJson - val r = optConfig.map { + val r = optConfig.map { config => val json = config.asJson config.productElementNames .map(k => - k -> (json.hcursor - .downField(k).focus, defaultJson.hcursor - .downField(k).focus) + k -> ( + json.hcursor + .downField(k).focus, + defaultJson.hcursor + .downField(k).focus + ) ).collect { case k -> (Some(j), Some(dj)) if j.isNull => k -> dj - case k -> (Some(j), _) => + case k -> (Some(j), _) => k -> j - case k -> (_, dj) => + case k -> (_, dj) => k -> dj.getOrElse(Json.Null) } .toMap diff --git a/03-worker/src/main/scala/camundala/worker/WorkerExecutor.scala b/03-worker/src/main/scala/camundala/worker/WorkerExecutor.scala index 489d2fd7..acad0d7a 100644 --- a/03-worker/src/main/scala/camundala/worker/WorkerExecutor.scala +++ b/03-worker/src/main/scala/camundala/worker/WorkerExecutor.scala @@ -154,8 +154,7 @@ case class WorkerExecutor[ case o: NoOutput => context.toEngineObject(o) case _ => - context.toEngineObject(output.asInstanceOf[Out]) - ) + context.toEngineObject(output.asInstanceOf[Out])) private def filteredOutput( allOutputs: Map[String, Any] ): Map[String, Any] = diff --git a/03-worker/src/main/scala/camundala/worker/ZioLogger.scala b/03-worker/src/main/scala/camundala/worker/ZioLogger.scala index d76f51d0..d05b44d4 100644 --- a/03-worker/src/main/scala/camundala/worker/ZioLogger.scala +++ b/03-worker/src/main/scala/camundala/worker/ZioLogger.scala @@ -30,4 +30,4 @@ case class Slf4JLogger(private val delegateLogger: Logger) extends WorkerLogger: end Slf4JLogger object Slf4JLogger: def logger(name: String) = Slf4JLogger(LoggerFactory.getLogger(name)) -end Slf4JLogger \ No newline at end of file +end Slf4JLogger diff --git a/03-worker/src/main/scala/camundala/worker/ast.scala b/03-worker/src/main/scala/camundala/worker/ast.scala index f230b66f..50cec0eb 100644 --- a/03-worker/src/main/scala/camundala/worker/ast.scala +++ b/03-worker/src/main/scala/camundala/worker/ast.scala @@ -18,16 +18,16 @@ sealed trait Worker[ def inOutExample: InOut[In, Out, ?] def topic: String - def otherEnumInExamples: Option[Seq[In]] = inOutExample.otherEnumInExamples - lazy val in: In = inOutExample.in - lazy val out: Out = inOutExample.out + def otherEnumInExamples: Option[Seq[In]] = inOutExample.otherEnumInExamples + lazy val in: In = inOutExample.in + lazy val out: Out = inOutExample.out // handler - def validationHandler: Option[ValidationHandler[In]] = None + def validationHandler: Option[ValidationHandler[In]] = None def initProcessHandler: Option[InitProcessHandler[In]] = None // no handler for mocking - all done from the InOut Object - def runWorkHandler: Option[RunWorkHandler[In, Out]] = None + def runWorkHandler: Option[RunWorkHandler[In, Out]] = None // helper - lazy val variableNames: Seq[String] = + lazy val variableNames: Seq[String] = (in.productElementNames.toSeq ++ otherEnumInExamples .map: @@ -39,7 +39,7 @@ sealed trait Worker[ in match case i: WithConfig[?] => i.defaultConfig.productElementNames.toSeq - case _ => Seq.empty + case _ => Seq.empty def defaultMock(in: In)(using context: EngineRunContext @@ -48,7 +48,7 @@ sealed trait Worker[ inOutExample match case e: ProcessOrExternalTask[In, Out, ?] => e.dynamicOutMock.map(_(in)).getOrElse(out) - case _ => out + case _ => out ) end defaultMock @@ -186,7 +186,7 @@ object RunnableRequest: inputObject.productElementNames.toSeq .zip(inputObject.productIterator.toSeq) .collect { - case k -> Some(v) => k -> s"$v" + case k -> Some(v) => k -> s"$v" case k -> v if v != None => k -> s"$v" } .toMap @@ -194,8 +194,8 @@ object RunnableRequest: val segments = querySegments .collect { - case Value(v) => QuerySegment.Value(v) - case KeyValue(k, v) => QuerySegment.KeyValue(k, v) + case Value(v) => QuerySegment.Value(v) + case KeyValue(k, v) => QuerySegment.KeyValue(k, v) case Key(k) if valueMap.contains(k) => QuerySegment.KeyValue(k, valueMap(k)) } diff --git a/03-worker/src/main/scala/camundala/worker/exports.scala b/03-worker/src/main/scala/camundala/worker/exports.scala index 8255c5f9..d9a884bf 100644 --- a/03-worker/src/main/scala/camundala/worker/exports.scala +++ b/03-worker/src/main/scala/camundala/worker/exports.scala @@ -172,7 +172,7 @@ def niceClassName(clazz: Class[?]) = clazz.getName.split("""\$""").head def printTimeOnConsole(start: Date) = - val time = new Date().getTime - start.getTime + val time = new Date().getTime - start.getTime val color = if time > 1000 then Console.YELLOW_B else if time > 250 then Console.MAGENTA else Console.BLACK diff --git a/03-worker/src/test/scala/camundala/worker/astTest.scala b/03-worker/src/test/scala/camundala/worker/astTest.scala index 826dc409..a02553f6 100644 --- a/03-worker/src/test/scala/camundala/worker/astTest.scala +++ b/03-worker/src/test/scala/camundala/worker/astTest.scala @@ -76,17 +76,17 @@ class astTest extends munit.FunSuite, BpmnProcessDsl, BpmnServiceTaskDsl: case class In(value: Int = 1) object In: given InOutCodec[In] = deriveInOutCodec[In] - given ApiSchema[In] = deriveApiSchema[In] + given ApiSchema[In] = deriveApiSchema[In] case class Out(value: Boolean = true) object Out: given InOutCodec[Out] = deriveInOutCodec[Out] - given ApiSchema[Out] = deriveApiSchema[Out] + given ApiSchema[Out] = deriveApiSchema[Out] - override def processName: String = "???" - override def descr: String = "???" - override def companyDescr: String = "???" - override def path: String = "???" - override def serviceLabel: String = "???" + override def processName: String = "???" + override def descr: String = "???" + override def companyDescr: String = "???" + override def path: String = "???" + override def serviceLabel: String = "???" override def serviceVersion: String = "???" - override def topicName: String = "???" + override def topicName: String = "???" end astTest diff --git a/03-worker/src/test/scala/camundala/worker/camundala.worker.WorkerExecutorTest.scala b/03-worker/src/test/scala/camundala/worker/camundala.worker.WorkerExecutorTest.scala index 54a9a4f3..432b00de 100644 --- a/03-worker/src/test/scala/camundala/worker/camundala.worker.WorkerExecutorTest.scala +++ b/03-worker/src/test/scala/camundala/worker/camundala.worker.WorkerExecutorTest.scala @@ -13,7 +13,7 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: given EngineRunContext = EngineRunContext( new EngineContext: override def getLogger(clazz: Class[?]): WorkerLogger = ??? - override def toEngineObject: Json => Any = ??? + override def toEngineObject: Json => Any = ??? override def sendRequest[ServiceIn: Encoder, ServiceOut: Decoder: ClassTag]( request: RunnableRequest[ServiceIn] ): SendRequestType[ServiceOut] = ??? @@ -22,9 +22,9 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: ) def processName: String = "test-process" - def example = process(In(), NoOutput()) + def example = process(In(), NoOutput()) import In.given - def worker = InitWorker(example) + def worker = InitWorker(example) case class In(aValue: String = "ok", inConfig: Option[InConfig] = None) extends WithConfig[InConfig]: @@ -32,7 +32,7 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: object In: given InOutCodec[In] = deriveInOutCodec[In] - given ApiSchema[In] = deriveApiSchema[In] + given ApiSchema[In] = deriveApiSchema[In] case class InConfig( requiredValue: String = "required", @@ -41,7 +41,7 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: object InConfig: given InOutCodec[InConfig] = deriveInOutCodec[InConfig] - given ApiSchema[InConfig] = deriveApiSchema[InConfig] + given ApiSchema[InConfig] = deriveApiSchema[InConfig] lazy val executor = WorkerExecutor(worker) @@ -50,8 +50,8 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: executor.InputValidator.validate(Seq( Right("requiredValue" -> None), Right("optionalValue" -> None), - Right("aValue" -> Some(Json.fromString("ok"))), - Right("inConfig" -> Some(Json.obj("requiredValue" -> Json.fromString("aso")))) + Right("aValue" -> Some(Json.fromString("ok"))), + Right("inConfig" -> Some(Json.obj("requiredValue" -> Json.fromString("aso")))) )), Right(In(inConfig = Some(InConfig(requiredValue = "aso")))) ) @@ -60,14 +60,14 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: executor.InputValidator.validate(Seq( Right("requiredValue" -> None), Right("optionalValue" -> None), - Right("aValue" -> Some(Json.fromString("ok"))) + Right("aValue" -> Some(Json.fromString("ok"))) )), Right(In(inConfig = Some(InConfig()))) ) test("InputValidator WithConfig override InConfig in In"): assertEquals( executor.InputValidator.validate(Seq( - Right("aValue" -> Some(Json.fromString("ok"))), + Right("aValue" -> Some(Json.fromString("ok"))), Right("requiredValue" -> Some(Json.fromString("aso"))), Right("optionalValue" -> Some(Json.fromString("nei"))) )), @@ -75,7 +75,7 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: ) test("Test optional values are null in JSON"): - val in = InConfig().asJson.hcursor + val in = InConfig().asJson.hcursor .downField("optionalValue") .as[Json] val out = Json.Null @@ -83,5 +83,5 @@ class WorkerExecutorTest extends munit.FunSuite, BpmnProcessDsl: in, Right(out) ) - + end WorkerExecutorTest diff --git a/04-c7-spring/src/main/scala/camundala/camunda/Mocker.scala b/04-c7-spring/src/main/scala/camundala/camunda/Mocker.scala index b3b08f61..832f97f6 100644 --- a/04-c7-spring/src/main/scala/camundala/camunda/Mocker.scala +++ b/04-c7-spring/src/main/scala/camundala/camunda/Mocker.scala @@ -11,7 +11,7 @@ trait Mocker: def mockOrProceed(execution: DelegateExecution): Unit = val outputMock = execution.getVariable("outputMock") - val mocked = + val mocked = if Option(outputMock).isEmpty then false else val parsedJson: Either[ParsingFailure, Json] = @@ -23,11 +23,11 @@ trait Mocker: .foreach { case k -> json => execution.setVariable(k, camundaVariable(json)) } - case Right(other) => + case Right(other) => throw new IllegalArgumentException( s"The mock must be a Json Object:\n- $other\n- ${other.getClass}" ) - case Left(exception) => + case Left(exception) => throw new IllegalArgumentException( s"The mock could not be parsed to Json Object:\n- $outputMock\n- $exception" ) @@ -39,11 +39,11 @@ trait Mocker: private def camundaVariable(json: Json): Any = json match - case j if j.isNull => null - case j if j.isNumber => j.asNumber.get.toBigDecimal.get + case j if j.isNull => null + case j if j.isNumber => j.asNumber.get.toBigDecimal.get case j if j.isBoolean => j.asBoolean.get - case j if j.isString => j.asString.get - case j => JSON(j.toString) + case j if j.isString => j.asString.get + case j => JSON(j.toString) end camundaVariable end Mocker diff --git a/04-c7-spring/src/main/scala/camundala/camunda/Validator.scala b/04-c7-spring/src/main/scala/camundala/camunda/Validator.scala index a6a82901..f83f8cc6 100644 --- a/04-c7-spring/src/main/scala/camundala/camunda/Validator.scala +++ b/04-c7-spring/src/main/scala/camundala/camunda/Validator.scala @@ -43,17 +43,17 @@ trait Validator[T <: Product: InOutCodec]: private def extractValue(typedValue: TypedValue): AnyRef = typedValue.getType match - case _: PrimitiveValueType => + case _: PrimitiveValueType => typedValue.getValue match - case vt: DmnValueSimple => + case vt: DmnValueSimple => vt.asJson case en: scala.reflect.Enum => en.toString - case other => + case other => println(s"Unexpected: $other") other case _: SerializableValueType => typedValue.getValue - case _: FileValueType => + case _: FileValueType => typedValue match case f: FileValueImpl => FileInOut( @@ -61,6 +61,6 @@ trait Validator[T <: Product: InOutCodec]: f.getByteArray.take(10), // just take a few Option(f.getMimeType) ).asJson - case o => + case o => throwErr(s"Must be a FileValueImpl - but is ${o.getClass}") end Validator diff --git a/04-c7-spring/src/main/scala/camundala/camunda/model.scala b/04-c7-spring/src/main/scala/camundala/camunda/model.scala index 9016b592..5d46f62c 100644 --- a/04-c7-spring/src/main/scala/camundala/camunda/model.scala +++ b/04-c7-spring/src/main/scala/camundala/camunda/model.scala @@ -16,7 +16,7 @@ case class BpmnProcess( elements: (InOut[?, ?, ?] | BpmnInOut[?, ?])* ): BpmnProcess = this.copy(elements = elements.map { - case inOut: InOut[?, ?, ?] => BpmnInOut(inOut.asInstanceOf[InOut[Product, Product, ?]]) + case inOut: InOut[?, ?, ?] => BpmnInOut(inOut.asInstanceOf[InOut[Product, Product, ?]]) case bpmnInOut: BpmnInOut[?, ?] => bpmnInOut }) end BpmnProcess @@ -60,20 +60,20 @@ case class PathMapper( def printExpression(): String = toMappingEntries .map(_.name) match - case Nil => throwErr("The Path is empty - It must have more than one element!") + case Nil => throwErr("The Path is empty - It must have more than one element!") case x :: Nil => throwErr(s"The Path is '$x' - It must have more than one element!") - case x :: xs => + case x :: xs => s"$${" + x + xs.mkString(".prop(\"", "\").prop(\"", s"\")${varType.expr}") + "}" def toMappingEntries: List[MappingEntry] = val head = path.headOption match case Some(PathEntry.PathElem(n)) => MappingEntry.ValueElem(n) - case other => + case other => throwErr("The Path must start") path.tail.foldLeft(List[MappingEntry](head)) { - case result -> PathEntry.PathElem(n) => + case result -> PathEntry.PathElem(n) => result :+ MappingEntry.ValueElem(n) case result -> PathEntry.OptionalPath => result.init :+ MappingEntry.OptionalElem(result.last.name) @@ -87,23 +87,23 @@ enum PathEntry: enum MapType(val expr: String): case Boolean extends MapType(".boolValue()") - case Int extends MapType(".numberValue()") - case Long extends MapType(".numberValue()") - case Double extends MapType(".numberValue()") - case String extends MapType(".stringValue()") - case Json extends MapType("") + case Int extends MapType(".numberValue()") + case Long extends MapType(".numberValue()") + case Double extends MapType(".numberValue()") + case String extends MapType(".stringValue()") + case Json extends MapType("") end MapType object MapType: def apply(className: String): MapType = className match case n if n.contains("Boolean") => MapType.Boolean - case n if n.contains("Int") => MapType.Int - case n if n.contains("Long") => MapType.Long - case n if n.contains("Float") => MapType.Double - case n if n.contains("Double") => MapType.Double - case n if n.contains("String") => MapType.String - case n => MapType.Json + case n if n.contains("Int") => MapType.Int + case n if n.contains("Long") => MapType.Long + case n if n.contains("Float") => MapType.Double + case n if n.contains("Double") => MapType.Double + case n if n.contains("String") => MapType.String + case n => MapType.Json end MapType sealed trait MappingEntry: @@ -113,8 +113,8 @@ sealed trait MappingEntry: object MappingEntry: case class OptionalElem(name: String) extends MappingEntry: def printGroovy(): String = s"$name?" - case class SeqElem(name: String) extends MappingEntry: + case class SeqElem(name: String) extends MappingEntry: def printGroovy(): String = "SeqElem" - case class ValueElem(name: String) extends MappingEntry: + case class ValueElem(name: String) extends MappingEntry: def printGroovy(): String = name end MappingEntry diff --git a/04-c8-spring/src/main/scala/camundala/camunda8/RestEndpoint.scala b/04-c8-spring/src/main/scala/camundala/camunda8/RestEndpoint.scala index 58d9fdde..e9b3b28d 100644 --- a/04-c8-spring/src/main/scala/camundala/camunda8/RestEndpoint.scala +++ b/04-c8-spring/src/main/scala/camundala/camunda8/RestEndpoint.scala @@ -28,15 +28,15 @@ trait RestEndpoint extends Validator: ): Response = (for startObj <- startVars - process <- start(processId, startObj) + process <- start(processId, startObj) yield process) match - case Right(process: ProcessInstanceEvent) => + case Right(process: ProcessInstanceEvent) => ResponseEntity .status(HttpStatus.OK) .body(process) case Right(process: ProcessInstanceResult) => extractBody[Out](process) - case Left(errorMsg) => + case Left(errorMsg) => ResponseEntity .status(HttpStatus.BAD_REQUEST) .body(errorMsg) @@ -46,7 +46,7 @@ trait RestEndpoint extends Validator: startObj: CreateProcessInstanceIn[In, Out] ): Either[String, ProcessInstanceEvent | ProcessInstanceResult] = try - val command = + val command = zeebeClient.newCreateInstanceCommand .bpmnProcessId(processId) .latestVersion @@ -79,7 +79,7 @@ trait RestEndpoint extends Validator: case CJson(value, _) => val jacksonMapper = new ObjectMapper() jacksonMapper.readTree(value) - case _ => + case _ => camundaVariable.value private def extractBody[Out <: Product: InOutCodec]( @@ -87,7 +87,7 @@ trait RestEndpoint extends Validator: ): Response = // parsing will validate output parser.parse(process.getVariables).flatMap(_.as[Out]) match - case Right(out) => + case Right(out) => val result = CreateProcessInstanceOut( process.getProcessDefinitionKey, process.getBpmnProcessId, diff --git a/04-c8-spring/src/main/scala/camundala/camunda8/Validator.scala b/04-c8-spring/src/main/scala/camundala/camunda8/Validator.scala index 211156b0..09321883 100644 --- a/04-c8-spring/src/main/scala/camundala/camunda8/Validator.scala +++ b/04-c8-spring/src/main/scala/camundala/camunda8/Validator.scala @@ -15,8 +15,8 @@ trait Validator: decode[T](json) match case Left(error: DecodingFailure) => Left(error.show) - case Left(error: circe.Error) => + case Left(error: circe.Error) => Left(error.show) - case Right(p: T) => + case Right(p: T) => Right(p) end Validator diff --git a/04-helper/initHelperCompany.sc b/04-helper/initHelperCompany.sc index 08554252..219388bd 100644 --- a/04-helper/initHelperCompany.sc +++ b/04-helper/initHelperCompany.sc @@ -11,7 +11,7 @@ private lazy val mycompanyCred = RepoCredentials.UserPassword( "VALIANT_MVN_REPOSITORY_PASSWORD" ) -private val mycompanyHost = """https://bin.mycompany.com/artifactory""" +private val mycompanyHost = """https://bin.mycompany.com/artifactory""" private lazy val releaseRepo = RepoConfig.Artifactory( "release", mycompanyHost, diff --git a/04-helper/src/main/scala/camundala/helper/dev/DevCompanyCamundalaHelper.scala b/04-helper/src/main/scala/camundala/helper/dev/DevCompanyCamundalaHelper.scala index 8b4ea2c0..09bb510a 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/DevCompanyCamundalaHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/DevCompanyCamundalaHelper.scala @@ -17,7 +17,7 @@ trait DevCompanyCamundalaHelper extends DocCreator: Try(Command.valueOf(command)) match case Success(cmd) => runCommand(cmd, args) - case Failure(_) => + case Failure(_) => println(s"Command not found: $command") println("Available commands: " + Command.values.mkString(", ")) end match @@ -29,11 +29,11 @@ trait DevCompanyCamundalaHelper extends DocCreator: command match case Command.publish if args.size == 1 => publish(args.head) - case Command.publish => + case Command.publish => println("Usage: publish ") - case Command.prepareDocs => + case Command.prepareDocs => prepareDocs() - case Command.publishDocs => + case Command.publishDocs => publishDocs() private enum Command: diff --git a/04-helper/src/main/scala/camundala/helper/dev/DevCompanyHelper.scala b/04-helper/src/main/scala/camundala/helper/dev/DevCompanyHelper.scala index 9571d3d3..de44f26a 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/DevCompanyHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/DevCompanyHelper.scala @@ -16,7 +16,7 @@ object DevCompanyHelper: Try(Command.valueOf(command)) match case Success(cmd) => runCommand(cmd, args) - case Failure(_) => + case Failure(_) => println(s"Command not found: $command") println("Available commands: " + Command.values.mkString(", ")) end match @@ -24,13 +24,13 @@ object DevCompanyHelper: private def runCommand(command: Command, args: Seq[String]): Unit = command match - case Command.`init` => + case Command.`init` => initCompany case Command.project => args.toList match case Seq(projectName) => createProject(projectName) - case other => + case other => println(s"Invalid arguments for command $command: $other") println("Usage: project ") // dev-company/company-camundala/helper.scala @@ -45,11 +45,12 @@ object DevCompanyHelper: protected def createProject(projectName: String): Unit = println(s"Create Project: ${projectName.replace(s"-$companyName", "")} - Company: $companyName") - val name = s"$companyName-${projectName.replace(s"$companyName-", "")}" - val configPath = projectsPath / name / defaultProjectConfigPath + val name = s"$companyName-${projectName.replace(s"$companyName-", "")}" + val configPath = projectsPath / name / defaultProjectConfigPath createIfNotExists(configPath, apiProjectConfig(name)) given config: DevConfig = DevConfig.init(configPath) CompanyGenerator().createProject + end createProject private lazy val companyName = os.pwd.last.replace("dev-", "").toLowerCase diff --git a/04-helper/src/main/scala/camundala/helper/dev/DevHelper.scala b/04-helper/src/main/scala/camundala/helper/dev/DevHelper.scala index 5e7a55a7..4b9fe32b 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/DevHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/DevHelper.scala @@ -22,7 +22,7 @@ trait DevHelper: Try(Command.valueOf(command)) match case Success(cmd) => runCommand(cmd, args) - case Failure(_) => + case Failure(_) => println(s"Command not found: $command") println("Available commands: " + Command.values.mkString(", ")) end match @@ -30,97 +30,97 @@ trait DevHelper: private def runCommand(command: Command, args: Seq[String]): Unit = command match - case Command.update => + case Command.update => update() // start code generation - case Command.process => + case Command.process => args match - case Seq(processName) => + case Seq(processName) => createProcess(processName, None) case Seq(processName, version) if version.toIntOption.isDefined => createProcess(processName, version.toIntOption) - case other => + case other => println(s"Invalid arguments for command $command: $other") println("Usage: process [version: Int]") println("Example: process myProcess 1") - case Command.customTask => + case Command.customTask => args match - case Seq(processName, bpmnName) => + case Seq(processName, bpmnName) => createCustomTask(processName, bpmnName, None) case Seq(processName, bpmnName, version) if version.toIntOption.isDefined => createCustomTask(processName, bpmnName, version.toIntOption) - case other => + case other => printBadActivity(command, other) - case Command.serviceTask => + case Command.serviceTask => args match - case Seq(processName, bpmnName) => + case Seq(processName, bpmnName) => createServiceTask(processName, bpmnName, None) case Seq(processName, bpmnName, version) if version.toIntOption.isDefined => createServiceTask(processName, bpmnName, version.toIntOption) - case other => + case other => printBadActivity(command, other) - case Command.userTask => + case Command.userTask => args match - case Seq(processName, bpmnName) => + case Seq(processName, bpmnName) => createUserTask(processName, bpmnName, None) case Seq(processName, bpmnName, version) if version.toIntOption.isDefined => createUserTask(processName, bpmnName, version.toIntOption) - case other => + case other => printBadActivity(command, other) - case Command.decision => + case Command.decision => args match - case Seq(processName, bpmnName) => + case Seq(processName, bpmnName) => createDecision(processName, bpmnName, None) case Seq(processName, bpmnName, version) if version.toIntOption.isDefined => createDecision(processName, bpmnName, version.toIntOption) - case other => + case other => printBadActivity(command, other) - case Command.signalEvent => + case Command.signalEvent => args match - case Seq(processName, bpmnName) => + case Seq(processName, bpmnName) => createSignalEvent(processName, bpmnName, None) case Seq(processName, bpmnName, version) if version.toIntOption.isDefined => createSignalEvent(processName, bpmnName, version.toIntOption) - case other => + case other => printBadActivity(command, other) case Command.messageEvent => args match - case Seq(processName, bpmnName) => + case Seq(processName, bpmnName) => createMessageEvent(processName, bpmnName, None) case Seq(processName, bpmnName, version) if version.toIntOption.isDefined => createMessageEvent(processName, bpmnName, version.toIntOption) - case other => + case other => printBadActivity(command, other) - case Command.timerEvent => + case Command.timerEvent => args match - case Seq(processName, bpmnName) => + case Seq(processName, bpmnName) => createTimerEvent(processName, bpmnName, None) case Seq(processName, bpmnName, version) if version.toIntOption.isDefined => createTimerEvent(processName, bpmnName, version.toIntOption) - case other => + case other => printBadActivity(command, other) // finish code generation - case Command.publish => + case Command.publish => args match case Seq(version) => PublishHelper().publish(version) - case other => + case other => println(s"Invalid arguments for command $command: $other") println(s"Usage: $command ") println(s"Example: $command 1.23.3") - case Command.deploy => + case Command.deploy => args match case Seq(simulation) => devConfig.postmanConfig .map(DeployHelper(_).deploy(Some(simulation))) .getOrElse(println("deploy is not supported as there is no deployConfig")) - case other => + case other => println(s"Invalid arguments for command $command: $other") println(s"Usage: $command ") println(s"Example: $command OpenAccountSimulation") // docker - case Command.dockerUp => + case Command.dockerUp => DockerHelper(devConfig.dockerConfig).dockerUp() case Command.dockerStop => DockerHelper(devConfig.dockerConfig).dockerStop() @@ -185,7 +185,11 @@ trait DevHelper: version )) - private def createMessageEvent(processName: String, bpmnName: String, version: Option[Int]): Unit = + private def createMessageEvent( + processName: String, + bpmnName: String, + version: Option[Int] + ): Unit = SetupGenerator().createEvent(SetupElement( "Message", processName.asProcessName, @@ -194,21 +198,22 @@ trait DevHelper: )) private def createTimerEvent(processName: String, bpmnName: String, version: Option[Int])(using - config: DevConfig + config: DevConfig ): Unit = - SetupGenerator().createEvent(SetupElement( - "Timer", - processName.asProcessName, - bpmnName.asElemName, - version - ), + SetupGenerator().createEvent( + SetupElement( + "Timer", + processName.asProcessName, + bpmnName.asElemName, + version + ), withWorker = false ) extension (name: String) private def asProcessName: String = name.head.toLower + name.tail - private def asElemName: String = + private def asElemName: String = name.head.toUpper + name.tail end extension end DevHelper diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyDocsGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyDocsGenerator.scala index e1188e04..49815d25 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyDocsGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyDocsGenerator.scala @@ -6,8 +6,8 @@ import java.time.LocalDate case class CompanyDocsGenerator(companyCamundala: os.Path): private lazy val companyProjectName = companyCamundala.last - private lazy val docsBase = companyCamundala / s"00-docs" - private lazy val docsSrc = docsBase / "src" / "docs" + private lazy val docsBase = companyCamundala / s"00-docs" + private lazy val docsSrc = docsBase / "src" / "docs" lazy val generate: Unit = println("Generate Company Docs") @@ -25,7 +25,7 @@ case class CompanyDocsGenerator(companyCamundala: os.Path): versions("VERSIONS_PREVIOUS") end generate - private lazy val contact = + private lazy val contact = createIfNotExists( docsSrc / "contact.md", s"""|## Contact @@ -76,7 +76,7 @@ case class CompanyDocsGenerator(companyCamundala: os.Path): |""".stripMargin ) - private lazy val pattern = + private lazy val pattern = createIfNotExists( docsSrc / "pattern.md", s"""|# Process Pattern @@ -98,7 +98,7 @@ case class CompanyDocsGenerator(companyCamundala: os.Path): | |""".stripMargin ) - private lazy val style = + private lazy val style = createIfNotExists( docsSrc / "style.css", s"""|.mermaid svg { @@ -131,10 +131,10 @@ case class CompanyDocsGenerator(companyCamundala: os.Path): end directory private def laikaVersioned(isVersioned: Boolean) = s"laika.versioned = $isVersioned" - private def laikaTitle(title: String) = s"laika.title = $title" - private lazy val laikaNavigationOrder = s"laika.navigationOrder = [\n]" + private def laikaTitle(title: String) = s"laika.title = $title" + private lazy val laikaNavigationOrder = s"laika.navigationOrder = [\n]" - private lazy val config = + private lazy val config = createIfNotExists( docsBase / "CONFIG.conf", s"""|// year and month you want to release @@ -170,5 +170,6 @@ case class CompanyDocsGenerator(companyCamundala: os.Path): |//.. | |// END VERSIONS - |""".stripMargin) + |""".stripMargin + ) end CompanyDocsGenerator diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyGenerator.scala index 87ffcb30..1a2e4284 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyGenerator.scala @@ -43,9 +43,8 @@ case class CompanyGenerator()(using config: DevConfig): private lazy val generateProjectDirectories: Unit = os.makeDir.all(projectsPath / projectName) - private lazy val gitTemp = os.pwd / "git-temp" - private lazy val docker = os.pwd / "docker" + private lazy val gitTemp = os.pwd / "git-temp" + private lazy val docker = os.pwd / "docker" private lazy val companyCamundala = os.pwd / s"$companyName-camundala" - -end CompanyGenerator +end CompanyGenerator diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala index f4b9a984..7bd9c5d9 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/CompanyWrapperGenerator.scala @@ -18,21 +18,31 @@ case class CompanyWrapperGenerator()(using config: DevConfig): createIfNotExists(helperCompanyDevHelperPath, helperCompanyDevHelperWrapper) createIfNotExists(helperCompanyDevConfigPath, helperCompanyDevConfigWrapper) createIfNotExists(helperCompanyCamundalaDevHelperPath, helperCompanyCamundalaDevHelperWrapper) + end generate private lazy val companyName = config.companyName - private lazy val projectBpmnPath = ModuleConfig.bpmnModule.srcPath / "CompanyBpmnDsl.scala" - private lazy val projectApiPath = ModuleConfig.apiModule.srcPath / "CompanyApiCreator.scala" - private lazy val projectDmnPath = ModuleConfig.dmnModule.srcPath / "CompanyDmnTester.scala" - private lazy val projectSimulationPath = ModuleConfig.simulationModule.srcPath / "CompanySimulation.scala" - private lazy val projectWorkerHandlerPath = ModuleConfig.workerModule.srcPath / "CompanyWorkerHandler.scala" - private lazy val projectWorkerContextPath = ModuleConfig.workerModule.srcPath / "CompanyEngineContext.scala" - private lazy val projectWorkerPasswordPath = ModuleConfig.workerModule.srcPath / "CompanyPasswordFlow.scala" - private lazy val projectWorkerRestApiPath = ModuleConfig.workerModule.srcPath / "CompanyRestApiClient.scala" - private lazy val projectWorkerConfigPath = ModuleConfig.workerModule.resourcePath / "application-company-defaults.yaml" - private lazy val helperCompanyDevHelperPath = ModuleConfig.helperModule.srcPath / "CompanyDevHelper.scala" - private lazy val helperCompanyDevConfigPath = ModuleConfig.helperModule.srcPath / "CompanyDevConfig.scala" - private lazy val helperCompanyCamundalaDevHelperPath = ModuleConfig.helperModule.srcPath / "CompanyCamundalaDevHelper.scala" + private lazy val projectBpmnPath = ModuleConfig.bpmnModule.srcPath / "CompanyBpmnDsl.scala" + private lazy val projectApiPath = ModuleConfig.apiModule.srcPath / "CompanyApiCreator.scala" + private lazy val projectDmnPath = ModuleConfig.dmnModule.srcPath / "CompanyDmnTester.scala" + private lazy val projectSimulationPath = + ModuleConfig.simulationModule.srcPath / "CompanySimulation.scala" + private lazy val projectWorkerHandlerPath = + ModuleConfig.workerModule.srcPath / "CompanyWorkerHandler.scala" + private lazy val projectWorkerContextPath = + ModuleConfig.workerModule.srcPath / "CompanyEngineContext.scala" + private lazy val projectWorkerPasswordPath = + ModuleConfig.workerModule.srcPath / "CompanyPasswordFlow.scala" + private lazy val projectWorkerRestApiPath = + ModuleConfig.workerModule.srcPath / "CompanyRestApiClient.scala" + private lazy val projectWorkerConfigPath = + ModuleConfig.workerModule.resourcePath / "application-company-defaults.yaml" + private lazy val helperCompanyDevHelperPath = + ModuleConfig.helperModule.srcPath / "CompanyDevHelper.scala" + private lazy val helperCompanyDevConfigPath = + ModuleConfig.helperModule.srcPath / "CompanyDevConfig.scala" + private lazy val helperCompanyCamundalaDevHelperPath = + ModuleConfig.helperModule.srcPath / "CompanyCamundalaDevHelper.scala" private lazy val bpmnWrapper = s"""package $companyName.camundala.bpmn @@ -242,7 +252,7 @@ case class CompanyWrapperGenerator()(using config: DevConfig): | include: "health" |""".stripMargin - private lazy val helperCompanyDevHelperWrapper = + private lazy val helperCompanyDevHelperWrapper = s"""package $companyName.camundala.helper | |import camundala.api.ApiConfig @@ -259,7 +269,7 @@ case class CompanyWrapperGenerator()(using config: DevConfig): |end CompanyDevHelper |""".stripMargin end helperCompanyDevHelperWrapper - private lazy val helperCompanyDevConfigWrapper = + private lazy val helperCompanyDevConfigWrapper = s"""package $companyName.camundala.helper | |import camundala.api.* @@ -299,31 +309,31 @@ case class CompanyWrapperGenerator()(using config: DevConfig): |""".stripMargin end helperCompanyDevConfigWrapper private lazy val helperCompanyCamundalaDevHelperWrapper = - s"""package $companyName.camundala.helper - | - |import camundala.api.ApiConfig - |import camundala.helper.dev.DevCompanyCamundalaHelper - |import camundala.helper.util.DevConfig - |import $companyName.camundala.BuildInfo - |import $companyName.camundala.api.CompanyApiCreator - | - |object CompanyCamundalaDevHelper - | extends DevCompanyCamundalaHelper: - | - | lazy val apiConfig: ApiConfig = CompanyApiCreator.apiConfig - | .copy( - | basePath = os.pwd / "00-docs", - | tempGitDir = os.pwd / os.up / "git-temp" - | ) - | - | lazy val devConfig: DevConfig = CompanyDevConfig.companyConfig - | - |end CompanyCamundalaDevHelper - |""".stripMargin + s"""package $companyName.camundala.helper + | + |import camundala.api.ApiConfig + |import camundala.helper.dev.DevCompanyCamundalaHelper + |import camundala.helper.util.DevConfig + |import $companyName.camundala.BuildInfo + |import $companyName.camundala.api.CompanyApiCreator + | + |object CompanyCamundalaDevHelper + | extends DevCompanyCamundalaHelper: + | + | lazy val apiConfig: ApiConfig = CompanyApiCreator.apiConfig + | .copy( + | basePath = os.pwd / "00-docs", + | tempGitDir = os.pwd / os.up / "git-temp" + | ) + | + | lazy val devConfig: DevConfig = CompanyDevConfig.companyConfig + | + |end CompanyCamundalaDevHelper + |""".stripMargin end helperCompanyCamundalaDevHelperWrapper extension (module: ModuleConfig) - def srcPath: os.Path = + def srcPath: os.Path = config.projectDir / module.packagePath( config.projectPath ) @@ -332,4 +342,5 @@ case class CompanyWrapperGenerator()(using config: DevConfig): config.projectPath, isSourceDir = false ) + end extension end CompanyWrapperGenerator diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyCreator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyCreator.scala index b894087c..76c8c5fc 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyCreator.scala @@ -7,11 +7,11 @@ trait DependencyCreator: protected def apiConfig: ApiConfig protected def configs: Seq[DocProjectConfig] protected def releaseConfig: ReleaseConfig = readReleaseConfig - given ApiConfig = apiConfig - + given ApiConfig = apiConfig + case class Package(name: String, minorVersion: String): - lazy val show = s"$name:$minorVersion" - lazy val showRect = s"$name:$minorVersion($name:$minorVersion)" + lazy val show = s"$name:$minorVersion" + lazy val showRect = s"$name:$minorVersion($name:$minorVersion)" lazy val versionNumber: Int = minorVersion.replace(".", "").toInt end Package diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyGraphCreator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyGraphCreator.scala index 3503c570..1d71e6d0 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyGraphCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyGraphCreator.scala @@ -33,8 +33,8 @@ case class DependencyGraphCreator()(using end createProjectDependencies private def create( - versionedConfigs: Seq[DocProjectConfig], - link: Package => String + versionedConfigs: Seq[DocProjectConfig], + link: Package => String ): String = val configs = versionedConfigs .groupBy(_.projectName) @@ -57,9 +57,9 @@ case class DependencyGraphCreator()(using |flowchart TB |${configs .map { config => - val color = colorMap.getOrElse(config.projectName, "#fff") + val color = colorMap.getOrElse(config.projectName, "#fff") val depConfig = getUniqueDependencies(config, configs) - val tree = + val tree = if depConfig.nonEmpty then s"${config.projectName} --> ${depConfig .map(d => d.projectName) @@ -103,11 +103,11 @@ case class DependencyGraphCreator()(using case class ProjectTree(name: String, graph: String) private def toPackageTree( - configs: Seq[DocProjectConfig], - allConfigs: Seq[DocProjectConfig] + configs: Seq[DocProjectConfig], + allConfigs: Seq[DocProjectConfig] ): Seq[PackageTree] = configs.map { c => - val mainPackage = Package(c.projectName, c.minorVersion) + val mainPackage = Package(c.projectName, c.minorVersion) val fromPackages = allConfigs .filter { aC => aC.dependencies.exists(aD => @@ -115,7 +115,7 @@ case class DependencyGraphCreator()(using ) } .map { aC => Package(aC.projectName, aC.minorVersion) } - val toPackages = c.dependencies.map { cd => + val toPackages = c.dependencies.map { cd => Package(cd.projectName, cd.minorVersion) }.toSeq println(s"mainPackage: $mainPackage") @@ -126,7 +126,7 @@ case class DependencyGraphCreator()(using private def treeForEachProject(packageTrees: Seq[PackageTree]) = val packageName = packageTrees.head.mainPackage.name - val trees = packageTrees.map(treeForEachVersion) + val trees = packageTrees.map(treeForEachVersion) s""" |# $packageName |${releaseConfig.releasedLabel} @@ -198,10 +198,10 @@ case class DependencyGraphCreator()(using end treeForEachVersion private def getUniqueDependencies( - toCheckConfig: DocProjectConfig, - configs: Seq[DocProjectConfig] + toCheckConfig: DocProjectConfig, + configs: Seq[DocProjectConfig] ) = - val configsToCheck = configs.filter { c => + val configsToCheck = configs.filter { c => toCheckConfig.dependencies.exists(_.projectName == c.projectName) } diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyValidator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyValidator.scala index 9ac14267..ab45c3ed 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyValidator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DependencyValidator.scala @@ -20,7 +20,7 @@ case class DependencyValidator()(using } .filterNot { case _ -> v => v.isEmpty } .map(f => s" - ${f._1} -> ${f._2.mkString("[", ", ", "]")}") match - case Nil => + case Nil => println( "All Packages have dependencies that are correctly configured in VERSION.conf." ) @@ -49,7 +49,7 @@ case class DependencyValidator()(using .filterNot(_.isEmpty) .map(f => s" - ${f.mkString(", ")}") .toSeq match - case Nil => println("All Packages are needed - no orphans.") + case Nil => println("All Packages are needed - no orphans.") case orphans => println(s"""${Console.YELLOW_B} |There are Versions of Packages that are not needed in VERSION.conf. diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DevStatisticsCreator.scala b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DevStatisticsCreator.scala index f9b875f5..f318bd2f 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/docs/DevStatisticsCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/docs/DevStatisticsCreator.scala @@ -51,7 +51,7 @@ case class DevStatisticsCreator(gitBasePath: os.Path, basePath: os.Path): } | """.stripMargin - val path = basePath / "src" / "docs" / "devStatistics.md" + val path = basePath / "src" / "docs" / "devStatistics.md" os.write.over(path, statistics) end create @@ -65,7 +65,11 @@ case class DevStatisticsCreator(gitBasePath: os.Path, basePath: os.Path): FileTypeCount(fileType, projectCounts, filter) end lineCount - private def lineCountProject(fileType: String, project: String, filter: Option[String]): ProjectCounts = + private def lineCountProject( + fileType: String, + project: String, + filter: Option[String] + ): ProjectCounts = val files = os.walk(gitBasePath / project) .filter(_.ext == fileType) .filter(_.toIO.isFile) @@ -80,7 +84,11 @@ case class DevStatisticsCreator(gitBasePath: os.Path, basePath: os.Path): end lineCountProject - case class FileTypeCount(fileType: String, projectCounts: Seq[ProjectCounts], filter: Option[String]): + case class FileTypeCount( + fileType: String, + projectCounts: Seq[ProjectCounts], + filter: Option[String] + ): lazy val lineCount = projectCounts.map(_.lineCount).sum lazy val fileCount = diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/docs/ReleaseConfig.scala b/04-helper/src/main/scala/camundala/helper/dev/company/docs/ReleaseConfig.scala index 10666af7..2fcfc5a5 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/docs/ReleaseConfig.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/docs/ReleaseConfig.scala @@ -22,7 +22,7 @@ end ReleaseConfig object ReleaseConfig: def releaseConfig(basePath: os.Path) = val configFile = (basePath / "CONFIG.conf") - val config = ConfigFactory.parseFile(configFile.toIO) + val config = ConfigFactory.parseFile(configFile.toIO) ReleaseConfig( config.getString("release.tag"), if config.hasPath("jira.release.url") then Some(config.getString("jira.release.url")) diff --git a/04-helper/src/main/scala/camundala/helper/dev/company/exports.scala b/04-helper/src/main/scala/camundala/helper/dev/company/exports.scala index a9896d75..7589d518 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/company/exports.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/company/exports.scala @@ -6,6 +6,6 @@ import camundala.helper.dev.update.{doNotAdjustText, howToResetText} export camundala.helper.util.DevConfig export camundala.helper.util.ModuleConfig -private val replaceHelperCompanyCommand ="./helperCompany.scala init" -lazy val helperCompanyDoNotAdjustText = doNotAdjustText(replaceHelperCompanyCommand) -lazy val helperCompanyHowToResetText = howToResetText(replaceHelperCompanyCommand) +private val replaceHelperCompanyCommand = "./helperCompany.scala init" +lazy val helperCompanyDoNotAdjustText = doNotAdjustText(replaceHelperCompanyCommand) +lazy val helperCompanyHowToResetText = howToResetText(replaceHelperCompanyCommand) diff --git a/04-helper/src/main/scala/camundala/helper/dev/deploy/DeployHelper.scala b/04-helper/src/main/scala/camundala/helper/dev/deploy/DeployHelper.scala index 7065326b..2b52ac91 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/deploy/DeployHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/deploy/DeployHelper.scala @@ -7,8 +7,8 @@ import java.util.Date case class DeployHelper(postmanConfig: PostmanConfig) extends Helpers: - val collectionId = postmanConfig.collectionId - val envId = postmanConfig.localDevEnvId + val collectionId = postmanConfig.collectionId + val envId = postmanConfig.localDevEnvId val postmanApiKey = sys.env(postmanConfig.envApiKey) def deploy(integrationTest: Option[String] = None): Unit = diff --git a/04-helper/src/main/scala/camundala/helper/dev/docker/DockerHelper.scala b/04-helper/src/main/scala/camundala/helper/dev/docker/DockerHelper.scala index 8f371be1..b4891f43 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/docker/DockerHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/docker/DockerHelper.scala @@ -54,7 +54,7 @@ case class DockerHelper(dockerConfig: DockerConfig) extends Helpers: s"helper-docker", command, command match - case "up" => "-d" + case "up" => "-d" case "stop" => Seq("--timeout", "15") // the only valid param case "down" => Seq( diff --git a/04-helper/src/main/scala/camundala/helper/dev/publish/ChangeLogUpdater.scala b/04-helper/src/main/scala/camundala/helper/dev/publish/ChangeLogUpdater.scala index bfdceebd..58d4cdf4 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/publish/ChangeLogUpdater.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/publish/ChangeLogUpdater.scala @@ -25,18 +25,18 @@ case class ChangeLogUpdater( private lazy val changeLog = os.read(os.pwd / "CHANGELOG.md") - private lazy val regex = """## (\d+\.\d+\.\d+) - (\d\d\d\d-\d\d-\d\d).*""".r - private lazy val firstMatch = regex.findFirstMatchIn(changeLog) - private lazy val lastVersion: Option[String] = firstMatch.map(_.group(1)) - private lazy val lastVersionInt: Int = lastVersion + private lazy val regex = """## (\d+\.\d+\.\d+) - (\d\d\d\d-\d\d-\d\d).*""".r + private lazy val firstMatch = regex.findFirstMatchIn(changeLog) + private lazy val lastVersion: Option[String] = firstMatch.map(_.group(1)) + private lazy val lastVersionInt: Int = lastVersion .map { v => val vArray = v.split('.') vArray.head.toInt * 1000 * 1000 + vArray.tail.head.toInt * 1000 + vArray.last.toInt } .getOrElse(0) - private lazy val lastDate: Option[String] = firstMatch.map(_.group(2)) + private lazy val lastDate: Option[String] = firstMatch.map(_.group(2)) private lazy val lastVersionLine: Option[String] = firstMatch.map(_.group(0)) - private lazy val gitLog = os + private lazy val gitLog = os .proc( "git", "log", @@ -44,7 +44,7 @@ case class ChangeLogUpdater( "--pretty=format:%cd :: %H :: %s" ) .call() - private lazy val commitsAddress = + private lazy val commitsAddress = val remote: String = os .proc("git", "config", "--get", "remote.origin.url") .call() @@ -68,7 +68,7 @@ case class ChangeLogUpdater( ) = result + (if newLine.last.startsWith("Released Version") then - val vArray = newLine.last.split(" ").last.split('.') + val vArray = newLine.last.split(" ").last.split('.') val newVersionInt = vArray.head.toInt * 1000 * 1000 + vArray.tail.head.toInt * 1000 + vArray.last.toInt println(s"VERSION new: $newVersionInt - last: $lastVersionInt") @@ -79,8 +79,7 @@ case class ChangeLogUpdater( else if result.endsWith("\nEXISTING VERSION") then "" // skip all entries for an existing version else - s"\n- ${newLine.last} - see [Commit]($commitsAddress${newLine.tail.head})" - ) + s"\n- ${newLine.last} - see [Commit]($commitsAddress${newLine.tail.head})") end createNewChangelogEntries private lazy val newChangeLog = lastVersionLine diff --git a/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala b/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala index b78391b1..611aeccf 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/publish/PublishHelper.scala @@ -5,7 +5,7 @@ import camundala.helper.util.{DevConfig, Helpers, PublishConfig} case class PublishHelper()(using devConfig: DevConfig, - apiConfig: ApiConfig, + apiConfig: ApiConfig ) extends Helpers: import PublishHelper.* @@ -19,15 +19,15 @@ case class PublishHelper()(using setApiVersion(version) replaceVersion(version) - lazy val sbtProcs = Seq( + lazy val sbtProcs = Seq( "sbt", "publish" ) - lazy val sbtCreateDocs = "api/run" + lazy val sbtCreateDocs = "api/run" lazy val workerAppFile: os.Path = workDir / "03-worker" / "src" / "main" / "scala" / devConfig.projectPath / "worker" / "WorkerApp.scala" - lazy val sbtDockerProcs = + lazy val sbtDockerProcs = if os.exists(workerAppFile) then Seq( "worker / Docker / publish" @@ -54,7 +54,7 @@ case class PublishHelper()(using if apiFile.toIO.exists() then val apiFileStr = os.read(apiFile) - val pattern = """ version = "(\d+\..*\d+(-.+)?)"""" + val pattern = """ version = "(\d+\..*\d+(-.+)?)"""" val updatedFile = apiFileStr.replaceFirst(pattern, s""" version = "$newVersion"""") @@ -87,7 +87,7 @@ object PublishHelper extends Helpers: ChangeLogUpdater.verifyChangelog( newVersion, commitsAddress = _.replace(".git", "/commit/") // git - .replace("ssh://git@", "https://") // ssh protocol + .replace("ssh://git@", "https://") // ssh protocol .replace(":2222", "") // ssh port ) @@ -104,21 +104,21 @@ object PublishHelper extends Helpers: ) // as projectUpdate for reference creation gets the newest changes from remote - def pushDevelop(): Unit = + def pushDevelop(): Unit = os.proc("git", "push").callOnConsole() def replaceVersion(newVersion: String, versionFile: os.Path): Unit = val versionFileStr = os.read(versionFile) val regexPattern = """version = "(\d+\.\d+\.\d+(-.+)?)"""" - val updatedFile = versionFileStr + val updatedFile = versionFileStr .replaceAll(regexPattern, s"""version = "$newVersion"""") + "\n" os.write.over(versionFile, updatedFile) end replaceVersion def git(version: String, replaceVersion: String => Unit): Unit = - val branch = "develop" + val branch = "develop" os.proc("git", "fetch", "--all").callOnConsole() os.proc("git", "commit", "-a", "-m", s"Released Version $version") .callOnConsole() diff --git a/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala b/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala index f785b9c2..711ed2c0 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/publish/WebDAV.scala @@ -12,7 +12,7 @@ import scala.jdk.CollectionConverters.CollectionHasAsScala abstract class WebDAV: def publishConfig: PublishConfig - val publishBaseUrl = publishConfig.documentationUrl + val publishBaseUrl = publishConfig.documentationUrl val contentTypeHtml = "text/html" val contentTypeYaml = "text/yaml" @@ -36,7 +36,8 @@ abstract class WebDAV: end startSession end WebDAV -case class ProjectWebDAV(projectName: String, apiConfig: ApiConfig, publishConfig: PublishConfig) extends WebDAV: +case class ProjectWebDAV(projectName: String, apiConfig: ApiConfig, publishConfig: PublishConfig) + extends WebDAV: val projectUrl = s"$publishBaseUrl/$projectName/" @@ -69,7 +70,7 @@ case class ProjectWebDAV(projectName: String, apiConfig: ApiConfig, publishConfi ) ) // additional files - val docDir = os.pwd / "doc" + val docDir = os.pwd / "doc" if docDir.toIO.exists() then sardine.createDirectory(s"$projectUrl/doc/") val docFiles = os.list(docDir) @@ -82,7 +83,7 @@ case class ProjectWebDAV(projectName: String, apiConfig: ApiConfig, publishConfi } end if // diagrams - val diagramDir = os.pwd / diagramPath + val diagramDir = os.pwd / diagramPath println(s"Diagram Directory: $diagramDir") sardine.createDirectory(s"$projectUrl/diagrams/") val diagramFiles = os.list(diagramDir) @@ -103,9 +104,9 @@ case class ProjectWebDAV(projectName: String, apiConfig: ApiConfig, publishConfi end try end upload - private lazy val openApiHtml = + private lazy val openApiHtml = os.read.inputStream(publishConfig.openApiHtmlPath) - private lazy val openApiYml = os + private lazy val openApiYml = os .read(apiConfig.openApiPath) .getBytes(StandardCharsets.UTF_8) private lazy val postmanApiYml = @@ -121,7 +122,7 @@ case class DocsWebDAV(apiConfig: ApiConfig, publishConfig: PublishConfig) extend with Helpers: def upload(releaseTag: String): Unit = val sardine = startSession - val docDir = apiConfig.basePath / "target" / "docs" / "site" + val docDir = apiConfig.basePath / "target" / "docs" / "site" if docDir.toIO.exists() then try println(s"Delete $publishBaseUrl/$releaseTag/") @@ -132,12 +133,12 @@ case class DocsWebDAV(apiConfig: ApiConfig, publishConfig: PublishConfig) extend docFiles.foreach { case f if f.toIO.isDirectory && f.toIO.exists() => println(s"Create Directory $url/${f.toIO.getName}") - //sardine.createDirectory(s"$url/${f.toIO.getName}") + // sardine.createDirectory(s"$url/${f.toIO.getName}") uploadFiles(s"$url/${f.toIO.getName}", os.list(f)) - case f if f.toIO.exists() => + case f if f.toIO.exists() => println(s"Uploading $url/${f.toIO.getName}") sardine.put(s"$url/${f.toIO.getName}", os.read.inputStream(f)) - case f => + case f => println(s"Not supported file: $f") } @@ -148,9 +149,9 @@ case class DocsWebDAV(apiConfig: ApiConfig, publishConfig: PublishConfig) extend println(s"Create symbolic link $f") val symLink = docDir / f Files.createSymbolicLink(symLink.toNIO, (docDir / releaseTag / f).toNIO) - // os.proc("ln", "-s", s"./$releaseTag/$f", docDir / f) - // .callOnConsole() - // sardine.put(s"$publishBaseUrl/${f.replace("dependencies", "dependencies/")}", os.read.inputStream(symLink)) + // os.proc("ln", "-s", s"./$releaseTag/$f", docDir / f) + // .callOnConsole() + // sardine.put(s"$publishBaseUrl/${f.replace("dependencies", "dependencies/")}", os.read.inputStream(symLink)) addSymbolicLinks uploadFiles(publishBaseUrl, os.list(docDir)) @@ -170,5 +171,4 @@ case class DocsWebDAV(apiConfig: ApiConfig, publishConfig: PublishConfig) extend end if end upload - end DocsWebDAV diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala index 6ca3cc7e..7ca2c80b 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/ApiGenerator.scala @@ -13,7 +13,7 @@ case class ApiGenerator()(using config: DevConfig): createOrUpdate(config.projectDir / "03-api" / "PostmanOpenApi.html", postmanOpenApiHtml) end generate - lazy val api = + lazy val api = s"""package ${config.projectPackage} |package api | diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/ApiGeneratorGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/ApiGeneratorGenerator.scala index a6bbd0f6..0020e8e8 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/ApiGeneratorGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/ApiGeneratorGenerator.scala @@ -7,11 +7,11 @@ case class ApiGeneratorGenerator()(using config: DevConfig): lazy val generate: Unit = createIfNotExists(apiGeneratorPath, apiGenerator) - private lazy val companyName = config.companyName - private lazy val helperPath = + private lazy val companyName = config.companyName + private lazy val helperPath = config.projectDir / ModuleConfig.helperModule.packagePath(config.projectPath) private lazy val apiGeneratorPath = helperPath / "ProjectApiGenerator.scala" - private lazy val apiGenerator = + private lazy val apiGenerator = objectContent("ProjectApiGenerator") private def objectContent( diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/BpmnGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/BpmnGenerator.scala index 7455a9f8..7a4493b3 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/BpmnGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/BpmnGenerator.scala @@ -16,7 +16,7 @@ case class BpmnGenerator()(using config: DevConfig): def createProcessElement(setupElement: SetupElement): Unit = val processName = setupElement.processName - val version = setupElement.version + val version = setupElement.version createIfNotExists( bpmnPath( processName, @@ -59,12 +59,12 @@ case class BpmnGenerator()(using config: DevConfig): | | val ${ label match - case "Process" => "processName" - case "UserTask" => "name" - case "Decision" => "decisionId" + case "Process" => "processName" + case "UserTask" => "name" + case "Decision" => "decisionId" case "SignalEvent" | "MessageEvent" => "messageName" - case "TimerEvent" => "title" - case _ => "topicName" + case "TimerEvent" => "title" + case _ => "topicName" } = "${setupObject.identifier}" | val descr: String = "" | @@ -156,7 +156,7 @@ case class BpmnGenerator()(using config: DevConfig): private def bpmnPath(processName: String, version: Option[Int]) = val subProject = config.subProjects.find(_ == processName) - val dir = config.projectDir / ModuleConfig.bpmnModule.packagePath( + val dir = config.projectDir / ModuleConfig.bpmnModule.packagePath( config.projectPath, subProject = subProject ) / subProject.map(_ => os.rel).getOrElse(os.rel / processName) / version.versionPath @@ -213,7 +213,7 @@ case class BpmnGenerator()(using config: DevConfig): else "" } | case class Out(//TODO output variables - ${//TODO output variables + ${ // TODO output variables if isProcess then " processStatus: ProcessStatus.succeeded.type = ProcessStatus.succeeded" else "" diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/DirectoryGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/DirectoryGenerator.scala index 1fa5101e..5f4a0c38 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/DirectoryGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/DirectoryGenerator.scala @@ -13,7 +13,7 @@ case class DirectoryGenerator()(using config: DevConfig): def printMainAndTest( subProject: Option[String] = None ): Unit = - def srcPath(mainOrTest: String) = + def srcPath(mainOrTest: String) = config.projectDir / moduleConfig.packagePath(config.projectPath, mainOrTest, subProject) end srcPath diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/DmnGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/DmnGenerator.scala index 533e7f9c..9375bac4 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/DmnGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/DmnGenerator.scala @@ -1,6 +1,5 @@ package camundala.helper.dev.update - case class DmnGenerator()(using config: DevConfig): lazy val generate: Unit = diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/GenericFileGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/GenericFileGenerator.scala index 57a1ac45..ac2b9d1d 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/GenericFileGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/GenericFileGenerator.scala @@ -14,7 +14,7 @@ case class GenericFileGenerator()(using config: DevConfig): createOrUpdate(config.projectDir / ".vscode" / "launch.json", workerTestAppVsCode) end generate - lazy val createScalaFmt = + lazy val createScalaFmt = createOrUpdate(config.projectDir / ".scalafmt.conf", scalafmt) lazy val createGitIgnore = createOrUpdate(config.projectDir / ".gitignore", gitignore) @@ -132,7 +132,7 @@ case class GenericFileGenerator()(using config: DevConfig): | | |""".stripMargin - private lazy val workerTestAppVsCode = + private lazy val workerTestAppVsCode = s"""|// DO NOT ADJUST. This file is replaced by `./helper.scala update`. |{ | "version": "2.0.0", diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/SbtGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/SbtGenerator.scala index c79ae727..ffc59e7c 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/SbtGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/SbtGenerator.scala @@ -16,11 +16,11 @@ case class SbtGenerator()(using def generateBuildProperties(replaceStr: String = helperDoNotAdjustText) = createOrUpdate(config.sbtProjectDir / "build.properties", buildProperties(replaceStr)) - lazy val generatePluginsSbt = + lazy val generatePluginsSbt = createOrUpdate(config.sbtProjectDir / "plugins.sbt", pluginsSbt) - private lazy val projectConf = config.apiProjectConfig - private lazy val versionHelper = VersionHelper(projectConf) - private lazy val buildSbtDir = config.projectDir / "build.sbt" + private lazy val projectConf = config.apiProjectConfig + private lazy val versionHelper = VersionHelper(projectConf) + private lazy val buildSbtDir = config.projectDir / "build.sbt" private lazy val buildSbt = s"""// $doNotAdjust. This file is replaced by `./helper.scala update`. @@ -42,7 +42,7 @@ case class SbtGenerator()(using s"""$replaceStr |sbt.version=${config.versionConfig.sbtVersion} |""".stripMargin - private lazy val pluginsSbt = + private lazy val pluginsSbt = s"""$helperDoNotAdjustText |addDependencyTreePlugin // sbt dependencyBrowseTreeHTML -> target/tree.html | @@ -77,7 +77,7 @@ case class SbtGenerator()(using } |}""".stripMargin - private lazy val sbtRoot = + private lazy val sbtRoot = s""" |lazy val root = project | .in(file(".")) @@ -90,9 +90,9 @@ case class SbtGenerator()(using private lazy val sbtModules = config.modules .map: modC => - val name = modC.name - val plugins = modC.sbtPlugins - val sbtSettings = modC.sbtSettings + val name = modC.name + val plugins = modC.sbtPlugins + val sbtSettings = modC.sbtSettings def sbtSubProjectName(subProject: String) = name + subProject.head.toUpper + subProject.tail @@ -130,8 +130,8 @@ case class SbtGenerator()(using | )""".stripMargin else "" }""".stripMargin - else "" -> "" - val enablePlugins = + else "" -> "" + val enablePlugins = if plugins.isEmpty then "" else plugins.mkString(".enablePlugins(", ", ", ")") s""" @@ -153,8 +153,8 @@ case class SbtGenerator()(using private def testSetting(modC: ModuleConfig) = modC.testType match - case TestType.None => "" - case TestType.MUnit => + case TestType.None => "" + case TestType.MUnit => s""", | testSettings""".stripMargin case TestType.Simulation => diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/SbtSettingsGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/SbtSettingsGenerator.scala index ef80d469..dff7984d 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/SbtSettingsGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/SbtSettingsGenerator.scala @@ -7,8 +7,8 @@ case class SbtSettingsGenerator()(using config: DevConfig): end generate private lazy val versionConfig = config.versionConfig - private lazy val repoConfig = config.sbtConfig.reposConfig - private lazy val settingsSbt = + private lazy val repoConfig = config.sbtConfig.reposConfig + private lazy val settingsSbt = s"""$helperDoNotAdjustText | |import com.typesafe.sbt.SbtNativePackager.Docker @@ -83,7 +83,7 @@ case class SbtSettingsGenerator()(using config: DevConfig): | ) | ) |""".stripMargin - private lazy val sbtPublish = + private lazy val sbtPublish = s""" lazy val preventPublication = Seq( | publish / skip := true, | publish := {}, @@ -104,7 +104,7 @@ case class SbtSettingsGenerator()(using config: DevConfig): private lazy val sbtDependencies = config.modules .map: moduleConfig => - val name = moduleConfig.name + val name = moduleConfig.name val dependencies = moduleConfig.sbtDependencies s""" | lazy val ${name}Deps = ${ @@ -118,7 +118,7 @@ case class SbtSettingsGenerator()(using config: DevConfig): | ) |""".stripMargin .mkString - private lazy val sbtRepos = + private lazy val sbtRepos = s"""// Credentials |${ repoConfig.credentials @@ -136,8 +136,8 @@ case class SbtSettingsGenerator()(using config: DevConfig): private lazy val sbtDocker = s" lazy val dockerSettings = " + - config.sbtConfig.dockerSettings - .getOrElse("Seq()") + config.sbtConfig.dockerSettings + .getOrElse("Seq()") private lazy val testSettings = s""" lazy val testSettings = Seq( diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/ScriptCreator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/ScriptCreator.scala index 3cc75357..a621dae1 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/ScriptCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/ScriptCreator.scala @@ -4,7 +4,6 @@ import camundala.helper.util.CompanyVersionHelper case class ScriptCreator()(using config: DevConfig): - lazy val projectHelper = s"""$helperHeader | @@ -14,9 +13,9 @@ case class ScriptCreator()(using config: DevConfig): |""".stripMargin end projectHelper - private lazy val companyName = config.companyName + private lazy val companyName = config.companyName private lazy val versionHelper = CompanyVersionHelper(companyName) - private lazy val helperHeader = + private lazy val helperHeader = s"""#!/usr/bin/env -S scala shebang |$helperDoNotAdjustText | diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/SetupGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/SetupGenerator.scala index 26253e32..3c367a21 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/SetupGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/SetupGenerator.scala @@ -38,5 +38,4 @@ case class SetupGenerator()(using config: DevConfig): BpmnGenerator().createEvent(setupElement) if withWorker then WorkerGenerator().createEventWorker(setupElement) - end SetupGenerator diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/WorkerGenerator.scala b/04-helper/src/main/scala/camundala/helper/dev/update/WorkerGenerator.scala index eabc0b72..80fd3ddf 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/WorkerGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/WorkerGenerator.scala @@ -13,13 +13,15 @@ case class WorkerGenerator()(using config: DevConfig): def createProcessWorker(setupElement: SetupElement): Unit = createWorker(setupElement, processWorker, processWorkerTest) - + def createEventWorker(setupElement: SetupElement): Unit = createWorker(setupElement, eventWorker, eventWorkerTest) - def createWorker(setupElement: SetupElement, - worker: SetupElement => String = processElement, - workerTest: SetupElement => String = processElementTest): Unit = + def createWorker( + setupElement: SetupElement, + worker: SetupElement => String = processElement, + workerTest: SetupElement => String = processElementTest + ): Unit = createIfNotExists( workerPath(Some(setupElement)), worker(setupElement) @@ -31,7 +33,7 @@ case class WorkerGenerator()(using config: DevConfig): end createWorker private lazy val companyName = config.companyName - private lazy val workerApp = + private lazy val workerApp = createWorkerApp("WorkerApp") private lazy val workerTestApp = @@ -89,7 +91,8 @@ case class WorkerGenerator()(using config: DevConfig): | // NoInput() // if no initialization is needed | |end ${workerName}Worker""".stripMargin - + end processWorker + private def eventWorker(setupElement: SetupElement) = val SetupElement(_, processName, workerName, version) = setupElement s"""package ${config.projectPackage} @@ -106,6 +109,7 @@ case class WorkerGenerator()(using config: DevConfig): | override def validate(in: In): Either[CamundalaWorkerError.ValidatorError, In] = super.validate(in) | |end ${workerName}Worker""".stripMargin + end eventWorker private def processElement( setupElement: SetupElement @@ -168,7 +172,7 @@ case class WorkerGenerator()(using config: DevConfig): | worker.customInit(in), | out | )""".stripMargin - + private def eventWorkerTest(setupElement: SetupElement) = workerTest(setupElement): s""" diff --git a/04-helper/src/main/scala/camundala/helper/dev/update/exports.scala b/04-helper/src/main/scala/camundala/helper/dev/update/exports.scala index 1378a9f2..337106c0 100644 --- a/04-helper/src/main/scala/camundala/helper/dev/update/exports.scala +++ b/04-helper/src/main/scala/camundala/helper/dev/update/exports.scala @@ -3,13 +3,13 @@ package camundala.helper.dev.update export camundala.helper.util.DevConfig export camundala.helper.util.ModuleConfig -val doNotAdjust = "DO NOT ADJUST" -private val replaceHelperCommand ="./helper.scala update" -lazy val helperDoNotAdjustText = doNotAdjustText(replaceHelperCommand) -lazy val helperHowToResetText = howToResetText(replaceHelperCommand) +val doNotAdjust = "DO NOT ADJUST" +private val replaceHelperCommand = "./helper.scala update" +lazy val helperDoNotAdjustText = doNotAdjustText(replaceHelperCommand) +lazy val helperHowToResetText = howToResetText(replaceHelperCommand) def doNotAdjustText(replaceCommand: String) = s"// DO NOT ADJUST. This file is replaced by `$replaceCommand`." -def howToResetText(replaceCommand: String) = +def howToResetText(replaceCommand: String) = s"// This file was created with `$replaceCommand` - to reset delete it and run the command." case class SetupElement( @@ -19,10 +19,10 @@ case class SetupElement( version: Option[Int] )(using setupConfig: DevConfig): - lazy val versionLabel: String = version.versionLabel - lazy val identifier = + lazy val versionLabel: String = version.versionLabel + lazy val identifier = s"${setupConfig.projectName}-$processName${version.versionLabel}$bpmnIdentifier" - lazy val identifierShort = + lazy val identifierShort = s"${setupConfig.projectShortName}-$processName${version.versionLabel}$bpmnIdentifier" println( s"Create $label: $bpmnName in ${setupConfig.projectName} / process: $processName ${version.versionLabel}" @@ -54,10 +54,11 @@ def createIfNotExists(file: os.Path, contentNew: String): Unit = else println(s"EXISTS: $file") end if +end createIfNotExists extension (version: Option[Int]) - def versionPath: String = + def versionPath: String = version.map(v => s"v$v").getOrElse("v1") - def versionLabel: String = + def versionLabel: String = version.map(v => s"V$v").getOrElse("V1") def versionPackage: String = version.map(v => s".v$v").getOrElse(".v1") diff --git a/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesCreator.scala b/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesCreator.scala index 4ab475e0..bba3c554 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesCreator.scala @@ -26,10 +26,10 @@ case class BpmnClassesCreator( private def extractOperations(key: String, path: PathItem): Seq[((String, Method), Operation)] = Map( - Method.GET -> path.getGet, - Method.POST -> path.getPost, - Method.PUT -> path.getPut, - Method.PATCH -> path.getPatch, + Method.GET -> path.getGet, + Method.POST -> path.getPost, + Method.PUT -> path.getPut, + Method.PATCH -> path.getPatch, Method.DELETE -> path.getDelete ).toSeq.collect: case method -> (op: Operation) => @@ -37,9 +37,9 @@ case class BpmnClassesCreator( end extractOperations private def createModel(key: String, method: Method, operation: Operation) = - val name = generateServiceName(key, method) - val topicName = generateServiceName(key, method, forTopic = true) - val serviceIn = extractRequestBodyType(operation) + val name = generateServiceName(key, method) + val topicName = generateServiceName(key, method, forTopic = true) + val serviceIn = extractRequestBodyType(operation) val serviceOutPair = extractResponseBodyType(operation) BpmnServiceObject( @@ -57,9 +57,9 @@ case class BpmnClassesCreator( end createModel private def generateServiceName(key: String, method: Method, forTopic: Boolean = false) = - val mStr = method.toString + val mStr = method.toString val methodStr = mStr.head + mStr.tail.toLowerCase - val name = key + val name = key .split("/") .filterNot(_.isBlank) .filterNot: x => @@ -85,9 +85,9 @@ case class BpmnClassesCreator( Option(operation.getRequestBody) .flatMap: b => for - content <- Option(b.getContent) + content <- Option(b.getContent) mediaType <- Option(content.get("application/json")) - schema <- Option(mediaType.getSchema) + schema <- Option(mediaType.getSchema) yield schema.createField( optExample = Option(mediaType.getExample), optExamples = Option(mediaType.getExamples) @@ -97,9 +97,9 @@ case class BpmnClassesCreator( private def extractResponseBodyType(operation: Operation): Option[(String, ConstrField)] = def extract(resp: ApiResponse) = for - content <- Option(resp.getContent) + content <- Option(resp.getContent) mediaType <- Option(content.get("application/json")) - schema <- Option(mediaType.getSchema) + schema <- Option(mediaType.getSchema) yield schema.createField( optExample = Option(mediaType.getExample), optExamples = Option(mediaType.getExamples) diff --git a/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesGenerator.scala b/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesGenerator.scala index f7b9bf13..3cffc95f 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/BpmnClassesGenerator.scala @@ -15,11 +15,11 @@ case class BpmnClassesGenerator()(using end generate private def generateModel(serviceObj: BpmnServiceObject) = - val name = serviceObj.className - val topicName = s"${config.projectTopicName}${superClass.versionTag}" + val name = serviceObj.className + val topicName = s"${config.projectTopicName}${superClass.versionTag}" val printInOut: Option[ConstrField] => String = _.map(printField(_, serviceObj.className, " ")).mkString("\n", "", " ") - val content = + val content = s"""package $bpmnPackage | |import $bpmnPackage.schema.* diff --git a/04-helper/src/main/scala/camundala/helper/openApi/BpmnCreator.scala b/04-helper/src/main/scala/camundala/helper/openApi/BpmnCreator.scala index d8e5c5d8..94249577 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/BpmnCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/BpmnCreator.scala @@ -9,13 +9,13 @@ case class BpmnCreator()(using config: OpenApiConfig): def create(openAPI: OpenAPI): ApiDefinition = val superClass: BpmnSuperClass = BpmnSuperClassCreator(openAPI.getInfo, Option(openAPI.getExternalDocs)).create - val bpmnClasses = + val bpmnClasses = BpmnClassesCreator(openAPI.getPaths.asScala.toMap).create - val serviceClasses = + val serviceClasses = ServiceClassesCreator(openAPI.getComponents.getSchemas.asScala.toMap).create - val examples = examplesFrom(bpmnClasses) - val examplesAll = extractExamples(serviceClasses, examples) - val updatedServiceClasses = setDefaultValues(serviceClasses, examplesAll) + val examples = examplesFrom(bpmnClasses) + val examplesAll = extractExamples(serviceClasses, examples) + val updatedServiceClasses = setDefaultValues(serviceClasses, examplesAll) ApiDefinition( superClass, updatedServiceClasses, @@ -41,10 +41,10 @@ case class BpmnCreator()(using config: OpenApiConfig): case result -> (serviceClass: BpmnClass) if examples.contains(serviceClass.className) => println(s"Example for: ${serviceClass.className}") result ++ extractExample(serviceClass, serviceClassMap, examples(serviceClass.className)) - case result -> (serviceClass: BpmnEnum) => // not supported yet + case result -> (serviceClass: BpmnEnum) => // not supported yet println(s"Example not supported for: ${serviceClass.className}") result - case result -> other => + case result -> other => println(s"No Example for: ${other.className}") result end extractExamples @@ -54,15 +54,15 @@ case class BpmnCreator()(using config: OpenApiConfig): serviceClassMap: Map[String, IsFieldType], example: Json ): Map[String, Json] = - val cursor = example.deepDropNullValues.hcursor + val cursor = example.deepDropNullValues.hcursor val cursor2 = if example.isArray then cursor.downArray.downN(0) else cursor - val exMap = serviceClass.fields + val exMap = serviceClass.fields .map: field => cursor2.downField(field.name).focus .flatMap: case j if j.isArray => j.hcursor.downArray.downN(0).focus - case j => Some(j) + case j => Some(j) .filter: _.isObject .flatMap: j => @@ -71,7 +71,7 @@ case class BpmnCreator()(using config: OpenApiConfig): case c: BpmnClass => println(s"Sub Example for: ${c.name}") extractExample(c, serviceClassMap, j) - case e: BpmnEnum => // not supported yet + case e: BpmnEnum => // not supported yet println(s"Sub Example not supported for: ${e.name}") Map(field.tpeName -> j) .collect: @@ -97,30 +97,30 @@ case class BpmnCreator()(using config: OpenApiConfig): .map: case j if j.isObject => field.tpeName + "()" - case j if j.isArray => + case j if j.isArray => j.asArray .map: _.map: case j2 if j2.isObject => field.tpeName + "()" - case j2 if j2.isArray => + case j2 if j2.isArray => s"Seq.empty[${field.tpeName}] // Seq(Seq()) should not happen" - case elem => + case elem => elem.toString .mkString(", ") .getOrElse(s"Seq.empty[${field.tpeName}]") - case value => + case value => value.toString field.withDefaultValueAsStr(defaultValue) // println(s"EX: ${ex}") result :+ fields.map(f => serviceClass.withFields(f)).getOrElse(serviceClass) - case result -> serviceClass => + case result -> serviceClass => result :+ serviceClass end setDefaultValues private def extractExample(key: String, example: Json): Seq[(String, Json)] = - val cursor = example.deepDropNullValues + val cursor = example.deepDropNullValues .hcursor val subExamples: Seq[(String, Json)] = cursor.keys.view.toSeq.flatten diff --git a/04-helper/src/main/scala/camundala/helper/openApi/BpmnSuperClassGenerator.scala b/04-helper/src/main/scala/camundala/helper/openApi/BpmnSuperClassGenerator.scala index baeacf89..83318744 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/BpmnSuperClassGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/BpmnSuperClassGenerator.scala @@ -6,7 +6,7 @@ case class BpmnSuperClassGenerator()(using ) extends GeneratorHelper: val allSchemas = Map.empty[String, Schema[?]] - val name = config.superClassName(superClass.versionTag).getOrElse(superClass.name) + val name = config.superClassName(superClass.versionTag).getOrElse(superClass.name) def generate = os.remove.all(bpmnPath) diff --git a/04-helper/src/main/scala/camundala/helper/openApi/CreatorHelper.scala b/04-helper/src/main/scala/camundala/helper/openApi/CreatorHelper.scala index a4b60891..9642ad29 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/CreatorHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/CreatorHelper.scala @@ -18,21 +18,21 @@ trait CreatorHelper: optExample: Option[AnyRef] = None, optExamples: Option[java.util.Map[String, Example]] = None ): ConstrField = - val fromType = extractType(optKey.getOrElse("fieldKeyFromType")) - val tpe = fromType.head.toUpper + fromType.tail - val key = optKey.getOrElse(tpe.head.toLower + tpe.tail) + val fromType = extractType(optKey.getOrElse("fieldKeyFromType")) + val tpe = fromType.head.toUpper + fromType.tail + val key = optKey.getOrElse(tpe.head.toLower + tpe.tail) val isOptional: Boolean = (Option(schema.getNullable), optIsRequired) match case Some(opt) -> _ => opt case _ -> Some(req) => !req - case _ -> _ => true + case _ -> _ => true val wrapperType = schemaType match case Some("Set") => Some(WrapperType.Set) case Some("Seq") => Some(WrapperType.Seq) - case _ => None + case _ => None - val enumCases = Option(schema.getEnum) + val enumCases = Option(schema.getEnum) .map: _.asScala.toSeq .map: @@ -80,17 +80,17 @@ trait CreatorHelper: config.typeMapping("AnyType") else schema.getItems.extractType(s"$key.items") - case Some(value) => + case Some(value) => schema.getFormat match - case "int64" => "Long" - case "date-time" => "LocalDateTime" - case "date" => "LocalDate" + case "int64" => "Long" + case "date-time" => "LocalDateTime" + case "date" => "LocalDate" case _ if schema.getMaximum != null && schema.getMaximum.longValue() > Int.MaxValue => "Long" - case _ => value - case None if schema.get$ref() != null => + case _ => value + case None if schema.get$ref() != null => refType - case None => + case None => println(s"Unsupported Type: $key - ${schema.get$ref()} - ${schema.getType}") config.typeMapping("AnyType") end extractType diff --git a/04-helper/src/main/scala/camundala/helper/openApi/GeneratorHelper.scala b/04-helper/src/main/scala/camundala/helper/openApi/GeneratorHelper.scala index 6e112541..cef93658 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/GeneratorHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/GeneratorHelper.scala @@ -8,8 +8,8 @@ trait GeneratorHelper: protected def apiDefinition: ApiDefinition protected lazy val superClass: BpmnSuperClass = apiDefinition.superClass - protected lazy val bpmnPath: Path = config.bpmnPath(superClass.versionPackage) - protected lazy val bpmnPackage: String = config.bpmnPackage(superClass.versionPackage) + protected lazy val bpmnPath: Path = config.bpmnPath(superClass.versionPackage) + protected lazy val bpmnPackage: String = config.bpmnPackage(superClass.versionPackage) protected def generateObject( name: String, @@ -68,7 +68,7 @@ trait GeneratorHelper: protected def printDescrTextOpt(elem: OpenApiElem, intent: String = ""): Option[String] = val format = elem match case f: ConstrField if f.format.nonEmpty => s"\n- Format: ${f.format.mkString}" - case _ => "" + case _ => "" elem.descr .map: descr => val descrWithFormat = descr + format @@ -89,7 +89,7 @@ trait GeneratorHelper: protected def printFieldType(field: ConstrField, parentName: Option[String] = None): String = val enumPrefix = field.enumCases.flatMap(_ => parentName).map(n => s"$n.").mkString - val tpe = enumPrefix + field.tpeName + val tpe = enumPrefix + field.tpeName val typeWithWrapper = field.wrapperType .map: wt => @@ -116,11 +116,11 @@ trait GeneratorHelper: "" ) + s"${fieldName(tpeName)}.${fieldName(field.defaultEnumCase)}" ) - case tpeName => apiDefinition.serviceClasses + case tpeName => apiDefinition.serviceClasses .find: _.name == tpeName .map: - case e: BpmnEnum => + case e: BpmnEnum => s"$tpeName.${e.cases.head.name}()" case _: BpmnClass => s"$tpeName()" diff --git a/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala b/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala index a7fa23ba..c4fa753a 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/OpenApiConfig.scala @@ -18,21 +18,21 @@ case class OpenApiConfig( // creates name: Portfolios filterNames: Seq[String] = Seq.empty ): - def bpmnPath(versionTag: String): os.Path = path(ModuleConfig.bpmnModule, versionTag) - def bpmnPackage(versionTag: String): String = pckg(ModuleConfig.bpmnModule.name, versionTag) - def simulationPath(versionTag: String): os.Path = path(ModuleConfig.simulationModule, versionTag) + def bpmnPath(versionTag: String): os.Path = path(ModuleConfig.bpmnModule, versionTag) + def bpmnPackage(versionTag: String): String = pckg(ModuleConfig.bpmnModule.name, versionTag) + def simulationPath(versionTag: String): os.Path = path(ModuleConfig.simulationModule, versionTag) def simulationPackage(versionTag: String): String = pckg(ModuleConfig.simulationModule.name, versionTag) - def workerPath(versionTag: String): os.Path = path(ModuleConfig.workerModule, versionTag) - def workerPackage(versionTag: String): String = pckg(ModuleConfig.workerModule.name, versionTag) - lazy val projectTopicName: String = + def workerPath(versionTag: String): os.Path = path(ModuleConfig.workerModule, versionTag) + def workerPackage(versionTag: String): String = pckg(ModuleConfig.workerModule.name, versionTag) + lazy val projectTopicName: String = s"$projectName${subProjectName.map(n => s"-$n").getOrElse("")}" - lazy val typeMapping = + lazy val typeMapping = typeMappers .map: case TypeMapper(from, to, _) => from -> to .toMap - lazy val implMapping = + lazy val implMapping = typeMappers .map: case TypeMapper(_, to, impl) => to -> impl @@ -46,18 +46,18 @@ case class OpenApiConfig( outputPath(moduleConfig.nameWithLevel) / projectName.split( '-' ).toSeq / moduleConfig.name / subProjectName.toSeq / versionTag - private def pckg(moduleName: String, versionTag: String) = + private def pckg(moduleName: String, versionTag: String) = s"${projectName.replace('-', '.')}.$moduleName${subProjectName.map(n => s".$n").getOrElse("")}.$versionTag" end OpenApiConfig object OpenApiConfig: - lazy val openApiFile: os.RelPath = os.rel / "openApi.yml" + lazy val openApiFile: os.RelPath = os.rel / "openApi.yml" lazy val outputPath: String => os.Path = os.pwd / _ / ".generated" - lazy val superBpmnClass: String = "CompanyBpmnServiceTaskDsl" - lazy val superSimulationClass: String = "CompanySimulation" - lazy val superWorkerClass: String = "CompanyServiceWorkerDsl" - lazy val generalTypeMapping = Seq( + lazy val superBpmnClass: String = "CompanyBpmnServiceTaskDsl" + lazy val superSimulationClass: String = "CompanySimulation" + lazy val superWorkerClass: String = "CompanyServiceWorkerDsl" + lazy val generalTypeMapping = Seq( TypeMapper("array", "Seq", _.getOrElse("Seq.empty")), TypeMapper("set", "Set", _.getOrElse("Set.empty")), TypeMapper("boolean", "Boolean", _.getOrElse("true")), diff --git a/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesCreator.scala b/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesCreator.scala index c3c26f5b..efa07f41 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesCreator.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesCreator.scala @@ -44,13 +44,13 @@ case class ServiceClassesCreator( .map: case sch -> _ if sch.get$ref != null => val refTypeName = sch.refType - val refSchema = findRefSchema(refTypeName) + val refSchema = findRefSchema(refTypeName) refSchema.map: case sch if sch.getAllOf == null => createCaseClass(refTypeName, sch) - case sch => createEnum(refTypeName, sch) + case sch => createEnum(refTypeName, sch) .getOrElse(BpmnEnumCase("SHOULD NOT HAPPEN", descr = None)) - case sch -> index => + case sch -> index => createCaseClass(s"Default$index", sch) .toSeq ) @@ -76,7 +76,7 @@ case class ServiceClassesCreator( ) .toSeq .flatten - private lazy val schemas = allSchemas + private lazy val schemas = allSchemas .filter: case key -> schema => schema.getAllOf != null || diff --git a/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesGenerator.scala b/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesGenerator.scala index 0e6c42e7..1d23c5b3 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/ServiceClassesGenerator.scala @@ -26,7 +26,7 @@ case class ServiceClassesGenerator()(using |${printDescr(classOrEnum)} |${ classOrEnum match - case e: BpmnEnum => + case e: BpmnEnum => val params = e.cases .collect: case c: BpmnClass => @@ -62,11 +62,11 @@ case class ServiceClassesGenerator()(using |${ bpmnEnum.cases .map: - case bpmnEnum: BpmnEnum => + case bpmnEnum: BpmnEnum => generateEnum(bpmnEnum, s" $intent") case bpmnClass: BpmnClass => generateCaseClass(bpmnClass, Some(key), s" $intent") - case enumCase: EnumCase => + case enumCase: EnumCase => s"""$intent ${printDescr(enumCase)} |$intent case ${enumCase.className}""".stripMargin .mkString diff --git a/04-helper/src/main/scala/camundala/helper/openApi/WorkerGenerator.scala b/04-helper/src/main/scala/camundala/helper/openApi/WorkerGenerator.scala index 51c22809..f53b7ac1 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/WorkerGenerator.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/WorkerGenerator.scala @@ -13,7 +13,7 @@ case class WorkerGenerator()(using val config: OpenApiConfig, val apiDefinition: generateWorkerTests end generate - protected lazy val workerPath: os.Path = config.workerPath(superClass.versionPackage) + protected lazy val workerPath: os.Path = config.workerPath(superClass.versionPackage) protected lazy val workerPackage: String = config.workerPackage(superClass.versionPackage) private lazy val generateExports = @@ -43,7 +43,7 @@ case class WorkerGenerator()(using val config: OpenApiConfig, val apiDefinition: os.write.over(workerPath / s"${name}WorkerTest.scala", content) private def generateWorker(bpmnServiceObject: BpmnServiceObject) = - val name = bpmnServiceObject.className + val name = bpmnServiceObject.className val superClass = apiDefinition.superClass name -> @@ -104,7 +104,7 @@ case class WorkerGenerator()(using val config: OpenApiConfig, val apiDefinition: end generateWorker private def generateWorkerTest(bpmnServiceObject: BpmnServiceObject) = - val name = bpmnServiceObject.className + val name = bpmnServiceObject.className val superClass = apiDefinition.superClass name -> diff --git a/04-helper/src/main/scala/camundala/helper/openApi/adt.scala b/04-helper/src/main/scala/camundala/helper/openApi/adt.scala index 21032a30..11199689 100644 --- a/04-helper/src/main/scala/camundala/helper/openApi/adt.scala +++ b/04-helper/src/main/scala/camundala/helper/openApi/adt.scala @@ -11,19 +11,19 @@ sealed trait OpenApiElem: def name: String def descr: Option[String] - lazy val className = name.head.toUpper + name.tail + lazy val className = name.head.toUpper + name.tail lazy val niceName: String = // e.g `Authorization Check Get` className.foldLeft(""): case result -> ch if ch.isUpper => result + " " + ch - case result -> ch => + case result -> ch => result + ch .trim end OpenApiElem sealed trait BpmnClassOrEnum extends OpenApiElem -sealed trait EnumCase extends OpenApiElem -sealed trait IsFieldType extends OpenApiElem +sealed trait EnumCase extends OpenApiElem +sealed trait IsFieldType extends OpenApiElem case class BpmnSuperClass( title: String, @@ -32,8 +32,8 @@ case class BpmnSuperClass( externalDescr: Option[String], externalUrl: Option[String] ): - lazy val name: String = titleName + versionTag - lazy val versionTag: String = version.map("V" + _.split('.').head).getOrElse("") + lazy val name: String = titleName + versionTag + lazy val versionTag: String = version.map("V" + _.split('.').head).getOrElse("") lazy val versionPackage: String = versionTag.toLowerCase private lazy val titleName = title diff --git a/04-helper/src/main/scala/camundala/helper/util/CompanyVersionHelper.scala b/04-helper/src/main/scala/camundala/helper/util/CompanyVersionHelper.scala index 6d7bf3c2..9684ba3c 100644 --- a/04-helper/src/main/scala/camundala/helper/util/CompanyVersionHelper.scala +++ b/04-helper/src/main/scala/camundala/helper/util/CompanyVersionHelper.scala @@ -12,6 +12,3 @@ case class CompanyVersionHelper( VersionHelper.repoSearch(s"$companyName-camundala-bpmn_3", companyName) end CompanyVersionHelper - - - diff --git a/04-helper/src/main/scala/camundala/helper/util/DevConfig.scala b/04-helper/src/main/scala/camundala/helper/util/DevConfig.scala index b2b8a4a3..c991457e 100644 --- a/04-helper/src/main/scala/camundala/helper/util/DevConfig.scala +++ b/04-helper/src/main/scala/camundala/helper/util/DevConfig.scala @@ -71,16 +71,20 @@ object DevConfig: ): DevConfig = new DevConfig( apiProjectConfig = - ApiProjectConfig.init(projectName, packageConfPath), + ApiProjectConfig.init(projectName, packageConfPath) ) def configForCompany(projectName: String): DevConfig = DevConfig( - apiProjectConfig = ApiProjectConfig(projectName, "0.1.0-SNAPSHOT"), + apiProjectConfig = ApiProjectConfig(projectName, "0.1.0-SNAPSHOT") ) - + def projectDir(projectName: String, baseDir: os.Path): os.Path = - println(s"baseDir: $baseDir - projectName: $projectName -${if baseDir.toString.endsWith(projectName) then baseDir else baseDir / projectName}") - if baseDir.toString.toLowerCase.endsWith(projectName.toLowerCase) then baseDir else baseDir / projectName + println(s"baseDir: $baseDir - projectName: $projectName -${ + if baseDir.toString.endsWith(projectName) then baseDir else baseDir / projectName + }") + if baseDir.toString.toLowerCase.endsWith(projectName.toLowerCase) then baseDir + else baseDir / projectName + end projectDir import ModuleConfig.* diff --git a/04-helper/src/main/scala/camundala/helper/util/ReposConfig.scala b/04-helper/src/main/scala/camundala/helper/util/ReposConfig.scala index 81d7ad92..8e44c2cb 100644 --- a/04-helper/src/main/scala/camundala/helper/util/ReposConfig.scala +++ b/04-helper/src/main/scala/camundala/helper/util/ReposConfig.scala @@ -3,7 +3,7 @@ package camundala.helper.util case class ReposConfig( credentials: Seq[RepoCredentials] = Seq.empty, // first repo is the release Repo! - repos: Seq[RepoConfig] = Seq.empty, + repos: Seq[RepoConfig] = Seq.empty ): def sbtCredentials: String = @@ -35,7 +35,7 @@ object RepoConfig: descr: String = "", realm: String = "gitlab" ) extends RepoConfig: - lazy val sbtContent = + lazy val sbtContent = s""" // $descr | lazy val ${name}RepoStr = | "$repo" diff --git a/04-helper/src/test/scala/camundala/helper/openApi/ProjectApiGenerator.scala b/04-helper/src/test/scala/camundala/helper/openApi/ProjectApiGenerator.scala index 9476d03e..afed286b 100644 --- a/04-helper/src/test/scala/camundala/helper/openApi/ProjectApiGenerator.scala +++ b/04-helper/src/test/scala/camundala/helper/openApi/ProjectApiGenerator.scala @@ -5,13 +5,13 @@ object ProjectApiGenerator extends App: OpenApiGenerator().generate - private given OpenApiConfig = gravitonConf + private given OpenApiConfig = gravitonConf private lazy val typeMappers = OpenApiConfig.generalTypeMapping ++ Seq( TypeMapper("AnyValue", "Json", OpenApiConfig.jsonObj) ) - private given ApiDefinition = OpenApiCreator().create + private given ApiDefinition = OpenApiCreator().create private lazy val camundaConf = OpenApiConfig( projectName = "mycompany-services", subProjectName = Some("camunda"), diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/C7WorkerHandler.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/C7WorkerHandler.scala index cfb26357..ac2b6df7 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/C7WorkerHandler.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/C7WorkerHandler.scala @@ -62,8 +62,8 @@ trait C7WorkerHandler extends camunda.ExternalTaskHandler, WorkerHandler: try (for generalVariables <- tryGeneralVariables - context = EngineRunContext(engineContext, generalVariables) - filteredOut <- + context = EngineRunContext(engineContext, generalVariables) + filteredOut <- worker.executor(using context).execute(tryProcessVariables) yield externalTaskService.handleSuccess(filteredOut, generalVariables.manualOutMapping) // ).left.map { ex => @@ -101,18 +101,18 @@ trait C7WorkerHandler extends camunda.ExternalTaskHandler, WorkerHandler: val errorMsg = error.errorMsg.replace("\n", "") (for generalVariables <- tryGeneralVariables - errorHandled = isErrorHandled(error, generalVariables.handledErrors) + errorHandled = isErrorHandled(error, generalVariables.handledErrors) errorRegexHandled = errorHandled && generalVariables.regexHandledErrors.forall(regex => - errorMsg.matches(s".*$regex.*") - ) + errorMsg.matches(s".*$regex.*") + ) yield (errorHandled, errorRegexHandled, generalVariables)) .flatMap { case (true, true, generalVariables) => val mockedOutput = error match case error: ErrorWithOutput => error.output - case _ => Map.empty - val filtered = filteredOutput(generalVariables.outputVariables, mockedOutput) + case _ => Map.empty + val filtered = filteredOutput(generalVariables.outputVariables, mockedOutput) Right( if error.isMock && !generalVariables.handledErrors.contains( @@ -123,7 +123,7 @@ trait C7WorkerHandler extends camunda.ExternalTaskHandler, WorkerHandler: else val errorVars = Map( "errorCode" -> error.errorCode, - "errorMsg" -> error.errorMsg + "errorMsg" -> error.errorMsg ) val variables = (filtered ++ errorVars).asJava logger.info(s"Handled Error: $errorVars") @@ -134,9 +134,9 @@ trait C7WorkerHandler extends camunda.ExternalTaskHandler, WorkerHandler: variables ) ) - case (true, false, _) => + case (true, false, _) => Left(HandledRegexNotMatchedError(error)) - case _ => + case _ => Left(error) } .left @@ -160,7 +160,7 @@ trait C7WorkerHandler extends camunda.ExternalTaskHandler, WorkerHandler: ): Map[String, Any] = outputVariables match case filter if filter.isEmpty => allOutputs - case filter => + case filter => allOutputs .filter { case k -> _ => filter.contains(k) } diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/Camunda7Context.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/Camunda7Context.scala index d5a8ccb0..406694a2 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/Camunda7Context.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/Camunda7Context.scala @@ -25,5 +25,3 @@ end Camunda7Context @Configuration class DefaultCamunda7Context extends Camunda7Context - - diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/CamundaHelper.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/CamundaHelper.scala index fac89f7e..ad9f5af6 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/CamundaHelper.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/CamundaHelper.scala @@ -25,15 +25,15 @@ object CamundaHelper: )(using ExternalTask): Either[BadVariableError, Option[A]] = for maybeJson <- jsonVariableOpt(varKey) - obj <- maybeJson - .map(_.as[Option[A]]) - .getOrElse(Right(None)) - .left - .map(err => - BadVariableError( - s"Problem decoding Json to ${nameOfType[A]}: ${err.getMessage}" - ) - ) + obj <- maybeJson + .map(_.as[Option[A]]) + .getOrElse(Right(None)) + .left + .map(err => + BadVariableError( + s"Problem decoding Json to ${nameOfType[A]}: ${err.getMessage}" + ) + ) yield obj def jsonVariableOpt( @@ -64,7 +64,7 @@ object CamundaHelper: ): HelperContext[Either[BadVariableError, Seq[String]]] = jsonVariableOpt(varKey) .flatMap { - case Some(value) if value.isArray => + case Some(value) if value.isArray => extractFromSeq( value .as[Seq[String]] @@ -75,7 +75,7 @@ object CamundaHelper: .as[String] .map(_.split(",").toSeq) ) - case _ => + case _ => Right(defaultSeq.map(_.toString)) } @@ -131,11 +131,11 @@ object CamundaHelper: case _: PrimitiveValueType => typedValue.getValue match - case vt: DmnValueSimple => + case vt: DmnValueSimple => Right(vt.asJson) case en: scala.reflect.Enum => Right(Json.fromString(en.toString)) - case other => + case other => Left( BadVariableError( s"Input is not valid: Unexpected PrimitiveValueType: $other" diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/ProcessVariablesExtractor.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/ProcessVariablesExtractor.scala index d61102a2..5549a371 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/ProcessVariablesExtractor.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/ProcessVariablesExtractor.scala @@ -12,7 +12,7 @@ import org.camunda.bpm.engine.variable.value.TypedValue */ object ProcessVariablesExtractor: - type VariableType = HelperContext[Seq[Either[BadVariableError, (String, Option[Json])]]] + type VariableType = HelperContext[Seq[Either[BadVariableError, (String, Option[Json])]]] type GeneralVariableType = HelperContext[Either[BadVariableError, GeneralVariables]] // gets the input variables of the process as Optional Jsons. @@ -22,12 +22,12 @@ object ProcessVariablesExtractor: .map { case k -> Some(typedValue) if typedValue.getType == ValueType.NULL => Right(k -> None) // k -> null as Camunda Expressions need them - case k -> Some(typedValue) => + case k -> Some(typedValue) => extractValue(typedValue) .map(v => k -> Some(v)) .left .map(ex => BadVariableError(s"Problem extracting Process Variable $k: ${ex.errorMsg}")) - case k -> None => + case k -> None => Right(k -> None) // k -> null as Camunda Expressions need them } end extract @@ -35,15 +35,15 @@ object ProcessVariablesExtractor: def extractGeneral(): GeneralVariableType = for // mocking - servicesMocked <- variable(InputParams.servicesMocked, false) - mockedWorkers <- extractSeqFromArrayOrString(InputParams.mockedWorkers, Seq.empty) - outputMockOpt <- jsonVariableOpt(InputParams.outputMock) + servicesMocked <- variable(InputParams.servicesMocked, false) + mockedWorkers <- extractSeqFromArrayOrString(InputParams.mockedWorkers, Seq.empty) + outputMockOpt <- jsonVariableOpt(InputParams.outputMock) outputServiceMockOpt <- jsonVariableOpt(InputParams.outputServiceMock) // mapping - manualOutMapping <- variable(InputParams.manualOutMapping, false) - outputVariables <- extractSeqFromArrayOrString(InputParams.outputVariables, Seq.empty) - handledErrors <- extractSeqFromArrayOrString(InputParams.handledErrors, Seq.empty) - regexHandledErrors <- extractSeqFromArrayOrString(InputParams.regexHandledErrors, Seq.empty) + manualOutMapping <- variable(InputParams.manualOutMapping, false) + outputVariables <- extractSeqFromArrayOrString(InputParams.outputVariables, Seq.empty) + handledErrors <- extractSeqFromArrayOrString(InputParams.handledErrors, Seq.empty) + regexHandledErrors <- extractSeqFromArrayOrString(InputParams.regexHandledErrors, Seq.empty) // authorization impersonateUserIdOpt <- variableOpt[String](InputParams.impersonateUserId) yield GeneralVariables( diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/RestApiClient.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/RestApiClient.scala index c793e9a9..935dbbb4 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/RestApiClient.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/RestApiClient.scala @@ -17,7 +17,7 @@ import scala.reflect.ClassTag trait RestApiClient: def sendRequest[ - ServiceIn: InOutEncoder, // body of service + ServiceIn: InOutEncoder, // body of service ServiceOut: InOutDecoder: ClassTag // output of service ]( runnableRequest: RunnableRequest[ServiceIn] @@ -25,12 +25,12 @@ trait RestApiClient: try for reqWithOptBody <- requestWithOptBody(runnableRequest) - req <- auth(reqWithOptBody) - response <- sendRequest(req) - statusCode = response.code - body <- readBody(statusCode, response, req) - headers = response.headers.map(h => h.name -> h.value).toMap - out <- decodeResponse[ServiceOut](body) + req <- auth(reqWithOptBody) + response <- sendRequest(req) + statusCode = response.code + body <- readBody(statusCode, response, req) + headers = response.headers.map(h => h.name -> h.value).toMap + out <- decodeResponse[ServiceOut](body) yield ServiceResponse(out, headers) catch case ex: Throwable => @@ -81,15 +81,15 @@ trait RestApiClient: ]( body: String ): Either[ServiceBadBodyError, ServiceOut] = - if hasNoOutput[ServiceOut]() - then Right(NoOutput().asInstanceOf[ServiceOut]) + if hasNoOutput[ServiceOut]() + then Right(NoOutput().asInstanceOf[ServiceOut]) else - if body.isBlank then + if body.isBlank then val runtimeClass = implicitly[ClassTag[ServiceOut]].runtimeClass runtimeClass match case x if x == classOf[Option[?]] => Right(None.asInstanceOf[ServiceOut]) - case other => + case other => Left(ServiceBadBodyError( s"There is no body in the response and the ServiceOut is neither NoOutput nor Option (Class is $other)." )) @@ -99,7 +99,9 @@ trait RestApiClient: .decodeAccumulating[ServiceOut](body) .toEither .left - .map(err => ServiceBadBodyError(s"Problem creating body from response.\n$err\nBODY: $body")) + .map(err => + ServiceBadBodyError(s"Problem creating body from response.\n$err\nBODY: $body") + ) protected def requestWithOptBody[ServiceIn: InOutEncoder]( runnableRequest: RunnableRequest[ServiceIn] diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/OAuthPasswordFlow.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/OAuthPasswordFlow.scala index 715c58d5..748c9c40 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/OAuthPasswordFlow.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/OAuthPasswordFlow.scala @@ -29,7 +29,7 @@ trait OAuthPasswordFlow: ) def adminToken(tokenKey: String = username)(using - logger: WorkerLogger, + logger: WorkerLogger ): Either[ServiceAuthError, String] = TokenCache.cache.getIfPresent(tokenKey) .map: token => @@ -45,7 +45,7 @@ trait OAuthPasswordFlow: token def clientCredentialsToken()(using - logger: WorkerLogger, + logger: WorkerLogger ): Either[ServiceAuthError, String] = TokenCache.cache.getIfPresent("clientCredentials") .map: token => @@ -61,7 +61,7 @@ trait OAuthPasswordFlow: token def impersonateToken(username: String, adminToken: String)(using - logger: WorkerLogger, + logger: WorkerLogger ): Either[ServiceAuthError, String] = TokenCache.cache.getIfPresent(username) .map: token => diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/TokenService.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/TokenService.scala index d6fca6a3..25fc915d 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/TokenService.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/TokenService.scala @@ -13,7 +13,7 @@ class TokenService( impersonateBody: Map[String, String] ): - def adminToken(): Either[ServiceAuthError, String] = + def adminToken(): Either[ServiceAuthError, String] = authAdminResponse .body .map(t => s"Bearer ${t.access_token}") @@ -36,7 +36,7 @@ class TokenService( def impersonateToken(username: String, adminToken: String): Either[ServiceAuthError, String] = val token = adminToken.replace("Bearer ", "") - val body = impersonateBody ++ Map("requested_subject" -> username, "subject_token" -> token) + val body = impersonateBody ++ Map("requested_subject" -> username, "subject_token" -> token) authImpersonateResponse(body) .body .map(t => s"Bearer ${t.access_token}") @@ -47,14 +47,14 @@ class TokenService( ) ) end impersonateToken - private lazy val tokenRequest = + private lazy val tokenRequest = basicRequest .post(identityUrl) .header("accept", "application/json") - private def authAdminResponse = + private def authAdminResponse = tokenRequest.body(adminTokenBody).response(asJson[TokenResponse]).send(backend) - private def authClientCredentialsResponse = + private def authClientCredentialsResponse = tokenRequest.body(clientCredentialsBody).response(asJson[TokenResponse]).send(backend) private def authImpersonateResponse(body: Map[String, String]) = tokenRequest.body(body).response(asJson[TokenResponse]).send(backend) diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/InterceptorConfiguration.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/InterceptorConfiguration.scala index 3028eb9f..1641e8d4 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/InterceptorConfiguration.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/InterceptorConfiguration.scala @@ -22,5 +22,5 @@ class InterceptorConfiguration @Autowired() ( logger.debug("Request interceptor called!") val token = accessTokenSyncWorker.getAccessTokenSync context.addHeader("Authorization", token) - + end InterceptorConfiguration diff --git a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/WorkerAccessTokenProvider.scala b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/WorkerAccessTokenProvider.scala index 7bcecc85..15738dea 100644 --- a/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/WorkerAccessTokenProvider.scala +++ b/04-worker-c7spring/src/main/scala/camundala/camunda7/worker/oauth/camunda/WorkerAccessTokenProvider.scala @@ -26,13 +26,13 @@ class WorkerAccessTokenProvider @Autowired() ( .principal("Worker") .build() val authorizedClient = this.authorizedClientManager.authorize(authorizeRequest) - val accessToken = Objects.requireNonNull(authorizedClient).getAccessToken - val token = accessToken.getTokenValue + val accessToken = Objects.requireNonNull(authorizedClient).getAccessToken + val token = accessToken.getTokenValue logger.debug( - s"""Got Camunda Token: - |- Scopes: ${accessToken.getScopes} - |- Token: ${token.take(20)}...${token.takeRight(10)}""".stripMargin - ) + s"""Got Camunda Token: + |- Scopes: ${accessToken.getScopes} + |- Token: ${token.take(20)}...${token.takeRight(10)}""".stripMargin + ) "Bearer " + token end getAccessTokenSync end WorkerAccessTokenProvider diff --git a/04-worker-c7spring/src/test/scala/camundala/camunda7/worker/C7WorkerHandlerTest.scala b/04-worker-c7spring/src/test/scala/camundala/camunda7/worker/C7WorkerHandlerTest.scala index 54b03d8e..7d64b481 100644 --- a/04-worker-c7spring/src/test/scala/camundala/camunda7/worker/C7WorkerHandlerTest.scala +++ b/04-worker-c7spring/src/test/scala/camundala/camunda7/worker/C7WorkerHandlerTest.scala @@ -29,10 +29,10 @@ class C7WorkerHandlerTest extends munit.FunSuite: test("isErrorHandled catch all"): assertEquals(handler.isErrorHandled(UnexpectedError("blabla"), Seq("CatchAll")), true) - + private lazy val handler = new C7WorkerHandler: def worker = ??? - def topic = "test-topic" + def topic = "test-topic" end handler - + end C7WorkerHandlerTest diff --git a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Client.scala b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Client.scala index 3f68cc11..ae846ed3 100644 --- a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Client.scala +++ b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Client.scala @@ -23,12 +23,13 @@ object C7NoAuthClient extends C7Client: ZIO.attempt: ExternalTaskClient.create() .baseUrl("http://localhost:8887/engine-rest") - // .asyncResponseTimeout(10000) + // .asyncResponseTimeout(10000) .customizeHttpClient: httpClientBuilder => httpClientBuilder.setDefaultRequestConfig(RequestConfig.custom() - // .setResponseTimeout(Timeout.ofSeconds(15)) + // .setResponseTimeout(Timeout.ofSeconds(15)) .build()) .build() +end C7NoAuthClient object C7BasicAuthClient extends C7Client: @@ -55,9 +56,9 @@ object C7BasicAuthClient extends C7Client: end C7BasicAuthClient object OAuth2Client extends C7Client, OAuthPasswordFlow: - given WorkerLogger = Slf4JLogger.logger(getClass.getName) + given WorkerLogger = Slf4JLogger.logger(getClass.getName) lazy val fssoRealm: String = sys.env.getOrElse("FSSO_REALM", "0949") - lazy val fssoBaseUrl = sys.env.getOrElse("FSSO_BASE_URL", s"http://host.lima.internal:8090") + lazy val fssoBaseUrl = sys.env.getOrElse("FSSO_BASE_URL", s"http://host.lima.internal:8090") def addAccessToken = new HttpRequestInterceptor: override def process(request: HttpRequest, entity: EntityDetails, context: HttpContext): Unit = diff --git a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Context.scala b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Context.scala index 90f97b80..0f34a109 100644 --- a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Context.scala +++ b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7Context.scala @@ -17,9 +17,6 @@ trait C7Context extends EngineContext: def sendRequest[ServiceIn: InOutEncoder, ServiceOut: InOutDecoder: ClassTag]( request: RunnableRequest[ServiceIn] ): SendRequestType[ServiceOut] = ??? - // DefaultRestApiClient.sendRequest(request) + // DefaultRestApiClient.sendRequest(request) end C7Context - - - diff --git a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7WorkerRegistry.scala b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7WorkerRegistry.scala index cf925ee1..dab4cc3f 100644 --- a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7WorkerRegistry.scala +++ b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/C7WorkerRegistry.scala @@ -21,7 +21,7 @@ class C7WorkerRegistry(client: C7Client) attempt(client .subscribe(worker.topic) .handler(worker) - //.lockDuration(worker.timeout.toMillis) + // .lockDuration(worker.timeout.toMillis) .open()) *> logInfo("Registered C7 Worker: " + worker.topic) diff --git a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/CamundaHelper.scala b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/CamundaHelper.scala index 061cb5dd..8ac55127 100644 --- a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/CamundaHelper.scala +++ b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/CamundaHelper.scala @@ -45,7 +45,7 @@ object CamundaHelper: .map { case typedValue if typedValue.getType == ValueType.NULL => ZIO.succeed(None) // k -> null as Camunda Expressions need them - case typedValue => + case typedValue => extractValue(typedValue) .map(v => Some(v)) } @@ -163,7 +163,7 @@ object CamundaHelper: ZIO.fromEither(variableKeys) .map: varKeys => varKeys.map(_.trim).filter(_.nonEmpty) - .mapError : error => + .mapError: error => error.printStackTrace() BadVariableError( s"Could not extract Seq for an Array or comma-separated String: ${error.getMessage}" diff --git a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/ProcessVariablesExtractor.scala b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/ProcessVariablesExtractor.scala index 9fd9e1be..bf984556 100644 --- a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/ProcessVariablesExtractor.scala +++ b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/ProcessVariablesExtractor.scala @@ -14,18 +14,20 @@ import zio.{IO, ZIO} object ProcessVariablesExtractor: import CamundaHelper.* // gets the input variables of the process as Optional Jsons. - def extract(variableNames: Seq[String])(using camunda.ExternalTask): Seq[IO[BadVariableError, (String, Option[Json])]] = + def extract(variableNames: Seq[String])(using + camunda.ExternalTask + ): Seq[IO[BadVariableError, (String, Option[Json])]] = variableNames .map(k => k -> variableTypedOpt(k)) .map { case k -> Some(typedValue) if typedValue.getType == ValueType.NULL => ZIO.succeed(k -> None) // k -> null as Camunda Expressions need them - case k -> Some(typedValue) => + case k -> Some(typedValue) => extractValue(typedValue) .map(v => k -> Some(v)) - .mapError:ex => + .mapError: ex => BadVariableError(s"Problem extracting Process Variable $k: ${ex.errorMsg}") - case k -> None => + case k -> None => ZIO.succeed(k -> None) // k -> null as Camunda Expressions need them } end extract @@ -33,15 +35,15 @@ object ProcessVariablesExtractor: def extractGeneral()(using camunda.ExternalTask): IO[BadVariableError, GeneralVariables] = for // mocking - servicesMocked <- variable(InputParams.servicesMocked, false) - mockedWorkers <- extractSeqFromArrayOrString(InputParams.mockedWorkers, Seq.empty) - outputMockOpt <- jsonVariableOpt(InputParams.outputMock) + servicesMocked <- variable(InputParams.servicesMocked, false) + mockedWorkers <- extractSeqFromArrayOrString(InputParams.mockedWorkers, Seq.empty) + outputMockOpt <- jsonVariableOpt(InputParams.outputMock) outputServiceMockOpt <- jsonVariableOpt(InputParams.outputServiceMock) // mapping - manualOutMapping <- variable(InputParams.manualOutMapping, false) - outputVariables <- extractSeqFromArrayOrString(InputParams.outputVariables, Seq.empty) - handledErrors <- extractSeqFromArrayOrString(InputParams.handledErrors, Seq.empty) - regexHandledErrors <- extractSeqFromArrayOrString(InputParams.regexHandledErrors, Seq.empty) + manualOutMapping <- variable(InputParams.manualOutMapping, false) + outputVariables <- extractSeqFromArrayOrString(InputParams.outputVariables, Seq.empty) + handledErrors <- extractSeqFromArrayOrString(InputParams.handledErrors, Seq.empty) + regexHandledErrors <- extractSeqFromArrayOrString(InputParams.regexHandledErrors, Seq.empty) // authorization impersonateUserIdOpt <- variableOpt[String](InputParams.impersonateUserId) yield GeneralVariables( diff --git a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/OAuthPasswordFlow.scala b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/OAuthPasswordFlow.scala index 4e2cadcb..7f330b3b 100644 --- a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/OAuthPasswordFlow.scala +++ b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/OAuthPasswordFlow.scala @@ -29,7 +29,7 @@ trait OAuthPasswordFlow: ) def adminToken(tokenKey: String = username)(using - logger: WorkerLogger, + logger: WorkerLogger ): Either[ServiceAuthError, String] = TokenCache.cache.getIfPresent(tokenKey) .map: token => @@ -45,7 +45,7 @@ trait OAuthPasswordFlow: token def clientCredentialsToken()(using - logger: WorkerLogger, + logger: WorkerLogger ): Either[ServiceAuthError, String] = TokenCache.cache.getIfPresent("clientCredentials") .map: token => @@ -61,7 +61,7 @@ trait OAuthPasswordFlow: token def impersonateToken(username: String, adminToken: String)(using - logger: WorkerLogger, + logger: WorkerLogger ): Either[ServiceAuthError, String] = TokenCache.cache.getIfPresent(username) .map: token => diff --git a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/TokenService.scala b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/TokenService.scala index 8ab6b90a..3b9bdf5c 100644 --- a/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/TokenService.scala +++ b/04-worker-c7zio/src/main/scala/camundala/worker/c8zio/oauth/TokenService.scala @@ -13,7 +13,7 @@ class TokenService( impersonateBody: Map[String, String] ): - def adminToken(): Either[ServiceAuthError, String] = + def adminToken(): Either[ServiceAuthError, String] = authAdminResponse .body .map(t => s"Bearer ${t.access_token}") @@ -36,7 +36,7 @@ class TokenService( def impersonateToken(username: String, adminToken: String): Either[ServiceAuthError, String] = val token = adminToken.replace("Bearer ", "") - val body = impersonateBody ++ Map("requested_subject" -> username, "subject_token" -> token) + val body = impersonateBody ++ Map("requested_subject" -> username, "subject_token" -> token) authImpersonateResponse(body) .body .map(t => s"Bearer ${t.access_token}") @@ -47,14 +47,14 @@ class TokenService( ) ) end impersonateToken - private lazy val tokenRequest = + private lazy val tokenRequest = basicRequest .post(identityUrl) .header("accept", "application/json") - private def authAdminResponse = + private def authAdminResponse = tokenRequest.body(adminTokenBody).response(asJson[TokenResponse]).send(backend) - private def authClientCredentialsResponse = + private def authClientCredentialsResponse = tokenRequest.body(clientCredentialsBody).response(asJson[TokenResponse]).send(backend) private def authImpersonateResponse(body: Map[String, String]) = tokenRequest.body(body).response(asJson[TokenResponse]).send(backend) diff --git a/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Client.scala b/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Client.scala index 7da02d9a..38ff9f70 100644 --- a/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Client.scala +++ b/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Client.scala @@ -8,9 +8,9 @@ import java.net.URI trait C8Client: def client: Task[ZeebeClient] - + object C8SaasClient extends C8Client: - + lazy val client: Task[ZeebeClient] = ZIO.attempt: ZeebeClient.newClientBuilder() @@ -19,14 +19,14 @@ object C8SaasClient extends C8Client: .credentialsProvider(credentialsProvider) .build - private lazy val zeebeGrpc = + private lazy val zeebeGrpc = "https://dbd4cad1-5621-4d66-b14e-71c92456939a.bru-2.zeebe.camunda.io:443" - private lazy val zeebeRest = + private lazy val zeebeRest = "https://bru-2.zeebe.camunda.io:443/dbd4cad1-5621-4d66-b14e-71c92456939a/v2" - private lazy val audience = "zeebe.camunda.io" - private lazy val clientId = sys.env("CAMUNDA8_CLOUD_CLIENTID") + private lazy val audience = "zeebe.camunda.io" + private lazy val clientId = sys.env("CAMUNDA8_CLOUD_CLIENTID") private lazy val clientSecret = sys.env("CAMUNDA8_CLOUD_CLIENTSECRET") - private lazy val oAuthAPI = "https://login.cloud.camunda.io/oauth/token" + private lazy val oAuthAPI = "https://login.cloud.camunda.io/oauth/token" private lazy val credentialsProvider = new OAuthCredentialsProviderBuilder() @@ -35,3 +35,4 @@ object C8SaasClient extends C8Client: .clientId(clientId) .clientSecret(clientSecret) .build +end C8SaasClient diff --git a/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Context.scala b/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Context.scala index ee834886..8d2aaa5c 100644 --- a/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Context.scala +++ b/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Context.scala @@ -16,6 +16,5 @@ trait C8Context extends EngineContext: def sendRequest[ServiceIn: InOutEncoder, ServiceOut: InOutDecoder: ClassTag]( request: RunnableRequest[ServiceIn] ): SendRequestType[ServiceOut] = ??? - //DefaultRestApiClient.sendRequest(request) - - + // DefaultRestApiClient.sendRequest(request) +end C8Context diff --git a/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Worker.scala b/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Worker.scala index 94f378d2..8ab6e04a 100644 --- a/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Worker.scala +++ b/04-worker-c8zio/src/main/scala/camundala/worker/c8zio/C8Worker.scala @@ -69,25 +69,26 @@ trait C8Worker[In: InOutDecoder, Out: InOutEncoder] extends JobWorker, JobHandle error: CamundalaWorkerError ): ZIO[Any, Throwable, Unit] = (for - _ <- logError(s"Error: ${error.causeMsg}") + _ <- logError(s"Error: ${error.causeMsg}") json <- extractJson(job) generalVariables <- extractGeneralVariables(json) - isErrorHandled = errorHandled(error, generalVariables.handledErrors) - errorRegexHandled = regexMatchesAll(isErrorHandled, error, generalVariables.regexHandledErrors) - _ <- attempt(client.newFailCommand(job) - .retries(job.getRetries - 1) - .retryBackoff(time.Duration.ofSeconds(60)) - .variables(Map("errorCode" -> error.errorCode, "errorMsg" -> error.errorMsg).asJava) - .errorMessage(error.causeMsg) - .send().join()) + isErrorHandled = errorHandled(error, generalVariables.handledErrors) + errorRegexHandled = + regexMatchesAll(isErrorHandled, error, generalVariables.regexHandledErrors) + _ <- attempt(client.newFailCommand(job) + .retries(job.getRetries - 1) + .retryBackoff(time.Duration.ofSeconds(60)) + .variables(Map("errorCode" -> error.errorCode, "errorMsg" -> error.errorMsg).asJava) + .errorMessage(error.causeMsg) + .send().join()) yield (isErrorHandled, errorRegexHandled, generalVariables)) - .flatMap : + .flatMap: case (true, true, generalVariables) => val mockedOutput = error match case error: ErrorWithOutput => error.output - case _ => Map.empty - val filtered = filteredOutput(generalVariables.outputVariables, mockedOutput) + case _ => Map.empty + val filtered = filteredOutput(generalVariables.outputVariables, mockedOutput) ZIO.attempt( if error.isMock && !generalVariables.handledErrors.contains( @@ -98,7 +99,7 @@ trait C8Worker[In: InOutDecoder, Out: InOutEncoder] extends JobWorker, JobHandle else val errorVars = Map( "errorCode" -> error.errorCode, - "errorMsg" -> error.errorMsg + "errorMsg" -> error.errorMsg ) val variables = (filtered ++ errorVars).asJava client.newFailCommand(job) @@ -108,9 +109,9 @@ trait C8Worker[In: InOutDecoder, Out: InOutEncoder] extends JobWorker, JobHandle .errorMessage(error.causeMsg) .send().join() ) - case (true, false, _) => + case (true, false, _) => ZIO.fail(HandledRegexNotMatchedError(error)) - case _ => + case _ => ZIO.fail(error) private def extractGeneralVariables(json: Json) = diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/BadScenarioExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/BadScenarioExample.scala index 19eb2e96..5ffc2a5f 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/BadScenarioExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/BadScenarioExample.scala @@ -4,9 +4,9 @@ import camundala.bpmn.* object BadScenarioExample extends BpmnProcessDsl: val processName = "badScenario-example" - val descr = "" + val descr = "" - lazy val `Bad Scenario with Message` = + lazy val `Bad Scenario with Message` = process() lazy val `Bad Scenario without Message` = `Bad Scenario with Message` diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DateExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DateExample.scala index 87ce0715..1b45fc2c 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DateExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DateExample.scala @@ -8,12 +8,12 @@ import java.time.LocalDateTime object DateExample extends BpmnProcessDsl: val processName = "NOT USED" - def descr = "" + def descr = "" case class Input(inDate: LocalDateTime = LocalDateTime.parse("2013-12-12T12:12:12")) object Input: - given ApiSchema[Input] = deriveApiSchema + given ApiSchema[Input] = deriveApiSchema given InOutCodec[Input] = deriveCodec lazy val DateExampleDMN = singleEntry( diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DecisionResultTypes.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DecisionResultTypes.scala index 59fffa89..3077dda8 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DecisionResultTypes.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/DecisionResultTypes.scala @@ -5,7 +5,7 @@ import camundala.domain.* object DecisionResultTypes extends BpmnProcessDsl: val processName = "camundala-mapping-example" - val descr = "" + val descr = "" case class Input(letter: String) @@ -68,13 +68,13 @@ object DecisionResultTypes extends BpmnProcessDsl: lazy val demoProcess = process() - given ApiSchema[Input] = deriveApiSchema + given ApiSchema[Input] = deriveApiSchema given InOutCodec[Input] = deriveCodec - given ApiSchema[ManyOutResult] = deriveApiSchema + given ApiSchema[ManyOutResult] = deriveApiSchema given InOutCodec[ManyOutResult] = deriveCodec - given ApiSchema[BadManyOutResult] = deriveApiSchema + given ApiSchema[BadManyOutResult] = deriveApiSchema given InOutCodec[BadManyOutResult] = deriveCodec end DecisionResultTypes diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumExample.scala index 8365ab08..3e25e4e6 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumExample.scala @@ -5,7 +5,7 @@ import camundala.domain.* object EnumExample extends BpmnProcessDsl: val processName = "enum-example" - val descr = "" + val descr = "" enum Input: @@ -19,7 +19,7 @@ object EnumExample extends BpmnProcessDsl: ) end Input object Input: - given ApiSchema[Input] = deriveApiSchema + given ApiSchema[Input] = deriveApiSchema given InOutCodec[Input] = deriveInOutCodec enum Output: @@ -31,14 +31,14 @@ object EnumExample extends BpmnProcessDsl: ) end Output object Output: - given ApiSchema[Output] = deriveApiSchema + given ApiSchema[Output] = deriveApiSchema given InOutCodec[Output] = deriveInOutCodec enum SimpleEnum: case One, Two object SimpleEnum: - given ApiSchema[SimpleEnum] = deriveEnumApiSchema + given ApiSchema[SimpleEnum] = deriveEnumApiSchema given InOutCodec[SimpleEnum] = deriveEnumInOutCodec lazy val example = process( diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumWorkerExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumWorkerExample.scala index da6d4e33..f44d8032 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumWorkerExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/EnumWorkerExample.scala @@ -5,16 +5,16 @@ import camundala.domain.* object EnumWorkerExample extends BpmnServiceTaskDsl: - val serviceLabel: String = "Demo for Enum as Inputs and Outputs in Worker" + val serviceLabel: String = "Demo for Enum as Inputs and Outputs in Worker" val serviceVersion: String = "1.4" - val topicName: String = "myEnumWorker.Topic" + val topicName: String = "myEnumWorker.Topic" - val descr = "" + val descr = "" val path: String = "GET /people" - type ServiceIn = NoInput + type ServiceIn = NoInput type ServiceOut = NoOutput - lazy val serviceInExample = NoInput() + lazy val serviceInExample = NoInput() lazy val serviceMock: MockedServiceResponse[ServiceOut] = MockedServiceResponse.success200(NoOutput()) @@ -33,7 +33,7 @@ object EnumWorkerExample extends BpmnServiceTaskDsl: ) end In object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveInOutCodec enum Out: @@ -48,14 +48,14 @@ object EnumWorkerExample extends BpmnServiceTaskDsl: ) end Out object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveInOutCodec enum SimpleEnum: case One, Two object SimpleEnum: - given ApiSchema[SimpleEnum] = deriveEnumApiSchema + given ApiSchema[SimpleEnum] = deriveEnumApiSchema given InOutCodec[SimpleEnum] = deriveEnumInOutCodec lazy val example = serviceTask( diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/GenericServiceExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/GenericServiceExample.scala index 86be73f9..0e4cb2c4 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/GenericServiceExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/GenericServiceExample.scala @@ -5,11 +5,11 @@ import camundala.domain.* object GenericServiceExample extends BpmnProcessDsl: val processName = "genericServiceExample" - val descr = "" + val descr = "" - case class Input(serviceName: String = "myservice.api.v1.post")extends GenericServiceIn + case class Input(serviceName: String = "myservice.api.v1.post") extends GenericServiceIn object Input: - given ApiSchema[Input] = deriveApiSchema + given ApiSchema[Input] = deriveApiSchema given InOutCodec[Input] = deriveInOutCodec type Output = NoOutput diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SignalMessageExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SignalMessageExample.scala index 997fca24..22046777 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SignalMessageExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SignalMessageExample.scala @@ -5,9 +5,9 @@ import camundala.domain.* object MessageForExample extends BpmnProcessDsl: val processName = "message-for-example" - val descr = "" + val descr = "" - lazy val messageExample = process( + lazy val messageExample = process( in = SignalMessageExampleIn(), out = SignalMessageExampleOut() ) @@ -19,9 +19,9 @@ end MessageForExample object SignalExample extends BpmnProcessDsl: val processName = "signal-example" - val descr = "" + val descr = "" - lazy val signalExample = process( + lazy val signalExample = process( in = SignalMessageExampleIn(), out = SignalMessageExampleOut(endStatus = EndStatus.signalReceived) ) @@ -33,7 +33,7 @@ end SignalExample case class SignalMessageExampleIn(someValue: String = "hello") object SignalMessageExampleIn: - given ApiSchema[SignalMessageExampleIn] = deriveApiSchema + given ApiSchema[SignalMessageExampleIn] = deriveApiSchema given InOutCodec[SignalMessageExampleIn] = deriveCodec case class SignalMessageExampleOut( @@ -41,12 +41,12 @@ case class SignalMessageExampleOut( endStatus: EndStatus = EndStatus.messageReceived ) object SignalMessageExampleOut: - given ApiSchema[SignalMessageExampleOut] = deriveApiSchema + given ApiSchema[SignalMessageExampleOut] = deriveApiSchema given InOutCodec[SignalMessageExampleOut] = deriveCodec enum EndStatus: case messageReceived, signalReceived object EndStatus: - given ApiSchema[EndStatus] = deriveEnumApiSchema + given ApiSchema[EndStatus] = deriveEnumApiSchema given InOutCodec[EndStatus] = deriveEnumInOutCodec diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SimulationTestOverridesExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SimulationTestOverridesExample.scala index 6dd1c619..c27f0db5 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SimulationTestOverridesExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/SimulationTestOverridesExample.scala @@ -6,12 +6,12 @@ import camundala.domain.* object SimulationTestOverridesExample extends BpmnProcessDsl: lazy val processName: String = "simulation-TestOverrides" - lazy val descr: String = "" + lazy val descr: String = "" case class SimpleObject(name: String = "salu", other: Boolean = false) object SimpleObject: - given ApiSchema[SimpleObject] = deriveApiSchema + given ApiSchema[SimpleObject] = deriveApiSchema given InOutCodec[SimpleObject] = deriveCodec case class InOutput( @@ -21,7 +21,7 @@ object SimulationTestOverridesExample extends BpmnProcessDsl: objectCollectionValue: Seq[SimpleObject] = Seq(SimpleObject(), SimpleObject("tschau", true)) ) object InOutput: - given ApiSchema[InOutput] = deriveApiSchema + given ApiSchema[InOutput] = deriveApiSchema given InOutCodec[InOutput] = deriveCodec lazy val simulationProcess = process( diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TestDomain.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TestDomain.scala index ee0866b8..9c351c5f 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TestDomain.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TestDomain.scala @@ -6,16 +6,16 @@ import camundala.domain.* object TestDomain extends BpmnProcessDsl: lazy val processName: String = "simulation-TestOverrides" - lazy val descr: String = "" + lazy val descr: String = "" case class SomeObj(tag: String = "okidoki", isOk: String = "false") object SomeObj: - given ApiSchema[SomeObj] = deriveApiSchema + given ApiSchema[SomeObj] = deriveApiSchema given InOutCodec[SomeObj] = deriveInOutCodec end SomeObj case class ValueWrapper(success: Boolean = false) object ValueWrapper: - given ApiSchema[ValueWrapper] = deriveApiSchema + given ApiSchema[ValueWrapper] = deriveApiSchema given InOutCodec[ValueWrapper] = deriveInOutCodec end ValueWrapper // process In @@ -27,7 +27,7 @@ object TestDomain extends BpmnProcessDsl: success: ValueWrapper = ValueWrapper() ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveInOutCodec end In @@ -38,7 +38,7 @@ object TestDomain extends BpmnProcessDsl: listResult: Seq[String] = List("a", "b") ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveInOutCodec end Out diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TimerExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TimerExample.scala index b5ca43ec..98bb638e 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TimerExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/TimerExample.scala @@ -5,7 +5,7 @@ import camundala.bpmn.* object TimerExample extends BpmnProcessDsl: lazy val processName: String = "timer-example" - lazy val descr: String = "" + lazy val descr: String = "" lazy val example = process() @@ -18,4 +18,4 @@ object TheTimer extends BpmnTimerEventDsl: lazy val example = timerEvent() -end TheTimer \ No newline at end of file +end TheTimer diff --git a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/VariablesExample.scala b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/VariablesExample.scala index 76f4bb8a..a660ddc8 100644 --- a/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/VariablesExample.scala +++ b/05-examples/demos/02-bpmn/src/main/scala/camundala/examples/demos/bpmn/VariablesExample.scala @@ -5,7 +5,7 @@ import camundala.domain.* object VariablesExample extends BpmnProcessDsl: val processName = "NOT USED" - def descr = "" + def descr = "" case class Input( letters: Option[String] = Some("A_dynamic_2"), @@ -20,7 +20,7 @@ object VariablesExample extends BpmnProcessDsl: "OK dynamicOut" // Camunda returns String - LocalVariablesTime.parse("2012-12-12T12:12:12") ) - given ApiSchema[Input] = deriveApiSchema + given ApiSchema[Input] = deriveApiSchema given InOutCodec[Input] = deriveCodec end VariablesExample diff --git a/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala b/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala index a0370880..f2f225a6 100644 --- a/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala +++ b/05-examples/demos/03-api/src/main/scala/camundala/examples/demos/api/ProjectApiCreator.scala @@ -13,7 +13,7 @@ object ProjectApiCreator extends DefaultApiCreator: protected val title = "Demos Example Process API" - protected val version = "1.0" + protected val version = "1.0" lazy val companyProjectVersion: String = "0.1.0" lazy val companyDescr: ExampleName = "" @@ -37,9 +37,9 @@ object ProjectApiCreator extends DefaultApiCreator: ), GenericServiceExample.example, api(EnumExample.example)( - EnumWorkerExample.example, - DateExample.DateExampleDMN, - VariablesExample.VariablesExampleDMN, + EnumWorkerExample.example, + DateExample.DateExampleDMN, + VariablesExample.VariablesExampleDMN ), SimulationTestOverridesExample.simulationProcess, group("SignalMessageExample")( diff --git a/05-examples/demos/03-dmn/src/main/scala/camundala/examples/demos/dmn/ProjectDmnTester.scala b/05-examples/demos/03-dmn/src/main/scala/camundala/examples/demos/dmn/ProjectDmnTester.scala index eff22fc9..38f6b614 100644 --- a/05-examples/demos/03-dmn/src/main/scala/camundala/examples/demos/dmn/ProjectDmnTester.scala +++ b/05-examples/demos/03-dmn/src/main/scala/camundala/examples/demos/dmn/ProjectDmnTester.scala @@ -18,11 +18,11 @@ object ProjectDmnTester override def starterConfig: DmnTesterStarterConfig = DmnTesterStarterConfig( - companyName = "camundala", + companyName = "camundala", dmnPaths = Seq(localDmnPath), dmnConfigPaths = Seq(localDmnConfigPath) ) - + createDmnConfigs( DecisionResultTypes.singleEntryDMN.testUnit .dmnPath("DecisionResultTypes") diff --git a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/DecisionResultTypesSimulation.scala b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/DecisionResultTypesSimulation.scala index 8b7b4f13..e23de7f3 100644 --- a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/DecisionResultTypesSimulation.scala +++ b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/DecisionResultTypesSimulation.scala @@ -23,14 +23,14 @@ class DecisionResultTypesSimulation extends DemosSimulation: ) private lazy val collectEntriesOverrideDMN = collectEntriesDMN - private lazy val collectEntriesOverride = + private lazy val collectEntriesOverride = collectEntriesOverrideDMN .hasSize(2) .contains(1) .contains(2) private lazy val resultListOverrideDMN = resultListDMN - private lazy val resultListOverride = + private lazy val resultListOverride = resultListOverrideDMN .hasSize(2) .contains(ManyOutResult(1, "🤩")) diff --git a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/OAuthExampleSimulation.scala b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/OAuthExampleSimulation.scala index 9678724a..4331c2e1 100644 --- a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/OAuthExampleSimulation.scala +++ b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/OAuthExampleSimulation.scala @@ -9,7 +9,7 @@ import camundala.simulation.custom.* */ class OAuthExampleSimulation extends OAuthSimulationDsl: - simulate ( + simulate( badScenario( CamundalaGenerateTestP, 404, @@ -24,12 +24,12 @@ class OAuthExampleSimulation extends OAuthSimulationDsl: lazy val fsso: Fsso = Fsso( s"http://kubernetes.docker.internal:8090/auth/realms/${config.tenantId.get}/protocol/openid-connect", Map( - "grant_type" -> "password", - "client_id" -> "all", + "grant_type" -> "password", + "client_id" -> "all", "client_secret" -> "6ec0e8ce-eff1-456f-bc2f-907b6fcb5157", - "username" -> "admin", - "password" -> "admin", - "scope" -> "fcs" + "username" -> "admin", + "password" -> "admin", + "scope" -> "fcs" ) ) end OAuthExampleSimulation diff --git a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/SignalMessageExampleSimulation.scala b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/SignalMessageExampleSimulation.scala index e567ca25..3908c217 100644 --- a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/SignalMessageExampleSimulation.scala +++ b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/SignalMessageExampleSimulation.scala @@ -9,7 +9,7 @@ import camundala.simulation.* // exampleDemosSimulation/testOnly *SignalMessageExampleSimulation class SignalMessageExampleSimulation extends DemosSimulation: - simulate ( + simulate( scenario(messageExample.startWithMsg)( messageIntermediateExample, messageIntermediateExample @@ -23,7 +23,6 @@ class SignalMessageExampleSimulation extends DemosSimulation: signalIntermediateExample .waitFor("signalReady", true) ) - ) private lazy val messageIntermediateExample = receiveMessageEvent( diff --git a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/TimerExampleSimulation.scala b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/TimerExampleSimulation.scala index d5343c49..6030e86c 100644 --- a/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/TimerExampleSimulation.scala +++ b/05-examples/demos/03-simulation/src/test/scala/camundala/examples/demos/simulation/TimerExampleSimulation.scala @@ -17,6 +17,6 @@ class TimerExampleSimulation extends DemosSimulation: ) ) - private lazy val `timerProcess waiting for job` = TimerExample.example + private lazy val `timerProcess waiting for job` = TimerExample.example private lazy val `timerProcess waiting for variable` = TimerExample.example end TimerExampleSimulation diff --git a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyBpmnDsl.scala b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyBpmnDsl.scala index 7073651c..f4deea05 100644 --- a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyBpmnDsl.scala +++ b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyBpmnDsl.scala @@ -6,11 +6,11 @@ trait CompanyBpmnDsl extends BpmnDsl: end CompanyBpmnDsl -trait CompanyBpmnProcessDsl extends BpmnProcessDsl, CompanyBpmnDsl -trait CompanyBpmnServiceTaskDsl extends BpmnServiceTaskDsl, CompanyBpmnDsl -trait CompanyBpmnCustomTaskDsl extends BpmnCustomTaskDsl, CompanyBpmnDsl -trait CompanyBpmnDecisionDsl extends BpmnDecisionDsl, CompanyBpmnDsl -trait CompanyBpmnUserTaskDsl extends BpmnUserTaskDsl, CompanyBpmnDsl +trait CompanyBpmnProcessDsl extends BpmnProcessDsl, CompanyBpmnDsl +trait CompanyBpmnServiceTaskDsl extends BpmnServiceTaskDsl, CompanyBpmnDsl +trait CompanyBpmnCustomTaskDsl extends BpmnCustomTaskDsl, CompanyBpmnDsl +trait CompanyBpmnDecisionDsl extends BpmnDecisionDsl, CompanyBpmnDsl +trait CompanyBpmnUserTaskDsl extends BpmnUserTaskDsl, CompanyBpmnDsl trait CompanyBpmnMessageEventDsl extends BpmnMessageEventDsl, CompanyBpmnDsl -trait CompanyBpmnSignalEventDsl extends BpmnSignalEventDsl, CompanyBpmnDsl -trait CompanyBpmnTimerEventDsl extends BpmnTimerEventDsl, CompanyBpmnDsl +trait CompanyBpmnSignalEventDsl extends BpmnSignalEventDsl, CompanyBpmnDsl +trait CompanyBpmnTimerEventDsl extends BpmnTimerEventDsl, CompanyBpmnDsl diff --git a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyWorkerHandler.scala b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyWorkerHandler.scala index b2032a25..d5ac45d2 100644 --- a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyWorkerHandler.scala +++ b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/CompanyWorkerHandler.scala @@ -8,12 +8,12 @@ import camundala.worker.c8zio.{C7Context, C7Worker, C8Context, C8Worker} import scala.reflect.ClassTag trait CompanyWorkerHandler[ - In <: Product: InOutCodec, - Out <: Product: InOutCodec + In <: Product: InOutCodec, + Out <: Product: InOutCodec ] extends C7Worker[In, Out], C8Worker[In, Out]: override protected def c7Context: C7Context = new C7Context {} override protected def c8Context: C8Context = new C8Context {} - +end CompanyWorkerHandler trait CompanyValidationWorkerDsl[ In <: Product: InOutCodec @@ -31,7 +31,6 @@ trait CompanyCustomWorkerDsl[ Out <: Product: InOutCodec ] extends CompanyWorkerHandler[In, Out], CustomWorkerDsl[In, Out] - trait CompanyServiceWorkerDsl[ In <: Product: InOutCodec, Out <: Product: InOutCodec, diff --git a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/ExampleJobWorker.scala b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/ExampleJobWorker.scala index 94ac4731..5137a169 100644 --- a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/ExampleJobWorker.scala +++ b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/ExampleJobWorker.scala @@ -7,7 +7,7 @@ import camundala.worker.CamundalaWorkerError import camundala.worker.c8zio.C8Worker object ExampleJobWorker extends CompanyCustomWorkerDsl[In, Out]: - lazy val customTask = example + lazy val customTask = example def runWork(in: In): Either[CamundalaWorkerError.CustomError, Out] = logger.info(s"Running ExampleJobWorker with $in") Thread.sleep(3000) @@ -69,4 +69,4 @@ end ExampleJob ], "businessKey": "MY_BUSINESS_KEY" } -*/ \ No newline at end of file + */ diff --git a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/TestWorkerApp.scala b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/TestWorkerApp.scala index 782d70fc..f288aa43 100644 --- a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/TestWorkerApp.scala +++ b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/newWorker/TestWorkerApp.scala @@ -2,15 +2,12 @@ package camundala.examples.demos.newWorker import camundala.worker.{WorkerApp, WorkerRegistry} import camundala.worker.c8zio.{C7NoAuthClient, C7WorkerRegistry, C8SaasClient, C8WorkerRegistry} - + trait CompanyWorkerApp extends WorkerApp: - lazy val workerRegistries: Seq[WorkerRegistry[?]] = + lazy val workerRegistries: Seq[WorkerRegistry[?]] = Seq(C8WorkerRegistry(C8SaasClient), C7WorkerRegistry(C7NoAuthClient)) - object TestWorkerApp extends CompanyWorkerApp: workers( ExampleJobWorker ) - - \ No newline at end of file diff --git a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/worker/EnumExampleWorker.scala b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/worker/EnumExampleWorker.scala index a5db5eeb..b2702ae3 100644 --- a/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/worker/EnumExampleWorker.scala +++ b/05-examples/demos/03-worker/src/main/scala/camundala/examples/demos/worker/EnumExampleWorker.scala @@ -13,11 +13,11 @@ class EnumExampleWorker extends CompanyServiceWorkerDsl[In, Out, NoInput, Servic lazy val serviceTask = example println("VARS: " + example.otherEnumInExamples) - def apiUri(in: In) = + def apiUri(in: In) = in match case In.A(someValue, enumEx, maybeOut, _) => uri"https://swapi.dev/api/people/$someValue" - case In.B(otherValue, _) => + case In.B(otherValue, _) => uri"https://swapi.dev/api/people/$otherValue" override def outputMapper( @@ -27,7 +27,7 @@ class EnumExampleWorker extends CompanyServiceWorkerDsl[In, Out, NoInput, Servic in match case In.A(someValue, enumEx, _, _) => Right(Out.A(someValue, 12, enumEx)) - case In.B(otherValue, _) => + case In.B(otherValue, _) => Right(Out.B(Some(otherValue))) end EnumExampleWorker diff --git a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ArchiveInvoice.scala b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ArchiveInvoice.scala index 595f6230..607c8981 100644 --- a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ArchiveInvoice.scala +++ b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ArchiveInvoice.scala @@ -7,13 +7,13 @@ import camundala.domain.* object ArchiveInvoice extends BpmnCustomTaskDsl: final val topicName = "ArchiveInvoiceService" - val descr = "Archives the Receipt." + val descr = "Archives the Receipt." case class In( shouldFail: Option[Boolean] = Some(true) ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -21,7 +21,7 @@ object ArchiveInvoice extends BpmnCustomTaskDsl: archived: Option[Boolean] = Some(true) ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out diff --git a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ComposedWorkerExample.scala b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ComposedWorkerExample.scala index 24fabaa4..a7762a28 100644 --- a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ComposedWorkerExample.scala +++ b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ComposedWorkerExample.scala @@ -7,13 +7,13 @@ import camundala.domain.* object ComposedWorkerExample extends BpmnCustomTaskDsl: final val topicName = "example-composedWorker" - val descr = "Example to compose Workers." + val descr = "Example to compose Workers." case class In( justDoIt: Option[Boolean] = Some(true) ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -22,7 +22,7 @@ object ComposedWorkerExample extends BpmnCustomTaskDsl: success: Boolean = true ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out diff --git a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/InvoiceReceipt.scala b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/InvoiceReceipt.scala index a9d1ceec..96a38eaf 100644 --- a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/InvoiceReceipt.scala +++ b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/InvoiceReceipt.scala @@ -7,7 +7,7 @@ import camundala.examples.invoice.bpmn.ReviewInvoice.Out object InvoiceReceipt extends BpmnProcessDsl: val processName = "example-invoice-c7" - val descr = "This starts the Invoice Receipt Process." + val descr = "This starts the Invoice Receipt Process." case class In( creditor: String = "Great Pizza for Everyone Inc.", @@ -21,7 +21,7 @@ object InvoiceReceipt extends BpmnProcessDsl: end In object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -40,7 +40,7 @@ object InvoiceReceipt extends BpmnProcessDsl: archived: Option[Boolean] = Some(false) ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out @@ -55,7 +55,7 @@ object InvoiceReceipt extends BpmnProcessDsl: shouldFail = Some(false), invoiceReviewedMock = Some(ReviewInvoice.Out()) ) - given ApiSchema[InConfig] = deriveApiSchema + given ApiSchema[InConfig] = deriveApiSchema given InOutCodec[InConfig] = deriveCodec end InConfig @@ -72,7 +72,7 @@ object InvoiceReceipt extends BpmnProcessDsl: InvoiceCategory.`Software License Costs` ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -96,7 +96,7 @@ object InvoiceReceipt extends BpmnProcessDsl: approved: Boolean = true ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out @@ -120,7 +120,7 @@ object InvoiceReceipt extends BpmnProcessDsl: invoiceNumber: String = "I-12345" ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -138,7 +138,7 @@ object InvoiceReceipt extends BpmnProcessDsl: enum ApproverGroup: case accounting, sales, management object ApproverGroup: - given ApiSchema[ApproverGroup] = deriveEnumApiSchema + given ApiSchema[ApproverGroup] = deriveEnumApiSchema given InOutCodec[ApproverGroup] = deriveEnumInOutCodec end ApproverGroup diff --git a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ReviewInvoice.scala b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ReviewInvoice.scala index 6d66bd5f..b00db2c5 100644 --- a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ReviewInvoice.scala +++ b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ReviewInvoice.scala @@ -5,7 +5,7 @@ import camundala.domain.* object ReviewInvoice extends BpmnProcessDsl: final val processName = "example-invoice-c7-review" - val descr = "This starts the Review Invoice Process." + val descr = "This starts the Review Invoice Process." type InConfig = NoInConfig @@ -17,7 +17,7 @@ object ReviewInvoice extends BpmnProcessDsl: invoiceNumber: String = "I-12345" ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec case class InitIn( @@ -28,7 +28,7 @@ object ReviewInvoice extends BpmnProcessDsl: justToTestInit: Double = 150.0 ) object InitIn: - given ApiSchema[InitIn] = deriveApiSchema + given ApiSchema[InitIn] = deriveApiSchema given InOutCodec[InitIn] = deriveCodec case class Out( @@ -36,7 +36,7 @@ object ReviewInvoice extends BpmnProcessDsl: clarified: Boolean = true ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out @@ -56,7 +56,7 @@ object ReviewInvoice extends BpmnProcessDsl: reviewer: String = "John" ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out @@ -79,7 +79,7 @@ object ReviewInvoice extends BpmnProcessDsl: clarified: Boolean = true ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out diff --git a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ServiceMethodApis.scala b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ServiceMethodApis.scala index 15e72232..215c5293 100644 --- a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ServiceMethodApis.scala +++ b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/ServiceMethodApis.scala @@ -5,20 +5,20 @@ import camundala.bpmn.GenericExternalTask.ProcessStatus import camundala.domain.* trait ServiceMethodServices extends BpmnServiceTaskDsl: - val serviceLabel: String = "TEST SERVICES for Service Methods" + val serviceLabel: String = "TEST SERVICES for Service Methods" val serviceVersion: String = "0.1" end ServiceMethodServices object ServiceMethodDeleteApi extends ServiceMethodServices: final val topicName = "service-method-delete" - val descr = "Delete Dummy - mocking test" - val path: String = "DELETE /services/method" + val descr = "Delete Dummy - mocking test" + val path: String = "DELETE /services/method" - type ServiceIn = NoInput + type ServiceIn = NoInput type ServiceOut = NoOutput lazy val serviceInExample = NoInput() - lazy val serviceMock = MockedServiceResponse.success204 + lazy val serviceMock = MockedServiceResponse.success204 @description("Same Input as _InvoiceReceipt_, only different Mocking") case class In( @@ -26,7 +26,7 @@ object ServiceMethodDeleteApi extends ServiceMethodServices: ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -35,7 +35,7 @@ object ServiceMethodDeleteApi extends ServiceMethodServices: ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out @@ -43,7 +43,7 @@ object ServiceMethodDeleteApi extends ServiceMethodServices: id: Long = 123L ) object Dummy: - given ApiSchema[Dummy] = deriveApiSchema + given ApiSchema[Dummy] = deriveApiSchema given InOutCodec[Dummy] = deriveCodec end Dummy @@ -60,12 +60,12 @@ end ServiceMethodDeleteApi object ServiceMethodListApi extends ServiceMethodServices: final val topicName = "service-method-list" - val descr = "Delete Dummy - mocking test" - val path: String = "GET /services/method" - type ServiceIn = NoInput + val descr = "Delete Dummy - mocking test" + val path: String = "GET /services/method" + type ServiceIn = NoInput type ServiceOut = List[Dummy] lazy val serviceInExample = NoInput() - lazy val serviceMock = MockedServiceResponse.success200(List(Dummy())) + lazy val serviceMock = MockedServiceResponse.success200(List(Dummy())) @description("Same Input as _InvoiceReceipt_, only different Mocking") case class In( @@ -73,7 +73,7 @@ object ServiceMethodListApi extends ServiceMethodServices: ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -83,7 +83,7 @@ object ServiceMethodListApi extends ServiceMethodServices: ) object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveCodec end Out @@ -91,7 +91,7 @@ object ServiceMethodListApi extends ServiceMethodServices: id: Long = 123L ) object Dummy: - given ApiSchema[Dummy] = deriveApiSchema + given ApiSchema[Dummy] = deriveApiSchema given InOutCodec[Dummy] = deriveCodec end Dummy diff --git a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/StarWarsApi.scala b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/StarWarsApi.scala index 7f361183..1cfd6138 100644 --- a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/StarWarsApi.scala +++ b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/StarWarsApi.scala @@ -8,7 +8,7 @@ import io.github.iltotore.iron.constraint.all.* import sttp.tapir.Schema.annotations.description trait StarWarsApi extends BpmnServiceTaskDsl: - val serviceLabel: String = "Star Wars API" + val serviceLabel: String = "Star Wars API" val serviceVersion: String = "1.0" end StarWarsApi @@ -16,12 +16,12 @@ end StarWarsApi object StarWarsPeople extends StarWarsApi: final val topicName = "star-wars-api-people" - val descr = "Get People from StarWars API" - val path: String = "GET /people" + val descr = "Get People from StarWars API" + val path: String = "GET /people" - type ServiceIn = NoInput + type ServiceIn = NoInput type ServiceOut = PeopleResults - lazy val serviceInExample = NoInput() + lazy val serviceInExample = NoInput() lazy val serviceMock: MockedServiceResponse[ServiceOut] = MockedServiceResponse.success200(PeopleResults()) @@ -31,7 +31,7 @@ object StarWarsPeople extends StarWarsApi: ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -44,7 +44,7 @@ object StarWarsPeople extends StarWarsApi: end Out object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveInOutCodec end Out @@ -53,7 +53,7 @@ object StarWarsPeople extends StarWarsApi: ) object PeopleResults: - given ApiSchema[PeopleResults] = deriveApiSchema + given ApiSchema[PeopleResults] = deriveApiSchema given InOutCodec[PeopleResults] = deriveCodec end PeopleResults @@ -70,10 +70,10 @@ end StarWarsPeople object StarWarsPeopleDetail extends StarWarsApi: final val topicName = "star-wars-api-people-detail" - val descr = "Get People Details from StarWars API" - val path: String = "GET /people/${in.id}" + val descr = "Get People Details from StarWars API" + val path: String = "GET /people/${in.id}" - type ServiceIn = NoInput + type ServiceIn = NoInput type ServiceOut = People lazy val serviceInExample = NoInput() @@ -88,7 +88,7 @@ object StarWarsPeopleDetail extends StarWarsApi: ) object In: - given ApiSchema[In] = deriveApiSchema + given ApiSchema[In] = deriveApiSchema given InOutCodec[In] = deriveCodec end In @@ -102,7 +102,7 @@ object StarWarsPeopleDetail extends StarWarsApi: end Out object Out: - given ApiSchema[Out] = deriveApiSchema + given ApiSchema[Out] = deriveApiSchema given InOutCodec[Out] = deriveInOutCodec end Out @@ -126,6 +126,6 @@ case class People( ) object People: - given ApiSchema[People] = deriveApiSchema + given ApiSchema[People] = deriveApiSchema given InOutCodec[People] = deriveCodec end People diff --git a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/exports.scala b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/exports.scala index d4185d4a..efac6867 100644 --- a/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/exports.scala +++ b/05-examples/invoice/02-bpmn/src/main/scala/camundala/examples/invoice/bpmn/exports.scala @@ -6,6 +6,6 @@ enum InvoiceCategory: case `Travel Expenses`, Misc, `Software License Costs` object InvoiceCategory: - given ApiSchema[InvoiceCategory] = deriveEnumApiSchema + given ApiSchema[InvoiceCategory] = deriveEnumApiSchema given InOutCodec[InvoiceCategory] = deriveEnumInOutCodec end InvoiceCategory diff --git a/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala b/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala index 17c5939a..9366593f 100644 --- a/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala +++ b/05-examples/invoice/03-api/src/main/scala/camundala/examples/invoice/api/ProjectApiCreator.scala @@ -14,11 +14,11 @@ import camundala.examples.invoice.bpmn.InvoiceReceipt.InvoiceAssignApproverDMN.* object ProjectApiCreator extends DefaultApiCreator: // technical name of the project - val projectName = "example-invoice" + val projectName = "example-invoice" // readable name of the project - protected val title = "Invoice Example Process API" + protected val title = "Invoice Example Process API" // version of your project - protected val version = "1.0" + protected val version = "1.0" lazy val companyProjectVersion: String = "0.1.0" lazy val companyDescr: String = "" @@ -50,7 +50,7 @@ object ProjectApiCreator extends DefaultApiCreator: group("DMNs")( api(InvoiceAssignApproverDMN2) // api( is optional) // InvoiceAssignApproverDMN3 // want be shown as only one DMN with the same id is shown in the API. - ), + ) ) override protected lazy val apiConfig: ApiConfig = @@ -65,7 +65,7 @@ object ProjectApiCreator extends DefaultApiCreator: "With InConfig", InvoiceReceipt.In(inConfig = Some(InConfig.example)) ) - private lazy val ApproveInvoiceUT = + private lazy val ApproveInvoiceUT = InvoiceReceipt.ApproveInvoiceUT.example .withOutExample("Invoice approved", InvoiceReceipt.ApproveInvoiceUT.Out()) .withOutExample( @@ -81,10 +81,10 @@ object ProjectApiCreator extends DefaultApiCreator: ReviewInvoice.ReviewInvoiceUT.Out(false) ) - private lazy val budget = InvoiceAssignApproverDMN.In() + private lazy val budget = InvoiceAssignApproverDMN.In() private lazy val `day-to-day expense` = InvoiceAssignApproverDMN.In(125, InvoiceCategory.Misc) - private lazy val exceptional = + private lazy val exceptional = InvoiceAssignApproverDMN.In(12345, InvoiceCategory.Misc) private lazy val InvoiceAssignApproverDMN1 = diff --git a/05-examples/invoice/03-dmn/src/main/scala/camundala/examples/invoice/dmn/ProjectDmnTester.scala b/05-examples/invoice/03-dmn/src/main/scala/camundala/examples/invoice/dmn/ProjectDmnTester.scala index e871df78..4ac18ef5 100644 --- a/05-examples/invoice/03-dmn/src/main/scala/camundala/examples/invoice/dmn/ProjectDmnTester.scala +++ b/05-examples/invoice/03-dmn/src/main/scala/camundala/examples/invoice/dmn/ProjectDmnTester.scala @@ -11,7 +11,7 @@ object ProjectDmnTester extends DmnTesterConfigCreator, BpmnProcessDsl: val processName = "NOT USED" - val descr = "" + val descr = "" private lazy val localDmnConfigPath: os.Path = os.pwd / "05-examples" / "invoice" / "03-dmn" / "src" / "main" / "resources" / "dmnConfigs" @@ -43,7 +43,7 @@ object ProjectDmnTester ) object InvoiceAssignApproverDmnIn: - given Schema[InvoiceAssignApproverDmnIn] = Schema.derived + given Schema[InvoiceAssignApproverDmnIn] = Schema.derived given CirceCodec[InvoiceAssignApproverDmnIn] = deriveCodec end InvoiceAssignApproverDmnIn @@ -52,7 +52,7 @@ object ProjectDmnTester case `day-to-day expense`, budget, exceptional object InvoiceClassification: - given Schema[InvoiceClassification] = deriveEnumApiSchema + given Schema[InvoiceClassification] = deriveEnumApiSchema given InOutCodec[InvoiceClassification] = deriveEnumInOutCodec private lazy val InvoiceAssignApproverDmnUnit = diff --git a/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/InvoiceSimulation.scala b/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/InvoiceSimulation.scala index 54c73d75..50ff49c3 100644 --- a/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/InvoiceSimulation.scala +++ b/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/InvoiceSimulation.scala @@ -22,7 +22,7 @@ class InvoiceSimulation extends CustomSimulation: "Could not archive invoice..." )( ApproveInvoiceUT - .waitForSec(1), // tests wait function for UserTasks + .waitForSec(1), // tests wait function for UserTasks PrepareBankTransferUT ), scenario(`Invoice Receipt`)( @@ -40,7 +40,7 @@ class InvoiceSimulation extends CustomSimulation: AssignReviewerUT, ReviewInvoiceUT // do clarify ), - ApproveInvoiceUT, // now approve + ApproveInvoiceUT, // now approve PrepareBankTransferUT ), scenario(`Invoice Receipt with Review failed`)( @@ -53,7 +53,7 @@ class InvoiceSimulation extends CustomSimulation: scenario(`Invoice Receipt with Review mocked`)( NotApproveInvoiceUT, // subProcess Mocked - so nothing to do - ApproveInvoiceUT, // now approve + ApproveInvoiceUT, // now approve PrepareBankTransferUT ), scenario(InvoiceAssignApproverDMN), @@ -66,7 +66,7 @@ class InvoiceSimulation extends CustomSimulation: scenario(`Invoice Receipt mocked invoiceReviewed`)( NotApproveInvoiceUT, // subProcess not needed because of mocking - ApproveInvoiceUT, // now approve + ApproveInvoiceUT, // now approve PrepareBankTransferUT ), scenario(`Review Invoice mocked`), // mocks itself @@ -97,7 +97,7 @@ class InvoiceSimulation extends CustomSimulation: // .withMaxCount(20) // .withLogLevel(LogLevel.DEBUG) - private lazy val `Invoice Receipt` = InvoiceReceipt.example + private lazy val `Invoice Receipt` = InvoiceReceipt.example private lazy val `Invoice Receipt mocked invoiceReviewed` = `Invoice Receipt with Review` .withIn(InvoiceReceipt.In(inConfig = @@ -106,22 +106,22 @@ class InvoiceSimulation extends CustomSimulation: )) )) - private lazy val ApproveInvoiceUT = InvoiceReceipt.ApproveInvoiceUT.example + private lazy val ApproveInvoiceUT = InvoiceReceipt.ApproveInvoiceUT.example private lazy val PrepareBankTransferUT = InvoiceReceipt.PrepareBankTransferUT.example - private lazy val `Review Invoice` = ReviewInvoice.example + private lazy val `Review Invoice` = ReviewInvoice.example private lazy val `Review Invoice mocked` = ReviewInvoice.example .mockWith(ReviewInvoice.Out()) private lazy val AssignReviewerUT = ReviewInvoice.AssignReviewerUT.example - private lazy val ReviewInvoiceUT = ReviewInvoice.ReviewInvoiceUT.example + private lazy val ReviewInvoiceUT = ReviewInvoice.ReviewInvoiceUT.example private lazy val ReviewInvoiceNotClarifiedUT = ReviewInvoiceUT .withOut(ReviewInvoice.ReviewInvoiceUT.Out(false)) - private lazy val NotApproveInvoiceUT = + private lazy val NotApproveInvoiceUT = ApproveInvoiceUT .withOut(InvoiceReceipt.ApproveInvoiceUT.Out(false)) // this indirection is needed as we use the same Process for two scenarios (name clash). @@ -139,11 +139,11 @@ class InvoiceSimulation extends CustomSimulation: .exists("amount") .notExists("amounts") .isEquals("amount", 300.0) - private lazy val `Invoice Receipt that fails` = + private lazy val `Invoice Receipt that fails` = InvoiceReceipt.example .withIn(InvoiceReceipt.In(inConfig = Some(InvoiceReceipt.InConfig(shouldFail = Some(true))))) - private lazy val InvoiceAssignApproverDMN = + private lazy val InvoiceAssignApproverDMN = InvoiceReceipt.InvoiceAssignApproverDMN.example private lazy val InvoiceAssignApproverDMN2 = InvoiceAssignApproverDMN @@ -173,7 +173,7 @@ class InvoiceSimulation extends CustomSimulation: .withOut( InvoiceReceipt.Out(approved = false, clarified = Some(false), archived = None) ) - private lazy val BadValidationP = + private lazy val BadValidationP = InvoiceReceipt.example .withIn(InvoiceReceipt.In(null)) diff --git a/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/ServiceMethodApisSimulation.scala b/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/ServiceMethodApisSimulation.scala index 9c34b711..fadff4dc 100644 --- a/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/ServiceMethodApisSimulation.scala +++ b/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/ServiceMethodApisSimulation.scala @@ -26,6 +26,6 @@ class ServiceMethodApisSimulation extends CustomSimulation: // .withLogLevel(LogLevel.DEBUG) private lazy val `Service Method Delete` = ServiceMethodDeleteApi.example - private lazy val `Service Method List` = ServiceMethodListApi.example + private lazy val `Service Method List` = ServiceMethodListApi.example end ServiceMethodApisSimulation diff --git a/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/StarWarsPeopleDetailSimulation.scala b/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/StarWarsPeopleDetailSimulation.scala index 84ae44ef..356fca8b 100644 --- a/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/StarWarsPeopleDetailSimulation.scala +++ b/05-examples/invoice/03-simulation/src/test/scala/camundala/examples/invoice/simulation/StarWarsPeopleDetailSimulation.scala @@ -56,11 +56,11 @@ class StarWarsPeopleDetailSimulation extends CustomSimulation: private lazy val `Star Wars Api People Detail real` = example .withOut(Out.Success(fromHeader = "---")) // no header - private lazy val `Star Wars Api People Detail real failed` = example + private lazy val `Star Wars Api People Detail real failed` = example .withIn(In(90923, Some("skywalker"))) - private lazy val `Star Wars Api People Detail defaultMock 2` = + private lazy val `Star Wars Api People Detail defaultMock 2` = StarWarsPeopleDetail.example.mockServicesWithDefault - private lazy val `Star Wars Api People Detail outputMock 2` = + private lazy val `Star Wars Api People Detail outputMock 2` = StarWarsPeopleDetail.example .mockWith(Out.Success(People("Pascal Starrider"))) .withOut(Out.Success(People("Pascal Starrider"))) diff --git a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ArchiveCompanyWorker.scala b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ArchiveCompanyWorker.scala index 7424de06..3c49d513 100644 --- a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ArchiveCompanyWorker.scala +++ b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ArchiveCompanyWorker.scala @@ -20,11 +20,11 @@ class ArchiveCompanyWorker inputObject.shouldFail match case Some(false) => Right(Out(Some(true))) - case Some(true) => + case Some(true) => val err = CustomError("Could not archive invoice...") logger.error(err) Left(err) - case _ => + case _ => Right(Out(Some(false))) end match end runWork diff --git a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/AsyncTestWorker.scala b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/AsyncTestWorker.scala index 4e786602..7e863ea1 100644 --- a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/AsyncTestWorker.scala +++ b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/AsyncTestWorker.scala @@ -14,7 +14,7 @@ import scala.util.{Failure, Success} lazy val servicePath = uri"https://swapi.dev/api/people/1" -lazy val client = SimpleHttpClient() +lazy val client = SimpleHttpClient() lazy val backend = HttpClientFutureBackend() @Configuration @@ -31,7 +31,7 @@ class SyncTestWorker extends ExternalTaskHandler: .get(uri"$servicePath") .send(backend) println(s" SYNC request sent") - val resp = Await.result(response, 10.seconds) + val resp = Await.result(response, 10.seconds) println(s" ASYNC Status ${resp.statusText}") println(s" SYNC Result ${resp.body}") externalTaskService.complete(externalTask, Map("result" -> resp.body).asJava) @@ -68,7 +68,7 @@ class AsyncTestWorker extends ExternalTaskHandler: .onComplete { case Success(value) => externalTaskService.complete(externalTask, Map("result" -> value).asJava) - case Failure(ex) => + case Failure(ex) => externalTaskService.handleFailure(externalTask, ex.getMessage, "SYNC TEST", 0, 0) } diff --git a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ComposedWorker.scala b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ComposedWorker.scala index d120127a..2b40af34 100644 --- a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ComposedWorker.scala +++ b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/ComposedWorker.scala @@ -14,7 +14,7 @@ class ComposedWorker CustomWorkerDsl[In, Out]: // DSL for this type @Autowired - var peopleWorker: StarWarsPeopleWorker = scala.compiletime.uninitialized + var peopleWorker: StarWarsPeopleWorker = scala.compiletime.uninitialized @Autowired var peopleDetailWorker: StarWarsPeopleDetailWorker = scala.compiletime.uninitialized @@ -28,13 +28,13 @@ class ComposedWorker EngineRunContext(engineContext, GeneralVariables()) val peopleWorkerIn = StarWarsPeople.In() - val out = peopleWorker.runWorkFromWorkerUnsafe(peopleWorkerIn) + val out = peopleWorker.runWorkFromWorkerUnsafe(peopleWorkerIn) .left.map: error => CustomError( s"Error while fetching Starwars People:\n- ${error.errorMsg}." ) out.map: - case StarWarsPeople.Out.Success(people, _) => + case StarWarsPeople.Out.Success(people, _) => logger.info(s"- Got People: $people") Out() case StarWarsPeople.Out.Failure(processStatus) => diff --git a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/InvoiceReceiptWorker.scala b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/InvoiceReceiptWorker.scala index 23fc6b9d..052eb37f 100644 --- a/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/InvoiceReceiptWorker.scala +++ b/05-examples/invoice/03-worker/src/main/scala/camundala/examples/invoice/worker/InvoiceReceiptWorker.scala @@ -9,7 +9,7 @@ import camundala.domain.NoInput @Configuration class InvoiceReceiptWorker extends CompanyInitWorkerDsl[In, Out, InitIn, InConfig]: - lazy val inOutExample = example + lazy val inOutExample = example override protected def customInit(in: In): InitIn = NoInput() end InvoiceReceiptWorker diff --git a/05-examples/myCompany/src/main/scala/camundala/myCompany/MyCompanyDocCreator.scala b/05-examples/myCompany/src/main/scala/camundala/myCompany/MyCompanyDocCreator.scala index e3de8960..6893fca6 100644 --- a/05-examples/myCompany/src/main/scala/camundala/myCompany/MyCompanyDocCreator.scala +++ b/05-examples/myCompany/src/main/scala/camundala/myCompany/MyCompanyDocCreator.scala @@ -10,7 +10,7 @@ For now only the catalog is created. exampleMyCompany/run */ object MyCompanyDocCreator extends DocCreator, App: - given apiConfig: ApiConfig = myCompanyConfig + given apiConfig: ApiConfig = myCompanyConfig protected def upload(releaseTag: String): Unit = println("Uploaded to Web Server") diff --git a/05-examples/myCompany/src/main/scala/camundala/myCompany/exports.scala b/05-examples/myCompany/src/main/scala/camundala/myCompany/exports.scala index f4a370b7..b3784bff 100644 --- a/05-examples/myCompany/src/main/scala/camundala/myCompany/exports.scala +++ b/05-examples/myCompany/src/main/scala/camundala/myCompany/exports.scala @@ -10,7 +10,6 @@ lazy val myCompanyConfig = postmanApiConfig .withDocBaseUrl("https://webstor.ch") .withProjectsConfig(myCompanyGitConfigs) - private lazy val myCompanyGitConfigs = ProjectsConfig( perGitRepoConfigs = Seq( @@ -39,6 +38,6 @@ private lazy val myProjects: Seq[ProjectConfig] = Seq( ) ) -private lazy val demos = ProjectGroup("demos", "purple") +private lazy val demos = ProjectGroup("demos", "purple") private lazy val invoices = ProjectGroup("demos", "green") -private lazy val twitter = ProjectGroup("demos", "green") +private lazy val twitter = ProjectGroup("demos", "green") diff --git a/05-examples/twitter/02-bpmn/src/main/scala/camundala/examples/twitter/bpmn/TwitterApi.scala b/05-examples/twitter/02-bpmn/src/main/scala/camundala/examples/twitter/bpmn/TwitterApi.scala index fc103974..beb673b9 100644 --- a/05-examples/twitter/02-bpmn/src/main/scala/camundala/examples/twitter/bpmn/TwitterApi.scala +++ b/05-examples/twitter/02-bpmn/src/main/scala/camundala/examples/twitter/bpmn/TwitterApi.scala @@ -5,8 +5,8 @@ import camundala.domain.* object TwitterApi extends BpmnProcessDsl: given tenantId: Option[String] = Some("{{tenantId}}") - val processName = "TwitterDemoP" - val descr = "This runs the Twitter Approvement Process." + val processName = "TwitterDemoP" + val descr = "This runs the Twitter Approvement Process." @description("""Every employee may create a Tweet. | @@ -19,7 +19,7 @@ object TwitterApi extends BpmnProcessDsl: content: String = "Test Tweet" ) object CreateTweet: - given ApiSchema[CreateTweet] = deriveApiSchema + given ApiSchema[CreateTweet] = deriveApiSchema given InOutCodec[CreateTweet] = deriveCodec end CreateTweet @@ -29,16 +29,16 @@ object TwitterApi extends BpmnProcessDsl: approved: Boolean = true ) object ReviewedTweet: - given ApiSchema[ReviewedTweet] = deriveApiSchema + given ApiSchema[ReviewedTweet] = deriveApiSchema given InOutCodec[ReviewedTweet] = deriveCodec end ReviewedTweet - lazy val twitterDemoProcess = + lazy val twitterDemoProcess = process( in = CreateTweet(), out = ReviewedTweet() // just for Testing ) - lazy val reviewTweetApprovedUT = userTask( + lazy val reviewTweetApprovedUT = userTask( id = "ReviewTweetUT", in = NoInput(), out = ReviewedTweet() diff --git a/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala b/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala index 724a90ab..abe62075 100644 --- a/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala +++ b/05-examples/twitter/03-api/src/main/scala/camundala/examples/twitter/api/ProjectApiCreator.scala @@ -16,7 +16,7 @@ object ProjectApiCreator extends DefaultApiCreator: val version = "1.0" lazy val companyProjectVersion: String = "0.1.0" - lazy val projectDescr: String = "" + lazy val projectDescr: String = "" document( api(twitterDemoProcess)( @@ -29,7 +29,7 @@ object ProjectApiCreator extends DefaultApiCreator: .withBasePath(os.pwd / "05-examples" / "twitter") .withPort(8887) - private lazy val `Tweet accepted` = reviewTweetApprovedUT + private lazy val `Tweet accepted` = reviewTweetApprovedUT private lazy val ReviewTweetApprovedUT = `Tweet accepted` .withOutExample("Tweet rejected", ReviewedTweet(approved = false)) diff --git a/05-examples/twitter/03-simulation/src/test/scala/camundala/examples/twitter/simulation/TwitterSimulation.scala b/05-examples/twitter/03-simulation/src/test/scala/camundala/examples/twitter/simulation/TwitterSimulation.scala index 249848a0..3af60640 100644 --- a/05-examples/twitter/03-simulation/src/test/scala/camundala/examples/twitter/simulation/TwitterSimulation.scala +++ b/05-examples/twitter/03-simulation/src/test/scala/camundala/examples/twitter/simulation/TwitterSimulation.scala @@ -22,7 +22,7 @@ class TwitterSimulation extends CustomSimulation: override implicit def config = super.config.withPort(8034) - private lazy val `Twitter - Approved` = twitterDemoProcess + private lazy val `Twitter - Approved` = twitterDemoProcess private lazy val `Twitter - Not Approved` = twitterDemoProcess .withOut(ReviewedTweet(false)) diff --git a/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/RejectionNotificationDelegate.scala b/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/RejectionNotificationDelegate.scala index 9066fedd..30abfce8 100644 --- a/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/RejectionNotificationDelegate.scala +++ b/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/RejectionNotificationDelegate.scala @@ -9,7 +9,7 @@ class RejectionNotificationDelegate extends JavaDelegate: @throws[Exception] override def execute(execution: DelegateExecution): Unit = - val content = execution.getVariable("content").asInstanceOf[String] + val content = execution.getVariable("content").asInstanceOf[String] val comments = execution.getVariable("comments").asInstanceOf[String] println( "Hi!\n\n" + "Unfortunately your tweet has been rejected.\n\n" + "Original content: " + content + "\n\n" + "Comment: " + comments + "\n\n" + "Sorry, please try with better content the next time :-)" diff --git a/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/TweetContentDelegate.scala b/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/TweetContentDelegate.scala index 3c4921b7..f4a4aedd 100644 --- a/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/TweetContentDelegate.scala +++ b/05-examples/twitter/04-c7-spring/src/main/scala/camundala/examples/twitter/c7/services/TweetContentDelegate.scala @@ -12,10 +12,10 @@ class TweetContentDelegate extends JavaDelegate: @throws[Exception] override def execute(execution: DelegateExecution): Unit = - val content = execution.getVariable("content").asInstanceOf[String] + val content = execution.getVariable("content").asInstanceOf[String] // Force a network error if "network error" == content then throw new UnknownHostException("demo twitter account") - val tokenSecret = "YOUR TOKEN SECRET" + val tokenSecret = "YOUR TOKEN SECRET" val consumerSecret = "YOUR CONSUMER SECRET" val twitter = Twitter.newBuilder diff --git a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApi.scala b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApi.scala index 65cb0d9d..287cd1e9 100644 --- a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApi.scala +++ b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApi.scala @@ -4,8 +4,8 @@ import camundala.bpmn.* import camundala.domain.* object TwitterApi extends BpmnProcessDsl: - val processName = "TwitterDemoP" - val descr = "This runs the Twitter Approvement Process." + val processName = "TwitterDemoP" + val descr = "This runs the Twitter Approvement Process." val path: String = "DELETE /services/method" val twitterDemoProcess = @@ -14,7 +14,7 @@ object TwitterApi extends BpmnProcessDsl: out = ReviewedTweet() // just for Testing ) - val reviewTweetApprovedUT = userTask( + val reviewTweetApprovedUT = userTask( id = "user_task_review_tweet", in = Tweet(), out = ReviewedTweet() @@ -34,7 +34,7 @@ case class Tweet( ) object Tweet: - given ApiSchema[Tweet] = deriveApiSchema + given ApiSchema[Tweet] = deriveApiSchema given InOutCodec[Tweet] = deriveCodec @description("Every Tweet has to be accepted by the Boss.") @@ -46,7 +46,7 @@ case class ReviewedTweet( ) object ReviewedTweet: - given ApiSchema[ReviewedTweet] = deriveApiSchema + given ApiSchema[ReviewedTweet] = deriveApiSchema given InOutCodec[ReviewedTweet] = deriveCodec @description("Every Tweet has to be accepted by the Boss.") @@ -60,9 +60,9 @@ case class TweetOut( enum EndStatus: case published, notPublished object EndStatus: - given ApiSchema[EndStatus] = deriveApiSchema + given ApiSchema[EndStatus] = deriveApiSchema given InOutCodec[EndStatus] = deriveEnumInOutCodec object TweetOut: - given ApiSchema[TweetOut] = deriveApiSchema + given ApiSchema[TweetOut] = deriveApiSchema given InOutCodec[TweetOut] = deriveCodec diff --git a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala index efb7cfec..64a66e08 100644 --- a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala +++ b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/api/TwitterApiCreator.scala @@ -16,7 +16,7 @@ object TwitterApiCreator extends DefaultApiCreator: def title = "Twitter Process API C8" - def version = "1.0" + def version = "1.0" lazy val companyProjectVersion: String = "0.1.0" document { diff --git a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/process/TwitterWorker.scala b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/process/TwitterWorker.scala index b66a1020..d2a19cf4 100644 --- a/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/process/TwitterWorker.scala +++ b/05-examples/twitter/04-c8-spring/src/main/scala/camundala/examples/twitter/process/TwitterWorker.scala @@ -20,7 +20,11 @@ class TwitterWorker: try twitterService.tweet(variables.tweet) catch case ex: DuplicateTweetException => - throw new ZeebeBpmnError("duplicateMessage", "Could not post tweet, it is a duplicate.", Map.empty.asJava) + throw new ZeebeBpmnError( + "duplicateMessage", + "Could not post tweet, it is a duplicate.", + Map.empty.asJava + ) @JobWorker(`type` = "send-rejection", autoComplete = true) @throws[Exception] diff --git a/build.sbt b/build.sbt index 3e37fa94..2d6f278a 100644 --- a/build.sbt +++ b/build.sbt @@ -132,7 +132,7 @@ lazy val worker = project autoImportSetting, libraryDependencies ++= Seq( zioDependency, - zioSlf4jDependency, + zioSlf4jDependency ) ) .dependsOn(bpmn) @@ -189,7 +189,7 @@ lazy val camunda7ZioWorker = project ) ++ camunda7ZioWorkerDependencies ) .dependsOn(worker) -lazy val camunda8Worker = project +lazy val camunda8Worker = project .in(file("./04-worker-c8zio")) .configure(publicationSettings) .settings(projectSettings("camunda8-worker")) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index ea30d880..bf46f79b 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -1,123 +1,129 @@ import sbt.* import sbt.Keys.* -object Dependencies { +object Dependencies: // dependency Versions // 00-docs // - Laika Plugin // 04-helper - val osLibVersion = "0.11.3" + val osLibVersion = "0.11.3" // 01-domain - val openapiCirceVersion = "0.11.5" - val tapirVersion = "1.11.13" - val ironCirceVersion = "2.6.0" - val mUnitVersion = "1.0.4" + val openapiCirceVersion = "0.11.5" + val tapirVersion = "1.11.13" + val ironCirceVersion = "2.6.0" + val mUnitVersion = "1.0.4" // 02-bpmn // -> domain // - osLib // 03-api // -> bpmn val typesafeConfigVersion = "1.4.3" - val scalaXmlVersion = "2.3.0" + val scalaXmlVersion = "2.3.0" // - mUnitVersion // 03-dmn // -> bpmn - val sttpClient3Version = "3.10.2" - val dmnTesterVersion = "0.17.9" + val sttpClient3Version = "3.10.2" + val dmnTesterVersion = "0.17.9" // - mUnitVersion // 03-simulation // -> bpmn - val testInterfaceVersion = "1.0" + val testInterfaceVersion = "1.0" // - sttpClient3 // 03-worker // -> bpmn // -mUnitVersion - val chimneyVersion = "1.6.0" + val chimneyVersion = "1.6.0" // --- Implementations // 04-helper - val sardineWebDavVersion = "5.12" + val sardineWebDavVersion = "5.12" // 04-worker-c7spring // -> worker - val camundaVersion = "7.22.0" // external task client - val jaxbApiVersion = "4.0.2" // needed by the camunda client 7.21?! - val scaffeineV = "5.3.0" // caching - val zioVersion = "2.1.14" // zio + val camundaVersion = "7.22.0" // external task client + val jaxbApiVersion = "4.0.2" // needed by the camunda client 7.21?! + val scaffeineV = "5.3.0" // caching + val zioVersion = "2.1.14" // zio // - sttpClient3 // --- Experiments // 04-c7-spring // -> bpmn - val camundaSpinVersion = "7.22.0" + val camundaSpinVersion = "7.22.0" // camunda // server spring-boot // 04-c8-spring // -> bpmn - val scalaJacksonVersion = "2.18.2" - val camunda8Version = "8.5.16" - val springBootVersion = "3.3.4" - val nettyVersion = "4.1.117.Final" + val scalaJacksonVersion = "2.18.2" + val camunda8Version = "8.5.16" + val springBootVersion = "3.3.4" + val nettyVersion = "4.1.117.Final" val swaggerOpenAPIVersion = "2.1.25" // examples - val h2Version = "2.3.232" - val twitter4jVersion = "4.1.2" - val groovyVersion = "3.0.23" + val h2Version = "2.3.232" + val twitter4jVersion = "4.1.2" + val groovyVersion = "3.0.23" - lazy val jaxbApiDependency = "jakarta.xml.bind" % "jakarta.xml.bind-api" % jaxbApiVersion + lazy val jaxbApiDependency = "jakarta.xml.bind" % "jakarta.xml.bind-api" % jaxbApiVersion lazy val scaffeineDependency = // token caching "com.github.blemale" %% "scaffeine" % scaffeineV // caching lazy val tapirDependencies = Seq( - "com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % tapirVersion, - "com.softwaremill.sttp.tapir" %% "tapir-json-circe" % tapirVersion, - "com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % tapirVersion, + "com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % tapirVersion, + "com.softwaremill.sttp.tapir" %% "tapir-json-circe" % tapirVersion, + "com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % tapirVersion, "com.softwaremill.sttp.apispec" %% "openapi-circe-yaml" % openapiCirceVersion, // "io.circe" %% "circe-generic" % circeVersion, - "io.github.iltotore" %% "iron-circe" % ironCirceVersion, - "com.softwaremill.sttp.tapir" %% "tapir-iron" % tapirVersion + "io.github.iltotore" %% "iron-circe" % ironCirceVersion, + "com.softwaremill.sttp.tapir" %% "tapir-iron" % tapirVersion ) - lazy val camunda7workerDependencies = Seq( + lazy val camunda7workerDependencies = Seq( "org.camunda.bpm.springboot" % "camunda-bpm-spring-boot-starter-external-task-client" % camundaVersion, - "org.springframework.boot" % "spring-boot-starter-oauth2-client" % springBootVersion, - "org.springframework.boot" % "spring-boot-starter-security" % springBootVersion, - "org.springframework.boot" % "spring-boot-starter-web" % springBootVersion + "org.springframework.boot" % "spring-boot-starter-oauth2-client" % springBootVersion, + "org.springframework.boot" % "spring-boot-starter-security" % springBootVersion, + "org.springframework.boot" % "spring-boot-starter-web" % springBootVersion ) lazy val camunda7ZioWorkerDependencies = Seq( "org.camunda.bpm" % "camunda-external-task-client" % camundaVersion ) - lazy val sttpDependency = "com.softwaremill.sttp.client3" %% "circe" % sttpClient3Version + lazy val sttpDependency = "com.softwaremill.sttp.client3" %% "circe" % sttpClient3Version val zeebeDependencies = Seq( - "org.springframework.boot" % "spring-boot-starter" % springBootVersion, - "org.springframework.boot" % "spring-boot-starter-webflux" % springBootVersion, - "io.camunda.spring" % "spring-boot-starter-camunda" % camunda8Version, - "com.fasterxml.jackson.module" %% "jackson-module-scala" % scalaJacksonVersion - )//.map(_.exclude("org.slf4j", "slf4j-api")) + "org.springframework.boot" % "spring-boot-starter" % springBootVersion, + "org.springframework.boot" % "spring-boot-starter-webflux" % springBootVersion, + "io.camunda.spring" % "spring-boot-starter-camunda" % camunda8Version, + "com.fasterxml.jackson.module" %% "jackson-module-scala" % scalaJacksonVersion + ) // .map(_.exclude("org.slf4j", "slf4j-api")) val zeebeJavaClientDependency = - "io.camunda" % "zeebe-client-java" % "8.7.0-alpha2" //TODO camunda8Version, + "io.camunda" % "zeebe-client-java" % "8.7.0-alpha2" // TODO camunda8Version, val zioDependency = "dev.zio" %% "zio" % zioVersion val zioSlf4jDependency = "dev.zio" %% "zio-logging-slf4j" % zioVersion // examples val camundaDependencies = Seq( - "org.springframework.boot" % "spring-boot-starter-web" % springBootVersion exclude("org.slf4j", "slf4j-api"), - "org.springframework.boot" % "spring-boot-starter-jdbc" % springBootVersion exclude("org.slf4j", "slf4j-api"), - "io.netty" % "netty-all" % nettyVersion, // needed for Spring Boot Version > 2.5.* - "org.camunda.bpm.springboot" % "camunda-bpm-spring-boot-starter-rest" % camundaVersion, + "org.springframework.boot" % "spring-boot-starter-web" % springBootVersion exclude ( + "org.slf4j", + "slf4j-api" + ), + "org.springframework.boot" % "spring-boot-starter-jdbc" % springBootVersion exclude ( + "org.slf4j", + "slf4j-api" + ), + "io.netty" % "netty-all" % nettyVersion, // needed for Spring Boot Version > 2.5.* + "org.camunda.bpm.springboot" % "camunda-bpm-spring-boot-starter-rest" % camundaVersion, "org.camunda.bpm.springboot" % "camunda-bpm-spring-boot-starter-webapp" % camundaVersion, // json support - "org.camunda.bpm" % "camunda-engine-plugin-spin" % camundaVersion, - "org.camunda.spin" % "camunda-spin-dataformat-json-jackson" % camundaSpinVersion, + "org.camunda.bpm" % "camunda-engine-plugin-spin" % camundaVersion, + "org.camunda.spin" % "camunda-spin-dataformat-json-jackson" % camundaSpinVersion, jaxbApiDependency, // groovy support - "org.codehaus.groovy" % "groovy-jsr223" % groovyVersion, - "com.h2database" % "h2" % h2Version + "org.codehaus.groovy" % "groovy-jsr223" % groovyVersion, + "com.h2database" % "h2" % h2Version ) // .map(_.exclude("org.slf4j", "slf4j-api")) - lazy val osLib = "com.lihaoyi" %% "os-lib" % osLibVersion - lazy val chimney = "io.scalaland" %% "chimney" % chimneyVersion + lazy val osLib = "com.lihaoyi" %% "os-lib" % osLibVersion + lazy val chimney = "io.scalaland" %% "chimney" % chimneyVersion lazy val swaggerOpenAPI = "io.swagger.parser.v3" % "swagger-parser" % swaggerOpenAPIVersion - lazy val sardineWebDav = "com.github.lookfirst" % "sardine" % sardineWebDavVersion -} + lazy val sardineWebDav = "com.github.lookfirst" % "sardine" % sardineWebDavVersion +end Dependencies diff --git a/project/Settings.scala b/project/Settings.scala index ae5a8b6d..05e82e1d 100644 --- a/project/Settings.scala +++ b/project/Settings.scala @@ -12,18 +12,18 @@ import xerial.sbt.Sonatype.autoImport.sonatypeRepository import scala.util.Using -object Settings { +object Settings: lazy val projectVersion = Using(scala.io.Source.fromFile("version"))(_.mkString.trim).get - val scala3Version = "3.6.2" - val org = "io.github.pme123" + val scala3Version = "3.6.2" + val org = "io.github.pme123" def projectSettings(projName: String) = Seq( - name := s"camundala-$projName", + name := s"camundala-$projName", organization := org, scalaVersion := scala3Version, - version := projectVersion, + version := projectVersion, scalacOptions ++= Seq( // "-Xmax-inlines:50", // is declared as erased, but is in fact used // "-Wunused:imports", @@ -36,11 +36,11 @@ object Settings { testFrameworks += new TestFramework("munit.Framework") ) - lazy val githubUrl = "https://github.com/pme123/camundala" + lazy val githubUrl = "https://github.com/pme123/camundala" lazy val publicationSettings: Project => Project = _.settings( // publishMavenStyle := true, pomIncludeRepository := { _ => false }, - sonatypeRepository := "https://s01.oss.sonatype.org/service/local", + sonatypeRepository := "https://s01.oss.sonatype.org/service/local", /* publishTo := { val nexus = "https://s01.oss.sonatype.org/" if (isSnapshot.value) @@ -49,18 +49,18 @@ object Settings { }, credentials += Credentials(Path.userHome / ".sbt" / "sonatype_credentials"), */ licenses += ("MIT", url("http://opensource.org/licenses/MIT")), - homepage := Some(url(githubUrl)), - startYear := Some(2021), + homepage := Some(url(githubUrl)), + startYear := Some(2021), // logLevel := Level.Debug, - scmInfo := Some( + scmInfo := Some( ScmInfo( url(githubUrl), "scm:git:github.com:/pme123/camundala" ) ), - developers := developerList + developers := developerList ) - lazy val developerList = List( + lazy val developerList = List( Developer( id = "pme123", name = "Pascal Mengelt", @@ -68,15 +68,15 @@ object Settings { url = url("https://github.com/pme123") ) ) - lazy val preventPublication: Project => Project = + lazy val preventPublication: Project => Project = _.settings( - publish := {}, - publishTo := Some( + publish := {}, + publishTo := Some( Resolver .file("Unused transient repository", target.value / "fakepublish") ), - publishArtifact := false, - publishLocal := {}, + publishArtifact := false, + publishLocal := {}, packagedArtifacts := Map.empty ) // doesn't work - https://github.com/sbt/sbt-pgp/issues/42 @@ -95,7 +95,7 @@ object Settings { ).mkString(start = "-Yimports:", sep = ",", end = "") lazy val laikaSettings = Seq( - laikaConfig := LaikaConfig.defaults + laikaConfig := LaikaConfig.defaults .withConfigValue(LaikaKeys.excludeFromNavigation, Seq(Root)) .withConfigValue("project.version", projectVersion) .withConfigValue( @@ -116,23 +116,22 @@ object Settings { // .renderMessages(MessageFilter.None) , Laika / sourceDirectories := Seq(mdocOut.value), - - laikaSite / target := baseDirectory.value / ".." / "docs", - laikaExtensions := Seq(GitHubFlavor, SyntaxHighlighting), - laikaTheme := Helium.defaults.site + laikaSite / target := baseDirectory.value / ".." / "docs", + laikaExtensions := Seq(GitHubFlavor, SyntaxHighlighting), + laikaTheme := Helium.defaults.site .topNavigationBar( homeLink = IconLink.internal(Root / "index.md", HeliumIcon.home), navLinks = Seq( - IconLink.external(githubUrl, HeliumIcon.github), + IconLink.external(githubUrl, HeliumIcon.github) ) ) - .build, + .build ) - lazy val mdocSettings = Seq( - mdocIn := baseDirectory.value / "src" / "docs", - mdocVariables := Map( - "VERSION"-> projectVersion + lazy val mdocSettings = Seq( + mdocIn := baseDirectory.value / "src" / "docs", + mdocVariables := Map( + "VERSION" -> projectVersion ), - mdocExtraArguments := Seq("--no-link-hygiene"), + mdocExtraArguments := Seq("--no-link-hygiene") ) -} +end Settings From 43ee357964966d2e083c710c2643e42c90b4f23c Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Sat, 25 Jan 2025 02:49:15 +0000 Subject: [PATCH 3/3] Add 'Reformat with scalafmt 3.8.6' to .git-blame-ignore-revs --- .git-blame-ignore-revs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 5b40472b..471ec3a7 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -3,3 +3,6 @@ # Scala Steward: Reformat with scalafmt 3.8.1 702f0803380ce018d650c341b8875b6627b59841 + +# Scala Steward: Reformat with scalafmt 3.8.6 +6c4d49e59539bf0ccb3bb0a580ddfa122e4d3cc6