From f5e39135d2ef8c8c865bb46312d694359a290f95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:18:57 -0400 Subject: [PATCH 01/16] Bump the standard-plugins group across 1 directory with 5 updates (#88) Bumps the standard-plugins group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) | `3.4.0` | `3.5.1` | | [org.apache.maven.plugins:maven-install-plugin](https://github.com/apache/maven-install-plugin) | `3.1.2` | `3.1.3` | | [org.apache.maven.plugins:maven-deploy-plugin](https://github.com/apache/maven-deploy-plugin) | `3.1.2` | `3.1.3` | | [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) | `3.8.0` | `3.10.1` | | [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) | `3.2.5` | `3.2.7` | Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.4.0 to 3.5.1 - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.4.0...surefire-3.5.1) Updates `org.apache.maven.plugins:maven-install-plugin` from 3.1.2 to 3.1.3 - [Release notes](https://github.com/apache/maven-install-plugin/releases) - [Commits](https://github.com/apache/maven-install-plugin/compare/maven-install-plugin-3.1.2...maven-install-plugin-3.1.3) Updates `org.apache.maven.plugins:maven-deploy-plugin` from 3.1.2 to 3.1.3 - [Release notes](https://github.com/apache/maven-deploy-plugin/releases) - [Commits](https://github.com/apache/maven-deploy-plugin/compare/maven-deploy-plugin-3.1.2...maven-deploy-plugin-3.1.3) Updates `org.apache.maven.plugins:maven-javadoc-plugin` from 3.8.0 to 3.10.1 - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.8.0...maven-javadoc-plugin-3.10.1) Updates `org.apache.maven.plugins:maven-gpg-plugin` from 3.2.5 to 3.2.7 - [Release notes](https://github.com/apache/maven-gpg-plugin/releases) - [Commits](https://github.com/apache/maven-gpg-plugin/compare/maven-gpg-plugin-3.2.5...maven-gpg-plugin-3.2.7) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-surefire-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-install-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-deploy-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-gpg-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: standard-plugins ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index faeabee..5e99107 100644 --- a/pom.xml +++ b/pom.xml @@ -60,12 +60,12 @@ 1.6.0 - 3.4.0 + 3.5.1 3.3.1 - 3.1.2 - 3.1.2 - 3.8.0 - 3.2.5 + 3.1.3 + 3.1.3 + 3.10.1 + 3.2.7 0.5.0 From 6b943066220ed072b19bb1731bfbdfc602d85288 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:19:07 -0400 Subject: [PATCH 02/16] Bump the test-dependencies group across 1 directory with 2 updates (#87) Bumps the test-dependencies group with 2 updates in the / directory: [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) and [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5). Updates `org.junit.jupiter:junit-jupiter-engine` from 5.11.0 to 5.11.2 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.0...r5.11.2) Updates `org.junit.jupiter:junit-jupiter-api` from 5.11.0 to 5.11.2 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.0...r5.11.2) Updates `org.junit.jupiter:junit-jupiter-api` from 5.11.0 to 5.11.2 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.0...r5.11.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5e99107..4692257 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ 2.11.0 4.3.0 - 5.11.0 + 5.11.2 0.8.12 From 65c494ed6a36bf335d1e78008dc0dd8f4ad08651 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:19:31 -0400 Subject: [PATCH 03/16] Bump the protobuf-dependencies group with 3 updates (#83) Bumps the protobuf-dependencies group with 3 updates: [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf), com.google.protobuf:protobuf-java-util and [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf). Updates `com.google.protobuf:protobuf-java` from 3.25.4 to 3.25.5 - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.25.4...v3.25.5) Updates `com.google.protobuf:protobuf-java-util` from 3.25.4 to 3.25.5 Updates `com.google.protobuf:protobuf-java-util` from 3.25.4 to 3.25.5 Updates `com.google.protobuf:protoc` from 3.25.4 to 3.25.5 - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.25.4...v3.25.5) --- updated-dependencies: - dependency-name: com.google.protobuf:protobuf-java dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies - dependency-name: com.google.protobuf:protobuf-java-util dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies - dependency-name: com.google.protobuf:protobuf-java-util dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies - dependency-name: com.google.protobuf:protoc dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- protobuf/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protobuf/pom.xml b/protobuf/pom.xml index fcfbdf4..dbc8795 100644 --- a/protobuf/pom.xml +++ b/protobuf/pom.xml @@ -34,8 +34,8 @@ 1.4.1 - 3.25.4 - 3.25.4 + 3.25.5 + 3.25.5 From abcd307df8d02c5ea8a356f0e14c781f976af8a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:20:40 -0400 Subject: [PATCH 04/16] Bump org.sonatype.central:central-publishing-maven-plugin (#85) Bumps [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) from 0.5.0 to 0.6.0. - [Commits](https://github.com/sonatype/central-publishing-maven-plugin/commits) --- updated-dependencies: - dependency-name: org.sonatype.central:central-publishing-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4692257..d9d106d 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 3.1.3 3.10.1 3.2.7 - 0.5.0 + 0.6.0 2.11.0 From 0a13e1d895633e340abff72bcf70bcd0b2affc6a Mon Sep 17 00:00:00 2001 From: Zachary Bischoff <116595361+bischoffz@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:02:02 -0400 Subject: [PATCH 05/16] Update pom.xml --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index d9d106d..f198ef9 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ - 5.0.0 + 5.0.1-SNAPSHOT UTF-8 @@ -70,7 +70,7 @@ 2.11.0 - 4.3.0 + 4.4.0-SNAPSHOT 5.11.2 0.8.12 @@ -418,4 +418,4 @@ - \ No newline at end of file + From 806944070cde2fbfd201ab0bee53ae0939c570a0 Mon Sep 17 00:00:00 2001 From: Zachary Bischoff <116595361+bischoffz@users.noreply.github.com> Date: Wed, 29 Jan 2025 14:54:20 -0500 Subject: [PATCH 06/16] add binary engine (#94) * add binary engine * bump version --- pom.xml | 2 +- .../engine/ProtobufBinaryTaskitEngine.java | 209 +++++++++++++++++ .../engine/AT_ProtobufBinaryTaskitEngine.java | 216 ++++++++++++++++++ 3 files changed, 426 insertions(+), 1 deletion(-) create mode 100644 protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufBinaryTaskitEngine.java create mode 100644 protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_ProtobufBinaryTaskitEngine.java diff --git a/pom.xml b/pom.xml index f198ef9..ff7b6c9 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ - 5.0.1-SNAPSHOT + 5.1.0-SNAPSHOT UTF-8 diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufBinaryTaskitEngine.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufBinaryTaskitEngine.java new file mode 100644 index 0000000..b01811c --- /dev/null +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufBinaryTaskitEngine.java @@ -0,0 +1,209 @@ +package gov.hhs.aspr.ms.taskit.protobuf.engine; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; + +import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Message; +import com.google.protobuf.ProtocolMessageEnum; + +import gov.hhs.aspr.ms.taskit.core.engine.TaskitEngineData; +import gov.hhs.aspr.ms.taskit.core.engine.TaskitError; +import gov.hhs.aspr.ms.taskit.core.translation.ITranslationSpec; +import gov.hhs.aspr.ms.taskit.core.translation.Translator; +import gov.hhs.aspr.ms.taskit.core.translation.TranslatorContext; +import gov.hhs.aspr.ms.taskit.protobuf.translation.ProtobufTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.ProtobufTranslator; +import gov.hhs.aspr.ms.util.errors.ContractException; + +public class ProtobufBinaryTaskitEngine extends ProtobufTaskitEngine { + + protected ProtobufBinaryTaskitEngine(Map> typeUrlToClassMap, TaskitEngineData taskitEngineData) { + super(typeUrlToClassMap, taskitEngineData, ProtobufTaskitEngineId.BINARY_ENGINE_ID); + } + + /** + * Builder for the ProtobufJsonTaskitEngine. + */ + public final static class Builder implements IProtobufTaskitEngineBuilder { + private Set descriptorSet = new LinkedHashSet<>(); + + // this is used specifically for Any message types to pack and unpack them + private final Map> typeUrlToClassMap = new LinkedHashMap<>(); + + private TaskitEngineData.Builder taskitEngineDataBuilder = TaskitEngineData.builder(); + + private Builder() { + } + + /** + * Returns a new instance of a ProtobufTaskitEngine that has a jsonParser and + * jsonWriter that include all the typeUrls for all added TranslationSpecs and + * their respective Protobuf Message types. + * + * @throws ContractException + *
    + *
  • {@link TaskitError#UNINITIALIZED_TRANSLATORS} + * if translators were added to the engine but their + * initialized flag was still set to false
  • + *
  • {@link TaskitError#DUPLICATE_TRANSLATOR} if a + * duplicate translator is found
  • + *
  • {@link TaskitError#MISSING_TRANSLATOR} if an + * added translator has a unmet dependency
  • + *
  • {@link TaskitError#CIRCULAR_TRANSLATOR_DEPENDENCIES} + * if the added translators have a circular dependency + * graph
  • + *
  • {@link TaskitError#NO_TRANSLATION_SPECS} if no + * translation specs were added to the engine
  • + *
+ */ + public ProtobufBinaryTaskitEngine build() { + this.addTranslator(ProtobufTranslator.getTranslator()); + + ProtobufBinaryTaskitEngine protoBinaryTaskitEngine = new ProtobufBinaryTaskitEngine(this.typeUrlToClassMap, + this.taskitEngineDataBuilder.build()); + + protoBinaryTaskitEngine.init(); + + return protoBinaryTaskitEngine; + } + + /** + * Adds the given {@link ITranslationSpec} to the TaskitEngine. + *

+ * Additionally will populate typeUrls and field descriptors associated with the + * Protobuf types on the given TranslationSpec. + *

+ * + * @throws ContractException + *
    + *
  • {@linkplain TaskitError#NULL_TRANSLATION_SPEC} + * if the given translationSpec is null
  • + *
  • {@linkplain TaskitError#NULL_TRANSLATION_SPEC_CLASS_MAP} + * if the given translationSpec's class map is + * null
  • + *
  • {@linkplain TaskitError#EMPTY_TRANSLATION_SPEC_CLASS_MAP} + * if the given translationSpec's class map is + * empty
  • + *
  • {@linkplain TaskitError#DUPLICATE_TRANSLATION_SPEC} + * if the given translationSpec is already known
  • + *
  • {@link ProtobufTaskitError#INVALID_TRANSLATION_SPEC} + * if the given translation spec is not assignable + * from {@linkplain ProtobufTranslationSpec}
  • + *
  • {@link ProtobufTaskitError#INVALID_TRANSLATION_SPEC_INPUT_CLASS} + * if the given inputClassRef is not assignable from + * {@linkplain Message} nor + * {@linkplain ProtocolMessageEnum}
  • + *
+ */ + @Override + public Builder addTranslationSpec(ITranslationSpec translationSpec) { + this.taskitEngineDataBuilder.addTranslationSpec(translationSpec); + + if (!ProtobufTranslationSpec.class.isAssignableFrom(translationSpec.getClass())) { + throw new ContractException(ProtobufTaskitError.INVALID_TRANSLATION_SPEC); + } + + ProtobufTranslationSpec protobufTranslationSpec = ProtobufTranslationSpec.class.cast(translationSpec); + + populate(protobufTranslationSpec.getInputObjectClass()); + return this; + } + + /** + * Adds a {@link Translator}. + * + * @throws ContractException {@linkplain TaskitError#NULL_TRANSLATOR} if + * translator is null + */ + @Override + public Builder addTranslator(Translator translator) { + this.taskitEngineDataBuilder.addTranslator(translator); + + translator.initialize(new TranslatorContext(this)); + + return this; + } + + /** + * Checks the class to determine if it is a ProtocolMessageEnum or a Message. + *

+ * If it is a Message, gets the Descriptor (which is akin to a class but for a + * Protobuf + * Message) for it to get the full name and add the typeUrl to the internal + * descriptorMap and typeUrlToClassMap. + *

+ *

+ * Package access for testing. + *

+ * + * @param the type of the classRef + * @param classRef the classRef to use + * + * @throws ContractException {@link ProtobufTaskitError#INVALID_TRANSLATION_SPEC_INPUT_CLASS} + * if the given inputClassRef is not assignable from + * {@linkplain Message} nor + * {@linkplain ProtocolMessageEnum} + * + * @throws RuntimeException if there is any issue using reflection to invoke + * either the 'getDefaultInstance' method on a + * {@link Message} type or invoking the 'forNumber(0)' + * method on the {@link ProtocolMessageEnum} type + */ + void populate(Class classRef) { + String typeUrl; + if (ProtocolMessageEnum.class.isAssignableFrom(classRef) && ProtocolMessageEnum.class != classRef) { + typeUrl = ProtobufTaskitEngineHelper.getDefaultEnum(classRef.asSubclass(ProtocolMessageEnum.class)) + .getDescriptorForType().getFullName(); + this.typeUrlToClassMap.putIfAbsent(typeUrl, classRef); + return; + } + + if (Message.class.isAssignableFrom(classRef) && Message.class != classRef) { + Message message = ProtobufTaskitEngineHelper.getDefaultMessage(classRef.asSubclass(Message.class)); + typeUrl = message.getDescriptorForType().getFullName(); + + this.typeUrlToClassMap.putIfAbsent(typeUrl, classRef); + this.descriptorSet.add(message.getDescriptorForType()); + return; + } + + throw new ContractException(ProtobufTaskitError.INVALID_TRANSLATION_SPEC_INPUT_CLASS); + } + + } + + /** + * Returns a new builder for the Protobuf Json Taskit engine. + */ + public static Builder builder() { + return new Builder(); + } + + @Override + protected void writeToFile(File file, Message message) throws IOException { + BufferedOutputStream bOutputStream = new BufferedOutputStream(new FileOutputStream(file)); + + message.writeTo(bOutputStream); + + bOutputStream.flush(); + } + + @Override + protected Message readFile(File file, Message.Builder builder) throws IOException { + BufferedInputStream bInputStream = new BufferedInputStream(new FileInputStream(file)); + + builder.mergeFrom(bInputStream); + + return builder.build(); + } + +} diff --git a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_ProtobufBinaryTaskitEngine.java b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_ProtobufBinaryTaskitEngine.java new file mode 100644 index 0000000..6247249 --- /dev/null +++ b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_ProtobufBinaryTaskitEngine.java @@ -0,0 +1,216 @@ +package gov.hhs.aspr.ms.taskit.protobuf.engine; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import com.google.protobuf.Message; +import com.google.protobuf.ProtocolMessageEnum; + +import gov.hhs.aspr.ms.taskit.core.testsupport.objects.TestAppObject; +import gov.hhs.aspr.ms.taskit.core.testsupport.translation.complexobject.TestComplexObjectTranslatorId; +import gov.hhs.aspr.ms.taskit.core.testsupport.translation.object.specs.TestObjectTranslationSpec; +import gov.hhs.aspr.ms.taskit.core.translation.ITranslationSpec; +import gov.hhs.aspr.ms.taskit.core.translation.Translator; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.TestObjectUtil; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.objects.TestComplexInputObject; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.objects.TestInputEnum; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.objects.TestInputObject; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.translation.specs.TestProtobufComplexObjectTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.translation.specs.TestProtobufObjectTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.ProtobufTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.AnyTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.BooleanTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.DateTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.DoubleTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.EnumTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.FloatTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.IntegerTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.LongTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.StringTranslationSpec; +import gov.hhs.aspr.ms.util.annotations.UnitTestForCoverage; +import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; +import gov.hhs.aspr.ms.util.errors.ContractException; +import gov.hhs.aspr.ms.util.resourcehelper.ResourceHelper; + +public class AT_ProtobufBinaryTaskitEngine { + Path basePath = ResourceHelper.getResourceDir(this.getClass()); + Path filePath = ResourceHelper.createDirectory(basePath, "test-output"); + + @Test + @UnitTestForCoverage + public void testReadFile() throws IOException { + String fileName = "readProtoJsonEngine_1-testOutput.bin"; + + ResourceHelper.createFile(filePath, fileName); + + ProtobufBinaryTaskitEngine protobufTaskitEngine = ProtobufBinaryTaskitEngine.builder() + .addTranslationSpec(new TestProtobufObjectTranslationSpec()) + .addTranslationSpec(new TestProtobufComplexObjectTranslationSpec()).build(); + + TestAppObject expectedAppObject = TestObjectUtil.generateTestAppObject(); + TestInputObject expectedObject = TestObjectUtil.getInputFromApp(expectedAppObject); + + protobufTaskitEngine.translateAndWrite(filePath.resolve(fileName), expectedAppObject); + TestInputObject actualObject = protobufTaskitEngine.read(filePath.resolve(fileName), + TestInputObject.class); + assertEquals(expectedObject, actualObject); + } + + @Test + @UnitTestForCoverage + public void testWriteFile() throws IOException { + String fileName = "writeProtoJsonEngine_1-testOutput.bin"; + + ResourceHelper.createFile(filePath, fileName); + + ProtobufBinaryTaskitEngine protobufTaskitEngine = ProtobufBinaryTaskitEngine.builder() + .addTranslationSpec(new TestProtobufObjectTranslationSpec()) + .addTranslationSpec(new TestProtobufComplexObjectTranslationSpec()).build(); + + TestAppObject expectedAppObject = TestObjectUtil.generateTestAppObject(); + TestInputObject testInputObject = TestObjectUtil.getInputFromApp(expectedAppObject); + + protobufTaskitEngine.write(filePath.resolve(fileName), testInputObject); + TestInputObject actualAppObject = protobufTaskitEngine.read(filePath.resolve(fileName), + TestInputObject.class); + assertEquals(testInputObject, actualAppObject); + } + + @Test + @UnitTestMethod(target = ProtobufBinaryTaskitEngine.class, name = "builder", args = {}) + public void testBuilder() { + // Nothing to test + } + + @Test + @UnitTestMethod(target = ProtobufBinaryTaskitEngine.Builder.class, name = "build", args = {}) + public void testBuild() { + + /* + * Test Note: build internally calls TaskitEngineData.build(). As such, the + * build method will also throw the exceptions from that method. Because that is + * already tested in Taskit, the precondition tests will not be tested here + */ + ProtobufBinaryTaskitEngine protobufTaskitEngine = ProtobufBinaryTaskitEngine.builder() + .addTranslationSpec(new TestProtobufComplexObjectTranslationSpec()).build(); + + assertEquals(ProtobufTaskitEngineId.BINARY_ENGINE_ID, protobufTaskitEngine.getTaskitEngineId()); + assertTrue(protobufTaskitEngine.isInitialized()); + + List> list = new ArrayList<>(); + + list.add(new BooleanTranslationSpec()); + list.add(new IntegerTranslationSpec()); + list.add(new LongTranslationSpec()); + list.add(new StringTranslationSpec()); + list.add(new FloatTranslationSpec()); + list.add(new DoubleTranslationSpec()); + list.add(new DateTranslationSpec()); + list.add(new EnumTranslationSpec()); + list.add(new AnyTranslationSpec()); + + for (ProtobufTranslationSpec translationSpec : list) { + translationSpec.init(protobufTaskitEngine); + } + + assertTrue(protobufTaskitEngine.getTranslationSpecs().containsAll(list)); + + // parser and printer do not have equals contracts, so no way to check for + // equality + // the use cases for them are adequately tested in: testReadInput and + // testWriteOutput + } + + @Test + @UnitTestForCoverage + public void testPopulate() { + ProtobufBinaryTaskitEngine.Builder pBuilder = ProtobufBinaryTaskitEngine.builder(); + + // Protobuf Message + pBuilder.populate(TestInputObject.class); + + // Protobuf Enum + pBuilder.populate(TestInputEnum.class); + + // precondition + // if class is neither a Message nor a ProtocolMessageEnum + ContractException contractException = assertThrows(ContractException.class, () -> { + pBuilder.populate(TestAppObject.class); + }); + + assertEquals(ProtobufTaskitError.INVALID_TRANSLATION_SPEC_INPUT_CLASS, contractException.getErrorType()); + + // the class is exactly a Message.class + contractException = assertThrows(ContractException.class, () -> { + pBuilder.populate(Message.class); + }); + + assertEquals(ProtobufTaskitError.INVALID_TRANSLATION_SPEC_INPUT_CLASS, contractException.getErrorType()); + + // the class is exactly a ProtocolMessageEnum.class + contractException = assertThrows(ContractException.class, () -> { + pBuilder.populate(ProtocolMessageEnum.class); + }); + + assertEquals(ProtobufTaskitError.INVALID_TRANSLATION_SPEC_INPUT_CLASS, contractException.getErrorType()); + + } + + @Test + @UnitTestMethod(target = ProtobufBinaryTaskitEngine.Builder.class, name = "addTranslationSpec", args = { + ITranslationSpec.class }) + public void testAddTranslationSpec() { + // base functionality and preconditions tested by core. + // This test will only test the things specifically and uniquely done by the + // ProtobufBinaryTaskitEngine + + ProtobufBinaryTaskitEngine protobufTaskitEngine = ProtobufBinaryTaskitEngine.builder() + .addTranslationSpec(new TestProtobufObjectTranslationSpec()) + .addTranslationSpec(new TestProtobufComplexObjectTranslationSpec()).build(); + + assertDoesNotThrow(() -> { + protobufTaskitEngine.getClassFromTypeUrl(TestInputObject.getDescriptor().getFullName()); + protobufTaskitEngine.getClassFromTypeUrl(TestComplexInputObject.getDescriptor().getFullName()); + }); + + // precondition + // that the inputClass is not a Message nor a + // ProtocolMessageEnum, and is tested in the testPopulate() test + // translation spec is not a protobuf translation spec + ContractException contractException = assertThrows(ContractException.class, () -> { + ProtobufBinaryTaskitEngine.builder() + .addTranslationSpec(new TestObjectTranslationSpec()); + }); + + assertEquals(ProtobufTaskitError.INVALID_TRANSLATION_SPEC, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = ProtobufBinaryTaskitEngine.Builder.class, name = "addTranslator", args = { + Translator.class }) + public void testAddTranslator() { + Translator translator = Translator.builder() + .setTranslatorId(TestComplexObjectTranslatorId.TRANSLATOR_ID) + .setInitializer(translatorContext -> { + translatorContext.getTaskitEngineBuilder(ProtobufBinaryTaskitEngine.Builder.class) + .addTranslationSpec(new TestProtobufComplexObjectTranslationSpec()); + }) + .build(); + + ProtobufBinaryTaskitEngine.builder() + .addTranslator(translator).build(); + + assertTrue(translator.isInitialized()); + + // preconditions tested by core + } +} From 7ce9edf5fcb865a7f25a7c6aa8dcc83fd4391796 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 17:43:57 -0500 Subject: [PATCH 07/16] Bump org.sonatype.central:central-publishing-maven-plugin (#93) Bumps [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) from 0.6.0 to 0.7.0. - [Commits](https://github.com/sonatype/central-publishing-maven-plugin/commits) --- updated-dependencies: - dependency-name: org.sonatype.central:central-publishing-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ff7b6c9..5ca025e 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 3.1.3 3.10.1 3.2.7 - 0.6.0 + 0.7.0 2.11.0 From b681c09e282e6128124bdd79c472119585e7fe31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 17:44:06 -0500 Subject: [PATCH 08/16] Bump the test-dependencies group across 1 directory with 2 updates (#92) Bumps the test-dependencies group with 2 updates in the / directory: [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) and [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5). Updates `org.junit.jupiter:junit-jupiter-engine` from 5.11.2 to 5.11.4 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.2...r5.11.4) Updates `org.junit.jupiter:junit-jupiter-api` from 5.11.2 to 5.11.4 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.2...r5.11.4) Updates `org.junit.jupiter:junit-jupiter-api` from 5.11.2 to 5.11.4 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.2...r5.11.4) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5ca025e..0ec1c9b 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ 2.11.0 4.4.0-SNAPSHOT - 5.11.2 + 5.11.4 0.8.12
From e274879c79de3d7fd1b95945f0ec01985da86aaf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 17:44:16 -0500 Subject: [PATCH 09/16] Bump the standard-plugins group across 1 directory with 2 updates (#91) Bumps the standard-plugins group with 2 updates in the / directory: [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) and [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin). Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.5.1 to 3.5.2 - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.1...surefire-3.5.2) Updates `org.apache.maven.plugins:maven-javadoc-plugin` from 3.10.1 to 3.11.2 - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.10.1...maven-javadoc-plugin-3.11.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-surefire-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0ec1c9b..3779357 100644 --- a/pom.xml +++ b/pom.xml @@ -60,11 +60,11 @@ 1.6.0 - 3.5.1 + 3.5.2 3.3.1 3.1.3 3.1.3 - 3.10.1 + 3.11.2 3.2.7 0.7.0 From bcd7da4273478ae7a2158b1f2c03e7792a37e8f0 Mon Sep 17 00:00:00 2001 From: Zachary Bischoff <116595361+bischoffz@users.noreply.github.com> Date: Mon, 10 Feb 2025 17:59:45 -0500 Subject: [PATCH 10/16] add taskit object (#97) * add taskit object * add testing, add contract exception * fix broken test --- .../protobuf/engine/ProtobufTaskitError.java | 5 +- .../taskit/protobuf/engine/TaskitObject.java | 184 +++ .../translation/ProtobufTranslator.java | 2 + .../specs/TaskitObjectTranslationSpec.java | 111 ++ .../hhs/aspr/ms/taskit/protobuf/core.proto | 14 + .../protobuf/engine/AT_TaskitObject.java | 1018 +++++++++++++++++ .../specs/AT_TaskitObjectTranslationSpec.java | 49 + 7 files changed, 1382 insertions(+), 1 deletion(-) create mode 100644 protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java create mode 100644 protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java create mode 100644 protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java create mode 100644 protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufTaskitError.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufTaskitError.java index 47cf755..2c28568 100644 --- a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufTaskitError.java +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/ProtobufTaskitError.java @@ -11,7 +11,10 @@ public enum ProtobufTaskitError implements ContractError { INVALID_TRANSLATION_SPEC("Added Translation Specs need to be of parent type Protobuf TranslationSpecs"), NULL_FIELD_DESCRIPTOR("The provided field descriptor is null"), UNKNOWN_TYPE_URL( - "The given type url does not have a corresponding classRef. Either the typeUrl was never provided, or the typeUrl is malformed."); + "The given type url does not have a corresponding classRef. Either the typeUrl was never provided, or the typeUrl is malformed."), + MALFORMED_TASKIT_OBJECT("The given taskit object does not have any fields set on it"), + INVALID_RETRIEVAL("Tried to get value on Taskit Object which was not set"), + ; private final String description; diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java new file mode 100644 index 0000000..6b4571f --- /dev/null +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java @@ -0,0 +1,184 @@ +package gov.hhs.aspr.ms.taskit.protobuf.engine; + +import java.time.LocalDate; +import java.util.Optional; + +import gov.hhs.aspr.ms.util.errors.ContractException; + +public final class TaskitObject { + + private final Optional objectVal; + private final Optional intVal; + private final Optional doubleVal; + private final Optional booleanVal; + private final Optional floatVal; + private final Optional longVal; + private final Optional stringVal; + private final Optional dateVal; + private final Optional> enumVal; + + private TaskitObject(Optional objectVal, + Optional i32Val, + Optional doubleVal, + Optional bVal, + Optional floatVal, + Optional i64Val, + Optional stringVal, + Optional dateVal, + Optional> enumVal) { + this.objectVal = objectVal; + this.intVal = i32Val; + this.doubleVal = doubleVal; + this.booleanVal = bVal; + this.floatVal = floatVal; + this.longVal = i64Val; + this.stringVal = stringVal; + this.dateVal = dateVal; + this.enumVal = enumVal; + } + + public TaskitObject(Object objectVal) { + this(Optional.of(objectVal), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), + Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + } + + public TaskitObject(Integer intVal) { + this(Optional.empty(), Optional.of(intVal), Optional.empty(), Optional.empty(), Optional.empty(), + Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + } + + public TaskitObject(Double doubleVal) { + this(Optional.empty(), Optional.empty(), Optional.of(doubleVal), Optional.empty(), Optional.empty(), + Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + } + + public TaskitObject(Boolean booleanVal) { + this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(booleanVal), Optional.empty(), + Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + } + + public TaskitObject(Float floatVal) { + this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(floatVal), + Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + } + + public TaskitObject(Long longVal) { + this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), + Optional.of(longVal), Optional.empty(), Optional.empty(), Optional.empty()); + } + + public TaskitObject(String stringVal) { + this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), + Optional.of(stringVal), Optional.empty(), Optional.empty()); + } + + public TaskitObject(LocalDate dateVal) { + this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), + Optional.empty(), Optional.of(dateVal), Optional.empty()); + } + + public TaskitObject(Enum enumVal) { + this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), + Optional.empty(), Optional.empty(), Optional.of(enumVal)); + } + + public boolean hasObjectVal() { + return objectVal.isPresent(); + } + + public boolean hasIntegerVal() { + return intVal.isPresent(); + } + + public boolean hasDoubleVal() { + return doubleVal.isPresent(); + } + + public boolean hasBooleanVal() { + return booleanVal.isPresent(); + } + + public boolean hasFloatVal() { + return floatVal.isPresent(); + } + + public boolean hasLongVal() { + return longVal.isPresent(); + } + + public boolean hasStringVal() { + return stringVal.isPresent(); + } + + public boolean hasDateVal() { + return dateVal.isPresent(); + } + + public boolean hasEnumVal() { + return enumVal.isPresent(); + } + + public Object getObjectVal() { + if (!hasObjectVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + + return objectVal.get(); + } + + public Integer getIntegerVal() { + if (!hasIntegerVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return intVal.get(); + } + + public Double getDoubleVal() { + if (!hasDoubleVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return doubleVal.get(); + } + + public Boolean getBooleanVal() { + if (!hasBooleanVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return booleanVal.get(); + } + + public Float getFloatVal() { + if (!hasFloatVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return floatVal.get(); + } + + public Long getLongVal() { + if (!hasLongVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return longVal.get(); + } + + public String getStringVal() { + if (!hasStringVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return stringVal.get(); + } + + public LocalDate getDateVal() { + if (!hasDateVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return dateVal.get(); + } + + public Enum getEnumVal() { + if (!hasEnumVal()) { + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + return enumVal.get(); + } +} diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java index 3d1cace..14811c8 100644 --- a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java @@ -18,6 +18,7 @@ import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.IntegerTranslationSpec; import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.LongTranslationSpec; import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.StringTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.TaskitObjectTranslationSpec; /** * Translator for the primitive Protobuf Translation Specs @@ -42,6 +43,7 @@ protected static List getTranslationSpecs() { list.add(new DateTranslationSpec()); list.add(new EnumTranslationSpec()); list.add(new AnyTranslationSpec()); + list.add(new TaskitObjectTranslationSpec()); return list; } diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java new file mode 100644 index 0000000..6d96fb3 --- /dev/null +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java @@ -0,0 +1,111 @@ +package gov.hhs.aspr.ms.taskit.protobuf.translation.specs; + +import java.time.LocalDate; + +import com.google.protobuf.Any; +import com.google.type.Date; + +import gov.hhs.aspr.ms.taskit.protobuf.engine.ProtobufTaskitError; +import gov.hhs.aspr.ms.taskit.protobuf.engine.TaskitObject; +import gov.hhs.aspr.ms.taskit.protobuf.objects.TaskitObjectInput; +import gov.hhs.aspr.ms.taskit.protobuf.objects.WrapperEnumValue; +import gov.hhs.aspr.ms.taskit.protobuf.translation.ProtobufTranslationSpec; +import gov.hhs.aspr.ms.util.errors.ContractException; + +/** + * TranslationSpec that defines how to translate from a {@link TaskitObject} to + * a + * {@link TaskitObjectInput} type and vice versa. + */ +public class TaskitObjectTranslationSpec extends ProtobufTranslationSpec { + + @Override + protected TaskitObject translateInputObject(TaskitObjectInput inputObject) { + if (inputObject.hasI32Val()) { + return new TaskitObject(inputObject.getI32Val()); + } + + if (inputObject.hasI64Val()) { + return new TaskitObject(inputObject.getI64Val()); + } + + if (inputObject.hasDVal()) { + return new TaskitObject(inputObject.getDVal()); + } + + if (inputObject.hasFVal()) { + return new TaskitObject(inputObject.getFVal()); + } + + if (inputObject.hasSVal()) { + return new TaskitObject(inputObject.getSVal()); + } + + if (inputObject.hasDateVal()) { + return new TaskitObject((LocalDate) this.taskitEngine.translateObject(inputObject.getDateVal())); + } + + if (inputObject.hasEnumVal()) { + return new TaskitObject((Enum) this.taskitEngine.translateObject(inputObject.getEnumVal())); + } + + if (inputObject.hasMVal()) { + Object o = this.taskitEngine.getObjectFromAny(inputObject.getMVal()); + return new TaskitObject(o); + } + + throw new ContractException(ProtobufTaskitError.MALFORMED_TASKIT_OBJECT); + } + + @Override + protected TaskitObjectInput translateAppObject(TaskitObject appObject) { + if (appObject.hasIntegerVal()) { + return TaskitObjectInput.newBuilder().setI32Val(appObject.getIntegerVal()).build(); + } + + if (appObject.hasLongVal()) { + return TaskitObjectInput.newBuilder().setI64Val(appObject.getLongVal()).build(); + } + + if (appObject.hasDoubleVal()) { + return TaskitObjectInput.newBuilder().setDVal(appObject.getDoubleVal()).build(); + } + + if (appObject.hasFloatVal()) { + return TaskitObjectInput.newBuilder().setFVal(appObject.getFloatVal()).build(); + } + + if (appObject.hasStringVal()) { + return TaskitObjectInput.newBuilder().setSVal(appObject.getStringVal()).build(); + } + + if (appObject.hasDateVal()) { + return TaskitObjectInput.newBuilder() + .setDateVal((Date) this.taskitEngine.translateObject(appObject.getDateVal())).build(); + } + + if (appObject.hasEnumVal()) { + return TaskitObjectInput.newBuilder() + .setEnumVal((WrapperEnumValue) this.taskitEngine + .translateObjectAsClassSafe(Enum.class.cast(appObject.getEnumVal()), Enum.class)) + .build(); + } + + if (appObject.hasObjectVal()) { + Any any = this.taskitEngine.getAnyFromObject(appObject.getObjectVal()); + return TaskitObjectInput.newBuilder().setMVal(any).build(); + } + + throw new ContractException(ProtobufTaskitError.MALFORMED_TASKIT_OBJECT); + } + + @Override + public Class getAppObjectClass() { + return TaskitObject.class; + } + + @Override + public Class getInputObjectClass() { + return TaskitObjectInput.class; + } +} diff --git a/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto b/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto index eb9ac79..37e6105 100644 --- a/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto +++ b/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto @@ -4,8 +4,22 @@ package gov.hhs.aspr.ms.taskit.protobuf; option java_multiple_files = true; option java_package = "gov.hhs.aspr.ms.taskit.protobuf.objects"; +import "google/type/date.proto"; +import "google/protobuf/any.proto"; message WrapperEnumValue { string enumTypeUrl = 1; string value = 2; +} + +message TaskitObjectInput { + optional google.protobuf.Any mVal = 1; + optional int32 i32Val = 2; + optional double dVal = 3; + optional bool bVal = 4; + optional float fVal = 5; + optional int64 i64Val = 6; + optional string sVal = 7; + optional google.type.Date dateVal = 8; + optional WrapperEnumValue enumVal = 9; } \ No newline at end of file diff --git a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java new file mode 100644 index 0000000..b3d7456 --- /dev/null +++ b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java @@ -0,0 +1,1018 @@ +package gov.hhs.aspr.ms.taskit.protobuf.engine; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.LocalDate; + +import org.junit.jupiter.api.Test; + +import gov.hhs.aspr.ms.util.annotations.UnitTag; +import gov.hhs.aspr.ms.util.annotations.UnitTestConstructor; +import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; +import gov.hhs.aspr.ms.util.errors.ContractException; + +public class AT_TaskitObject { + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testObjectConstructor() { + Object value = new Object() {}; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertTrue(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getObjectVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testIntConstructor() { + Integer value = 100; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertTrue(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getIntegerVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testDoubleConstructor() { + Double value = 5.5; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertTrue(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getDoubleVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testBooleanConstructor() { + Boolean value = true; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertTrue(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getBooleanVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testFloatConstructor() { + Float value = 5.5f; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertTrue(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getFloatVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testLongConstructor() { + Long value = 100L; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertTrue(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getLongVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testStringConstructor() { + String value = "Test"; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertTrue(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getStringVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testDateConstructor() { + LocalDate value = LocalDate.now(); + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertTrue(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getDateVal()); + } + + @Test + @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) + public void testEnumConstructor() { + Enum value = ProtobufTaskitError.INVALID_INPUT_CLASS; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertTrue(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasObjectVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasObjectVal() { + Object value = new Object() {}; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertTrue(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasIntVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasIntVal() { + Integer value = 100; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertTrue(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasDoubleVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasDoubleVal() { + Double value = 5.5; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertTrue(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasBoolVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasBoolVal() { + Boolean value = true; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertTrue(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasFloatVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasFloatVal() { + Float value = 5.5f; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertTrue(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasLongVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasLongVal() { + Long value = 100L; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertTrue(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasStringVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasStringVal() { + String value = "Test"; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertTrue(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasDateVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasDateVal() { + LocalDate value = LocalDate.now(); + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertTrue(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "hasEnumVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testHasEnumVal() { + Enum value = ProtobufTaskitError.INVALID_INPUT_CLASS; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertTrue(taskitObject.hasEnumVal()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getObjectVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetObjectVal() { + Object value = new Object() {}; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertTrue(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getObjectVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getIntVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetIntVal() { + Integer value = 100; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertTrue(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getIntegerVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getDoubleVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetDoubleVal() { + Double value = 5.5; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertTrue(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getDoubleVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getBooleanVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetBooleanVal() { + Boolean value = true; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertTrue(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getBooleanVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getFloatVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetFloatVal() { + Float value = 5.5f; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertTrue(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getFloatVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getLongVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetLongVal() { + Long value = 100L; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertTrue(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getLongVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getStringVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetStringVal() { + String value = "Test"; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertTrue(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getStringVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getDateVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetDateVal() { + LocalDate value = LocalDate.now(); + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertTrue(taskitObject.hasDateVal()); + assertFalse(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getDateVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getEnumVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } + + @Test + @UnitTestMethod(target = TaskitObject.class, name = "getEnumVal", args = {}, tags = { UnitTag.INCOMPLETE }) + public void testGetEnumVal() { + Enum value = ProtobufTaskitError.INVALID_INPUT_CLASS; + TaskitObject taskitObject = new TaskitObject(value); + + assertNotNull(taskitObject); + + assertFalse(taskitObject.hasObjectVal()); + assertFalse(taskitObject.hasIntegerVal()); + assertFalse(taskitObject.hasDoubleVal()); + assertFalse(taskitObject.hasBooleanVal()); + assertFalse(taskitObject.hasFloatVal()); + assertFalse(taskitObject.hasLongVal()); + assertFalse(taskitObject.hasStringVal()); + assertFalse(taskitObject.hasDateVal()); + assertTrue(taskitObject.hasEnumVal()); + + assertEquals(value, taskitObject.getEnumVal()); + + // precondition: + // attempt to get value that was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + taskitObject.getObjectVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getIntegerVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDoubleVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getBooleanVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getFloatVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getLongVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getStringVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + + contractException = assertThrows(ContractException.class, () -> { + taskitObject.getDateVal(); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); + } +} diff --git a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java new file mode 100644 index 0000000..d79db47 --- /dev/null +++ b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java @@ -0,0 +1,49 @@ +package gov.hhs.aspr.ms.taskit.protobuf.translation.specs; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; + +import gov.hhs.aspr.ms.taskit.protobuf.engine.TaskitObject; +import gov.hhs.aspr.ms.taskit.protobuf.objects.TaskitObjectInput; +import gov.hhs.aspr.ms.util.annotations.UnitTestConstructor; +import gov.hhs.aspr.ms.util.annotations.UnitTestForCoverage; +import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; + +public class AT_TaskitObjectTranslationSpec { + + @Test + @UnitTestConstructor(target = TaskitObjectTranslationSpec.class, args = {}) + public void testConstructor() { + assertNotNull(new TaskitObjectTranslationSpec()); + } + + @Test + @UnitTestForCoverage + public void testConvertInputObject() { + // TODO: implement test + } + + @Test + @UnitTestForCoverage + public void testConvertAppObject() { + // TODO: implement test + } + + @Test + @UnitTestMethod(target = TaskitObjectTranslationSpec.class, name = "getAppObjectClass", args = {}) + public void testGetAppObjectClass() { + TaskitObjectTranslationSpec TaskitObjectTranslationSpec = new TaskitObjectTranslationSpec(); + + assertEquals(TaskitObject.class, TaskitObjectTranslationSpec.getAppObjectClass()); + } + + @Test + @UnitTestMethod(target = TaskitObjectTranslationSpec.class, name = "getInputObjectClass", args = {}) + public void testGetInputObjectClass() { + TaskitObjectTranslationSpec TaskitObjectTranslationSpec = new TaskitObjectTranslationSpec(); + + assertEquals(TaskitObjectInput.class, TaskitObjectTranslationSpec.getInputObjectClass()); + } +} From d5a57a1e49b4c2bf92ff6a1b165c772161e18de1 Mon Sep 17 00:00:00 2001 From: Zachary Bischoff <116595361+bischoffz@users.noreply.github.com> Date: Mon, 10 Feb 2025 19:50:36 -0500 Subject: [PATCH 11/16] new taskit object design (#98) --- .../taskit/protobuf/engine/TaskitObject.java | 184 --- .../protobuf/engine/TaskitObjectHelper.java | 78 ++ .../translation/ProtobufTranslator.java | 2 - .../specs/TaskitObjectTranslationSpec.java | 111 -- .../hhs/aspr/ms/taskit/protobuf/core.proto | 21 +- .../protobuf/engine/AT_TaskitObject.java | 1018 ----------------- .../engine/AT_TaskitObjectHelper.java | 75 ++ .../specs/AT_TaskitObjectTranslationSpec.java | 49 - 8 files changed, 165 insertions(+), 1373 deletions(-) delete mode 100644 protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java create mode 100644 protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java delete mode 100644 protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java delete mode 100644 protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java create mode 100644 protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java delete mode 100644 protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java deleted file mode 100644 index 6b4571f..0000000 --- a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObject.java +++ /dev/null @@ -1,184 +0,0 @@ -package gov.hhs.aspr.ms.taskit.protobuf.engine; - -import java.time.LocalDate; -import java.util.Optional; - -import gov.hhs.aspr.ms.util.errors.ContractException; - -public final class TaskitObject { - - private final Optional objectVal; - private final Optional intVal; - private final Optional doubleVal; - private final Optional booleanVal; - private final Optional floatVal; - private final Optional longVal; - private final Optional stringVal; - private final Optional dateVal; - private final Optional> enumVal; - - private TaskitObject(Optional objectVal, - Optional i32Val, - Optional doubleVal, - Optional bVal, - Optional floatVal, - Optional i64Val, - Optional stringVal, - Optional dateVal, - Optional> enumVal) { - this.objectVal = objectVal; - this.intVal = i32Val; - this.doubleVal = doubleVal; - this.booleanVal = bVal; - this.floatVal = floatVal; - this.longVal = i64Val; - this.stringVal = stringVal; - this.dateVal = dateVal; - this.enumVal = enumVal; - } - - public TaskitObject(Object objectVal) { - this(Optional.of(objectVal), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - public TaskitObject(Integer intVal) { - this(Optional.empty(), Optional.of(intVal), Optional.empty(), Optional.empty(), Optional.empty(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - public TaskitObject(Double doubleVal) { - this(Optional.empty(), Optional.empty(), Optional.of(doubleVal), Optional.empty(), Optional.empty(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - public TaskitObject(Boolean booleanVal) { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(booleanVal), Optional.empty(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - public TaskitObject(Float floatVal) { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.of(floatVal), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - public TaskitObject(Long longVal) { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), - Optional.of(longVal), Optional.empty(), Optional.empty(), Optional.empty()); - } - - public TaskitObject(String stringVal) { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), - Optional.of(stringVal), Optional.empty(), Optional.empty()); - } - - public TaskitObject(LocalDate dateVal) { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), - Optional.empty(), Optional.of(dateVal), Optional.empty()); - } - - public TaskitObject(Enum enumVal) { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), - Optional.empty(), Optional.empty(), Optional.of(enumVal)); - } - - public boolean hasObjectVal() { - return objectVal.isPresent(); - } - - public boolean hasIntegerVal() { - return intVal.isPresent(); - } - - public boolean hasDoubleVal() { - return doubleVal.isPresent(); - } - - public boolean hasBooleanVal() { - return booleanVal.isPresent(); - } - - public boolean hasFloatVal() { - return floatVal.isPresent(); - } - - public boolean hasLongVal() { - return longVal.isPresent(); - } - - public boolean hasStringVal() { - return stringVal.isPresent(); - } - - public boolean hasDateVal() { - return dateVal.isPresent(); - } - - public boolean hasEnumVal() { - return enumVal.isPresent(); - } - - public Object getObjectVal() { - if (!hasObjectVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - - return objectVal.get(); - } - - public Integer getIntegerVal() { - if (!hasIntegerVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return intVal.get(); - } - - public Double getDoubleVal() { - if (!hasDoubleVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return doubleVal.get(); - } - - public Boolean getBooleanVal() { - if (!hasBooleanVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return booleanVal.get(); - } - - public Float getFloatVal() { - if (!hasFloatVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return floatVal.get(); - } - - public Long getLongVal() { - if (!hasLongVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return longVal.get(); - } - - public String getStringVal() { - if (!hasStringVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return stringVal.get(); - } - - public LocalDate getDateVal() { - if (!hasDateVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return dateVal.get(); - } - - public Enum getEnumVal() { - if (!hasEnumVal()) { - throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); - } - return enumVal.get(); - } -} diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java new file mode 100644 index 0000000..3c8368f --- /dev/null +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java @@ -0,0 +1,78 @@ +package gov.hhs.aspr.ms.taskit.protobuf.engine; + +import com.google.protobuf.Any; +import com.google.type.Date; + +import gov.hhs.aspr.ms.taskit.protobuf.objects.TaskitObjectInput; +import gov.hhs.aspr.ms.taskit.protobuf.objects.WrapperEnumValue; +import gov.hhs.aspr.ms.util.errors.ContractException; + +public final class TaskitObjectHelper { + + private TaskitObjectHelper() { + } + + public static Object getValue(TaskitObjectInput taskitObjectInput) { + TaskitObjectInput.ValueCase valueCase = taskitObjectInput.getValueCase(); + + switch (valueCase) { + case BVAL: + return taskitObjectInput.getBVal(); + case DATEVAL: + return taskitObjectInput.getDateVal(); + case DVAL: + return taskitObjectInput.getDVal(); + case ENUMVAL: + return taskitObjectInput.getEnumVal(); + case FVAL: + return taskitObjectInput.getFVal(); + case I32VAL: + return taskitObjectInput.getI32Val(); + case I64VAL: + return taskitObjectInput.getI64Val(); + case MVAL: + return taskitObjectInput.getMVal(); + case SVAL: + return taskitObjectInput.getSVal(); + case VALUE_NOT_SET: + default: + throw new ContractException(ProtobufTaskitError.INVALID_RETRIEVAL); + } + } + + public static TaskitObjectInput getIntegerTaskitInput(Integer value) { + return TaskitObjectInput.newBuilder().setI32Val(value).build(); + } + + public static TaskitObjectInput getAnyTaskitInput(Any value) { + return TaskitObjectInput.newBuilder().setMVal(value).build(); + } + + public static TaskitObjectInput getLongTaskitInput(Long value) { + return TaskitObjectInput.newBuilder().setI64Val(value).build(); + } + + public static TaskitObjectInput getFloatTaskitInput(Float value) { + return TaskitObjectInput.newBuilder().setFVal(value).build(); + } + + public static TaskitObjectInput getDoubleTaskitInput(Double value) { + return TaskitObjectInput.newBuilder().setDVal(value).build(); + } + + public static TaskitObjectInput getDateTaskitInput(Date value) { + return TaskitObjectInput.newBuilder().setDateVal(value).build(); + } + + public static TaskitObjectInput getStringTaskitInput(String value) { + return TaskitObjectInput.newBuilder().setSVal(value).build(); + } + + public static TaskitObjectInput getEnumTaskitInput(WrapperEnumValue value) { + return TaskitObjectInput.newBuilder().setEnumVal(value).build(); + } + + public static TaskitObjectInput getBooleanTaskitInput(Boolean value) { + return TaskitObjectInput.newBuilder().setBVal(value).build(); + } +} diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java index 14811c8..3d1cace 100644 --- a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/ProtobufTranslator.java @@ -18,7 +18,6 @@ import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.IntegerTranslationSpec; import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.LongTranslationSpec; import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.StringTranslationSpec; -import gov.hhs.aspr.ms.taskit.protobuf.translation.specs.TaskitObjectTranslationSpec; /** * Translator for the primitive Protobuf Translation Specs @@ -43,7 +42,6 @@ protected static List getTranslationSpecs() { list.add(new DateTranslationSpec()); list.add(new EnumTranslationSpec()); list.add(new AnyTranslationSpec()); - list.add(new TaskitObjectTranslationSpec()); return list; } diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java deleted file mode 100644 index 6d96fb3..0000000 --- a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/TaskitObjectTranslationSpec.java +++ /dev/null @@ -1,111 +0,0 @@ -package gov.hhs.aspr.ms.taskit.protobuf.translation.specs; - -import java.time.LocalDate; - -import com.google.protobuf.Any; -import com.google.type.Date; - -import gov.hhs.aspr.ms.taskit.protobuf.engine.ProtobufTaskitError; -import gov.hhs.aspr.ms.taskit.protobuf.engine.TaskitObject; -import gov.hhs.aspr.ms.taskit.protobuf.objects.TaskitObjectInput; -import gov.hhs.aspr.ms.taskit.protobuf.objects.WrapperEnumValue; -import gov.hhs.aspr.ms.taskit.protobuf.translation.ProtobufTranslationSpec; -import gov.hhs.aspr.ms.util.errors.ContractException; - -/** - * TranslationSpec that defines how to translate from a {@link TaskitObject} to - * a - * {@link TaskitObjectInput} type and vice versa. - */ -public class TaskitObjectTranslationSpec extends ProtobufTranslationSpec { - - @Override - protected TaskitObject translateInputObject(TaskitObjectInput inputObject) { - if (inputObject.hasI32Val()) { - return new TaskitObject(inputObject.getI32Val()); - } - - if (inputObject.hasI64Val()) { - return new TaskitObject(inputObject.getI64Val()); - } - - if (inputObject.hasDVal()) { - return new TaskitObject(inputObject.getDVal()); - } - - if (inputObject.hasFVal()) { - return new TaskitObject(inputObject.getFVal()); - } - - if (inputObject.hasSVal()) { - return new TaskitObject(inputObject.getSVal()); - } - - if (inputObject.hasDateVal()) { - return new TaskitObject((LocalDate) this.taskitEngine.translateObject(inputObject.getDateVal())); - } - - if (inputObject.hasEnumVal()) { - return new TaskitObject((Enum) this.taskitEngine.translateObject(inputObject.getEnumVal())); - } - - if (inputObject.hasMVal()) { - Object o = this.taskitEngine.getObjectFromAny(inputObject.getMVal()); - return new TaskitObject(o); - } - - throw new ContractException(ProtobufTaskitError.MALFORMED_TASKIT_OBJECT); - } - - @Override - protected TaskitObjectInput translateAppObject(TaskitObject appObject) { - if (appObject.hasIntegerVal()) { - return TaskitObjectInput.newBuilder().setI32Val(appObject.getIntegerVal()).build(); - } - - if (appObject.hasLongVal()) { - return TaskitObjectInput.newBuilder().setI64Val(appObject.getLongVal()).build(); - } - - if (appObject.hasDoubleVal()) { - return TaskitObjectInput.newBuilder().setDVal(appObject.getDoubleVal()).build(); - } - - if (appObject.hasFloatVal()) { - return TaskitObjectInput.newBuilder().setFVal(appObject.getFloatVal()).build(); - } - - if (appObject.hasStringVal()) { - return TaskitObjectInput.newBuilder().setSVal(appObject.getStringVal()).build(); - } - - if (appObject.hasDateVal()) { - return TaskitObjectInput.newBuilder() - .setDateVal((Date) this.taskitEngine.translateObject(appObject.getDateVal())).build(); - } - - if (appObject.hasEnumVal()) { - return TaskitObjectInput.newBuilder() - .setEnumVal((WrapperEnumValue) this.taskitEngine - .translateObjectAsClassSafe(Enum.class.cast(appObject.getEnumVal()), Enum.class)) - .build(); - } - - if (appObject.hasObjectVal()) { - Any any = this.taskitEngine.getAnyFromObject(appObject.getObjectVal()); - return TaskitObjectInput.newBuilder().setMVal(any).build(); - } - - throw new ContractException(ProtobufTaskitError.MALFORMED_TASKIT_OBJECT); - } - - @Override - public Class getAppObjectClass() { - return TaskitObject.class; - } - - @Override - public Class getInputObjectClass() { - return TaskitObjectInput.class; - } -} diff --git a/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto b/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto index 37e6105..7066f63 100644 --- a/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto +++ b/protobuf/src/main/proto/gov/hhs/aspr/ms/taskit/protobuf/core.proto @@ -13,13 +13,16 @@ message WrapperEnumValue { } message TaskitObjectInput { - optional google.protobuf.Any mVal = 1; - optional int32 i32Val = 2; - optional double dVal = 3; - optional bool bVal = 4; - optional float fVal = 5; - optional int64 i64Val = 6; - optional string sVal = 7; - optional google.type.Date dateVal = 8; - optional WrapperEnumValue enumVal = 9; + oneof value { + google.protobuf.Any mVal = 1; + int32 i32Val = 2; + double dVal = 3; + bool bVal = 4; + float fVal = 5; + int64 i64Val = 6; + string sVal = 7; + google.type.Date dateVal = 8; + WrapperEnumValue enumVal = 9; + } + } \ No newline at end of file diff --git a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java deleted file mode 100644 index b3d7456..0000000 --- a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObject.java +++ /dev/null @@ -1,1018 +0,0 @@ -package gov.hhs.aspr.ms.taskit.protobuf.engine; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.time.LocalDate; - -import org.junit.jupiter.api.Test; - -import gov.hhs.aspr.ms.util.annotations.UnitTag; -import gov.hhs.aspr.ms.util.annotations.UnitTestConstructor; -import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; -import gov.hhs.aspr.ms.util.errors.ContractException; - -public class AT_TaskitObject { - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testObjectConstructor() { - Object value = new Object() {}; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertTrue(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getObjectVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testIntConstructor() { - Integer value = 100; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertTrue(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getIntegerVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testDoubleConstructor() { - Double value = 5.5; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertTrue(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getDoubleVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testBooleanConstructor() { - Boolean value = true; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertTrue(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getBooleanVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testFloatConstructor() { - Float value = 5.5f; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertTrue(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getFloatVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testLongConstructor() { - Long value = 100L; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertTrue(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getLongVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testStringConstructor() { - String value = "Test"; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertTrue(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getStringVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testDateConstructor() { - LocalDate value = LocalDate.now(); - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertTrue(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getDateVal()); - } - - @Test - @UnitTestConstructor(target = TaskitObject.class, args = {}, tags = { UnitTag.INCOMPLETE }) - public void testEnumConstructor() { - Enum value = ProtobufTaskitError.INVALID_INPUT_CLASS; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertTrue(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasObjectVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasObjectVal() { - Object value = new Object() {}; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertTrue(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasIntVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasIntVal() { - Integer value = 100; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertTrue(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasDoubleVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasDoubleVal() { - Double value = 5.5; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertTrue(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasBoolVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasBoolVal() { - Boolean value = true; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertTrue(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasFloatVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasFloatVal() { - Float value = 5.5f; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertTrue(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasLongVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasLongVal() { - Long value = 100L; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertTrue(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasStringVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasStringVal() { - String value = "Test"; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertTrue(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasDateVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasDateVal() { - LocalDate value = LocalDate.now(); - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertTrue(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "hasEnumVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testHasEnumVal() { - Enum value = ProtobufTaskitError.INVALID_INPUT_CLASS; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertTrue(taskitObject.hasEnumVal()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getObjectVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetObjectVal() { - Object value = new Object() {}; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertTrue(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getObjectVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getIntVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetIntVal() { - Integer value = 100; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertTrue(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getIntegerVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getDoubleVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetDoubleVal() { - Double value = 5.5; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertTrue(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getDoubleVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getBooleanVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetBooleanVal() { - Boolean value = true; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertTrue(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getBooleanVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getFloatVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetFloatVal() { - Float value = 5.5f; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertTrue(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getFloatVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getLongVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetLongVal() { - Long value = 100L; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertTrue(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getLongVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getStringVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetStringVal() { - String value = "Test"; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertTrue(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getStringVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getDateVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetDateVal() { - LocalDate value = LocalDate.now(); - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertTrue(taskitObject.hasDateVal()); - assertFalse(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getDateVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getEnumVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } - - @Test - @UnitTestMethod(target = TaskitObject.class, name = "getEnumVal", args = {}, tags = { UnitTag.INCOMPLETE }) - public void testGetEnumVal() { - Enum value = ProtobufTaskitError.INVALID_INPUT_CLASS; - TaskitObject taskitObject = new TaskitObject(value); - - assertNotNull(taskitObject); - - assertFalse(taskitObject.hasObjectVal()); - assertFalse(taskitObject.hasIntegerVal()); - assertFalse(taskitObject.hasDoubleVal()); - assertFalse(taskitObject.hasBooleanVal()); - assertFalse(taskitObject.hasFloatVal()); - assertFalse(taskitObject.hasLongVal()); - assertFalse(taskitObject.hasStringVal()); - assertFalse(taskitObject.hasDateVal()); - assertTrue(taskitObject.hasEnumVal()); - - assertEquals(value, taskitObject.getEnumVal()); - - // precondition: - // attempt to get value that was not set - ContractException contractException = assertThrows(ContractException.class, () -> { - taskitObject.getObjectVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getIntegerVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDoubleVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getBooleanVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getFloatVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getLongVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getStringVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - - contractException = assertThrows(ContractException.class, () -> { - taskitObject.getDateVal(); - }); - - assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); - } -} diff --git a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java new file mode 100644 index 0000000..db59fb6 --- /dev/null +++ b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java @@ -0,0 +1,75 @@ +package gov.hhs.aspr.ms.taskit.protobuf.engine; + +import org.junit.jupiter.api.Test; + +import com.google.protobuf.Any; +import com.google.type.Date; + +import gov.hhs.aspr.ms.taskit.protobuf.objects.TaskitObjectInput; +import gov.hhs.aspr.ms.taskit.protobuf.objects.WrapperEnumValue; +import gov.hhs.aspr.ms.util.annotations.UnitTag; +import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; + +public class AT_TaskitObjectHelper { + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getValue", args = { + TaskitObjectInput.class }, tags = UnitTag.INCOMPLETE) + public void testHasObjectVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getIntegerTaskitInput", args = { Integer.class }, tags = UnitTag.INCOMPLETE) + public void testGetObjectVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getAnyTaskitInput", args = { Any.class }, tags = UnitTag.INCOMPLETE) + public void testGetIntVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getLongTaskitInput", args = { Long.class }, tags = UnitTag.INCOMPLETE) + public void testGetDoubleVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getFloatTaskitInput", args = { Float.class }, tags = UnitTag.INCOMPLETE) + public void testGetBooleanVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getDoubleTaskitInput", args = { Double.class }, tags = UnitTag.INCOMPLETE) + public void testGetFloatVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getDateTaskitInput", args = { Date.class }, tags = UnitTag.INCOMPLETE) + public void testGetLongVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getStringTaskitInput", args = { String.class }, tags = UnitTag.INCOMPLETE) + public void testGetStringVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getEnumTaskitInput", args = { WrapperEnumValue.class }, tags = UnitTag.INCOMPLETE) + public void testGetDateVal() { + + } + + @Test + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getBooleanTaskitInput", args = { Boolean.class }, tags = UnitTag.INCOMPLETE) + public void testGetEnumVal() { + + } +} diff --git a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java deleted file mode 100644 index d79db47..0000000 --- a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/translation/specs/AT_TaskitObjectTranslationSpec.java +++ /dev/null @@ -1,49 +0,0 @@ -package gov.hhs.aspr.ms.taskit.protobuf.translation.specs; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import org.junit.jupiter.api.Test; - -import gov.hhs.aspr.ms.taskit.protobuf.engine.TaskitObject; -import gov.hhs.aspr.ms.taskit.protobuf.objects.TaskitObjectInput; -import gov.hhs.aspr.ms.util.annotations.UnitTestConstructor; -import gov.hhs.aspr.ms.util.annotations.UnitTestForCoverage; -import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; - -public class AT_TaskitObjectTranslationSpec { - - @Test - @UnitTestConstructor(target = TaskitObjectTranslationSpec.class, args = {}) - public void testConstructor() { - assertNotNull(new TaskitObjectTranslationSpec()); - } - - @Test - @UnitTestForCoverage - public void testConvertInputObject() { - // TODO: implement test - } - - @Test - @UnitTestForCoverage - public void testConvertAppObject() { - // TODO: implement test - } - - @Test - @UnitTestMethod(target = TaskitObjectTranslationSpec.class, name = "getAppObjectClass", args = {}) - public void testGetAppObjectClass() { - TaskitObjectTranslationSpec TaskitObjectTranslationSpec = new TaskitObjectTranslationSpec(); - - assertEquals(TaskitObject.class, TaskitObjectTranslationSpec.getAppObjectClass()); - } - - @Test - @UnitTestMethod(target = TaskitObjectTranslationSpec.class, name = "getInputObjectClass", args = {}) - public void testGetInputObjectClass() { - TaskitObjectTranslationSpec TaskitObjectTranslationSpec = new TaskitObjectTranslationSpec(); - - assertEquals(TaskitObjectInput.class, TaskitObjectTranslationSpec.getInputObjectClass()); - } -} From 91f95ef9b1fb4a4a60b79467181c6848941e752c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 19:50:48 -0500 Subject: [PATCH 12/16] Bump com.google.code.gson:gson in the dependencies group (#96) Bumps the dependencies group with 1 update: [com.google.code.gson:gson](https://github.com/google/gson). Updates `com.google.code.gson:gson` from 2.11.0 to 2.12.1 - [Release notes](https://github.com/google/gson/releases) - [Changelog](https://github.com/google/gson/blob/main/CHANGELOG.md) - [Commits](https://github.com/google/gson/compare/gson-parent-2.11.0...gson-parent-2.12.1) --- updated-dependencies: - dependency-name: com.google.code.gson:gson dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3779357..c72dc66 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,7 @@ 0.7.0 - 2.11.0 + 2.12.1 4.4.0-SNAPSHOT 5.11.4 0.8.12 From 8b28d4460cfb99247e1eba75646267a9deaab7da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 19:50:57 -0500 Subject: [PATCH 13/16] Bump the protobuf-dependencies group with 3 updates (#95) Bumps the protobuf-dependencies group with 3 updates: [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf), com.google.protobuf:protobuf-java-util and [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf). Updates `com.google.protobuf:protobuf-java` from 3.25.5 to 3.25.6 - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.25.5...v3.25.6) Updates `com.google.protobuf:protobuf-java-util` from 3.25.5 to 3.25.6 Updates `com.google.protobuf:protobuf-java-util` from 3.25.5 to 3.25.6 Updates `com.google.protobuf:protoc` from 3.25.5 to 3.25.6 - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.25.5...v3.25.6) --- updated-dependencies: - dependency-name: com.google.protobuf:protobuf-java dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies - dependency-name: com.google.protobuf:protobuf-java-util dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies - dependency-name: com.google.protobuf:protobuf-java-util dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies - dependency-name: com.google.protobuf:protoc dependency-type: direct:production update-type: version-update:semver-patch dependency-group: protobuf-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- protobuf/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protobuf/pom.xml b/protobuf/pom.xml index dbc8795..8c847bb 100644 --- a/protobuf/pom.xml +++ b/protobuf/pom.xml @@ -34,8 +34,8 @@ 1.4.1 - 3.25.5 - 3.25.5 + 3.25.6 + 3.25.6 From 38e50de1ba38bc1d5b0017067a1524c9129a4b19 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Mon, 10 Feb 2025 21:32:57 -0500 Subject: [PATCH 14/16] update taskit object helper --- .../protobuf/engine/TaskitObjectHelper.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java index 3c8368f..c3886f2 100644 --- a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java @@ -40,6 +40,40 @@ public static Object getValue(TaskitObjectInput taskitObjectInput) { } } + public static TaskitObjectInput getTaskitObjectInput(Object value, ProtobufTaskitEngine taskitEngine) { + String valClass = value.getClass().getSimpleName(); + + if (value instanceof Enum) { + valClass = "Enum"; + } + + switch (valClass) { + case "int": + case "Integer": + return getIntegerTaskitInput((Integer) value); + case "long": + case "Long": + return getLongTaskitInput((Long) value); + case "double": + case "Double": + return getDoubleTaskitInput((Double) value); + case "float": + case "Float": + return getFloatTaskitInput((Float) value); + case "boolean": + case "Boolean": + return getBooleanTaskitInput((Boolean) value); + case "String": + return getStringTaskitInput((String) value); + case "LocalDate": + return getDateTaskitInput((Date) taskitEngine.translateObject(value)); + case "Enum": + return getEnumTaskitInput(taskitEngine.translateObjectAsClassSafe(Enum.class.cast(value), Enum.class)); + default: + return getAnyTaskitInput(taskitEngine.getAnyFromObject(value)); + } + } + public static TaskitObjectInput getIntegerTaskitInput(Integer value) { return TaskitObjectInput.newBuilder().setI32Val(value).build(); } From e5593c531a4445878576277785e80154a8964916 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Mon, 10 Feb 2025 22:01:01 -0500 Subject: [PATCH 15/16] update util version update to release version --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c72dc66..c07483c 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ - 5.1.0-SNAPSHOT + 5.1.0 UTF-8 @@ -70,7 +70,7 @@ 2.12.1 - 4.4.0-SNAPSHOT + 4.4.0 5.11.4 0.8.12 From 2c36596d9994374353f615672279a3fcda3ced94 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Mon, 10 Feb 2025 22:40:39 -0500 Subject: [PATCH 16/16] update test --- .../protobuf/engine/TaskitObjectHelper.java | 20 +- .../engine/AT_TaskitObjectHelper.java | 190 ++++++++++++++---- 2 files changed, 164 insertions(+), 46 deletions(-) diff --git a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java index c3886f2..8c2229d 100644 --- a/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java +++ b/protobuf/src/main/java/gov/hhs/aspr/ms/taskit/protobuf/engine/TaskitObjectHelper.java @@ -68,45 +68,45 @@ public static TaskitObjectInput getTaskitObjectInput(Object value, ProtobufTaski case "LocalDate": return getDateTaskitInput((Date) taskitEngine.translateObject(value)); case "Enum": - return getEnumTaskitInput(taskitEngine.translateObjectAsClassSafe(Enum.class.cast(value), Enum.class)); + return getEnumTaskitInput(taskitEngine.translateObjectAsClassSafe(Enum.class.cast(value), Enum.class)); default: return getAnyTaskitInput(taskitEngine.getAnyFromObject(value)); } } - public static TaskitObjectInput getIntegerTaskitInput(Integer value) { + static TaskitObjectInput getIntegerTaskitInput(Integer value) { return TaskitObjectInput.newBuilder().setI32Val(value).build(); } - public static TaskitObjectInput getAnyTaskitInput(Any value) { + static TaskitObjectInput getAnyTaskitInput(Any value) { return TaskitObjectInput.newBuilder().setMVal(value).build(); } - public static TaskitObjectInput getLongTaskitInput(Long value) { + static TaskitObjectInput getLongTaskitInput(Long value) { return TaskitObjectInput.newBuilder().setI64Val(value).build(); } - public static TaskitObjectInput getFloatTaskitInput(Float value) { + static TaskitObjectInput getFloatTaskitInput(Float value) { return TaskitObjectInput.newBuilder().setFVal(value).build(); } - public static TaskitObjectInput getDoubleTaskitInput(Double value) { + static TaskitObjectInput getDoubleTaskitInput(Double value) { return TaskitObjectInput.newBuilder().setDVal(value).build(); } - public static TaskitObjectInput getDateTaskitInput(Date value) { + static TaskitObjectInput getDateTaskitInput(Date value) { return TaskitObjectInput.newBuilder().setDateVal(value).build(); } - public static TaskitObjectInput getStringTaskitInput(String value) { + static TaskitObjectInput getStringTaskitInput(String value) { return TaskitObjectInput.newBuilder().setSVal(value).build(); } - public static TaskitObjectInput getEnumTaskitInput(WrapperEnumValue value) { + static TaskitObjectInput getEnumTaskitInput(WrapperEnumValue value) { return TaskitObjectInput.newBuilder().setEnumVal(value).build(); } - public static TaskitObjectInput getBooleanTaskitInput(Boolean value) { + static TaskitObjectInput getBooleanTaskitInput(Boolean value) { return TaskitObjectInput.newBuilder().setBVal(value).build(); } } diff --git a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java index db59fb6..e76a53f 100644 --- a/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java +++ b/protobuf/src/test/java/gov/hhs/aspr/ms/taskit/protobuf/engine/AT_TaskitObjectHelper.java @@ -1,75 +1,193 @@ package gov.hhs.aspr.ms.taskit.protobuf.engine; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.time.LocalDate; + import org.junit.jupiter.api.Test; import com.google.protobuf.Any; import com.google.type.Date; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.TestObjectUtil; +import gov.hhs.aspr.ms.taskit.core.testsupport.objects.TestAppEnum; +import gov.hhs.aspr.ms.taskit.core.testsupport.objects.TestAppObject; import gov.hhs.aspr.ms.taskit.protobuf.objects.TaskitObjectInput; import gov.hhs.aspr.ms.taskit.protobuf.objects.WrapperEnumValue; -import gov.hhs.aspr.ms.util.annotations.UnitTag; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.translation.specs.TestProtobufComplexObjectTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.translation.specs.TestProtobufEnumTranslationSpec; +import gov.hhs.aspr.ms.taskit.protobuf.testsupport.translation.specs.TestProtobufObjectTranslationSpec; import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; +import gov.hhs.aspr.ms.util.errors.ContractException; public class AT_TaskitObjectHelper { @Test @UnitTestMethod(target = TaskitObjectHelper.class, name = "getValue", args = { - TaskitObjectInput.class }, tags = UnitTag.INCOMPLETE) + TaskitObjectInput.class }) public void testHasObjectVal() { + Boolean expectedBoolean = false; + TaskitObjectInput input = TaskitObjectInput.newBuilder().setBVal(expectedBoolean).build(); - } + Object actualObject = TaskitObjectHelper.getValue(input); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getIntegerTaskitInput", args = { Integer.class }, tags = UnitTag.INCOMPLETE) - public void testGetObjectVal() { + assertEquals(expectedBoolean, actualObject); - } + Date expectedDate = Date.getDefaultInstance(); + input = TaskitObjectInput.newBuilder().setDateVal(expectedDate).build(); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getAnyTaskitInput", args = { Any.class }, tags = UnitTag.INCOMPLETE) - public void testGetIntVal() { + actualObject = TaskitObjectHelper.getValue(input); - } + assertEquals(expectedDate, actualObject); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getLongTaskitInput", args = { Long.class }, tags = UnitTag.INCOMPLETE) - public void testGetDoubleVal() { + Double expectedDouble = 0.0; + input = TaskitObjectInput.newBuilder().setDVal(expectedDouble).build(); - } + actualObject = TaskitObjectHelper.getValue(input); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getFloatTaskitInput", args = { Float.class }, tags = UnitTag.INCOMPLETE) - public void testGetBooleanVal() { + assertEquals(expectedDouble, actualObject); - } + WrapperEnumValue expectedEnum = WrapperEnumValue.getDefaultInstance(); + input = TaskitObjectInput.newBuilder().setEnumVal(expectedEnum).build(); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getDoubleTaskitInput", args = { Double.class }, tags = UnitTag.INCOMPLETE) - public void testGetFloatVal() { + actualObject = TaskitObjectHelper.getValue(input); - } + assertEquals(expectedEnum, actualObject); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getDateTaskitInput", args = { Date.class }, tags = UnitTag.INCOMPLETE) - public void testGetLongVal() { + Float expectedFloat = 0.0f; + input = TaskitObjectInput.newBuilder().setFVal(expectedFloat).build(); - } + actualObject = TaskitObjectHelper.getValue(input); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getStringTaskitInput", args = { String.class }, tags = UnitTag.INCOMPLETE) - public void testGetStringVal() { + assertEquals(expectedFloat, actualObject); - } + Integer expectedInt = 0; + input = TaskitObjectInput.newBuilder().setI32Val(expectedInt).build(); - @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getEnumTaskitInput", args = { WrapperEnumValue.class }, tags = UnitTag.INCOMPLETE) - public void testGetDateVal() { + actualObject = TaskitObjectHelper.getValue(input); + + assertEquals(expectedInt, actualObject); + + Long expectedLong = 0L; + input = TaskitObjectInput.newBuilder().setI64Val(expectedLong).build(); + + actualObject = TaskitObjectHelper.getValue(input); + + assertEquals(expectedLong, actualObject); + + Any expectedAny = Any.pack(WrapperEnumValue.getDefaultInstance()); + input = TaskitObjectInput.newBuilder().setMVal(expectedAny).build(); + + actualObject = TaskitObjectHelper.getValue(input); + + assertEquals(expectedAny, actualObject); + + String expectedString = ""; + input = TaskitObjectInput.newBuilder().setSVal(expectedString).build(); + + actualObject = TaskitObjectHelper.getValue(input); + + assertEquals(expectedString, actualObject); + // preconditions: + // value was not set + ContractException contractException = assertThrows(ContractException.class, () -> { + TaskitObjectHelper.getValue(TaskitObjectInput.newBuilder().build()); + }); + + assertEquals(ProtobufTaskitError.INVALID_RETRIEVAL, contractException.getErrorType()); } @Test - @UnitTestMethod(target = TaskitObjectHelper.class, name = "getBooleanTaskitInput", args = { Boolean.class }, tags = UnitTag.INCOMPLETE) - public void testGetEnumVal() { + @UnitTestMethod(target = TaskitObjectHelper.class, name = "getTaskitObjectInput", args = { Object.class, + ProtobufTaskitEngine.class }) + public void testGetTaskitObjectInput() { + + ProtobufTaskitEngine taskitEngine = ProtobufJsonTaskitEngine.builder() + .addTranslationSpec(new TestProtobufComplexObjectTranslationSpec()) + .addTranslationSpec(new TestProtobufEnumTranslationSpec()) + .addTranslationSpec(new TestProtobufObjectTranslationSpec()) + .build(); + + Boolean expectedBoolean = false; + TaskitObjectInput expectedInput = TaskitObjectInput.newBuilder().setBVal(expectedBoolean).build(); + TaskitObjectInput actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedBoolean, taskitEngine); + + assertEquals(expectedInput, actualInput); + + boolean expectedBoolean2 = false; + expectedInput = TaskitObjectInput.newBuilder().setBVal(expectedBoolean2).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedBoolean2, taskitEngine); + + assertEquals(expectedInput, actualInput); + + LocalDate date = LocalDate.now(); + Date expectedDate = taskitEngine.translateObject(date); + expectedInput = TaskitObjectInput.newBuilder().setDateVal(expectedDate).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(date, taskitEngine); + + assertEquals(expectedInput, actualInput); + + Double expectedDouble = 0.0; + expectedInput = TaskitObjectInput.newBuilder().setDVal(expectedDouble).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedDouble, taskitEngine); + + assertEquals(expectedInput, actualInput); + + WrapperEnumValue expectedEnum = taskitEngine.translateObjectAsClassSafe(TestAppEnum.TEST1, Enum.class); + expectedInput = TaskitObjectInput.newBuilder().setEnumVal(expectedEnum).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(TestAppEnum.TEST1, taskitEngine); + + assertEquals(expectedInput, actualInput); + + Float expectedFloat = 0.0f; + expectedInput = TaskitObjectInput.newBuilder().setFVal(expectedFloat).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedFloat, taskitEngine); + + assertEquals(expectedInput, actualInput); + + float expectedFloat2 = 0.0f; + expectedInput = TaskitObjectInput.newBuilder().setFVal(expectedFloat2).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedFloat2, taskitEngine); + + assertEquals(expectedInput, actualInput); + + Integer expectedInt = 0; + expectedInput = TaskitObjectInput.newBuilder().setI32Val(expectedInt).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedInt, taskitEngine); + + assertEquals(expectedInput, actualInput); + + int expectedInt2 = 0; + expectedInput = TaskitObjectInput.newBuilder().setI32Val(expectedInt2).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedInt2, taskitEngine); + + assertEquals(expectedInput, actualInput); + + Long expectedLong = 0L; + expectedInput = TaskitObjectInput.newBuilder().setI64Val(expectedLong).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedLong, taskitEngine); + + assertEquals(expectedInput, actualInput); + + long expectedLong2 = 0L; + expectedInput = TaskitObjectInput.newBuilder().setI64Val(expectedLong2).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedLong2, taskitEngine); + + assertEquals(expectedInput, actualInput); + + TestAppObject obj = TestObjectUtil.generateTestAppObject(); + Any expectedAny = taskitEngine.getAnyFromObject(obj); + expectedInput = TaskitObjectInput.newBuilder().setMVal(expectedAny).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(obj, taskitEngine); + + assertEquals(expectedInput, actualInput); + + String expectedString = ""; + expectedInput = TaskitObjectInput.newBuilder().setSVal(expectedString).build(); + actualInput = TaskitObjectHelper.getTaskitObjectInput(expectedString, taskitEngine); + assertEquals(expectedInput, actualInput); } }