From 3ec260c87abf77246744c4d1133d6fb67d156183 Mon Sep 17 00:00:00 2001 From: fjtirado Date: Thu, 17 Jul 2025 13:05:12 +0200 Subject: [PATCH] Minor refinements Signed-off-by: fjtirado --- .../impl/WorkflowApplication.java | 44 ++++++++++--------- .../impl/DateTimeDescriptorTest.java | 36 +++++++++++++++ 2 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 impl/jackson/src/test/java/io/serverlessworkflow/impl/DateTimeDescriptorTest.java diff --git a/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java index 0477ccf1..ab23f2c5 100644 --- a/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java +++ b/impl/core/src/main/java/io/serverlessworkflow/impl/WorkflowApplication.java @@ -103,26 +103,28 @@ public WorkflowIdFactory idFactory() { } public static class Builder { - private static final SchemaValidatorFactory EMPTY_SCHEMA_VALIDATOR = - new SchemaValidatorFactory() { - - private final SchemaValidator NoValidation = - new SchemaValidator() { - @Override - public void validate(WorkflowModel node) {} - }; - - @Override - public SchemaValidator getValidator(StaticResource resource) { - - return NoValidation; - } - - @Override - public SchemaValidator getValidator(SchemaInline inline) { - return NoValidation; - } - }; + + private static final class EmptySchemaValidatorHolder { + private static final SchemaValidatorFactory instance = + new SchemaValidatorFactory() { + private final SchemaValidator NoValidation = + new SchemaValidator() { + @Override + public void validate(WorkflowModel node) {} + }; + + @Override + public SchemaValidator getValidator(StaticResource resource) { + return NoValidation; + } + + @Override + public SchemaValidator getValidator(SchemaInline inline) { + return NoValidation; + } + }; + } + private TaskExecutorFactory taskFactory = DefaultTaskExecutorFactory.get(); private ExpressionFactory exprFactory; private Collection listeners; @@ -207,7 +209,7 @@ public WorkflowApplication build() { schemaValidatorFactory = ServiceLoader.load(SchemaValidatorFactory.class) .findFirst() - .orElse(EMPTY_SCHEMA_VALIDATOR); + .orElseGet(() -> EmptySchemaValidatorHolder.instance); } return new WorkflowApplication(this); } diff --git a/impl/jackson/src/test/java/io/serverlessworkflow/impl/DateTimeDescriptorTest.java b/impl/jackson/src/test/java/io/serverlessworkflow/impl/DateTimeDescriptorTest.java new file mode 100644 index 00000000..46937cbc --- /dev/null +++ b/impl/jackson/src/test/java/io/serverlessworkflow/impl/DateTimeDescriptorTest.java @@ -0,0 +1,36 @@ +/* + * Copyright 2020-Present The Serverless Workflow Specification Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.serverlessworkflow.impl; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.fasterxml.jackson.databind.JsonNode; +import io.serverlessworkflow.impl.expressions.DateTimeDescriptor; +import io.serverlessworkflow.impl.json.JsonUtils; +import java.time.Instant; +import org.junit.jupiter.api.Test; + +class DateTimeDescriptorTest { + + @Test + void serializeDate() { + DateTimeDescriptor descriptor = DateTimeDescriptor.from(Instant.now()); + + JsonNode node = JsonUtils.fromValue(descriptor); + assertThat(node.get("iso8601").isTextual()).isTrue(); + assertThat(node.get("epoch").isObject()).isTrue(); + } +}