From ea83af1410d1152d92264b1761aa661b65ebc4ca Mon Sep 17 00:00:00 2001 From: Anshuman Kishore Pandey Date: Wed, 25 Jun 2025 13:24:14 +0200 Subject: [PATCH 01/17] Port go-client changes to support the enhanced versioning feature --- .../internal/replay/ClockDecisionContext.java | 28 ++- .../internal/replay/DecisionContext.java | 12 ++ .../internal/replay/DecisionContextImpl.java | 13 ++ .../internal/sync/SyncDecisionContext.java | 5 + .../internal/sync/WorkflowInternal.java | 13 ++ .../cadence/workflow/GetVersionOptions.java | 108 ++++++++++++ .../com/uber/cadence/workflow/Workflow.java | 67 ++++++- .../cadence/workflow/WorkflowInterceptor.java | 11 ++ .../workflow/WorkflowInterceptorBase.java | 5 + .../workflow/EnhancedGetVersionTest.java | 166 ++++++++++++++++++ .../workflow/GetVersionOptionsTest.java | 98 +++++++++++ 11 files changed, 519 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/uber/cadence/workflow/GetVersionOptions.java create mode 100644 src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java create mode 100644 src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java diff --git a/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java b/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java index 339029edb..e8901ce43 100644 --- a/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java @@ -320,6 +320,11 @@ private void handleVersionMarker(MarkerRecordedEventAttributes attributes) { GetVersionResult getVersion( String changeId, DataConverter converter, int minSupported, int maxSupported) { + return getVersion(changeId, converter, minSupported, maxSupported, GetVersionOptions.newBuilder().build()); + } + + GetVersionResult getVersion( + String changeId, DataConverter converter, int minSupported, int maxSupported, GetVersionOptions options) { Predicate changeIdEquals = (attributes) -> { MarkerHandler.MarkerInterface markerData = @@ -328,6 +333,9 @@ GetVersionResult getVersion( }; decisions.addAllMissingVersionMarker(true, Optional.of(changeIdEquals)); + // Determine which version to use based on options + int versionToUse = determineVersionToUse(minSupported, maxSupported, options); + final MarkerHandler.HandleResult result = versionHandler.handle( changeId, @@ -336,14 +344,14 @@ GetVersionResult getVersion( if (stored.isPresent()) { return Optional.empty(); } - return Optional.of(converter.toData(maxSupported)); + return Optional.of(converter.toData(versionToUse)); }); final boolean isNewlyAdded = result.isNewlyStored(); Map searchAttributesForChangeVersion = null; if (isNewlyAdded) { searchAttributesForChangeVersion = - createSearchAttributesForChangeVersion(changeId, maxSupported, versionMap); + createSearchAttributesForChangeVersion(changeId, versionToUse, versionMap); } Integer version = versionMap.get(changeId); @@ -361,6 +369,22 @@ GetVersionResult getVersion( return new GetVersionResult(version, isNewlyAdded, searchAttributesForChangeVersion); } + private int determineVersionToUse(int minSupported, int maxSupported, GetVersionOptions options) { + if (isReplaying()) { + return WorkflowInternal.DEFAULT_VERSION; + } + + if (options.getCustomVersion().isPresent()) { + return options.getCustomVersion().get(); + } + + if (options.isUseMinVersion()) { + return minSupported; + } + + return maxSupported; + } + private void validateVersion(String changeID, int version, int minSupported, int maxSupported) { if ((version < minSupported || version > maxSupported) && version != WorkflowInternal.DEFAULT_VERSION) { diff --git a/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java b/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java index e3e76c8e9..37c9a342b 100644 --- a/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java @@ -194,6 +194,18 @@ Optional mutableSideEffect( */ int getVersion(String changeID, DataConverter dataConverter, int minSupported, int maxSupported); + /** + * Enhanced version of getVersion with additional options for version control. + * + * @param changeID identifier of a particular change + * @param dataConverter data converter for serialization + * @param minSupported min version supported for the change + * @param maxSupported max version supported for the change + * @param options version control options + * @return version + */ + int getVersion(String changeID, DataConverter dataConverter, int minSupported, int maxSupported, GetVersionOptions options); + Random newRandom(); /** @return scope to be used for metrics reporting. */ diff --git a/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java b/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java index c3bc89a50..923fd937d 100644 --- a/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java +++ b/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java @@ -302,6 +302,19 @@ public int getVersion( return results.getVersion(); } + @Override + public int getVersion( + String changeID, DataConverter converter, int minSupported, int maxSupported, GetVersionOptions options) { + final ClockDecisionContext.GetVersionResult results = + workflowClock.getVersion(changeID, converter, minSupported, maxSupported, options); + if (results.shouldUpdateCadenceChangeVersion()) { + upsertSearchAttributes( + InternalUtils.convertMapToSearchAttributes( + results.getSearchAttributesForChangeVersion())); + } + return results.getVersion(); + } + @Override public long currentTimeMillis() { return workflowClock.currentTimeMillis(); diff --git a/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java b/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java index c204ff22a..b65177002 100644 --- a/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java @@ -620,6 +620,11 @@ public int getVersion(String changeID, int minSupported, int maxSupported) { return context.getVersion(changeID, converter, minSupported, maxSupported); } + @Override + public int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) { + return context.getVersion(changeID, converter, minSupported, maxSupported, options); + } + void fireTimers() { timers.fireTimers(context.currentTimeMillis()); } diff --git a/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java b/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java index 217195841..92b57afa2 100644 --- a/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java +++ b/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java @@ -253,6 +253,19 @@ public static int getVersion(String changeID, int minSupported, int maxSupported return getWorkflowInterceptor().getVersion(changeID, minSupported, maxSupported); } + /** + * Enhanced version of getVersion with additional options for version control. + * + * @param changeID identifier of a particular change + * @param minSupported min version supported for the change + * @param maxSupported max version supported for the change + * @param options version control options + * @return version + */ + public static int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) { + return getWorkflowInterceptor().getVersion(changeID, minSupported, maxSupported, options); + } + public static Promise> promiseAllOf(Collection> promises) { return new AllOfPromise<>(promises); } diff --git a/src/main/java/com/uber/cadence/workflow/GetVersionOptions.java b/src/main/java/com/uber/cadence/workflow/GetVersionOptions.java new file mode 100644 index 000000000..777865826 --- /dev/null +++ b/src/main/java/com/uber/cadence/workflow/GetVersionOptions.java @@ -0,0 +1,108 @@ +/* + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Modifications copyright (C) 2017 Uber Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.uber.cadence.workflow; + +import java.util.Optional; + +/** + * Options for configuring GetVersion behavior. + * This class provides a builder pattern for configuring version control options. + * + *

Example usage: + *


+ * // Force a specific version
+ * GetVersionOptions options = GetVersionOptions.newBuilder()
+ *     .executeWithVersion(2)
+ *     .build();
+ * 
+ * // Use minimum supported version
+ * GetVersionOptions options = GetVersionOptions.newBuilder()
+ *     .executeWithMinVersion()
+ *     .build();
+ * 
+ */ +public final class GetVersionOptions { + private final Optional customVersion; + private final boolean useMinVersion; + + private GetVersionOptions(Optional customVersion, boolean useMinVersion) { + this.customVersion = customVersion; + this.useMinVersion = useMinVersion; + } + + /** + * Returns the custom version if specified, otherwise empty. + */ + public Optional getCustomVersion() { + return customVersion; + } + + /** + * Returns true if the minimum version should be used instead of maximum version. + */ + public boolean isUseMinVersion() { + return useMinVersion; + } + + /** + * Creates a new builder for GetVersionOptions. + */ + public static Builder newBuilder() { + return new Builder(); + } + + /** + * Builder for GetVersionOptions. + */ + public static class Builder { + private Optional customVersion = Optional.empty(); + private boolean useMinVersion = false; + + /** + * Forces a specific version to be returned when executed for the first time, + * instead of returning maxSupported version. + * + * @param version the specific version to use + * @return this builder + */ + public Builder executeWithVersion(int version) { + this.customVersion = Optional.of(version); + return this; + } + + /** + * Makes GetVersion return minSupported version when executed for the first time, + * instead of returning maxSupported version. + * + * @return this builder + */ + public Builder executeWithMinVersion() { + this.useMinVersion = true; + return this; + } + + /** + * Builds the GetVersionOptions instance. + * + * @return the configured GetVersionOptions + */ + public GetVersionOptions build() { + return new GetVersionOptions(customVersion, useMinVersion); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/uber/cadence/workflow/Workflow.java b/src/main/java/com/uber/cadence/workflow/Workflow.java index b5c3966ae..0f219536c 100644 --- a/src/main/java/com/uber/cadence/workflow/Workflow.java +++ b/src/main/java/com/uber/cadence/workflow/Workflow.java @@ -353,7 +353,7 @@ * executed in parallel. *
  • Do not call any non deterministic functions like non seeded random or {@link * UUID#randomUUID()} directly form the workflow code. Always do this in activities. - *
  • Don’t perform any IO or service calls as they are not usually deterministic. Use activities + *
  • Don't perform any IO or service calls as they are not usually deterministic. Use activities * for this. *
  • Only use {@link #currentTimeMillis()} to get the current time inside a workflow. *
  • Do not use native Java {@link Thread} or any other multi-threaded classes like {@link @@ -369,7 +369,7 @@ *
  • Use {@link WorkflowQueue} instead of {@link java.util.concurrent.BlockingQueue}. *
  • Don't change workflow code when there are open workflows. The ability to do updates through * visioning is TBD. - *
  • Don’t access configuration APIs directly from a workflow because changes in the + *
  • Don't access configuration APIs directly from a workflow because changes in the * configuration might affect a workflow execution path. Pass it as an argument to a workflow * function or use an activity to load it. * @@ -1123,15 +1123,15 @@ public static R mutableSideEffect( * * * The reason to keep it is: 1) it ensures that if there is older version execution still running, - * it will fail here and not proceed; 2) if you ever need to make more changes for “fooChange”, + * it will fail here and not proceed; 2) if you ever need to make more changes for "fooChange", * for example change activity3 to activity4, you just need to update the maxVersion from 2 to 3. * *

    Note that, you only need to preserve the first call to GetVersion() for each changeID. All * subsequent call to GetVersion() with same changeID are safe to remove. However, if you really * want to get rid of the first GetVersion() call as well, you can do so, but you need to make - * sure: 1) all older version executions are completed; 2) you can no longer use “fooChange” as + * sure: 1) all older version executions are completed; 2) you can no longer use "fooChange" as * changeID. If you ever need to make changes to that same part, you would need to use a different - * changeID like “fooChange-fix2”, and start minVersion from DefaultVersion again. + * changeID like "fooChange-fix2", and start minVersion from DefaultVersion again. * * @param changeID identifier of a particular change. All calls to getVersion that share a * changeID are guaranteed to return the same version number. Use this to perform multiple @@ -1144,6 +1144,63 @@ public static int getVersion(String changeID, int minSupported, int maxSupported return WorkflowInternal.getVersion(changeID, minSupported, maxSupported); } + /** + * Enhanced version of {@code getVersion} with additional options for version control. + * This method provides more granular control over version execution and enables safer deployment strategies. + * + *

    Example usage with custom version: + *

    
    +   * int version = Workflow.getVersion("changeId", 1, 3, 
    +   *     GetVersionOptions.newBuilder().executeWithVersion(2).build());
    +   * 
    + * + *

    Example usage with minimum version: + *

    
    +   * int version = Workflow.getVersion("changeId", 1, 3,
    +   *     GetVersionOptions.newBuilder().executeWithMinVersion().build());
    +   * 
    + * + * @param changeID identifier of a particular change + * @param minSupported min version supported for the change + * @param maxSupported max version supported for the change + * @param options version control options + * @return version + */ + public static int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) { + return WorkflowInternal.getVersion(changeID, minSupported, maxSupported, options); + } + + /** + * Convenience method that forces a specific version to be returned when executed for the first time. + * + * @param changeID identifier of a particular change + * @param minSupported min version supported for the change + * @param maxSupported max version supported for the change + * @param customVersion the specific version to use + * @return version + */ + public static int getVersionWithCustomVersion(String changeID, int minSupported, int maxSupported, int customVersion) { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithVersion(customVersion) + .build(); + return getVersion(changeID, minSupported, maxSupported, options); + } + + /** + * Convenience method that makes GetVersion return minSupported version when executed for the first time. + * + * @param changeID identifier of a particular change + * @param minSupported min version supported for the change + * @param maxSupported max version supported for the change + * @return version + */ + public static int getVersionWithMinVersion(String changeID, int minSupported, int maxSupported) { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithMinVersion() + .build(); + return getVersion(changeID, minSupported, maxSupported, options); + } + /** * Get scope for reporting business metrics in workflow logic. This should be used instead of * creating new metrics scopes as it is able to dedup metrics during replay. diff --git a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java index c744ae88f..9796e0426 100644 --- a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java +++ b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java @@ -127,6 +127,17 @@ R mutableSideEffect( int getVersion(String changeID, int minSupported, int maxSupported); + /** + * Enhanced version of getVersion with additional options for version control. + * + * @param changeID identifier of a particular change + * @param minSupported min version supported for the change + * @param maxSupported max version supported for the change + * @param options version control options + * @return version + */ + int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options); + void continueAsNew( Optional workflowType, Optional options, Object[] args); diff --git a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java index b6f436160..4aad904ab 100644 --- a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java +++ b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java @@ -134,6 +134,11 @@ public int getVersion(String changeID, int minSupported, int maxSupported) { return next.getVersion(changeID, minSupported, maxSupported); } + @Override + public int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) { + return next.getVersion(changeID, minSupported, maxSupported, options); + } + @Override public void continueAsNew( Optional workflowType, Optional options, Object[] args) { diff --git a/src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java b/src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java new file mode 100644 index 000000000..5de40d743 --- /dev/null +++ b/src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java @@ -0,0 +1,166 @@ +/* + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Modifications copyright (C) 2017 Uber Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.uber.cadence.workflow; + +import static org.junit.Assert.*; + +import com.uber.cadence.testing.TestWorkflowEnvironment; +import com.uber.cadence.worker.Worker; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class EnhancedGetVersionTest { + + private TestWorkflowEnvironment testEnvironment; + private Worker worker; + + @Before + public void setUp() { + testEnvironment = TestWorkflowEnvironment.newInstance(); + worker = testEnvironment.newWorker("test-task-list"); + } + + @After + public void tearDown() { + testEnvironment.close(); + } + + @Test + public void testGetVersionWithCustomVersion() { + worker.registerWorkflowImplementationTypes(TestWorkflowWithCustomVersion.class); + testEnvironment.start(); + + TestWorkflowWithCustomVersion workflow = testEnvironment.newWorkflowStub(TestWorkflowWithCustomVersion.class); + String result = workflow.execute("test-input"); + + assertEquals("custom-version-result", result); + } + + @Test + public void testGetVersionWithMinVersion() { + worker.registerWorkflowImplementationTypes(TestWorkflowWithMinVersion.class); + testEnvironment.start(); + + TestWorkflowWithMinVersion workflow = testEnvironment.newWorkflowStub(TestWorkflowWithMinVersion.class); + String result = workflow.execute("test-input"); + + assertEquals("min-version-result", result); + } + + @Test + public void testGetVersionWithOptions() { + worker.registerWorkflowImplementationTypes(TestWorkflowWithOptions.class); + testEnvironment.start(); + + TestWorkflowWithOptions workflow = testEnvironment.newWorkflowStub(TestWorkflowWithOptions.class); + String result = workflow.execute("test-input"); + + assertEquals("options-result", result); + } + + @Test + public void testConvenienceMethods() { + worker.registerWorkflowImplementationTypes(TestWorkflowWithConvenienceMethods.class); + testEnvironment.start(); + + TestWorkflowWithConvenienceMethods workflow = testEnvironment.newWorkflowStub(TestWorkflowWithConvenienceMethods.class); + String result = workflow.execute("test-input"); + + assertEquals("convenience-result", result); + } + + public interface TestWorkflowWithCustomVersion { + @WorkflowMethod + String execute(String input); + } + + public static class TestWorkflowWithCustomVersionImpl implements TestWorkflowWithCustomVersion { + @Override + public String execute(String input) { + int version = Workflow.getVersion("test-change", 1, 3, + GetVersionOptions.newBuilder().executeWithVersion(2).build()); + + if (version == 2) { + return "custom-version-result"; + } else { + return "other-result"; + } + } + } + + public interface TestWorkflowWithMinVersion { + @WorkflowMethod + String execute(String input); + } + + public static class TestWorkflowWithMinVersionImpl implements TestWorkflowWithMinVersion { + @Override + public String execute(String input) { + int version = Workflow.getVersion("test-change", 1, 3, + GetVersionOptions.newBuilder().executeWithMinVersion().build()); + + if (version == 1) { + return "min-version-result"; + } else { + return "other-result"; + } + } + } + + public interface TestWorkflowWithOptions { + @WorkflowMethod + String execute(String input); + } + + public static class TestWorkflowWithOptionsImpl implements TestWorkflowWithOptions { + @Override + public String execute(String input) { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithVersion(2) + .build(); + + int version = Workflow.getVersion("test-change", 1, 3, options); + + if (version == 2) { + return "options-result"; + } else { + return "other-result"; + } + } + } + + public interface TestWorkflowWithConvenienceMethods { + @WorkflowMethod + String execute(String input); + } + + public static class TestWorkflowWithConvenienceMethodsImpl implements TestWorkflowWithConvenienceMethods { + @Override + public String execute(String input) { + int version1 = Workflow.getVersionWithCustomVersion("test-change-1", 1, 3, 2); + int version2 = Workflow.getVersionWithMinVersion("test-change-2", 1, 3); + + if (version1 == 2 && version2 == 1) { + return "convenience-result"; + } else { + return "other-result"; + } + } + } +} \ No newline at end of file diff --git a/src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java b/src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java new file mode 100644 index 000000000..c7277c107 --- /dev/null +++ b/src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java @@ -0,0 +1,98 @@ +/* + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Modifications copyright (C) 2017 Uber Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.uber.cadence.workflow; + +import static org.junit.Assert.*; + +import java.util.Optional; +import org.junit.Test; + +public class GetVersionOptionsTest { + + @Test + public void testExecuteWithVersion() { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithVersion(5) + .build(); + + assertEquals(Optional.of(5), options.getCustomVersion()); + assertFalse(options.isUseMinVersion()); + } + + @Test + public void testExecuteWithMinVersion() { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithMinVersion() + .build(); + + assertEquals(Optional.empty(), options.getCustomVersion()); + assertTrue(options.isUseMinVersion()); + } + + @Test + public void testDefaultOptions() { + GetVersionOptions options = GetVersionOptions.newBuilder().build(); + + assertEquals(Optional.empty(), options.getCustomVersion()); + assertFalse(options.isUseMinVersion()); + } + + @Test + public void testBuilderChaining() { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithVersion(3) + .executeWithMinVersion() + .build(); + + // When both are set, custom version takes precedence + assertEquals(Optional.of(3), options.getCustomVersion()); + assertTrue(options.isUseMinVersion()); + } + + @Test + public void testMultipleExecuteWithVersionCalls() { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithVersion(1) + .executeWithVersion(2) + .build(); + + // Last call should take precedence + assertEquals(Optional.of(2), options.getCustomVersion()); + assertFalse(options.isUseMinVersion()); + } + + @Test + public void testZeroVersion() { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithVersion(0) + .build(); + + assertEquals(Optional.of(0), options.getCustomVersion()); + assertFalse(options.isUseMinVersion()); + } + + @Test + public void testNegativeVersion() { + GetVersionOptions options = GetVersionOptions.newBuilder() + .executeWithVersion(-1) + .build(); + + assertEquals(Optional.of(-1), options.getCustomVersion()); + assertFalse(options.isUseMinVersion()); + } +} \ No newline at end of file From 82ac678c5028e55460e4778f064bae2fd5eec830 Mon Sep 17 00:00:00 2001 From: Anshuman Kishore Pandey Date: Wed, 25 Jun 2025 15:02:13 +0200 Subject: [PATCH 02/17] Port enhanced version control features from Go client Add support for ExecuteWithVersion and ExecuteWithMinVersion options to getVersion method, porting functionality from cadence-go-client PRs #1427 and #1428. Changes: - Add GetVersionOptions class with builder pattern for version control configuration - Add executeWithVersion() and executeWithMinVersion() methods to GetVersionOptions - Add overloaded getVersion() method that accepts GetVersionOptions parameter - Add convenience methods getVersionWithCustomVersion() and getVersionWithMinVersion() - Update all workflow interceptor interfaces and implementations to support new options - Update DecisionContext, ClockDecisionContext, and related classes for version selection logic - Add testing framework support for enhanced version control features - Add comprehensive test coverage for new functionality This enables safer deployment strategies and more granular control over workflow version execution, allowing developers to: - Force specific versions instead of max supported version - Use minimum supported version for backward compatibility - Test workflows with enhanced version control in test environments Fixes compilation errors and ensures all existing functionality remains compatible. --- .../internal/replay/ClockDecisionContext.java | 16 ++- .../internal/replay/DecisionContext.java | 8 +- .../internal/replay/DecisionContextImpl.java | 7 +- .../sync/DeterministicRunnerImpl.java | 11 ++ .../internal/sync/SyncDecisionContext.java | 4 +- .../sync/TestActivityEnvironmentInternal.java | 6 + .../internal/sync/WorkflowInternal.java | 6 +- .../cadence/workflow/GetVersionOptions.java | 111 +++++++-------- .../com/uber/cadence/workflow/Workflow.java | 29 ++-- .../cadence/workflow/WorkflowInterceptor.java | 2 +- .../workflow/WorkflowInterceptorBase.java | 3 +- ...TestWorkflowEnvironmentGetVersionTest.java | 134 ++++++++++++++++++ .../workflow/EnhancedGetVersionTest.java | 101 +++++++++---- .../workflow/GetVersionOptionsTest.java | 56 +++----- .../SignalWorkflowInterceptor.java | 6 + .../TracingWorkflowInterceptorFactory.java | 7 + 16 files changed, 359 insertions(+), 148 deletions(-) create mode 100644 src/test/java/com/uber/cadence/testing/TestWorkflowEnvironmentGetVersionTest.java diff --git a/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java b/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java index e8901ce43..ca90339c0 100644 --- a/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/replay/ClockDecisionContext.java @@ -33,6 +33,7 @@ import com.uber.cadence.workflow.ActivityFailureException; import com.uber.cadence.workflow.Functions.Func; import com.uber.cadence.workflow.Functions.Func1; +import com.uber.cadence.workflow.GetVersionOptions; import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; @@ -320,11 +321,16 @@ private void handleVersionMarker(MarkerRecordedEventAttributes attributes) { GetVersionResult getVersion( String changeId, DataConverter converter, int minSupported, int maxSupported) { - return getVersion(changeId, converter, minSupported, maxSupported, GetVersionOptions.newBuilder().build()); + return getVersion( + changeId, converter, minSupported, maxSupported, GetVersionOptions.newBuilder().build()); } GetVersionResult getVersion( - String changeId, DataConverter converter, int minSupported, int maxSupported, GetVersionOptions options) { + String changeId, + DataConverter converter, + int minSupported, + int maxSupported, + GetVersionOptions options) { Predicate changeIdEquals = (attributes) -> { MarkerHandler.MarkerInterface markerData = @@ -373,15 +379,15 @@ private int determineVersionToUse(int minSupported, int maxSupported, GetVersion if (isReplaying()) { return WorkflowInternal.DEFAULT_VERSION; } - + if (options.getCustomVersion().isPresent()) { return options.getCustomVersion().get(); } - + if (options.isUseMinVersion()) { return minSupported; } - + return maxSupported; } diff --git a/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java b/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java index 37c9a342b..f154a8e87 100644 --- a/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/replay/DecisionContext.java @@ -25,6 +25,7 @@ import com.uber.cadence.converter.DataConverter; import com.uber.cadence.workflow.Functions.Func; import com.uber.cadence.workflow.Functions.Func1; +import com.uber.cadence.workflow.GetVersionOptions; import com.uber.cadence.workflow.Promise; import com.uber.m3.tally.Scope; import java.time.Duration; @@ -204,7 +205,12 @@ Optional mutableSideEffect( * @param options version control options * @return version */ - int getVersion(String changeID, DataConverter dataConverter, int minSupported, int maxSupported, GetVersionOptions options); + int getVersion( + String changeID, + DataConverter dataConverter, + int minSupported, + int maxSupported, + GetVersionOptions options); Random newRandom(); diff --git a/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java b/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java index 923fd937d..b8d0e8469 100644 --- a/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java +++ b/src/main/java/com/uber/cadence/internal/replay/DecisionContextImpl.java @@ -35,6 +35,7 @@ import com.uber.cadence.internal.worker.SingleWorkerOptions; import com.uber.cadence.workflow.Functions.Func; import com.uber.cadence.workflow.Functions.Func1; +import com.uber.cadence.workflow.GetVersionOptions; import com.uber.cadence.workflow.Promise; import com.uber.cadence.workflow.Workflow; import com.uber.m3.tally.Scope; @@ -304,7 +305,11 @@ public int getVersion( @Override public int getVersion( - String changeID, DataConverter converter, int minSupported, int maxSupported, GetVersionOptions options) { + String changeID, + DataConverter converter, + int minSupported, + int maxSupported, + GetVersionOptions options) { final ClockDecisionContext.GetVersionResult results = workflowClock.getVersion(changeID, converter, minSupported, maxSupported, options); if (results.shouldUpdateCadenceChangeVersion()) { diff --git a/src/main/java/com/uber/cadence/internal/sync/DeterministicRunnerImpl.java b/src/main/java/com/uber/cadence/internal/sync/DeterministicRunnerImpl.java index 84fb6a226..cc106eefe 100644 --- a/src/main/java/com/uber/cadence/internal/sync/DeterministicRunnerImpl.java +++ b/src/main/java/com/uber/cadence/internal/sync/DeterministicRunnerImpl.java @@ -36,6 +36,7 @@ import com.uber.cadence.internal.replay.StartChildWorkflowExecutionParameters; import com.uber.cadence.workflow.Functions.Func; import com.uber.cadence.workflow.Functions.Func1; +import com.uber.cadence.workflow.GetVersionOptions; import com.uber.cadence.workflow.Promise; import com.uber.m3.tally.Scope; import java.time.Duration; @@ -695,6 +696,16 @@ public int getVersion( throw new UnsupportedOperationException("not implemented"); } + @Override + public int getVersion( + String changeID, + DataConverter converter, + int minSupported, + int maxSupported, + GetVersionOptions options) { + throw new UnsupportedOperationException("not implemented"); + } + @Override public Random newRandom() { throw new UnsupportedOperationException("not implemented"); diff --git a/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java b/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java index b65177002..0bf55b9c0 100644 --- a/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java @@ -54,6 +54,7 @@ import com.uber.cadence.workflow.ContinueAsNewOptions; import com.uber.cadence.workflow.Functions; import com.uber.cadence.workflow.Functions.Func; +import com.uber.cadence.workflow.GetVersionOptions; import com.uber.cadence.workflow.Promise; import com.uber.cadence.workflow.SignalExternalWorkflowException; import com.uber.cadence.workflow.Workflow; @@ -621,7 +622,8 @@ public int getVersion(String changeID, int minSupported, int maxSupported) { } @Override - public int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) { + public int getVersion( + String changeID, int minSupported, int maxSupported, GetVersionOptions options) { return context.getVersion(changeID, converter, minSupported, maxSupported, options); } diff --git a/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java b/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java index 2ed9218b1..56ffb7694 100644 --- a/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java +++ b/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java @@ -242,6 +242,12 @@ public int getVersion(String changeID, int minSupported, int maxSupported) { throw new UnsupportedOperationException("not implemented"); } + @Override + public int getVersion( + String changeID, int minSupported, int maxSupported, GetVersionOptions options) { + throw new UnsupportedOperationException("not implemented"); + } + @Override public void continueAsNew( Optional workflowType, Optional options, Object[] args) { diff --git a/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java b/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java index 92b57afa2..980fdb24c 100644 --- a/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java +++ b/src/main/java/com/uber/cadence/internal/sync/WorkflowInternal.java @@ -36,6 +36,7 @@ import com.uber.cadence.workflow.ExternalWorkflowStub; import com.uber.cadence.workflow.Functions; import com.uber.cadence.workflow.Functions.Func; +import com.uber.cadence.workflow.GetVersionOptions; import com.uber.cadence.workflow.Promise; import com.uber.cadence.workflow.QueryMethod; import com.uber.cadence.workflow.Workflow; @@ -255,14 +256,15 @@ public static int getVersion(String changeID, int minSupported, int maxSupported /** * Enhanced version of getVersion with additional options for version control. - * + * * @param changeID identifier of a particular change * @param minSupported min version supported for the change * @param maxSupported max version supported for the change * @param options version control options * @return version */ - public static int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) { + public static int getVersion( + String changeID, int minSupported, int maxSupported, GetVersionOptions options) { return getWorkflowInterceptor().getVersion(changeID, minSupported, maxSupported, options); } diff --git a/src/main/java/com/uber/cadence/workflow/GetVersionOptions.java b/src/main/java/com/uber/cadence/workflow/GetVersionOptions.java index 777865826..01ac1325e 100644 --- a/src/main/java/com/uber/cadence/workflow/GetVersionOptions.java +++ b/src/main/java/com/uber/cadence/workflow/GetVersionOptions.java @@ -20,16 +20,17 @@ import java.util.Optional; /** - * Options for configuring GetVersion behavior. - * This class provides a builder pattern for configuring version control options. - * + * Options for configuring GetVersion behavior. This class provides a builder pattern for + * configuring version control options. + * *

    Example usage: + * *

    
      * // Force a specific version
      * GetVersionOptions options = GetVersionOptions.newBuilder()
      *     .executeWithVersion(2)
      *     .build();
    - * 
    + *
      * // Use minimum supported version
      * GetVersionOptions options = GetVersionOptions.newBuilder()
      *     .executeWithMinVersion()
    @@ -37,72 +38,64 @@
      * 
    */ public final class GetVersionOptions { - private final Optional customVersion; - private final boolean useMinVersion; + private final Optional customVersion; + private final boolean useMinVersion; - private GetVersionOptions(Optional customVersion, boolean useMinVersion) { - this.customVersion = customVersion; - this.useMinVersion = useMinVersion; - } + private GetVersionOptions(Optional customVersion, boolean useMinVersion) { + this.customVersion = customVersion; + this.useMinVersion = useMinVersion; + } - /** - * Returns the custom version if specified, otherwise empty. - */ - public Optional getCustomVersion() { - return customVersion; - } + /** Returns the custom version if specified, otherwise empty. */ + public Optional getCustomVersion() { + return customVersion; + } + + /** Returns true if the minimum version should be used instead of maximum version. */ + public boolean isUseMinVersion() { + return useMinVersion; + } + + /** Creates a new builder for GetVersionOptions. */ + public static Builder newBuilder() { + return new Builder(); + } + + /** Builder for GetVersionOptions. */ + public static class Builder { + private Optional customVersion = Optional.empty(); + private boolean useMinVersion = false; /** - * Returns true if the minimum version should be used instead of maximum version. + * Forces a specific version to be returned when executed for the first time, instead of + * returning maxSupported version. + * + * @param version the specific version to use + * @return this builder */ - public boolean isUseMinVersion() { - return useMinVersion; + public Builder executeWithVersion(int version) { + this.customVersion = Optional.of(version); + return this; } /** - * Creates a new builder for GetVersionOptions. + * Makes GetVersion return minSupported version when executed for the first time, instead of + * returning maxSupported version. + * + * @return this builder */ - public static Builder newBuilder() { - return new Builder(); + public Builder executeWithMinVersion() { + this.useMinVersion = true; + return this; } /** - * Builder for GetVersionOptions. + * Builds the GetVersionOptions instance. + * + * @return the configured GetVersionOptions */ - public static class Builder { - private Optional customVersion = Optional.empty(); - private boolean useMinVersion = false; - - /** - * Forces a specific version to be returned when executed for the first time, - * instead of returning maxSupported version. - * - * @param version the specific version to use - * @return this builder - */ - public Builder executeWithVersion(int version) { - this.customVersion = Optional.of(version); - return this; - } - - /** - * Makes GetVersion return minSupported version when executed for the first time, - * instead of returning maxSupported version. - * - * @return this builder - */ - public Builder executeWithMinVersion() { - this.useMinVersion = true; - return this; - } - - /** - * Builds the GetVersionOptions instance. - * - * @return the configured GetVersionOptions - */ - public GetVersionOptions build() { - return new GetVersionOptions(customVersion, useMinVersion); - } + public GetVersionOptions build() { + return new GetVersionOptions(customVersion, useMinVersion); } -} \ No newline at end of file + } +} diff --git a/src/main/java/com/uber/cadence/workflow/Workflow.java b/src/main/java/com/uber/cadence/workflow/Workflow.java index 0f219536c..20f53864c 100644 --- a/src/main/java/com/uber/cadence/workflow/Workflow.java +++ b/src/main/java/com/uber/cadence/workflow/Workflow.java @@ -1145,16 +1145,18 @@ public static int getVersion(String changeID, int minSupported, int maxSupported } /** - * Enhanced version of {@code getVersion} with additional options for version control. - * This method provides more granular control over version execution and enables safer deployment strategies. + * Enhanced version of {@code getVersion} with additional options for version control. This method + * provides more granular control over version execution and enables safer deployment strategies. * *

    Example usage with custom version: + * *

    
    -   * int version = Workflow.getVersion("changeId", 1, 3, 
    +   * int version = Workflow.getVersion("changeId", 1, 3,
        *     GetVersionOptions.newBuilder().executeWithVersion(2).build());
        * 
    * *

    Example usage with minimum version: + * *

    
        * int version = Workflow.getVersion("changeId", 1, 3,
        *     GetVersionOptions.newBuilder().executeWithMinVersion().build());
    @@ -1166,12 +1168,14 @@ public static int getVersion(String changeID, int minSupported, int maxSupported
        * @param options version control options
        * @return version
        */
    -  public static int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) {
    +  public static int getVersion(
    +      String changeID, int minSupported, int maxSupported, GetVersionOptions options) {
         return WorkflowInternal.getVersion(changeID, minSupported, maxSupported, options);
       }
     
       /**
    -   * Convenience method that forces a specific version to be returned when executed for the first time.
    +   * Convenience method that forces a specific version to be returned when executed for the first
    +   * time.
        *
        * @param changeID identifier of a particular change
        * @param minSupported min version supported for the change
    @@ -1179,15 +1183,16 @@ public static int getVersion(String changeID, int minSupported, int maxSupported
        * @param customVersion the specific version to use
        * @return version
        */
    -  public static int getVersionWithCustomVersion(String changeID, int minSupported, int maxSupported, int customVersion) {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithVersion(customVersion)
    -        .build();
    +  public static int getVersionWithCustomVersion(
    +      String changeID, int minSupported, int maxSupported, int customVersion) {
    +    GetVersionOptions options =
    +        GetVersionOptions.newBuilder().executeWithVersion(customVersion).build();
         return getVersion(changeID, minSupported, maxSupported, options);
       }
     
       /**
    -   * Convenience method that makes GetVersion return minSupported version when executed for the first time.
    +   * Convenience method that makes GetVersion return minSupported version when executed for the
    +   * first time.
        *
        * @param changeID identifier of a particular change
        * @param minSupported min version supported for the change
    @@ -1195,9 +1200,7 @@ public static int getVersionWithCustomVersion(String changeID, int minSupported,
        * @return version
        */
       public static int getVersionWithMinVersion(String changeID, int minSupported, int maxSupported) {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithMinVersion()
    -        .build();
    +    GetVersionOptions options = GetVersionOptions.newBuilder().executeWithMinVersion().build();
         return getVersion(changeID, minSupported, maxSupported, options);
       }
     
    diff --git a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java
    index 9796e0426..055a9d2c9 100644
    --- a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java
    +++ b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java
    @@ -129,7 +129,7 @@  R mutableSideEffect(
     
       /**
        * Enhanced version of getVersion with additional options for version control.
    -   * 
    +   *
        * @param changeID identifier of a particular change
        * @param minSupported min version supported for the change
        * @param maxSupported max version supported for the change
    diff --git a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java
    index 4aad904ab..ebaaffcdd 100644
    --- a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java
    +++ b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptorBase.java
    @@ -135,7 +135,8 @@ public int getVersion(String changeID, int minSupported, int maxSupported) {
       }
     
       @Override
    -  public int getVersion(String changeID, int minSupported, int maxSupported, GetVersionOptions options) {
    +  public int getVersion(
    +      String changeID, int minSupported, int maxSupported, GetVersionOptions options) {
         return next.getVersion(changeID, minSupported, maxSupported, options);
       }
     
    diff --git a/src/test/java/com/uber/cadence/testing/TestWorkflowEnvironmentGetVersionTest.java b/src/test/java/com/uber/cadence/testing/TestWorkflowEnvironmentGetVersionTest.java
    new file mode 100644
    index 000000000..aff628ff6
    --- /dev/null
    +++ b/src/test/java/com/uber/cadence/testing/TestWorkflowEnvironmentGetVersionTest.java
    @@ -0,0 +1,134 @@
    +/*
    + *  Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
    + *
    + *  Modifications copyright (C) 2017 Uber Technologies, Inc.
    + *
    + *  Licensed under the Apache License, Version 2.0 (the "License"). You may not
    + *  use this file except in compliance with the License. A copy of the License is
    + *  located at
    + *
    + *  http://aws.amazon.com/apache2.0
    + *
    + *  or in the "license" file accompanying this file. This file is distributed on
    + *  an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
    + *  express or implied. See the License for the specific language governing
    + *  permissions and limitations under the License.
    + */
    +
    +package com.uber.cadence.testing;
    +
    +import static org.junit.Assert.*;
    +
    +import com.uber.cadence.client.WorkflowClient;
    +import com.uber.cadence.client.WorkflowOptions;
    +import com.uber.cadence.worker.Worker;
    +import com.uber.cadence.workflow.GetVersionOptions;
    +import com.uber.cadence.workflow.Workflow;
    +import com.uber.cadence.workflow.WorkflowMethod;
    +import java.time.Duration;
    +import java.util.concurrent.ExecutionException;
    +import org.junit.Test;
    +
    +/**
    + * Test to verify that TestWorkflowEnvironment supports the new GetVersionOptions functionality.
    + * This test ensures that workflows using enhanced version control features can be tested properly.
    + */
    +public class TestWorkflowEnvironmentGetVersionTest {
    +
    +  private static final String TASK_LIST = "TestWorkflowEnvironmentGetVersionTest";
    +
    +  public interface TestWorkflowWithVersionControl {
    +    @WorkflowMethod
    +    String workflowWithVersionControl(String input);
    +  }
    +
    +  public static class TestWorkflowWithVersionControlImpl implements TestWorkflowWithVersionControl {
    +
    +    @Override
    +    public String workflowWithVersionControl(String input) {
    +      // Test the new getVersion method with options
    +      GetVersionOptions options = GetVersionOptions.newBuilder().executeWithVersion(2).build();
    +
    +      int version = Workflow.getVersion("test-change", 1, 3, options);
    +
    +      // Test the convenience methods
    +      int versionWithCustom = Workflow.getVersionWithCustomVersion("test-change", 1, 3, 2);
    +      int versionWithMin = Workflow.getVersionWithMinVersion("test-change", 1, 3);
    +
    +      return String.format(
    +          "input=%s, version=%d, custom=%d, min=%d",
    +          input, version, versionWithCustom, versionWithMin);
    +    }
    +  }
    +
    +  @Test
    +  public void testWorkflowWithVersionControl() throws ExecutionException, InterruptedException {
    +    TestWorkflowEnvironment testEnvironment = TestWorkflowEnvironment.newInstance();
    +
    +    // Create a worker that polls tasks from the service owned by the testEnvironment
    +    Worker worker = testEnvironment.newWorker(TASK_LIST);
    +    worker.registerWorkflowImplementationTypes(TestWorkflowWithVersionControlImpl.class);
    +
    +    // Create a WorkflowClient that interacts with the server owned by the testEnvironment
    +    WorkflowClient client = testEnvironment.newWorkflowClient();
    +
    +    // Create workflow options with required timeout
    +    WorkflowOptions options =
    +        new WorkflowOptions.Builder()
    +            .setExecutionStartToCloseTimeout(Duration.ofMinutes(5))
    +            .setTaskList(TASK_LIST)
    +            .build();
    +
    +    TestWorkflowWithVersionControl workflow =
    +        client.newWorkflowStub(TestWorkflowWithVersionControl.class, options);
    +
    +    // Start the test environment (this starts the worker)
    +    testEnvironment.start();
    +
    +    // Start a workflow execution
    +    String result = workflow.workflowWithVersionControl("test-input");
    +
    +    // Verify the result contains the expected version information
    +    assertNotNull("Result should not be null", result);
    +    assertTrue("Result should contain version information", result.contains("version="));
    +    assertTrue("Result should contain custom version information", result.contains("custom="));
    +    assertTrue("Result should contain min version information", result.contains("min="));
    +
    +    // Close workers and release in-memory service
    +    testEnvironment.close();
    +  }
    +
    +  @Test
    +  public void testGetVersionOptionsBuilder() {
    +    // Test the builder pattern for GetVersionOptions
    +    GetVersionOptions options1 = GetVersionOptions.newBuilder().executeWithVersion(5).build();
    +
    +    assertTrue("Should have custom version", options1.getCustomVersion().isPresent());
    +    assertEquals(
    +        "Custom version should be 5", Integer.valueOf(5), options1.getCustomVersion().get());
    +    assertFalse("Should not use min version", options1.isUseMinVersion());
    +
    +    GetVersionOptions options2 = GetVersionOptions.newBuilder().executeWithMinVersion().build();
    +
    +    assertFalse("Should not have custom version", options2.getCustomVersion().isPresent());
    +    assertTrue("Should use min version", options2.isUseMinVersion());
    +
    +    GetVersionOptions options3 =
    +        GetVersionOptions.newBuilder().executeWithVersion(10).executeWithMinVersion().build();
    +
    +    assertTrue("Should have custom version", options3.getCustomVersion().isPresent());
    +    assertEquals(
    +        "Custom version should be 10", Integer.valueOf(10), options3.getCustomVersion().get());
    +    assertTrue("Should use min version", options3.isUseMinVersion());
    +  }
    +
    +  @Test
    +  public void testDefaultGetVersionOptions() {
    +    // Test default options
    +    GetVersionOptions defaultOptions = GetVersionOptions.newBuilder().build();
    +
    +    assertFalse(
    +        "Default should not have custom version", defaultOptions.getCustomVersion().isPresent());
    +    assertFalse("Default should not use min version", defaultOptions.isUseMinVersion());
    +  }
    +}
    diff --git a/src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java b/src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java
    index 5de40d743..da122493d 100644
    --- a/src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java
    +++ b/src/test/java/com/uber/cadence/workflow/EnhancedGetVersionTest.java
    @@ -19,8 +19,12 @@
     
     import static org.junit.Assert.*;
     
    +import com.uber.cadence.client.WorkflowClient;
    +import com.uber.cadence.client.WorkflowOptions;
     import com.uber.cadence.testing.TestWorkflowEnvironment;
     import com.uber.cadence.worker.Worker;
    +import java.time.Duration;
    +import java.util.concurrent.ExecutionException;
     import org.junit.After;
     import org.junit.Before;
     import org.junit.Test;
    @@ -42,46 +46,82 @@ public void tearDown() {
       }
     
       @Test
    -  public void testGetVersionWithCustomVersion() {
    -    worker.registerWorkflowImplementationTypes(TestWorkflowWithCustomVersion.class);
    +  public void testGetVersionWithCustomVersion() throws ExecutionException, InterruptedException {
    +    worker.registerWorkflowImplementationTypes(TestWorkflowWithCustomVersionImpl.class);
         testEnvironment.start();
     
    -    TestWorkflowWithCustomVersion workflow = testEnvironment.newWorkflowStub(TestWorkflowWithCustomVersion.class);
    +    WorkflowClient client = testEnvironment.newWorkflowClient();
    +
    +    WorkflowOptions options =
    +        new WorkflowOptions.Builder()
    +            .setExecutionStartToCloseTimeout(Duration.ofMinutes(5))
    +            .setTaskList("test-task-list")
    +            .build();
    +
    +    TestWorkflowWithCustomVersion workflow =
    +        client.newWorkflowStub(TestWorkflowWithCustomVersion.class, options);
         String result = workflow.execute("test-input");
    -    
    +
         assertEquals("custom-version-result", result);
       }
     
       @Test
    -  public void testGetVersionWithMinVersion() {
    -    worker.registerWorkflowImplementationTypes(TestWorkflowWithMinVersion.class);
    +  public void testGetVersionWithMinVersion() throws ExecutionException, InterruptedException {
    +    worker.registerWorkflowImplementationTypes(TestWorkflowWithMinVersionImpl.class);
         testEnvironment.start();
     
    -    TestWorkflowWithMinVersion workflow = testEnvironment.newWorkflowStub(TestWorkflowWithMinVersion.class);
    +    WorkflowClient client = testEnvironment.newWorkflowClient();
    +
    +    WorkflowOptions options =
    +        new WorkflowOptions.Builder()
    +            .setExecutionStartToCloseTimeout(Duration.ofMinutes(5))
    +            .setTaskList("test-task-list")
    +            .build();
    +
    +    TestWorkflowWithMinVersion workflow =
    +        client.newWorkflowStub(TestWorkflowWithMinVersion.class, options);
         String result = workflow.execute("test-input");
    -    
    +
         assertEquals("min-version-result", result);
       }
     
       @Test
    -  public void testGetVersionWithOptions() {
    -    worker.registerWorkflowImplementationTypes(TestWorkflowWithOptions.class);
    +  public void testGetVersionWithOptions() throws ExecutionException, InterruptedException {
    +    worker.registerWorkflowImplementationTypes(TestWorkflowWithOptionsImpl.class);
         testEnvironment.start();
     
    -    TestWorkflowWithOptions workflow = testEnvironment.newWorkflowStub(TestWorkflowWithOptions.class);
    +    WorkflowClient client = testEnvironment.newWorkflowClient();
    +
    +    WorkflowOptions options =
    +        new WorkflowOptions.Builder()
    +            .setExecutionStartToCloseTimeout(Duration.ofMinutes(5))
    +            .setTaskList("test-task-list")
    +            .build();
    +
    +    TestWorkflowWithOptions workflow =
    +        client.newWorkflowStub(TestWorkflowWithOptions.class, options);
         String result = workflow.execute("test-input");
    -    
    +
         assertEquals("options-result", result);
       }
     
       @Test
    -  public void testConvenienceMethods() {
    -    worker.registerWorkflowImplementationTypes(TestWorkflowWithConvenienceMethods.class);
    +  public void testConvenienceMethods() throws ExecutionException, InterruptedException {
    +    worker.registerWorkflowImplementationTypes(TestWorkflowWithConvenienceMethodsImpl.class);
         testEnvironment.start();
     
    -    TestWorkflowWithConvenienceMethods workflow = testEnvironment.newWorkflowStub(TestWorkflowWithConvenienceMethods.class);
    +    WorkflowClient client = testEnvironment.newWorkflowClient();
    +
    +    WorkflowOptions options =
    +        new WorkflowOptions.Builder()
    +            .setExecutionStartToCloseTimeout(Duration.ofMinutes(5))
    +            .setTaskList("test-task-list")
    +            .build();
    +
    +    TestWorkflowWithConvenienceMethods workflow =
    +        client.newWorkflowStub(TestWorkflowWithConvenienceMethods.class, options);
         String result = workflow.execute("test-input");
    -    
    +
         assertEquals("convenience-result", result);
       }
     
    @@ -93,9 +133,10 @@ public interface TestWorkflowWithCustomVersion {
       public static class TestWorkflowWithCustomVersionImpl implements TestWorkflowWithCustomVersion {
         @Override
         public String execute(String input) {
    -      int version = Workflow.getVersion("test-change", 1, 3, 
    -          GetVersionOptions.newBuilder().executeWithVersion(2).build());
    -      
    +      int version =
    +          Workflow.getVersion(
    +              "test-change", 1, 3, GetVersionOptions.newBuilder().executeWithVersion(2).build());
    +
           if (version == 2) {
             return "custom-version-result";
           } else {
    @@ -112,9 +153,10 @@ public interface TestWorkflowWithMinVersion {
       public static class TestWorkflowWithMinVersionImpl implements TestWorkflowWithMinVersion {
         @Override
         public String execute(String input) {
    -      int version = Workflow.getVersion("test-change", 1, 3, 
    -          GetVersionOptions.newBuilder().executeWithMinVersion().build());
    -      
    +      int version =
    +          Workflow.getVersion(
    +              "test-change", 1, 3, GetVersionOptions.newBuilder().executeWithMinVersion().build());
    +
           if (version == 1) {
             return "min-version-result";
           } else {
    @@ -131,12 +173,10 @@ public interface TestWorkflowWithOptions {
       public static class TestWorkflowWithOptionsImpl implements TestWorkflowWithOptions {
         @Override
         public String execute(String input) {
    -      GetVersionOptions options = GetVersionOptions.newBuilder()
    -          .executeWithVersion(2)
    -          .build();
    -      
    +      GetVersionOptions options = GetVersionOptions.newBuilder().executeWithVersion(2).build();
    +
           int version = Workflow.getVersion("test-change", 1, 3, options);
    -      
    +
           if (version == 2) {
             return "options-result";
           } else {
    @@ -150,12 +190,13 @@ public interface TestWorkflowWithConvenienceMethods {
         String execute(String input);
       }
     
    -  public static class TestWorkflowWithConvenienceMethodsImpl implements TestWorkflowWithConvenienceMethods {
    +  public static class TestWorkflowWithConvenienceMethodsImpl
    +      implements TestWorkflowWithConvenienceMethods {
         @Override
         public String execute(String input) {
           int version1 = Workflow.getVersionWithCustomVersion("test-change-1", 1, 3, 2);
           int version2 = Workflow.getVersionWithMinVersion("test-change-2", 1, 3);
    -      
    +
           if (version1 == 2 && version2 == 1) {
             return "convenience-result";
           } else {
    @@ -163,4 +204,4 @@ public String execute(String input) {
           }
         }
       }
    -} 
    \ No newline at end of file
    +}
    diff --git a/src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java b/src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java
    index c7277c107..6447e2af6 100644
    --- a/src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java
    +++ b/src/test/java/com/uber/cadence/workflow/GetVersionOptionsTest.java
    @@ -26,73 +26,61 @@ public class GetVersionOptionsTest {
     
       @Test
       public void testExecuteWithVersion() {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithVersion(5)
    -        .build();
    -    
    +    GetVersionOptions options = GetVersionOptions.newBuilder().executeWithVersion(5).build();
    +
         assertEquals(Optional.of(5), options.getCustomVersion());
         assertFalse(options.isUseMinVersion());
       }
    -  
    +
       @Test
       public void testExecuteWithMinVersion() {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithMinVersion()
    -        .build();
    -    
    +    GetVersionOptions options = GetVersionOptions.newBuilder().executeWithMinVersion().build();
    +
         assertEquals(Optional.empty(), options.getCustomVersion());
         assertTrue(options.isUseMinVersion());
       }
    -  
    +
       @Test
       public void testDefaultOptions() {
         GetVersionOptions options = GetVersionOptions.newBuilder().build();
    -    
    +
         assertEquals(Optional.empty(), options.getCustomVersion());
         assertFalse(options.isUseMinVersion());
       }
    -  
    +
       @Test
       public void testBuilderChaining() {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithVersion(3)
    -        .executeWithMinVersion()
    -        .build();
    -    
    +    GetVersionOptions options =
    +        GetVersionOptions.newBuilder().executeWithVersion(3).executeWithMinVersion().build();
    +
         // When both are set, custom version takes precedence
         assertEquals(Optional.of(3), options.getCustomVersion());
         assertTrue(options.isUseMinVersion());
       }
    -  
    +
       @Test
       public void testMultipleExecuteWithVersionCalls() {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithVersion(1)
    -        .executeWithVersion(2)
    -        .build();
    -    
    +    GetVersionOptions options =
    +        GetVersionOptions.newBuilder().executeWithVersion(1).executeWithVersion(2).build();
    +
         // Last call should take precedence
         assertEquals(Optional.of(2), options.getCustomVersion());
         assertFalse(options.isUseMinVersion());
       }
    -  
    +
       @Test
       public void testZeroVersion() {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithVersion(0)
    -        .build();
    -    
    +    GetVersionOptions options = GetVersionOptions.newBuilder().executeWithVersion(0).build();
    +
         assertEquals(Optional.of(0), options.getCustomVersion());
         assertFalse(options.isUseMinVersion());
       }
    -  
    +
       @Test
       public void testNegativeVersion() {
    -    GetVersionOptions options = GetVersionOptions.newBuilder()
    -        .executeWithVersion(-1)
    -        .build();
    -    
    +    GetVersionOptions options = GetVersionOptions.newBuilder().executeWithVersion(-1).build();
    +
         assertEquals(Optional.of(-1), options.getCustomVersion());
         assertFalse(options.isUseMinVersion());
       }
    -} 
    \ No newline at end of file
    +}
    diff --git a/src/test/java/com/uber/cadence/workflow/interceptors/SignalWorkflowInterceptor.java b/src/test/java/com/uber/cadence/workflow/interceptors/SignalWorkflowInterceptor.java
    index f4c113e5c..07fb02b94 100644
    --- a/src/test/java/com/uber/cadence/workflow/interceptors/SignalWorkflowInterceptor.java
    +++ b/src/test/java/com/uber/cadence/workflow/interceptors/SignalWorkflowInterceptor.java
    @@ -157,6 +157,12 @@ public int getVersion(String changeID, int minSupported, int maxSupported) {
         return next.getVersion(changeID, minSupported, maxSupported);
       }
     
    +  @Override
    +  public int getVersion(
    +      String changeID, int minSupported, int maxSupported, GetVersionOptions options) {
    +    return next.getVersion(changeID, minSupported, maxSupported, options);
    +  }
    +
       @Override
       public void continueAsNew(
           Optional workflowType, Optional options, Object[] args) {
    diff --git a/src/test/java/com/uber/cadence/workflow/interceptors/TracingWorkflowInterceptorFactory.java b/src/test/java/com/uber/cadence/workflow/interceptors/TracingWorkflowInterceptorFactory.java
    index 80cf10790..63e1712ab 100644
    --- a/src/test/java/com/uber/cadence/workflow/interceptors/TracingWorkflowInterceptorFactory.java
    +++ b/src/test/java/com/uber/cadence/workflow/interceptors/TracingWorkflowInterceptorFactory.java
    @@ -207,6 +207,13 @@ public int getVersion(String changeID, int minSupported, int maxSupported) {
           return next.getVersion(changeID, minSupported, maxSupported);
         }
     
    +    @Override
    +    public int getVersion(
    +        String changeID, int minSupported, int maxSupported, GetVersionOptions options) {
    +      trace.add("getVersion with options");
    +      return next.getVersion(changeID, minSupported, maxSupported, options);
    +    }
    +
         @Override
         public void continueAsNew(
             Optional workflowType, Optional options, Object[] args) {
    
    From 07894914d7131fd3672dd4464b60a9c5ae1f015d Mon Sep 17 00:00:00 2001
    From: Shijie Sheng 
    Date: Tue, 8 Jul 2025 15:38:26 -0700
    Subject: [PATCH 03/17] Remove payload from Thrift converter deprecation log
     and add additional log for TEnumType converter (#1011)
    
    What changed?
    
    added deprecation log for TEnumType converter
    log only payload class rather than body
    Why?
    
    In V4, default support for thrift message will be dropped
    ---
     .../cadence/converter/TBaseTypeAdapterFactory.java     | 10 +++++-----
     .../cadence/converter/TEnumTypeAdapterFactory.java     | 10 ++++++++++
     2 files changed, 15 insertions(+), 5 deletions(-)
    
    diff --git a/src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java b/src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java
    index c2f4d2b5b..5fcb32cd0 100644
    --- a/src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java
    +++ b/src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java
    @@ -65,8 +65,8 @@ public void write(JsonWriter jsonWriter, T value) throws IOException {
                       newThriftSerializer().toString((TBase) value, StandardCharsets.UTF_8.name());
                   jsonWriter.value(result);
                   logger.warn(
    -                  "TBase message will no longer be support in cadence-java-client V4, payload {}",
    -                  result);
    +                  "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}",
    +                  result.getClass().getName());
                 } catch (TException e) {
                   throw new DataConverterException("Failed to serialize TBase", e);
                 }
    @@ -79,13 +79,13 @@ public T read(JsonReader jsonReader) throws IOException {
                 }
                 String value = jsonReader.nextString();
                 try {
    -              logger.warn(
    -                  "TBase message will no longer be support in cadence-java-client V4, payload {}",
    -                  value);
                   @SuppressWarnings("unchecked")
                   T instance = (T) typeToken.getRawType().getConstructor().newInstance();
                   newThriftDeserializer()
                       .deserialize((TBase) instance, value, StandardCharsets.UTF_8.name());
    +              logger.warn(
    +                  "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}",
    +                  instance.getClass().getName());
                   return instance;
                 } catch (Exception e) {
                   throw new DataConverterException("Failed to deserialize TBase", e);
    diff --git a/src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java b/src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java
    index 22e9d1859..63f02ba8d 100644
    --- a/src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java
    +++ b/src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java
    @@ -26,6 +26,8 @@
     import java.io.IOException;
     import java.lang.reflect.Method;
     import org.apache.thrift.TEnum;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
     
     /**
      * Special handling of TEnum serialization and deserialization. This is to support for inline TEnum
    @@ -34,6 +36,8 @@
      */
     public class TEnumTypeAdapterFactory implements TypeAdapterFactory {
     
    +  private static final Logger logger = LoggerFactory.getLogger(TEnumTypeAdapterFactory.class);
    +
       @Override
       public  TypeAdapter create(Gson gson, TypeToken typeToken) {
         // this class only serializes 'TEnum' and its subtypes
    @@ -44,6 +48,9 @@ public  TypeAdapter create(Gson gson, TypeToken typeToken) {
             new TypeAdapter() {
               @Override
               public void write(JsonWriter jsonWriter, T value) throws IOException {
    +            logger.warn(
    +                "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}",
    +                value.getClass().getName());
                 jsonWriter.value(((TEnum) value).getValue());
               }
     
    @@ -54,6 +61,9 @@ public T read(JsonReader jsonReader) throws IOException {
                   Method m = (typeToken.getRawType().getDeclaredMethod("findByValue", Integer.TYPE));
                   @SuppressWarnings("unchecked")
                   T instance = (T) m.invoke(null, value);
    +              logger.warn(
    +                  "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}",
    +                  instance.getClass().getName());
                   return instance;
                 } catch (Exception e) {
                   throw new DataConverterException("Failed to deserilize TEnum", e);
    
    From 977fea780a1b95385b840c14e26e31f640de6b5f Mon Sep 17 00:00:00 2001
    From: Shijie Sheng 
    Date: Thu, 10 Jul 2025 16:48:20 -0700
    Subject: [PATCH 04/17] Publish to Central Publisher Portal instead (#1012)
    
    What changed?
    
    point API to the new central publisher portal
    change github release action to directly release
    Why?
    
    deprecation of old nexus portal
    
    How did you test it?
    
    locally uploaded (see https://central.sonatype.com/artifact/com.uber.cadence/cadence-client/3.12.8-rc.1)
    ---
     .github/workflows/release.yml | 2 +-
     build.gradle                  | 8 ++++----
     2 files changed, 5 insertions(+), 5 deletions(-)
    
    diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
    index 5e0dbd79e..e750a79f4 100644
    --- a/.github/workflows/release.yml
    +++ b/.github/workflows/release.yml
    @@ -53,7 +53,7 @@ jobs:
               OSSATUBER_PASSWORD: ${{ secrets.OSSATUBER_PASSWORD }}
               OSSATUBER_USERNAME: ${{ secrets.OSSATUBER_USERNAME }}
             run: | # TODO old way of setting the properties from environment variables in gradle
    -          ./gradlew publishToSonatype closeSonatypeStagingRepository --info \
    +          ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository --info \
                -Psigning.keyId="${SIGNING_KEY_ID}" \
                 -Psigning.password="${SIGNING_PASSWORD}" \
                 -Psigning.key="${SIGNING_KEY}" \
    diff --git a/build.gradle b/build.gradle
    index 22dc4466f..f57c0add2 100644
    --- a/build.gradle
    +++ b/build.gradle
    @@ -299,9 +299,9 @@ publishing {
                     password ossrhPassword
                 }
                 if(project.version.endsWith('-SNAPSHOT')) {
    -                url 'https://oss.sonatype.org/content/repositories/snapshots/'
    +                url 'https://ossrh-staging-api.central.sonatype.com/content/repositories/snapshots/'
                 } else {
    -                url 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
    +                url 'https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/'
                 }
             }
         }
    @@ -312,8 +312,8 @@ nexusPublishing {
             sonatype {
                 username.set(ossrhUsername)
                 password.set(ossrhPassword)
    -            nexusUrl.set(uri("https://oss.sonatype.org/service/local/"))
    -            snapshotRepositoryUrl.set(uri("https://oss.sonatype.org/content/repositories/snapshots/"))
    +            nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/"))
    +            snapshotRepositoryUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/content/repositories/snapshots/"))
             }
         }
     }
    
    From a6a0aa938608ce9a2018b2bcd8d7cd0844e95b35 Mon Sep 17 00:00:00 2001
    From: Mandy Chen <100249839+mandyschen@users.noreply.github.com>
    Date: Tue, 29 Jul 2025 13:26:22 -0700
    Subject: [PATCH 05/17] Added github action tests (#1013)
    
    * Added github action tests
    
    * Fix naming in yaml file
    
    ---------
    
    Co-authored-by: Mandy Chen 
    ---
     .buildkite/pipeline.yml                  |   2 +
     .buildkite/scripts/coverage_metadata.sh  |   4 +-
     .buildkite/scripts/lint.sh               |   4 +-
     .github/scripts/coverage_metadata.sh     |  11 +++
     .github/scripts/lint.sh                  |  12 +++
     .github/workflows/ci-checks.yml          | 102 +++++++++++++++++++++++
     .github/workflows/codecov.yml            |   2 +-
     docker-compose.yml                       |  69 +++++++++++++++
     docker/buildkite/Dockerfile              |   2 +
     docker/buildkite/README.md               |   1 +
     docker/buildkite/docker-compose.yaml     |   2 +
     docker/github_actions/Dockerfile         |  30 +++++++
     docker/github_actions/README.md          |  21 +++++
     docker/github_actions/docker-compose.yml |  95 +++++++++++++++++++++
     14 files changed, 354 insertions(+), 3 deletions(-)
     create mode 100755 .github/scripts/coverage_metadata.sh
     create mode 100755 .github/scripts/lint.sh
     create mode 100644 .github/workflows/ci-checks.yml
     create mode 100644 docker-compose.yml
     create mode 100644 docker/github_actions/Dockerfile
     create mode 100644 docker/github_actions/README.md
     create mode 100644 docker/github_actions/docker-compose.yml
    
    diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
    index fd2cb06ed..fcad3a0ae 100644
    --- a/.buildkite/pipeline.yml
    +++ b/.buildkite/pipeline.yml
    @@ -118,3 +118,5 @@ steps:
           - docker-compose#v3.0.0:
               run: unit-test-docker-sticky-off
               config: docker/buildkite/docker-compose.yaml
    +
    +# TODO: delete this file after migration to github actions
    diff --git a/.buildkite/scripts/coverage_metadata.sh b/.buildkite/scripts/coverage_metadata.sh
    index 15ffb3a5d..4296e01d6 100755
    --- a/.buildkite/scripts/coverage_metadata.sh
    +++ b/.buildkite/scripts/coverage_metadata.sh
    @@ -8,4 +8,6 @@ set -ex
     output_path="$1"
     echo "commit-sha: $(git rev-parse HEAD)" > "$output_path"
     echo "timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$output_path"
    -echo "Coverage metadata written to $output_path"
    \ No newline at end of file
    +echo "Coverage metadata written to $output_path"
    +
    +# TODO: delete this file after migration to github actions
    diff --git a/.buildkite/scripts/lint.sh b/.buildkite/scripts/lint.sh
    index cf3757453..1b7a19f44 100755
    --- a/.buildkite/scripts/lint.sh
    +++ b/.buildkite/scripts/lint.sh
    @@ -9,4 +9,6 @@ if [ -n "$(git status --porcelain)" ]; then
       echo "Please rerun the command and commit the changes"
       git status --porcelain
       exit 1
    -fi
    \ No newline at end of file
    +fi
    +
    +# TODO: delete this file after migration to github actions
    diff --git a/.github/scripts/coverage_metadata.sh b/.github/scripts/coverage_metadata.sh
    new file mode 100755
    index 000000000..15ffb3a5d
    --- /dev/null
    +++ b/.github/scripts/coverage_metadata.sh
    @@ -0,0 +1,11 @@
    +#!/bin/sh
    +set -ex
    +# This script generates coverage metadata for the coverage report.
    +# Output is used by SonarQube integration in Uber and not used by OS repo coverage tool itself.
    +# Example output:
    +#   commit-sha: 6953daa563e8e44512bc349c9608484cfd4ec4ff
    +#   timestamp: 2024-03-04T19:29:16Z
    +output_path="$1"
    +echo "commit-sha: $(git rev-parse HEAD)" > "$output_path"
    +echo "timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$output_path"
    +echo "Coverage metadata written to $output_path"
    \ No newline at end of file
    diff --git a/.github/scripts/lint.sh b/.github/scripts/lint.sh
    new file mode 100755
    index 000000000..cf3757453
    --- /dev/null
    +++ b/.github/scripts/lint.sh
    @@ -0,0 +1,12 @@
    +#!/bin/sh
    +
    +set -ex
    +
    +./gradlew goJF
    +
    +if [ -n "$(git status --porcelain)" ]; then
    +  echo "There are changes after linting (used goJF) cmd: ./gradlew goJF"
    +  echo "Please rerun the command and commit the changes"
    +  git status --porcelain
    +  exit 1
    +fi
    \ No newline at end of file
    diff --git a/.github/workflows/ci-checks.yml b/.github/workflows/ci-checks.yml
    new file mode 100644
    index 000000000..10c0f7caf
    --- /dev/null
    +++ b/.github/workflows/ci-checks.yml
    @@ -0,0 +1,102 @@
    +name: CI Checks
    +on: 
    +  push:
    +  pull_request:
    +
    +jobs:
    +  lint-check:
    +    name: Lint Check
    +    runs-on: ubuntu-latest
    +
    +    steps:
    +      - name: Checkout
    +        uses: actions/checkout@v4
    +        with:
    +          submodules: true
    +          fetch-depth: 0 # get full history for branch checking
    +
    +      - name: Run lint check
    +        run: docker compose -f docker/github_actions/docker-compose.yml run unit-test-test-service bash -c ".github/scripts/lint.sh"
    +
    +  unit-test-with-test-service:
    +    name: Unit Test with Test Service
    +    runs-on: ubuntu-latest
    +
    +    steps:
    +      - name: Checkout
    +        uses: actions/checkout@v4
    +        with:
    +          submodules: true
    +          fetch-depth: 0 # get full history for branch checking
    +
    +      - name: Run unit test with test service
    +        uses: nick-fields/retry@v3
    +        with:
    +          max_attempts: 3
    +          timeout_minutes: 30
    +          command: |
    +            docker compose -f docker/github_actions/docker-compose.yml run unit-test-test-service bash -c "./gradlew --no-daemon test jacocoTestReport && .github/scripts/coverage_metadata.sh build/reports/metadata.txt"
    +
    +      - name: Upload coverage artifacts
    +        uses: actions/upload-artifact@v4
    +        with:
    +          name: unit-test-with-test-service-coverage
    +          path: |
    +            build/reports/tests/test/**/*
    +            build/reports/jacoco/test/jacocoTestReport.xml
    +            build/reports/metadata.txt
    +          include-hidden-files: true
    +
    +  unit-test-with-docker-service-sticky-on:
    +    name: Unit Test with Docker Service (Sticky On)
    +    runs-on: ubuntu-latest
    +
    +    steps:
    +      - name: Checkout
    +        uses: actions/checkout@v4
    +        with:
    +          submodules: true
    +          fetch-depth: 0 # get full history for branch checking
    +
    +      - name: Run unit test with docker service (sticky on)
    +        uses: nick-fields/retry@v3
    +        with:
    +          max_attempts: 3
    +          timeout_minutes: 50
    +          command: |
    +            docker compose -f docker/github_actions/docker-compose.yml run unit-test-docker-sticky-on bash -c "./gradlew --no-daemon test"
    +
    +      - name: Upload coverage artifacts
    +        uses: actions/upload-artifact@v4
    +        with:
    +          name: unit-test-with-docker-service-sticky-on-coverage
    +          path: |
    +            build/reports/tests/test/**/*
    +          include-hidden-files: true
    +
    +  unit-test-with-docker-service-sticky-off:
    +    name: Unit Test with Docker Service (Sticky Off)
    +    runs-on: ubuntu-latest
    +
    +    steps:
    +      - name: Checkout
    +        uses: actions/checkout@v4
    +        with:
    +          submodules: true
    +          fetch-depth: 0 # get full history for branch checking
    +
    +      - name: Run unit test with docker service (sticky off)
    +        uses: nick-fields/retry@v3
    +        with:
    +          max_attempts: 3
    +          timeout_minutes: 50
    +          command: |
    +            docker compose -f docker/github_actions/docker-compose.yml run unit-test-docker-sticky-off bash -c "./gradlew --no-daemon test"
    +
    +      - name: Upload coverage artifacts
    +        uses: actions/upload-artifact@v4
    +        with:
    +          name: unit-test-with-docker-service-sticky-off-coverage
    +          path: |
    +            build/reports/tests/test/**/*
    +          include-hidden-files: true
    \ No newline at end of file
    diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
    index 30bdef8eb..22f304655 100644
    --- a/.github/workflows/codecov.yml
    +++ b/.github/workflows/codecov.yml
    @@ -9,7 +9,7 @@ jobs:
             with:
               submodules: 'true'
           - name: Install dependencies, run tests, and collect coverage
    -        run: docker compose -f docker/buildkite/docker-compose.yaml run unit-test-test-service
    +        run: docker compose -f docker/github_actions/docker-compose.yml run unit-test-test-service
           - name: Upload coverage to Codecov
             uses: codecov/codecov-action@v4
             env:
    diff --git a/docker-compose.yml b/docker-compose.yml
    new file mode 100644
    index 000000000..dba07a534
    --- /dev/null
    +++ b/docker-compose.yml
    @@ -0,0 +1,69 @@
    +services:
    +  cassandra:
    +    image: cassandra:4.1.1
    +    ports:
    +      - "9042:9042"
    +    environment:
    +      - "MAX_HEAP_SIZE=256M"
    +      - "HEAP_NEWSIZE=128M"
    +    healthcheck:
    +      test: ["CMD", "cqlsh", "-u cassandra", "-p cassandra" ,"-e describe keyspaces"]
    +      interval: 15s
    +      timeout: 30s
    +      retries: 10
    +  prometheus:
    +    image: prom/prometheus:latest
    +    volumes:
    +      - ./prometheus:/etc/prometheus
    +    command:
    +      - '--config.file=/etc/prometheus/prometheus.yml'
    +    ports:
    +      - '9090:9090'
    +  node-exporter:
    +    image: prom/node-exporter
    +    ports:
    +      - '9100:9100'
    +  cadence:
    +    image: ubercadence/server:master-auto-setup
    +    ports:
    +     - "8000:8000"
    +     - "8001:8001"
    +     - "8002:8002"
    +     - "8003:8003"
    +     - "7933:7933"
    +     - "7934:7934"
    +     - "7935:7935"
    +     - "7939:7939"
    +     - "7833:7833"
    +     - "7936:7936"
    +    environment:
    +      - "CASSANDRA_SEEDS=cassandra"
    +      - "PROMETHEUS_ENDPOINT_0=0.0.0.0:8000"
    +      - "PROMETHEUS_ENDPOINT_1=0.0.0.0:8001"
    +      - "PROMETHEUS_ENDPOINT_2=0.0.0.0:8002"
    +      - "PROMETHEUS_ENDPOINT_3=0.0.0.0:8003"
    +      - "DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development.yaml"
    +      - "FRONTEND_PPROF_PORT=7936"
    +      - "LOG_LEVEL=debug"
    +    depends_on:
    +      cassandra:
    +        condition: service_healthy
    +      prometheus:
    +        condition: service_started
    +  cadence-web:
    +    image: ubercadence/web:latest
    +    environment:
    +      - "CADENCE_GRPC_PEERS=cadence:7833"
    +    ports:
    +      - "8088:8088"
    +    depends_on:
    +      - cadence
    +  grafana:
    +    image: grafana/grafana
    +    volumes:
    +      - ./grafana:/etc/grafana
    +    user: "1000"
    +    depends_on:
    +      - prometheus
    +    ports:
    +      - '3000:3000'
    diff --git a/docker/buildkite/Dockerfile b/docker/buildkite/Dockerfile
    index 88e1957ec..b192fd72a 100644
    --- a/docker/buildkite/Dockerfile
    +++ b/docker/buildkite/Dockerfile
    @@ -33,3 +33,5 @@ RUN apk del build-dependencies wget && rm -rf /var/cache/apk/*
     
     RUN mkdir /cadence-java-client
     WORKDIR /cadence-java-client
    +
    +# TODO: delete this file after migration to github actions
    diff --git a/docker/buildkite/README.md b/docker/buildkite/README.md
    index dc5c3d6d0..decf6bb94 100644
    --- a/docker/buildkite/README.md
    +++ b/docker/buildkite/README.md
    @@ -19,3 +19,4 @@ And finally make sure to shutdown all docker resources:
     ```bash
     docker-compose  down
     ```
    +TODO: delete this file after migration to github actions
    diff --git a/docker/buildkite/docker-compose.yaml b/docker/buildkite/docker-compose.yaml
    index bf0d41381..44cab51e7 100644
    --- a/docker/buildkite/docker-compose.yaml
    +++ b/docker/buildkite/docker-compose.yaml
    @@ -93,3 +93,5 @@ services:
           - "USE_DOCKER_SERVICE=false"
         volumes:
           - "../../:/cadence-java-client"
    +
    +# TODO: delete this file after migration to github actions
    diff --git a/docker/github_actions/Dockerfile b/docker/github_actions/Dockerfile
    new file mode 100644
    index 000000000..80d770d4a
    --- /dev/null
    +++ b/docker/github_actions/Dockerfile
    @@ -0,0 +1,30 @@
    +# Always use a release version or a specific commit hash below. Don't use
    +# a branch name since we'd keep getting updates as long as there are new
    +# commits to that branch and one of them can break the build
    +FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine
    +
    +# Apache Thrift version
    +ENV APACHE_THRIFT_VERSION=0.9.3
    +
    +# Install dependencies using apk
    +RUN apk update && apk add --virtual wget ca-certificates wget && apk add --virtual build-dependencies build-base gcc
    +# Git is needed in order to update the dls submodule
    +RUN apk add git libstdc++ bash curl
    +
    +# Compile source
    +RUN set -ex ;\
    +	wget https://archive.apache.org/dist/thrift/${APACHE_THRIFT_VERSION}/thrift-${APACHE_THRIFT_VERSION}.tar.gz && \
    +	tar -xvf thrift-${APACHE_THRIFT_VERSION}.tar.gz && \
    +	rm thrift-${APACHE_THRIFT_VERSION}.tar.gz && \
    +	cd thrift-${APACHE_THRIFT_VERSION}/ && \
    +	./configure --enable-libs=no --enable-tests=no --enable-tutorial=no --with-cpp=no --with-c_glib=no --with-java=yes --with-ruby=no --with-erlang=no --with-go=no --with-nodejs=no --with-python=no && \
    +	make && \
    +	make install && \
    +	cd .. && \
    +	rm -rf thrift-${APACHE_THRIFT_VERSION}
    +
    +# Cleanup packages and remove cache
    +RUN apk del build-dependencies wget && rm -rf /var/cache/apk/*
    +
    +RUN mkdir /cadence-java-client
    +WORKDIR /cadence-java-client
    diff --git a/docker/github_actions/README.md b/docker/github_actions/README.md
    new file mode 100644
    index 000000000..e06e7fc6e
    --- /dev/null
    +++ b/docker/github_actions/README.md
    @@ -0,0 +1,21 @@
    +# Debug Github Actions integration test
    +Sometimes the environment on IDE may be different as Github Actions.
    +You can run the following command to trigger the same test as running on Github Actions:
    +
    +```bash
    +docker-compose -f docker/github_actions/docker-compose.yml run unit-test-docker-sticky-on &> test.log
    +```
    +Or
    +```bash
    +docker-compose -f docker/github_actions/docker-compose.yml run unit-test-docker-sticky-off &> test.log
    +```
    +
    +Or
    +```bash
    +docker-compose -f docker/github_actions/docker-compose.yml run unit-test-test-service &> test.log
    +```
    +
    +And finally make sure to shutdown all docker resources:
    +```bash
    +docker-compose  down
    +```
    diff --git a/docker/github_actions/docker-compose.yml b/docker/github_actions/docker-compose.yml
    new file mode 100644
    index 000000000..af56802fb
    --- /dev/null
    +++ b/docker/github_actions/docker-compose.yml
    @@ -0,0 +1,95 @@
    +version: '3.5'
    +
    +services:
    +  cassandra:
    +    image: cassandra:4.1.3
    +    deploy:
    +      resources:
    +        limits:
    +          cpus: '4'
    +          memory: 12000M
    +    ports:
    +      - "9042:9042"
    +
    +  statsd:
    +    image: hopsoft/graphite-statsd
    +    deploy:
    +      resources:
    +        limits:
    +          cpus: '0.50'
    +          memory: 1024M
    +    ports:
    +      - "8080:80"
    +      - "2003:2003"
    +      - "8125:8125"
    +      - "8126:8126"
    +
    +  cadence:
    +    image: ubercadence/server:master-auto-setup
    +    deploy:
    +      resources:
    +        limits:
    +          cpus: '2'
    +          memory: 8192M
    +    ports:
    +      - "7933:7933"
    +      - "7934:7934"
    +      - "7935:7935"
    +      - "7939:7939"
    +    environment:
    +      - "CASSANDRA_SEEDS=cassandra"
    +      - "STATSD_ENDPOINT=statsd:8125"
    +    depends_on:
    +      - cassandra
    +      - statsd
    +
    +  unit-test-docker-sticky-off:
    +    build:
    +      context: ../../
    +      dockerfile: ./docker/github_actions/Dockerfile
    +    command: "./gradlew --no-daemon test"
    +    deploy:
    +      resources:
    +        limits:
    +          cpus: '2'
    +          memory: 8192M
    +    environment:
    +      - "USER=unittest"
    +      - "CADENCE_SEEDS=cadence"
    +      - "USE_DOCKER_SERVICE=true"
    +      - "STICKY_OFF=true"
    +    depends_on:
    +      - cadence
    +    volumes:
    +      - "../../:/cadence-java-client"
    +
    +  unit-test-docker-sticky-on:
    +    build:
    +      context: ../../
    +      dockerfile: ./docker/github_actions/Dockerfile
    +    command: "./gradlew --no-daemon test"
    +    deploy:
    +      resources:
    +        limits:
    +          cpus: '2'
    +          memory: 8192M
    +    environment:
    +      - "USER=unittest"
    +      - "CADENCE_SEEDS=cadence"
    +      - "USE_DOCKER_SERVICE=true"
    +      - "STICKY_OFF=false"
    +    depends_on:
    +      - cadence
    +    volumes:
    +      - "../../:/cadence-java-client"
    +
    +  unit-test-test-service:
    +    build:
    +      context: ../../
    +      dockerfile: ./docker/github_actions/Dockerfile
    +    command: "./gradlew --no-daemon test"
    +    environment:
    +      - "USER=unittest"
    +      - "USE_DOCKER_SERVICE=false"
    +    volumes:
    +      - "../../:/cadence-java-client"
    
    From 5689b1fc3440e4b2e3031cfb340e9209e46ee85e Mon Sep 17 00:00:00 2001
    From: Mandy Chen <100249839+mandyschen@users.noreply.github.com>
    Date: Thu, 31 Jul 2025 14:21:40 -0700
    Subject: [PATCH 06/17] Always upload artifacts (#1016)
    
    * Always upload artifacts
    
    * Test upload after fail
    
    * Try with running test
    
    * Remove forced fail
    
    ---------
    
    Co-authored-by: Mandy Chen 
    ---
     .github/workflows/ci-checks.yml | 3 +++
     1 file changed, 3 insertions(+)
    
    diff --git a/.github/workflows/ci-checks.yml b/.github/workflows/ci-checks.yml
    index 10c0f7caf..fd10d2995 100644
    --- a/.github/workflows/ci-checks.yml
    +++ b/.github/workflows/ci-checks.yml
    @@ -38,6 +38,7 @@ jobs:
                 docker compose -f docker/github_actions/docker-compose.yml run unit-test-test-service bash -c "./gradlew --no-daemon test jacocoTestReport && .github/scripts/coverage_metadata.sh build/reports/metadata.txt"
     
           - name: Upload coverage artifacts
    +        if: always()
             uses: actions/upload-artifact@v4
             with:
               name: unit-test-with-test-service-coverage
    @@ -67,6 +68,7 @@ jobs:
                 docker compose -f docker/github_actions/docker-compose.yml run unit-test-docker-sticky-on bash -c "./gradlew --no-daemon test"
     
           - name: Upload coverage artifacts
    +        if: always()
             uses: actions/upload-artifact@v4
             with:
               name: unit-test-with-docker-service-sticky-on-coverage
    @@ -94,6 +96,7 @@ jobs:
                 docker compose -f docker/github_actions/docker-compose.yml run unit-test-docker-sticky-off bash -c "./gradlew --no-daemon test"
     
           - name: Upload coverage artifacts
    +        if: always()
             uses: actions/upload-artifact@v4
             with:
               name: unit-test-with-docker-service-sticky-off-coverage
    
    From 116a2db37dfe30d8491f79323bd123080ec918d2 Mon Sep 17 00:00:00 2001
    From: Chris Warren <16132615+c-warren@users.noreply.github.com>
    Date: Fri, 1 Aug 2025 14:51:34 -0700
    Subject: [PATCH 07/17] Add unimplemented DiagnoseWorkflowExecution methods
     (#1015)
    
    ---
     src/main/idls                                 |  2 +-
     .../compatibility/Thrift2ProtoAdapter.java    | 17 ++++++
     .../compatibility/proto/RequestMapper.java    | 11 +++-
     .../compatibility/thrift/HistoryMapper.java   |  2 +
     .../compatibility/thrift/ResponseMapper.java  |  3 +
     .../compatibility/thrift/TypeMapper.java      | 11 ++++
     .../sync/TestActivityEnvironmentInternal.java | 15 +++++
     .../sync/TestWorkflowEnvironmentInternal.java | 17 ++++++
     .../testservice/TestWorkflowService.java      | 17 ++++++
     .../serviceclient/IWorkflowServiceBase.java   | 15 +++++
     .../WorkflowServiceTChannel.java              | 15 +++++
     .../internal/compatibility/ProtoObjects.java  |  9 +++
     .../Thrift2ProtoAdapterTest.java              |  2 +
     .../internal/compatibility/ThriftObjects.java | 26 +++++---
     .../thrift/HistoryMapperEventTest.java        |  3 +-
     .../TestWorkflowServiceDiagnoseTest.java      | 50 ++++++++++++++++
     .../IWorkflowServiceBaseTest.java             |  7 +++
     .../WorkflowServiceTChannelDiagnoseTest.java  | 59 +++++++++++++++++++
     18 files changed, 270 insertions(+), 11 deletions(-)
     create mode 100644 src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java
     create mode 100644 src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java
    
    diff --git a/src/main/idls b/src/main/idls
    index 83d5cae7f..f5ac3a987 160000
    --- a/src/main/idls
    +++ b/src/main/idls
    @@ -1 +1 @@
    -Subproject commit 83d5cae7fc5176f73486ffe82144044711930073
    +Subproject commit f5ac3a987dcaf996cf44c72064195faf76c381f3
    diff --git a/src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java b/src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java
    index a83561749..b4bae6557 100644
    --- a/src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java
    +++ b/src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java
    @@ -31,6 +31,8 @@
     import com.uber.cadence.DescribeTaskListResponse;
     import com.uber.cadence.DescribeWorkflowExecutionRequest;
     import com.uber.cadence.DescribeWorkflowExecutionResponse;
    +import com.uber.cadence.DiagnoseWorkflowExecutionRequest;
    +import com.uber.cadence.DiagnoseWorkflowExecutionResponse;
     import com.uber.cadence.DomainAlreadyExistsError;
     import com.uber.cadence.DomainNotActiveError;
     import com.uber.cadence.EntityNotExistsError;
    @@ -156,6 +158,14 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque
         }
       }
     
    +  @Override
    +  public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest)
    +      throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError,
    +          ClientVersionNotSupportedError, TException {
    +    throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +  }
    +
       @Override
       public ListDomainsResponse ListDomains(ListDomainsRequest listRequest)
           throws BadRequestError, EntityNotExistsError, ServiceBusyError,
    @@ -829,6 +839,13 @@ public void DescribeDomain(
         throw new UnsupportedOperationException("not implemented");
       }
     
    +  @Override
    +  public void DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler)
    +      throws TException {
    +    throw new UnsupportedOperationException("not implemented");
    +  }
    +
       @Override
       public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler)
           throws TException {
    diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/RequestMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/RequestMapper.java
    index 319d3e5ea..c07d67361 100644
    --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/RequestMapper.java
    +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/RequestMapper.java
    @@ -29,6 +29,7 @@
     import static com.uber.cadence.internal.compatibility.proto.Helpers.newFieldMask;
     import static com.uber.cadence.internal.compatibility.proto.Helpers.nullToEmpty;
     import static com.uber.cadence.internal.compatibility.proto.Helpers.secondsToDuration;
    +import static com.uber.cadence.internal.compatibility.proto.Helpers.unixNanoToTime;
     import static com.uber.cadence.internal.compatibility.proto.TypeMapper.badBinaries;
     import static com.uber.cadence.internal.compatibility.proto.TypeMapper.clusterReplicationConfigurationArray;
     import static com.uber.cadence.internal.compatibility.proto.TypeMapper.failure;
    @@ -403,6 +404,7 @@ public static DescribeWorkflowExecutionRequest describeWorkflowExecutionRequest(
         return DescribeWorkflowExecutionRequest.newBuilder()
             .setDomain(t.getDomain())
             .setWorkflowExecution(workflowExecution(t.getExecution()))
    +        .setQueryConsistencyLevel(queryConsistencyLevel(t.getQueryConsistencyLevel()))
             .build();
       }
     
    @@ -418,7 +420,8 @@ public static GetWorkflowExecutionHistoryRequest getWorkflowExecutionHistoryRequ
                 .setPageSize(t.getMaximumPageSize())
                 .setWaitForNewEvent(t.isWaitForNewEvent())
                 .setHistoryEventFilterType(eventFilterType(t.HistoryEventFilterType))
    -            .setSkipArchival(t.isSkipArchival());
    +            .setSkipArchival(t.isSkipArchival())
    +            .setQueryConsistencyLevel(queryConsistencyLevel(t.getQueryConsistencyLevel()));
         if (t.getNextPageToken() != null) {
           builder.setNextPageToken(arrayToByteString(t.getNextPageToken()));
         }
    @@ -445,6 +448,9 @@ public static SignalWithStartWorkflowExecutionRequest signalWithStartWorkflowExe
                 .setSearchAttributes(searchAttributes(t.getSearchAttributes()))
                 .setHeader(header(t.getHeader()))
                 .setJitterStart(secondsToDuration(t.getJitterStartSeconds()));
    +    if (t.isSetFirstRunAtTimestamp()) {
    +      builder.setFirstRunAt(unixNanoToTime(t.getFirstRunAtTimestamp()));
    +    }
         if (t.getRetryPolicy() != null) {
           builder.setRetryPolicy(retryPolicy(t.getRetryPolicy()));
         }
    @@ -530,6 +536,9 @@ public static StartWorkflowExecutionRequest startWorkflowExecutionRequest(
                 .setHeader(header(t.getHeader()))
                 .setDelayStart(secondsToDuration(t.getDelayStartSeconds()))
                 .setJitterStart(secondsToDuration(t.getJitterStartSeconds()));
    +    if (t.isSetFirstRunAtTimestamp()) {
    +      request.setFirstRunAt(unixNanoToTime(t.getFirstRunAtTimestamp()));
    +    }
         if (t.getRetryPolicy() != null) {
           request.setRetryPolicy(retryPolicy(t.getRetryPolicy()));
         }
    diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapper.java
    index ed1b0b54d..8c49de1f7 100644
    --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapper.java
    +++ b/src/main/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapper.java
    @@ -947,6 +947,8 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes(
         res.setMemo(memo(t.getMemo()));
         res.setSearchAttributes(searchAttributes(t.getSearchAttributes()));
         res.setDelayStartSeconds(durationToSeconds(t.getDelayStart()));
    +    res.setJitterStartSeconds(durationToSeconds(t.getJitterStart()));
    +    res.setFirstRunAtTimestamp(timeToUnixNano(t.getFirstRunAt()));
         return res;
       }
     
    diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java
    index b517216bc..10fe645e7 100644
    --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java
    +++ b/src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java
    @@ -25,6 +25,7 @@
     import static com.uber.cadence.internal.compatibility.thrift.HistoryMapper.history;
     import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.activityLocalDispatchInfoMap;
     import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.activityType;
    +import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.autoConfigHint;
     import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.badBinaries;
     import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.clusterReplicationConfigurationArray;
     import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.dataBlobArray;
    @@ -239,6 +240,7 @@ public static PollForActivityTaskResponse pollForActivityTaskResponse(
         res.setWorkflowType(workflowType(t.getWorkflowType()));
         res.setWorkflowDomain(t.getWorkflowDomain());
         res.setHeader(header(t.getHeader()));
    +    res.setAutoConfigHint(autoConfigHint(t.getAutoConfigHint()));
         return res;
       }
     
    @@ -265,6 +267,7 @@ public static PollForDecisionTaskResponse pollForDecisionTaskResponse(
         res.setStartedTimestamp(timeToUnixNano(t.getStartedTime()));
         res.setQueries(workflowQueryMap(t.getQueriesMap()));
         res.setNextEventId(t.getNextEventId());
    +    res.setAutoConfigHint(autoConfigHint(t.getAutoConfigHint()));
         return res;
       }
     
    diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java
    index be2d34855..681b495dd 100644
    --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java
    +++ b/src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java
    @@ -31,6 +31,7 @@
     
     import com.uber.cadence.ActivityLocalDispatchInfo;
     import com.uber.cadence.ActivityType;
    +import com.uber.cadence.AutoConfigHint;
     import com.uber.cadence.BadBinaries;
     import com.uber.cadence.BadBinaryInfo;
     import com.uber.cadence.ClusterReplicationConfiguration;
    @@ -686,4 +687,14 @@ static Map activityLocalDispatchInfoMap(
         }
         return v;
       }
    +
    +  static AutoConfigHint autoConfigHint(com.uber.cadence.api.v1.AutoConfigHint t) {
    +    if (t == null) {
    +      return null;
    +    }
    +    AutoConfigHint autoConfigHint = new AutoConfigHint();
    +    autoConfigHint.setEnableAutoConfig(t.getEnableAutoConfig());
    +    autoConfigHint.setPollerWaitTimeInMs(t.getPollerWaitTimeInMs());
    +    return autoConfigHint;
    +  }
     }
    diff --git a/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java b/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java
    index 56ffb7694..21683403d 100644
    --- a/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java
    +++ b/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java
    @@ -599,6 +599,13 @@ public void DescribeDomain(
           impl.DescribeDomain(describeRequest, resultHandler);
         }
     
    +    @Override
    +    public void DiagnoseWorkflowExecution(
    +        DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler)
    +        throws TException {
    +      impl.DiagnoseWorkflowExecution(diagnoseRequest, resultHandler);
    +    }
    +
         @Override
         public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler)
             throws TException {
    @@ -927,6 +934,14 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque
           return impl.DescribeDomain(describeRequest);
         }
     
    +    @Override
    +    public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution(
    +        DiagnoseWorkflowExecutionRequest diagnoseRequest)
    +        throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError,
    +            ClientVersionNotSupportedError, TException {
    +      return impl.DiagnoseWorkflowExecution(diagnoseRequest);
    +    }
    +
         @Override
         public ListDomainsResponse ListDomains(ListDomainsRequest listRequest)
             throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError,
    diff --git a/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java b/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java
    index 5c432d1cc..aa810762e 100644
    --- a/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java
    +++ b/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java
    @@ -29,6 +29,8 @@
     import com.uber.cadence.DescribeTaskListResponse;
     import com.uber.cadence.DescribeWorkflowExecutionRequest;
     import com.uber.cadence.DescribeWorkflowExecutionResponse;
    +import com.uber.cadence.DiagnoseWorkflowExecutionRequest;
    +import com.uber.cadence.DiagnoseWorkflowExecutionResponse;
     import com.uber.cadence.DomainAlreadyExistsError;
     import com.uber.cadence.DomainNotActiveError;
     import com.uber.cadence.EntityNotExistsError;
    @@ -475,6 +477,13 @@ public void DescribeDomain(
           impl.DescribeDomain(describeRequest, resultHandler);
         }
     
    +    @Override
    +    public void DiagnoseWorkflowExecution(
    +        DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler)
    +        throws TException {
    +      throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +    }
    +
         @Override
         public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler)
             throws TException {
    @@ -809,6 +818,14 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque
           return impl.DescribeDomain(describeRequest);
         }
     
    +    @Override
    +    public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution(
    +        DiagnoseWorkflowExecutionRequest diagnoseRequest)
    +        throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError,
    +            ClientVersionNotSupportedError, TException {
    +      throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +    }
    +
         @Override
         public ListDomainsResponse ListDomains(ListDomainsRequest listRequest)
             throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError,
    diff --git a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java
    index 8af30e9d6..d0a87ef40 100644
    --- a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java
    +++ b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java
    @@ -29,6 +29,8 @@
     import com.uber.cadence.DescribeTaskListResponse;
     import com.uber.cadence.DescribeWorkflowExecutionRequest;
     import com.uber.cadence.DescribeWorkflowExecutionResponse;
    +import com.uber.cadence.DiagnoseWorkflowExecutionRequest;
    +import com.uber.cadence.DiagnoseWorkflowExecutionResponse;
     import com.uber.cadence.DomainAlreadyExistsError;
     import com.uber.cadence.DomainNotActiveError;
     import com.uber.cadence.EntityNotExistsError;
    @@ -206,6 +208,14 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque
         throw new UnsupportedOperationException("not implemented");
       }
     
    +  @Override
    +  public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest)
    +      throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError,
    +          ClientVersionNotSupportedError, TException {
    +    throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +  }
    +
       @Override
       public ListDomainsResponse ListDomains(ListDomainsRequest listRequest)
           throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError,
    @@ -834,6 +844,13 @@ public void DescribeDomain(
         throw new UnsupportedOperationException("not implemented");
       }
     
    +  @Override
    +  public void DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler)
    +      throws TException {
    +    throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +  }
    +
       @Override
       public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler)
           throws TException {
    diff --git a/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java b/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java
    index db00bb728..7b1ce458d 100644
    --- a/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java
    +++ b/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java
    @@ -43,6 +43,14 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque
         throw new UnsupportedOperationException("unimplemented");
       }
     
    +  @Override
    +  public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest)
    +      throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError,
    +          ClientVersionNotSupportedError, TException {
    +    throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +  }
    +
       @Override
       public ListDomainsResponse ListDomains(ListDomainsRequest listRequest)
           throws BadRequestError, EntityNotExistsError, ServiceBusyError,
    @@ -377,6 +385,13 @@ public void DescribeDomain(
         throw new UnsupportedOperationException("unimplemented");
       }
     
    +  @Override
    +  public void DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler)
    +      throws TException {
    +    throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +  }
    +
       @Override
       public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler)
           throws TException {
    diff --git a/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java b/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java
    index 2878e6fac..d8d22695f 100644
    --- a/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java
    +++ b/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java
    @@ -443,6 +443,14 @@ private DescribeDomainResponse describeDomain(DescribeDomainRequest describeRequ
         }
       }
     
    +  @Override
    +  public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest)
    +      throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError,
    +          ClientVersionNotSupportedError, TException {
    +    throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +  }
    +
       @Override
       public ListDomainsResponse ListDomains(ListDomainsRequest listRequest)
           throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError,
    @@ -2937,6 +2945,13 @@ public void DescribeDomain(
         throw new UnsupportedOperationException("not implemented");
       }
     
    +  @Override
    +  public void DiagnoseWorkflowExecution(
    +      DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler)
    +      throws TException {
    +    throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented");
    +  }
    +
       @Override
       public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler)
           throws TException {
    diff --git a/src/test/java/com/uber/cadence/internal/compatibility/ProtoObjects.java b/src/test/java/com/uber/cadence/internal/compatibility/ProtoObjects.java
    index c12ae0ea5..b0b261a07 100644
    --- a/src/test/java/com/uber/cadence/internal/compatibility/ProtoObjects.java
    +++ b/src/test/java/com/uber/cadence/internal/compatibility/ProtoObjects.java
    @@ -80,6 +80,8 @@ public final class ProtoObjects {
       public static final Header HEADER =
           Header.newBuilder().putFields("key", payload("value")).build();
       public static final Memo MEMO = Memo.newBuilder().putFields("memo", payload("memoValue")).build();
    +  public static final AutoConfigHint AUTO_CONFIG_HINT =
    +      AutoConfigHint.newBuilder().setEnableAutoConfig(true).setPollerWaitTimeInMs(100).build();
       public static final SearchAttributes SEARCH_ATTRIBUTES =
           SearchAttributes.newBuilder().putIndexedFields("search", payload("attributes")).build();
       public static final Map DATA = ImmutableMap.of("dataKey", "dataValue");
    @@ -629,6 +631,8 @@ public final class ProtoObjects {
                   .setMemo(MEMO)
                   .setSearchAttributes(SEARCH_ATTRIBUTES)
                   .setDelayStart(seconds(4))
    +              .setJitterStart(seconds(5))
    +              .setFirstRunAt(timestampNanos(123456789))
                   .build();
     
       public static final StartChildWorkflowExecutionFailedEventAttributes
    @@ -984,6 +988,7 @@ public final class ProtoObjects {
           DescribeWorkflowExecutionRequest.newBuilder()
               .setDomain("domain")
               .setWorkflowExecution(WORKFLOW_EXECUTION)
    +          .setQueryConsistencyLevel(QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_STRONG)
               .build();
     
       public static final GetWorkflowExecutionHistoryRequest GET_WORKFLOW_EXECUTION_HISTORY_REQUEST =
    @@ -995,6 +1000,7 @@ public final class ProtoObjects {
               .setHistoryEventFilterType(EventFilterType.EVENT_FILTER_TYPE_CLOSE_EVENT)
               .setSkipArchival(true)
               .setNextPageToken(utf8("nextPageToken"))
    +          .setQueryConsistencyLevel(QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_STRONG)
               .build();
     
       public static final StartWorkflowExecutionRequest START_WORKFLOW_EXECUTION =
    @@ -1016,6 +1022,7 @@ public final class ProtoObjects {
               .setHeader(HEADER)
               .setDelayStart(seconds(3))
               .setJitterStart(seconds(0))
    +          .setFirstRunAt(timestampNanos(123456789))
               .build();
     
       public static final SignalWithStartWorkflowExecutionRequest SIGNAL_WITH_START_WORKFLOW_EXECUTION =
    @@ -1301,6 +1308,7 @@ public final class ProtoObjects {
               .setWorkflowType(WORKFLOW_TYPE)
               .setWorkflowDomain("domain")
               .setHeader(HEADER)
    +          .setAutoConfigHint(AUTO_CONFIG_HINT)
               .build();
       public static final PollForDecisionTaskResponse POLL_FOR_DECISION_TASK_RESPONSE =
           PollForDecisionTaskResponse.newBuilder()
    @@ -1319,6 +1327,7 @@ public final class ProtoObjects {
               .setStartedTime(timestampNanos(6))
               .putAllQueries(ImmutableMap.of("query", WORKFLOW_QUERY))
               .setNextEventId(7)
    +          .setAutoConfigHint(AUTO_CONFIG_HINT)
               .build();
     
       public static final QueryWorkflowResponse QUERY_WORKFLOW_RESPONSE =
    diff --git a/src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java b/src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java
    index a8e17d9ec..d28b69804 100644
    --- a/src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java
    +++ b/src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java
    @@ -786,9 +786,11 @@ public void testIsHealthy() throws Exception {
       @Test
       public void testAsyncUnsupported() {
         assertUnsupported(WorkflowService.Iface::RestartWorkflowExecution);
    +    assertUnsupported(WorkflowService.Iface::DiagnoseWorkflowExecution);
         assertUnsupported(WorkflowService.Iface::GetTaskListsByDomain);
         assertAsyncUnsupported(WorkflowService.AsyncIface::RegisterDomain);
         assertAsyncUnsupported(WorkflowService.AsyncIface::DescribeDomain);
    +    assertAsyncUnsupported(WorkflowService.AsyncIface::DiagnoseWorkflowExecution);
         assertAsyncUnsupported(WorkflowService.AsyncIface::ListDomains);
         assertAsyncUnsupported(WorkflowService.AsyncIface::UpdateDomain);
         assertAsyncUnsupported(WorkflowService.AsyncIface::DeprecateDomain);
    diff --git a/src/test/java/com/uber/cadence/internal/compatibility/ThriftObjects.java b/src/test/java/com/uber/cadence/internal/compatibility/ThriftObjects.java
    index 7737f01bb..4d6db21e7 100644
    --- a/src/test/java/com/uber/cadence/internal/compatibility/ThriftObjects.java
    +++ b/src/test/java/com/uber/cadence/internal/compatibility/ThriftObjects.java
    @@ -67,6 +67,8 @@ public final class ThriftObjects {
               .setErrorMessage("error");
       public static final Header HEADER = new Header().setFields(ImmutableMap.of("key", utf8("value")));
       public static final Memo MEMO = new Memo().setFields(ImmutableMap.of("memo", utf8("memoValue")));
    +  public static final AutoConfigHint AUTO_CONFIG_HINT =
    +      new AutoConfigHint().setEnableAutoConfig(true).setPollerWaitTimeInMs(100);
       public static final SearchAttributes SEARCH_ATTRIBUTES =
           new SearchAttributes().setIndexedFields(ImmutableMap.of("search", utf8("attributes")));
       public static final Map DATA = ImmutableMap.of("dataKey", "dataValue");
    @@ -539,7 +541,9 @@ public final class ThriftObjects {
                   .setHeader(HEADER)
                   .setMemo(MEMO)
                   .setSearchAttributes(SEARCH_ATTRIBUTES)
    -              .setDelayStartSeconds(4);
    +              .setDelayStartSeconds(4)
    +              .setJitterStartSeconds(5)
    +              .setFirstRunAtTimestamp(123456789L);
     
       public static final StartChildWorkflowExecutionFailedEventAttributes
           START_CHILD_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES =
    @@ -843,7 +847,10 @@ public final class ThriftObjects {
               .setQuery("query");
     
       public static final DescribeWorkflowExecutionRequest DESCRIBE_WORKFLOW_EXECUTION_REQUEST =
    -      new DescribeWorkflowExecutionRequest().setDomain("domain").setExecution(WORKFLOW_EXECUTION);
    +      new DescribeWorkflowExecutionRequest()
    +          .setDomain("domain")
    +          .setExecution(WORKFLOW_EXECUTION)
    +          .setQueryConsistencyLevel(QueryConsistencyLevel.STRONG);
     
       public static final GetWorkflowExecutionHistoryRequest GET_WORKFLOW_EXECUTION_HISTORY_REQUEST =
           new GetWorkflowExecutionHistoryRequest()
    @@ -853,7 +860,8 @@ public final class ThriftObjects {
               .setWaitForNewEvent(true)
               .setHistoryEventFilterType(HistoryEventFilterType.CLOSE_EVENT)
               .setSkipArchival(true)
    -          .setNextPageToken(utf8("nextPageToken"));
    +          .setNextPageToken(utf8("nextPageToken"))
    +          .setQueryConsistencyLevel(QueryConsistencyLevel.STRONG);
     
       public static final com.uber.cadence.StartWorkflowExecutionRequest START_WORKFLOW_EXECUTION =
           new com.uber.cadence.StartWorkflowExecutionRequest()
    @@ -873,7 +881,8 @@ public final class ThriftObjects {
               .setSearchAttributes(SEARCH_ATTRIBUTES)
               .setHeader(HEADER)
               .setJitterStartSeconds(0)
    -          .setDelayStartSeconds(3);
    +          .setDelayStartSeconds(3)
    +          .setFirstRunAtTimestamp(123456789L);
       public static final com.uber.cadence.SignalWithStartWorkflowExecutionRequest
           SIGNAL_WITH_START_WORKFLOW_EXECUTION =
               new SignalWithStartWorkflowExecutionRequest()
    @@ -896,7 +905,8 @@ public final class ThriftObjects {
                   .setSearchAttributes(SEARCH_ATTRIBUTES)
                   .setHeader(HEADER)
                   .setDelayStartSeconds(3)
    -              .setJitterStartSeconds(0);
    +              .setJitterStartSeconds(0)
    +              .setFirstRunAtTimestamp(123456789L);
     
       public static final StartWorkflowExecutionAsyncRequest START_WORKFLOW_EXECUTION_ASYNC_REQUEST =
           new StartWorkflowExecutionAsyncRequest().setRequest(START_WORKFLOW_EXECUTION);
    @@ -1103,7 +1113,8 @@ public final class ThriftObjects {
               .setHeartbeatDetails(utf8("heartbeatDetails"))
               .setWorkflowType(WORKFLOW_TYPE)
               .setWorkflowDomain("domain")
    -          .setHeader(HEADER);
    +          .setHeader(HEADER)
    +          .setAutoConfigHint(AUTO_CONFIG_HINT);
       public static final PollForDecisionTaskResponse POLL_FOR_DECISION_TASK_RESPONSE =
           new PollForDecisionTaskResponse()
               .setTaskToken(utf8("taskToken"))
    @@ -1120,7 +1131,8 @@ public final class ThriftObjects {
               .setScheduledTimestamp(5)
               .setStartedTimestamp(6)
               .setQueries(ImmutableMap.of("query", WORKFLOW_QUERY))
    -          .setNextEventId(7);
    +          .setNextEventId(7)
    +          .setAutoConfigHint(AUTO_CONFIG_HINT);
     
       public static final QueryWorkflowResponse QUERY_WORKFLOW_RESPONSE =
           new QueryWorkflowResponse()
    diff --git a/src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java b/src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java
    index 37fb3caf1..a3072a2d1 100644
    --- a/src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java
    +++ b/src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java
    @@ -283,8 +283,7 @@ public static Object[][] cases() {
           testCase(
               EventType.StartChildWorkflowExecutionInitiated,
               ProtoObjects.START_CHILD_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES,
    -          ThriftObjects.START_CHILD_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES,
    -          "jitterStartSeconds"),
    +          ThriftObjects.START_CHILD_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES),
           testCase(
               EventType.StartChildWorkflowExecutionFailed,
               ProtoObjects.START_CHILD_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES,
    diff --git a/src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java b/src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java
    new file mode 100644
    index 000000000..333abd2c9
    --- /dev/null
    +++ b/src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java
    @@ -0,0 +1,50 @@
    +/**
    + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
    + *
    + * 

    Modifications copyright (C) 2017 Uber Technologies, Inc. + * + *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file + * except in compliance with the License. A copy of the License is located at + * + *

    http://aws.amazon.com/apache2.0 + * + *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package com.uber.cadence.internal.testservice; + +import static org.junit.Assert.assertThrows; + +import com.uber.cadence.DiagnoseWorkflowExecutionRequest; +import org.apache.thrift.async.AsyncMethodCallback; +import org.junit.Test; + +public class TestWorkflowServiceDiagnoseTest { + + private final TestWorkflowService service = new TestWorkflowService(); + + @Test + public void testDiagnoseWorkflowExecutionThrowsUnsupportedOperation() { + DiagnoseWorkflowExecutionRequest request = new DiagnoseWorkflowExecutionRequest(); + assertThrows( + UnsupportedOperationException.class, () -> service.DiagnoseWorkflowExecution(request)); + } + + @Test + public void testDiagnoseWorkflowExecutionAsyncThrowsUnsupportedOperation() { + DiagnoseWorkflowExecutionRequest request = new DiagnoseWorkflowExecutionRequest(); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(Object response) {} + + @Override + public void onError(Exception exception) {} + }; + + assertThrows( + UnsupportedOperationException.class, + () -> service.DiagnoseWorkflowExecution(request, callback)); + } +} diff --git a/src/test/java/com/uber/cadence/serviceclient/IWorkflowServiceBaseTest.java b/src/test/java/com/uber/cadence/serviceclient/IWorkflowServiceBaseTest.java index de02e485e..4408cf4af 100644 --- a/src/test/java/com/uber/cadence/serviceclient/IWorkflowServiceBaseTest.java +++ b/src/test/java/com/uber/cadence/serviceclient/IWorkflowServiceBaseTest.java @@ -36,6 +36,13 @@ public void testDescribeDomain() { assertThrows(UnsupportedOperationException.class, () -> service.DescribeDomain(null, null)); } + public void testDiagnoseWorkflowExecution() { + assertThrows( + UnsupportedOperationException.class, () -> service.DiagnoseWorkflowExecution(null)); + assertThrows( + UnsupportedOperationException.class, () -> service.DiagnoseWorkflowExecution(null, null)); + } + public void testListDomains() { assertThrows(UnsupportedOperationException.class, () -> service.ListDomains(null)); assertThrows(UnsupportedOperationException.class, () -> service.ListDomains(null, null)); diff --git a/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java b/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java new file mode 100644 index 000000000..536db39d9 --- /dev/null +++ b/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java @@ -0,0 +1,59 @@ +/** + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + *

    Modifications copyright (C) 2017 Uber Technologies, Inc. + * + *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file + * except in compliance with the License. A copy of the License is located at + * + *

    http://aws.amazon.com/apache2.0 + * + *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package com.uber.cadence.serviceclient; + +import static org.junit.Assert.assertThrows; +import static org.mockito.Mockito.mock; + +import com.uber.cadence.DiagnoseWorkflowExecutionRequest; +import com.uber.tchannel.api.SubChannel; +import org.apache.thrift.async.AsyncMethodCallback; +import org.junit.Before; +import org.junit.Test; + +public class WorkflowServiceTChannelDiagnoseTest { + + private WorkflowServiceTChannel service; + + @Before + public void setUp() { + SubChannel mockSubChannel = mock(SubChannel.class); + service = new WorkflowServiceTChannel(mockSubChannel, ClientOptions.newBuilder().build()); + } + + @Test + public void testDiagnoseWorkflowExecutionThrowsUnsupportedOperation() { + DiagnoseWorkflowExecutionRequest request = new DiagnoseWorkflowExecutionRequest(); + assertThrows( + UnsupportedOperationException.class, () -> service.DiagnoseWorkflowExecution(request)); + } + + @Test + public void testDiagnoseWorkflowExecutionAsyncThrowsUnsupportedOperation() { + DiagnoseWorkflowExecutionRequest request = new DiagnoseWorkflowExecutionRequest(); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(Object response) {} + + @Override + public void onError(Exception exception) {} + }; + + assertThrows( + UnsupportedOperationException.class, + () -> service.DiagnoseWorkflowExecution(request, callback)); + } +} From a37d26a84faf20a17e22e18bf2558ae927b5182e Mon Sep 17 00:00:00 2001 From: Mandy Chen <100249839+mandyschen@users.noreply.github.com> Date: Tue, 12 Aug 2025 15:49:21 -0700 Subject: [PATCH 08/17] Remove references to buildkite (#1014) Co-authored-by: Mandy Chen --- .buildkite/pipeline.yml | 122 ------------------------ .buildkite/scripts/coverage_metadata.sh | 13 --- .buildkite/scripts/lint.sh | 14 --- CONTRIBUTING.md | 4 +- README.md | 2 +- docker/buildkite/Dockerfile | 37 ------- docker/buildkite/README.md | 22 ----- docker/buildkite/docker-compose.yaml | 97 ------------------- 8 files changed, 3 insertions(+), 308 deletions(-) delete mode 100644 .buildkite/pipeline.yml delete mode 100755 .buildkite/scripts/coverage_metadata.sh delete mode 100755 .buildkite/scripts/lint.sh delete mode 100644 docker/buildkite/Dockerfile delete mode 100644 docker/buildkite/README.md delete mode 100644 docker/buildkite/docker-compose.yaml diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml deleted file mode 100644 index fcad3a0ae..000000000 --- a/.buildkite/pipeline.yml +++ /dev/null @@ -1,122 +0,0 @@ -container: - kubernetes: &kubernetes - gitEnvFrom: - - secretRef: - name: oss-github-ssh-credentials - sidecars: - - image: us-west1-docker.pkg.dev/ci-compute/buildkite-images/buildkite-dind:v1 - volumeMounts: - - mountPath: /var/run/ - name: docker-sock - securityContext: - privileged: true - allowPrivilegeEscalation: true - mirrorVolumeMounts: true # CRITICAL: this must be at the same indentation level as sidecars - podSpec: &podSpec - containers: - - &commandContainer - image: us-west1-docker.pkg.dev/ci-compute/buildkite-images/buildkite-command-container:v2 - command: - - |- - echo "Command step was not overridden." - exit 1 - volumeMounts: - - mountPath: /var/run/ - name: docker-sock - resources: - requests: - cpu: 7500m - memory: 60G - volumes: - - name: docker-sock - emptyDir: {} - -agents: - queue: buildkite-gcp - -steps: - - label: "Lint Check" - plugins: - - kubernetes: - <<: *kubernetes - podSpec: - <<: *podSpec - containers: - - <<: *commandContainer - command: - - |- - .buildkite/scripts/lint.sh - - docker-compose#v3.0.0: - run: unit-test-test-service - config: docker/buildkite/docker-compose.yaml - - - label: ":java: Unit test with test services" - artifact_paths: - - "build/reports/tests/test/**/*" - - "build/reports/jacoco/test/jacocoTestReport.xml" - - "build/reports/metadata.txt" - timeout_in_minutes: 30 - retry: - automatic: - - exit_status: "*" - limit: 3 - plugins: - - kubernetes: - <<: *kubernetes - podSpec: - <<: *podSpec - containers: - - <<: *commandContainer - command: - - |- - ./gradlew --no-daemon test jacocoTestReport - .buildkite/scripts/coverage_metadata.sh build/reports/metadata.txt - - docker-compose#v3.0.0: - run: unit-test-test-service - config: docker/buildkite/docker-compose.yaml - - - label: ":java: Unit test with docker services sticky on" - timeout_in_minutes: 50 # integration tests take longer - retry: - automatic: - - exit_status: "*" - limit: 3 - artifact_paths: - - "build/reports/tests/test/**/*" - plugins: - - kubernetes: - <<: *kubernetes - podSpec: - <<: *podSpec - containers: - - <<: *commandContainer - command: - - |- - ./gradlew --no-daemon test - - docker-compose#v3.0.0: - run: unit-test-docker-sticky-on - config: docker/buildkite/docker-compose.yaml - - - label: ":java: Unit test with docker services sticky off" - timeout_in_minutes: 50 # integration tests take longer - retry: - automatic: - - exit_status: "*" - limit: 3 - artifact_paths: - - "build/reports/tests/test/**/*" - plugins: - - kubernetes: - <<: *kubernetes - podSpec: - <<: *podSpec - containers: - - <<: *commandContainer - command: - - |- - ./gradlew --no-daemon test - - docker-compose#v3.0.0: - run: unit-test-docker-sticky-off - config: docker/buildkite/docker-compose.yaml - -# TODO: delete this file after migration to github actions diff --git a/.buildkite/scripts/coverage_metadata.sh b/.buildkite/scripts/coverage_metadata.sh deleted file mode 100755 index 4296e01d6..000000000 --- a/.buildkite/scripts/coverage_metadata.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -set -ex -# This script generates coverage metadata for the coverage report. -# Output is used by SonarQube integration in Uber and not used by OS repo coverage tool itself. -# Example output: -# commit-sha: 6953daa563e8e44512bc349c9608484cfd4ec4ff -# timestamp: 2024-03-04T19:29:16Z -output_path="$1" -echo "commit-sha: $(git rev-parse HEAD)" > "$output_path" -echo "timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$output_path" -echo "Coverage metadata written to $output_path" - -# TODO: delete this file after migration to github actions diff --git a/.buildkite/scripts/lint.sh b/.buildkite/scripts/lint.sh deleted file mode 100755 index 1b7a19f44..000000000 --- a/.buildkite/scripts/lint.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -set -ex - -./gradlew goJF - -if [ -n "$(git status --porcelain)" ]; then - echo "There are changes after linting (used goJF) cmd: ./gradlew goJF" - echo "Please rerun the command and commit the changes" - git status --porcelain - exit 1 -fi - -# TODO: delete this file after migration to github actions diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 191e7bd0f..d00215bad 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -97,5 +97,5 @@ And sometimes it's important to test the non-sticky mode STICKY_OFF=true USE_DOCKER_SERVICE=true ./gradlew test ``` -Also, if there is any Buildkite test failure that you cannot reproduce locally, -follow [buildkite docker-compose](./docker/buildkite/README.md) instructions to run the tests. +Also, if there is any Github Actions test failure that you cannot reproduce locally, +follow [github action docker-compose](./docker/github_actions/README.md) instructions to run the tests. diff --git a/README.md b/README.md index 8c41b7758..bc6c33bae 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Java framework for Cadence [![Build Status](https://badge.buildkite.com/0c96b8b74c0921208e898c10a602e2fe9ecb7641c2befee0e7.svg?theme=github&branch=master)](https://buildkite.com/uberopensource/cadence-java-client) [![Javadocs](https://www.javadoc.io/badge/com.uber.cadence/cadence-client.svg)](https://www.javadoc.io/doc/com.uber.cadence/cadence-client) [![codecov](https://codecov.io/gh/cadence-workflow/cadence-java-client/graph/badge.svg?token=eVBGf4EmXr)](https://codecov.io/gh/cadence-workflow/cadence-java-client) +# Java framework for Cadence [![CI Checks](https://github.com/cadence-workflow/cadence-java-client/actions/workflows/ci-checks.yml/badge.svg)](https://github.com/cadence-workflow/cadence-java-client/actions/workflows/ci-checks.yml) [![Javadocs](https://www.javadoc.io/badge/com.uber.cadence/cadence-client.svg)](https://www.javadoc.io/doc/com.uber.cadence/cadence-client) [![codecov](https://codecov.io/gh/cadence-workflow/cadence-java-client/graph/badge.svg?token=eVBGf4EmXr)](https://codecov.io/gh/cadence-workflow/cadence-java-client) [Cadence](https://github.com/uber/cadence) is a distributed, scalable, durable, and highly available orchestration engine we developed at Uber Engineering to execute asynchronous long-running business logic in a scalable and resilient way. diff --git a/docker/buildkite/Dockerfile b/docker/buildkite/Dockerfile deleted file mode 100644 index b192fd72a..000000000 --- a/docker/buildkite/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -# Always use a release version or a specific commit hash below. Don't use -# a branch name since we'd keep getting updates as long as there are new -# commits to that branch and one of them can break the build -FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine - -# Apache Thrift version -ENV APACHE_THRIFT_VERSION=0.9.3 - -# Install dependencies using apk -RUN apk update && apk add --virtual wget ca-certificates wget && apk add --virtual build-dependencies build-base gcc -# Git is needed in order to update the dls submodule -RUN apk add git libstdc++ bash curl - -# Install buildkite agent -# https://buildkite.com/docs/agent/v3/linux -RUN bash -c "`curl -sL https://raw.githubusercontent.com/buildkite/agent/main/install.sh`" -RUN ln -s /root/.buildkite-agent/bin/buildkite-agent /usr/bin/buildkite-agent - -# Compile source -RUN set -ex ;\ - wget https://archive.apache.org/dist/thrift/${APACHE_THRIFT_VERSION}/thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - tar -xvf thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - rm thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - cd thrift-${APACHE_THRIFT_VERSION}/ && \ - ./configure --enable-libs=no --enable-tests=no --enable-tutorial=no --with-cpp=no --with-c_glib=no --with-java=yes --with-ruby=no --with-erlang=no --with-go=no --with-nodejs=no --with-python=no && \ - make && \ - make install && \ - cd .. && \ - rm -rf thrift-${APACHE_THRIFT_VERSION} - -# Cleanup packages and remove cache -RUN apk del build-dependencies wget && rm -rf /var/cache/apk/* - -RUN mkdir /cadence-java-client -WORKDIR /cadence-java-client - -# TODO: delete this file after migration to github actions diff --git a/docker/buildkite/README.md b/docker/buildkite/README.md deleted file mode 100644 index decf6bb94..000000000 --- a/docker/buildkite/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Debug Builkite integration test -Sometimes the environment on IDE may be different as Buildkite. -You can run the following command to trigger the same test as running on Buildkite: - -```bash -docker-compose -f docker-compose.yaml run unit-test-docker-sticky-on &> test.log -``` -Or -```bash -docker-compose -f docker-compose.yaml run unit-test-docker-sticky-off &> test.log -``` - -Or -```bash -docker-compose -f docker-compose.yaml run unit-test-test-service &> test.log -``` - -And finally make sure to shutdown all docker resources: -```bash -docker-compose down -``` -TODO: delete this file after migration to github actions diff --git a/docker/buildkite/docker-compose.yaml b/docker/buildkite/docker-compose.yaml deleted file mode 100644 index 44cab51e7..000000000 --- a/docker/buildkite/docker-compose.yaml +++ /dev/null @@ -1,97 +0,0 @@ -version: '3.5' - -services: - cassandra: - image: cassandra:4.1.3 - deploy: - resources: - limits: - cpus: '4' - memory: 12000M - ports: - - "9042:9042" - - statsd: - image: hopsoft/graphite-statsd - deploy: - resources: - limits: - cpus: '0.50' - memory: 1024M - ports: - - "8080:80" - - "2003:2003" - - "8125:8125" - - "8126:8126" - - cadence: - image: ubercadence/server:master-auto-setup - deploy: - resources: - limits: - cpus: '2' - memory: 8192M - ports: - - "7933:7933" - - "7934:7934" - - "7935:7935" - - "7939:7939" - environment: - - "CASSANDRA_SEEDS=cassandra" - - "STATSD_ENDPOINT=statsd:8125" - depends_on: - - cassandra - - statsd - - unit-test-docker-sticky-off: - build: - context: ../../ - dockerfile: ./docker/buildkite/Dockerfile - command: "./gradlew --no-daemon test" - deploy: - resources: - limits: - cpus: '2' - memory: 8192M - environment: - - "USER=unittest" - - "CADENCE_SEEDS=cadence" - - "USE_DOCKER_SERVICE=true" - - "STICKY_OFF=true" - depends_on: - - cadence - volumes: - - "../../:/cadence-java-client" - - unit-test-docker-sticky-on: - build: - context: ../../ - dockerfile: ./docker/buildkite/Dockerfile - command: "./gradlew --no-daemon test" - deploy: - resources: - limits: - cpus: '2' - memory: 8192M - environment: - - "USER=unittest" - - "CADENCE_SEEDS=cadence" - - "USE_DOCKER_SERVICE=true" - - "STICKY_OFF=false" - depends_on: - - cadence - volumes: - - "../../:/cadence-java-client" - - unit-test-test-service: - build: - context: ../../ - dockerfile: ./docker/buildkite/Dockerfile - command: "./gradlew --no-daemon test" - environment: - - "USER=unittest" - - "USE_DOCKER_SERVICE=false" - volumes: - - "../../:/cadence-java-client" - -# TODO: delete this file after migration to github actions From 9a3e39e032d0885b9ea92c5cd34862e5df16cc59 Mon Sep 17 00:00:00 2001 From: evansandoval <115900392+evansandoval@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:33:21 -0700 Subject: [PATCH 09/17] Add attempt number to structured activity logger (#1020) Co-authored-by: Evan Sandoval --- src/main/java/com/uber/cadence/internal/logging/LoggerTag.java | 1 + .../java/com/uber/cadence/internal/worker/ActivityWorker.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/main/java/com/uber/cadence/internal/logging/LoggerTag.java b/src/main/java/com/uber/cadence/internal/logging/LoggerTag.java index f31c0fbe4..cdd3aa2dd 100644 --- a/src/main/java/com/uber/cadence/internal/logging/LoggerTag.java +++ b/src/main/java/com/uber/cadence/internal/logging/LoggerTag.java @@ -25,4 +25,5 @@ public class LoggerTag { public static final String TASK_LIST = "TaskList"; public static final String WORKFLOW_ID = "WorkflowID"; public static final String WORKFLOW_TYPE = "WorkflowType"; + public static final String ATTEMPT = "Attempt"; } diff --git a/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java b/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java index 9e83156d5..767f63ea1 100644 --- a/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java +++ b/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java @@ -144,6 +144,7 @@ public void handle(PollForActivityTaskResponse task) throws Exception { MDC.put(LoggerTag.ACTIVITY_TYPE, task.getActivityType().getName()); MDC.put(LoggerTag.WORKFLOW_ID, task.getWorkflowExecution().getWorkflowId()); MDC.put(LoggerTag.RUN_ID, task.getWorkflowExecution().getRunId()); + MDC.put(LoggerTag.ATTEMPT, String.valueOf(task.getAttempt())); propagateContext(task); Span span = spanFactory.spanForExecuteActivity(task); @@ -175,6 +176,7 @@ public void handle(PollForActivityTaskResponse task) throws Exception { MDC.remove(LoggerTag.ACTIVITY_TYPE); MDC.remove(LoggerTag.WORKFLOW_ID); MDC.remove(LoggerTag.RUN_ID); + MDC.remove(LoggerTag.ATTEMPT); unsetCurrentContext(); } } From 2bed1b4bfd411fa5ccdc880a72e52e6065c19717 Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Mon, 15 Sep 2025 13:49:08 -0700 Subject: [PATCH 10/17] remove unnecessary TaskListKind internal entity (#1023) What changed? Remove internal TaskListKind entity use thrift entity directly (like everywhere else in the repo) Why? This complicates things and particularly for thrift deprecation How did you test it? Unit Test Signed-off-by: Shijie Sheng --- .../cadence/internal/worker/TaskListKind.java | 33 ------------------- .../internal/worker/WorkflowPollTask.java | 3 +- .../worker/WorkflowPollTaskFactory.java | 1 + .../internal/worker/WorkflowWorker.java | 3 +- .../uber/cadence/worker/WorkerFactory.java | 3 +- .../internal/worker/TaskListKindTest.java | 32 ------------------ .../internal/worker/WorkflowPollTaskTest.java | 2 +- 7 files changed, 8 insertions(+), 69 deletions(-) delete mode 100644 src/main/java/com/uber/cadence/internal/worker/TaskListKind.java delete mode 100644 src/test/java/com/uber/cadence/internal/worker/TaskListKindTest.java diff --git a/src/main/java/com/uber/cadence/internal/worker/TaskListKind.java b/src/main/java/com/uber/cadence/internal/worker/TaskListKind.java deleted file mode 100644 index 7a157d148..000000000 --- a/src/main/java/com/uber/cadence/internal/worker/TaskListKind.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.internal.worker; - -public enum TaskListKind { - TASK_LIST_KIND_NORMAL(0), - TASK_LIST_KIND_STICKY(1); - - private final int value; - - TaskListKind(int value) { - this.value = value; - } - - public com.uber.cadence.TaskListKind toThrift() { - return com.uber.cadence.TaskListKind.findByValue(this.value); - } -} diff --git a/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java b/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java index 1d379237b..0b98bd6ba 100644 --- a/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java +++ b/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java @@ -25,6 +25,7 @@ import com.uber.cadence.PollForDecisionTaskResponse; import com.uber.cadence.ServiceBusyError; import com.uber.cadence.TaskList; +import com.uber.cadence.TaskListKind; import com.uber.cadence.common.BinaryChecksum; import com.uber.cadence.internal.metrics.MetricsTag; import com.uber.cadence.internal.metrics.MetricsType; @@ -73,7 +74,7 @@ public PollForDecisionTaskResponse poll() throws TException { pollRequest.setIdentity(identity); pollRequest.setBinaryChecksum(BinaryChecksum.getBinaryChecksum()); - TaskList tl = new TaskList().setName(taskList).setKind(taskListKind.toThrift()); + TaskList tl = new TaskList().setName(taskList).setKind(taskListKind); pollRequest.setTaskList(tl); if (log.isDebugEnabled()) { diff --git a/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTaskFactory.java b/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTaskFactory.java index 663cfe02b..19380e7d0 100644 --- a/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTaskFactory.java +++ b/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTaskFactory.java @@ -18,6 +18,7 @@ package com.uber.cadence.internal.worker; import com.uber.cadence.PollForDecisionTaskResponse; +import com.uber.cadence.TaskListKind; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.m3.tally.Scope; import java.util.Objects; diff --git a/src/main/java/com/uber/cadence/internal/worker/WorkflowWorker.java b/src/main/java/com/uber/cadence/internal/worker/WorkflowWorker.java index e77a9491a..e6ae5a4db 100644 --- a/src/main/java/com/uber/cadence/internal/worker/WorkflowWorker.java +++ b/src/main/java/com/uber/cadence/internal/worker/WorkflowWorker.java @@ -29,6 +29,7 @@ import com.uber.cadence.RespondDecisionTaskFailedRequest; import com.uber.cadence.RespondQueryTaskCompletedRequest; import com.uber.cadence.ScheduleActivityTaskDecisionAttributes; +import com.uber.cadence.TaskListKind; import com.uber.cadence.WorkflowExecution; import com.uber.cadence.WorkflowExecutionStartedEventAttributes; import com.uber.cadence.WorkflowQuery; @@ -107,7 +108,7 @@ public void start() { service, domain, taskList, - TaskListKind.TASK_LIST_KIND_NORMAL, + TaskListKind.NORMAL, options.getMetricsScope(), options.getIdentity()), pollTaskExecutor, diff --git a/src/main/java/com/uber/cadence/worker/WorkerFactory.java b/src/main/java/com/uber/cadence/worker/WorkerFactory.java index fc19dcb34..19e716082 100644 --- a/src/main/java/com/uber/cadence/worker/WorkerFactory.java +++ b/src/main/java/com/uber/cadence/worker/WorkerFactory.java @@ -22,6 +22,7 @@ import com.google.common.base.Preconditions; import com.google.common.base.Strings; import com.uber.cadence.PollForDecisionTaskResponse; +import com.uber.cadence.TaskListKind; import com.uber.cadence.client.WorkflowClient; import com.uber.cadence.converter.DataConverter; import com.uber.cadence.converter.JsonDataConverter; @@ -134,7 +135,7 @@ public WorkerFactory(WorkflowClient workflowClient, WorkerFactoryOptions factory workflowClient.getService(), workflowClient.getOptions().getDomain(), getStickyTaskListName(), - TaskListKind.TASK_LIST_KIND_STICKY, + TaskListKind.STICKY, stickyScope, workflowClient.getOptions().getIdentity()) .get(), diff --git a/src/test/java/com/uber/cadence/internal/worker/TaskListKindTest.java b/src/test/java/com/uber/cadence/internal/worker/TaskListKindTest.java deleted file mode 100644 index 4bade807a..000000000 --- a/src/test/java/com/uber/cadence/internal/worker/TaskListKindTest.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.internal.worker; - -import static junit.framework.TestCase.*; - -import org.junit.Test; - -public class TaskListKindTest { - @Test - public void toThrift() { - assertEquals( - TaskListKind.TASK_LIST_KIND_NORMAL.toThrift(), com.uber.cadence.TaskListKind.NORMAL); - assertEquals( - TaskListKind.TASK_LIST_KIND_STICKY.toThrift(), com.uber.cadence.TaskListKind.STICKY); - } -} diff --git a/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java b/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java index 9b36f551e..a96716d65 100644 --- a/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java +++ b/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java @@ -80,7 +80,7 @@ public void setup() { mockService, "test-domain", "test-taskList", - TaskListKind.TASK_LIST_KIND_NORMAL, + TaskListKind.NORMAL, mockMetricScope, "test-identity"); } From dc8b38af4128b33352d683de8146d01ebae65234 Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Mon, 15 Sep 2025 16:48:16 -0700 Subject: [PATCH 11/17] merge raw history removal (#1025) Signed-off-by: Shijie Sheng What changed? Remove raw history support in client. (It's already reviewed and merged in a side branch #1004 ) Now we are checking into main branch Why? History is stored as Thrift encoded binary. Sending raw history in Thrift will no longer be supported in V4 How did you test it? Unit Test --- .../internal/common/InternalUtils.java | 97 ---------------- .../shadowing/ReplayWorkflowActivityImpl.java | 13 +-- .../testservice/TestWorkflowStoreImpl.java | 8 +- .../WorkflowServiceTChannel.java | 13 +-- .../internal/common/InternalUtilsTest.java | 106 ------------------ .../shadowing/ReplayWorkflowActivityTest.java | 20 ++-- 6 files changed, 20 insertions(+), 237 deletions(-) diff --git a/src/main/java/com/uber/cadence/internal/common/InternalUtils.java b/src/main/java/com/uber/cadence/internal/common/InternalUtils.java index 520d8efbb..e5b4b330b 100644 --- a/src/main/java/com/uber/cadence/internal/common/InternalUtils.java +++ b/src/main/java/com/uber/cadence/internal/common/InternalUtils.java @@ -18,11 +18,6 @@ package com.uber.cadence.internal.common; import com.google.common.base.Defaults; -import com.google.common.collect.Lists; -import com.uber.cadence.DataBlob; -import com.uber.cadence.History; -import com.uber.cadence.HistoryEvent; -import com.uber.cadence.HistoryEventFilterType; import com.uber.cadence.Memo; import com.uber.cadence.SearchAttributes; import com.uber.cadence.TaskList; @@ -33,15 +28,10 @@ import com.uber.cadence.workflow.WorkflowMethod; import java.lang.reflect.Method; import java.nio.ByteBuffer; -import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; -import org.apache.thrift.TDeserializer; -import org.apache.thrift.TException; -import org.apache.thrift.TSerializer; /** Utility functions shared by the implementation code. */ public final class InternalUtils { @@ -164,93 +154,6 @@ public static SearchAttributes convertMapToSearchAttributes( return new SearchAttributes().setIndexedFields(mapOfByteBuffer); } - // This method serializes history to blob data - public static DataBlob SerializeFromHistoryToBlobData(History history) { - - // TODO: move to global dependency after https://issues.apache.org/jira/browse/THRIFT-2218 - TSerializer serializer = new TSerializer(); - DataBlob blob = new DataBlob(); - try { - blob.setData(serializer.serialize(history)); - } catch (org.apache.thrift.TException err) { - throw new RuntimeException("Serialize history to blob data failed", err); - } - - return blob; - } - - // This method deserialize the DataBlob data to the History data - public static History DeserializeFromBlobDataToHistory( - List blobData, HistoryEventFilterType historyEventFilterType) throws TException { - - // TODO: move to global dependency after https://issues.apache.org/jira/browse/THRIFT-2218 - TDeserializer deSerializer = new TDeserializer(); - List events = Lists.newArrayList(); - for (DataBlob data : blobData) { - History history = new History(); - try { - byte[] dataByte = data.getData(); - // TODO: verify the beginning index - dataByte = Arrays.copyOfRange(dataByte, 0, dataByte.length); - deSerializer.deserialize(history, dataByte); - - if (history == null || history.getEvents() == null || history.getEvents().size() == 0) { - return null; - } - } catch (org.apache.thrift.TException err) { - throw new TException("Deserialize blob data to history failed with unknown error"); - } - - events.addAll(history.getEvents()); - } - - if (events.size() > 0 && historyEventFilterType == HistoryEventFilterType.CLOSE_EVENT) { - events = events.subList(events.size() - 1, events.size()); - } - - return new History().setEvents(events); - } - - // This method serializes history event to blob data - public static List SerializeFromHistoryEventToBlobData(List events) { - - // TODO: move to global dependency after https://issues.apache.org/jira/browse/THRIFT-2218 - TSerializer serializer = new TSerializer(); - List blobs = Lists.newArrayListWithCapacity(events.size()); - for (HistoryEvent event : events) { - DataBlob blob = new DataBlob(); - try { - blob.setData(serializer.serialize(event)); - } catch (org.apache.thrift.TException err) { - throw new RuntimeException("Serialize history event to blob data failed", err); - } - blobs.add(blob); - } - return blobs; - } - - // This method serializes blob data to history event - public static List DeserializeFromBlobDataToHistoryEvents(List blobData) - throws TException { - - // TODO: move to global dependency after https://issues.apache.org/jira/browse/THRIFT-2218 - TDeserializer deSerializer = new TDeserializer(); - List events = Lists.newArrayList(); - for (DataBlob data : blobData) { - try { - HistoryEvent event = new HistoryEvent(); - byte[] dataByte = data.getData(); - // TODO: verify the beginning index - dataByte = Arrays.copyOfRange(dataByte, 0, dataByte.length); - deSerializer.deserialize(event, dataByte); - events.add(event); - } catch (org.apache.thrift.TException err) { - throw new TException("Deserialize blob data to history event failed with unknown error"); - } - } - return events; - } - /** Prohibit instantiation */ private InternalUtils() {} } diff --git a/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityImpl.java b/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityImpl.java index d2432889f..eae82edb0 100644 --- a/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityImpl.java +++ b/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityImpl.java @@ -19,12 +19,9 @@ import com.google.common.collect.Lists; import com.uber.cadence.GetWorkflowExecutionHistoryResponse; -import com.uber.cadence.History; import com.uber.cadence.HistoryEvent; -import com.uber.cadence.HistoryEventFilterType; import com.uber.cadence.activity.Activity; import com.uber.cadence.common.WorkflowExecutionHistory; -import com.uber.cadence.internal.common.InternalUtils; import com.uber.cadence.internal.common.RpcRetryer; import com.uber.cadence.internal.common.WorkflowExecutionUtils; import com.uber.cadence.internal.metrics.MetricsType; @@ -185,14 +182,10 @@ protected WorkflowExecutionHistory getFullHistory(String domain, WorkflowExecuti nextPageToken, this.serviceClient, domain, execution.toThrift())); pageToken = resp.getNextPageToken(); - // handle raw history + // TODO support raw history feature once server removes default Thrift encoding if (resp.getRawHistory() != null && resp.getRawHistory().size() > 0) { - History history = - InternalUtils.DeserializeFromBlobDataToHistory( - resp.getRawHistory(), HistoryEventFilterType.ALL_EVENT); - if (history != null && history.getEvents() != null) { - histories.addAll(history.getEvents()); - } + throw new UnsupportedOperationException( + "Raw history is not supported. Please turn off frontend.sendRawWorkflowHistory feature flag in frontend service to recover"); } else { histories.addAll(resp.getHistory().getEvents()); } diff --git a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java index 5759f4562..06f18eab2 100644 --- a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java +++ b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java @@ -18,7 +18,6 @@ package com.uber.cadence.internal.testservice; import com.uber.cadence.BadRequestError; -import com.uber.cadence.DataBlob; import com.uber.cadence.EntityNotExistsError; import com.uber.cadence.EventType; import com.uber.cadence.GetWorkflowExecutionHistoryRequest; @@ -34,7 +33,6 @@ import com.uber.cadence.StickyExecutionAttributes; import com.uber.cadence.WorkflowExecution; import com.uber.cadence.WorkflowExecutionInfo; -import com.uber.cadence.internal.common.InternalUtils; import com.uber.cadence.internal.common.WorkflowExecutionUtils; import com.uber.cadence.internal.testservice.RequestContext.Timer; import java.time.Duration; @@ -348,12 +346,10 @@ public GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistory( if (!getRequest.isWaitForNewEvent() && getRequest.getHistoryEventFilterType() != HistoryEventFilterType.CLOSE_EVENT) { List events = history.getEventsLocked(); - List blobs = InternalUtils.SerializeFromHistoryEventToBlobData(events); // Copy the list as it is mutable. Individual events assumed immutable. ArrayList eventsCopy = new ArrayList<>(events); return new GetWorkflowExecutionHistoryResponse() - .setHistory(new History().setEvents(eventsCopy)) - .setRawHistory(blobs); + .setHistory(new History().setEvents(eventsCopy)); } expectedNextEventId = history.getNextEventIdLocked(); } finally { @@ -361,11 +357,9 @@ public GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistory( } List events = history.waitForNewEvents(expectedNextEventId, getRequest.getHistoryEventFilterType()); - List blobs = InternalUtils.SerializeFromHistoryEventToBlobData(events); GetWorkflowExecutionHistoryResponse result = new GetWorkflowExecutionHistoryResponse(); if (events != null) { result.setHistory(new History().setEvents(events)); - result.setRawHistory(blobs); } return result; } diff --git a/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java b/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java index d8d22695f..ba4b520ca 100644 --- a/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java +++ b/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java @@ -28,7 +28,6 @@ import com.uber.cadence.WorkflowService.GetWorkflowExecutionHistory_result; import com.uber.cadence.internal.Version; import com.uber.cadence.internal.common.CheckedExceptionWrapper; -import com.uber.cadence.internal.common.InternalUtils; import com.uber.cadence.internal.metrics.MetricsTag; import com.uber.cadence.internal.metrics.MetricsType; import com.uber.cadence.internal.metrics.ServiceMethod; @@ -774,10 +773,8 @@ private GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistory( if (response.getResponseCode() == ResponseCode.OK) { GetWorkflowExecutionHistoryResponse res = result.getSuccess(); if (res.getRawHistory() != null) { - History history = - InternalUtils.DeserializeFromBlobDataToHistory( - res.getRawHistory(), getRequest.getHistoryEventFilterType()); - res.setHistory(history); + throw new TException( + "Raw history is not supported. Please turn off frontend.sendRawWorkflowHistory feature flag in frontend service to recover"); } return res; } @@ -2601,10 +2598,8 @@ private void getWorkflowExecutionHistory( if (r.getResponseCode() == ResponseCode.OK) { GetWorkflowExecutionHistoryResponse res = result.getSuccess(); if (res.getRawHistory() != null) { - History history = - InternalUtils.DeserializeFromBlobDataToHistory( - res.getRawHistory(), getRequest.getHistoryEventFilterType()); - res.setHistory(history); + throw new TException( + "Raw history is not supported. Please turn off frontend.sendRawWorkflowHistory feature flag in frontend service to recover"); } resultHandler.onComplete(res); return; diff --git a/src/test/java/com/uber/cadence/internal/common/InternalUtilsTest.java b/src/test/java/com/uber/cadence/internal/common/InternalUtilsTest.java index 23ecb652c..eb6250adf 100644 --- a/src/test/java/com/uber/cadence/internal/common/InternalUtilsTest.java +++ b/src/test/java/com/uber/cadence/internal/common/InternalUtilsTest.java @@ -17,23 +17,14 @@ package com.uber.cadence.internal.common; -import static com.uber.cadence.EventType.WorkflowExecutionStarted; import static junit.framework.TestCase.assertEquals; -import static org.junit.Assert.assertNotNull; -import com.google.common.collect.Lists; -import com.googlecode.junittoolbox.MultithreadingTester; -import com.googlecode.junittoolbox.RunnableAssert; import com.uber.cadence.*; import com.uber.cadence.converter.DataConverterException; import com.uber.cadence.workflow.WorkflowUtils; import java.io.FileOutputStream; -import java.time.LocalDateTime; -import java.time.ZoneOffset; import java.util.HashMap; -import java.util.List; import java.util.Map; -import junit.framework.TestCase; import org.junit.Test; public class InternalUtilsTest { @@ -56,101 +47,4 @@ public void testConvertMapToSearchAttributesException() throws Throwable { attr.put("InvalidValue", new FileOutputStream("dummy")); InternalUtils.convertMapToSearchAttributes(attr); } - - @Test - public void testSerialization_History() { - - RunnableAssert r = - new RunnableAssert("history_serialization") { - @Override - public void run() { - HistoryEvent event = - new HistoryEvent() - .setEventId(1) - .setVersion(1) - .setEventType(WorkflowExecutionStarted) - .setTimestamp(LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)) - .setWorkflowExecutionStartedEventAttributes( - new WorkflowExecutionStartedEventAttributes() - .setAttempt(1) - .setFirstExecutionRunId("test")); - - List historyEvents = Lists.newArrayList(event); - History history = new History().setEvents(historyEvents); - DataBlob blob = InternalUtils.SerializeFromHistoryToBlobData(history); - assertNotNull(blob); - - try { - History result = - InternalUtils.DeserializeFromBlobDataToHistory( - Lists.newArrayList(blob), HistoryEventFilterType.ALL_EVENT); - assertNotNull(result); - assertEquals(1, result.events.size()); - assertEquals(event.getEventId(), result.events.get(0).getEventId()); - assertEquals(event.getVersion(), result.events.get(0).getVersion()); - assertEquals(event.getEventType(), result.events.get(0).getEventType()); - assertEquals(event.getTimestamp(), result.events.get(0).getTimestamp()); - assertEquals( - event.getWorkflowExecutionStartedEventAttributes(), - result.events.get(0).getWorkflowExecutionStartedEventAttributes()); - } catch (Exception e) { - TestCase.fail("Received unexpected error during deserialization"); - } - } - }; - - try { - new MultithreadingTester().add(r).numThreads(50).numRoundsPerThread(10).run(); - } catch (Exception e) { - TestCase.fail("Received unexpected error during concurrent deserialization"); - } - } - - @Test - public void testSerialization_HistoryEvent() { - - RunnableAssert r = - new RunnableAssert("history_event_serialization") { - @Override - public void run() { - HistoryEvent event = - new HistoryEvent() - .setEventId(1) - .setVersion(1) - .setEventType(WorkflowExecutionStarted) - .setTimestamp(LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)) - .setWorkflowExecutionStartedEventAttributes( - new WorkflowExecutionStartedEventAttributes() - .setAttempt(1) - .setFirstExecutionRunId("test")); - - List historyEvents = Lists.newArrayList(event); - List blobList = - InternalUtils.SerializeFromHistoryEventToBlobData(historyEvents); - assertEquals(1, blobList.size()); - - try { - List result = - InternalUtils.DeserializeFromBlobDataToHistoryEvents(blobList); - assertNotNull(result); - assertEquals(1, result.size()); - assertEquals(event.getEventId(), result.get(0).getEventId()); - assertEquals(event.getVersion(), result.get(0).getVersion()); - assertEquals(event.getEventType(), result.get(0).getEventType()); - assertEquals(event.getTimestamp(), result.get(0).getTimestamp()); - assertEquals( - event.getWorkflowExecutionStartedEventAttributes(), - result.get(0).getWorkflowExecutionStartedEventAttributes()); - } catch (Exception e) { - TestCase.fail("Received unexpected error during deserialization"); - } - } - }; - - try { - new MultithreadingTester().add(r).numThreads(50).numRoundsPerThread(10).run(); - } catch (Exception e) { - TestCase.fail("Received unexpected error during concurrent deserialization"); - } - } } diff --git a/src/test/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityTest.java b/src/test/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityTest.java index 4e1df82c3..ed17dc8fd 100644 --- a/src/test/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityTest.java +++ b/src/test/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivityTest.java @@ -20,9 +20,7 @@ import static com.uber.cadence.EventType.DecisionTaskStarted; import static com.uber.cadence.EventType.TimerStarted; import static com.uber.cadence.EventType.WorkflowExecutionStarted; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -42,7 +40,6 @@ import com.uber.cadence.WorkflowType; import com.uber.cadence.common.WorkflowExecutionHistory; import com.uber.cadence.converter.JsonDataConverter; -import com.uber.cadence.internal.common.InternalUtils; import com.uber.cadence.internal.testing.WorkflowTestingTest; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.cadence.testing.TestActivityEnvironment; @@ -144,15 +141,22 @@ public void testGetFullHistory_DecodedHistory_ExpectedSuccessResponse() throws E } @Test - public void testGetFullHistory_RawHistory_ExpectedSuccessResponse() throws Exception { + public void testGetFullHistory_RawHistory_NotSupportedError() throws Exception { History history = new History().setEvents(Lists.newArrayList(historyEvents.get(0))); - DataBlob blob = InternalUtils.SerializeFromHistoryToBlobData(history); + DataBlob blob = new DataBlob().setData(new byte[] {1, 2, 3}); GetWorkflowExecutionHistoryResponse response = new GetWorkflowExecutionHistoryResponse().setRawHistory(Lists.newArrayList(blob)); when(mockServiceClient.GetWorkflowExecutionHistory(any())).thenReturn(response); - WorkflowExecutionHistory result = activity.getFullHistory(domain, execution); - assertEquals(1, result.getEvents().size()); + try { + WorkflowExecutionHistory result = activity.getFullHistory(domain, execution); + } catch (Exception e) { + assertEquals( + "Raw history is not supported. Please turn off frontend.sendRawWorkflowHistory feature flag in frontend service to recover", + e.getMessage()); + return; + } + fail("Expected exception not thrown"); } @Test(expected = Error.class) From af7609e0e3ad941a0435b43e505dfb5f40c0c588 Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Fri, 26 Sep 2025 15:57:03 -0700 Subject: [PATCH 12/17] add v4 entities (#1024) Signed-off-by: Shijie Sheng What changed? Add new internal entities that will replace thrift ones. These entities will be used in the next few diffs that removed thrift support. To generate entities, ./scripts/v4_entity_generator/run.sh Why? Thrift entities are not easily replaceable by GRPC ones. One quick approach for deprecation is to generate similar interface internal entities to replace thrift ones. How did you test it? These are generated by script --- scripts/v4_entity_generator/generator.go | 311 ++++++++++++++++++ scripts/v4_entity_generator/go.mod | 5 + scripts/v4_entity_generator/go.sum | 10 + scripts/v4_entity_generator/main.go | 12 + scripts/v4_entity_generator/run.sh | 10 + .../template/java_base_exception.tmpl | 19 ++ .../template/java_enum.tmpl | 7 + .../template/java_exception.tmpl | 31 ++ .../template/java_struct.tmpl | 16 + .../com/uber/cadence/AccessDeniedError.java | 28 ++ .../cadence/ActivityLocalDispatchInfo.java | 15 + ...ityTaskCancelRequestedEventAttributes.java | 12 + .../ActivityTaskCanceledEventAttributes.java | 15 + .../ActivityTaskCompletedEventAttributes.java | 14 + .../ActivityTaskFailedEventAttributes.java | 15 + .../ActivityTaskScheduledEventAttributes.java | 22 ++ .../ActivityTaskStartedEventAttributes.java | 16 + .../ActivityTaskTimedOutEventAttributes.java | 16 + .../java/com/uber/cadence/ActivityType.java | 11 + src/gen/java/com/uber/cadence/Any.java | 12 + .../ApplyParentClosePolicyAttributes.java | 14 + .../ApplyParentClosePolicyRequest.java | 12 + .../cadence/ApplyParentClosePolicyResult.java | 12 + .../cadence/ApplyParentClosePolicyStatus.java | 12 + .../java/com/uber/cadence/ArchivalStatus.java | 6 + .../cadence/AsyncWorkflowConfiguration.java | 14 + .../java/com/uber/cadence/AutoConfigHint.java | 12 + .../java/com/uber/cadence/BadBinaries.java | 11 + .../java/com/uber/cadence/BadBinaryInfo.java | 13 + .../com/uber/cadence/BadRequestError.java | 28 ++ .../java/com/uber/cadence/CadenceError.java | 19 ++ ...lExternalWorkflowExecutionFailedCause.java | 6 + .../CancelTimerDecisionAttributes.java | 11 + .../CancelTimerFailedEventAttributes.java | 14 + ...elWorkflowExecutionDecisionAttributes.java | 11 + .../CancellationAlreadyRequestedError.java | 28 ++ ...kflowExecutionCanceledEventAttributes.java | 16 + ...flowExecutionCompletedEventAttributes.java | 16 + .../ChildWorkflowExecutionFailedCause.java | 5 + ...orkflowExecutionFailedEventAttributes.java | 17 + ...rkflowExecutionStartedEventAttributes.java | 15 + ...lowExecutionTerminatedEventAttributes.java | 15 + ...kflowExecutionTimedOutEventAttributes.java | 16 + .../ClientVersionNotSupportedError.java | 31 ++ .../com/uber/cadence/CloseShardRequest.java | 11 + .../java/com/uber/cadence/ClusterInfo.java | 11 + .../ClusterReplicationConfiguration.java | 11 + ...teWorkflowExecutionDecisionAttributes.java | 11 + .../uber/cadence/ContinueAsNewInitiator.java | 7 + ...ewWorkflowExecutionDecisionAttributes.java | 26 ++ .../CountWorkflowExecutionsRequest.java | 12 + .../CountWorkflowExecutionsResponse.java | 11 + ...plyParentClosePolicyRequestAttributes.java | 11 + ...lyParentClosePolicyResponseAttributes.java | 11 + ...usterCancelExecutionRequestAttributes.java | 16 + ...sterCancelExecutionResponseAttributes.java | 9 + ...lowExecutionCompleteRequestAttributes.java | 15 + ...owExecutionCompleteResponseAttributes.java | 9 + ...usterSignalExecutionRequestAttributes.java | 19 ++ ...sterSignalExecutionResponseAttributes.java | 9 + ...rStartChildExecutionRequestAttributes.java | 16 + ...StartChildExecutionResponseAttributes.java | 11 + .../cadence/CrossClusterTaskFailedCause.java | 10 + .../uber/cadence/CrossClusterTaskInfo.java | 17 + .../uber/cadence/CrossClusterTaskRequest.java | 17 + .../cadence/CrossClusterTaskResponse.java | 20 ++ .../uber/cadence/CrossClusterTaskType.java | 9 + .../cadence/CurrentBranchChangedError.java | 29 ++ src/gen/java/com/uber/cadence/DataBlob.java | 12 + src/gen/java/com/uber/cadence/Decision.java | 29 ++ .../DecisionTaskCompletedEventAttributes.java | 15 + .../uber/cadence/DecisionTaskFailedCause.java | 27 ++ .../DecisionTaskFailedEventAttributes.java | 21 ++ .../DecisionTaskScheduledEventAttributes.java | 13 + .../DecisionTaskStartedEventAttributes.java | 13 + .../cadence/DecisionTaskTimedOutCause.java | 6 + .../DecisionTaskTimedOutEventAttributes.java | 19 ++ .../java/com/uber/cadence/DecisionType.java | 17 + .../uber/cadence/DeprecateDomainRequest.java | 12 + .../uber/cadence/DescribeDomainRequest.java | 12 + .../uber/cadence/DescribeDomainResponse.java | 16 + .../cadence/DescribeHistoryHostRequest.java | 13 + .../cadence/DescribeHistoryHostResponse.java | 15 + .../uber/cadence/DescribeQueueRequest.java | 13 + .../uber/cadence/DescribeQueueResponse.java | 11 + .../DescribeShardDistributionRequest.java | 12 + .../DescribeShardDistributionResponse.java | 12 + .../uber/cadence/DescribeTaskListRequest.java | 14 + .../cadence/DescribeTaskListResponse.java | 12 + .../DescribeWorkflowExecutionRequest.java | 13 + .../DescribeWorkflowExecutionResponse.java | 15 + .../DiagnoseWorkflowExecutionRequest.java | 13 + .../DiagnoseWorkflowExecutionResponse.java | 12 + .../cadence/DomainAlreadyExistsError.java | 28 ++ .../com/uber/cadence/DomainCacheInfo.java | 12 + .../com/uber/cadence/DomainConfiguration.java | 19 ++ src/gen/java/com/uber/cadence/DomainInfo.java | 16 + .../uber/cadence/DomainNotActiveError.java | 31 ++ .../DomainReplicationConfiguration.java | 12 + .../java/com/uber/cadence/DomainStatus.java | 7 + .../java/com/uber/cadence/EncodingType.java | 6 + .../uber/cadence/EntityNotExistsError.java | 30 ++ src/gen/java/com/uber/cadence/EventType.java | 46 +++ ...ecutionCancelRequestedEventAttributes.java | 13 + ...kflowExecutionSignaledEventAttributes.java | 14 + ...ilWorkflowExecutionDecisionAttributes.java | 12 + .../java/com/uber/cadence/FailoverInfo.java | 15 + .../java/com/uber/cadence/FeatureFlags.java | 11 + .../uber/cadence/FeatureNotEnabledError.java | 29 ++ .../cadence/GetCrossClusterTasksRequest.java | 12 + .../cadence/GetCrossClusterTasksResponse.java | 12 + .../cadence/GetSearchAttributesResponse.java | 11 + .../com/uber/cadence/GetTaskFailedCause.java | 8 + .../cadence/GetTaskListsByDomainRequest.java | 11 + .../cadence/GetTaskListsByDomainResponse.java | 12 + .../GetWorkflowExecutionHistoryRequest.java | 18 + .../GetWorkflowExecutionHistoryResponse.java | 14 + src/gen/java/com/uber/cadence/Header.java | 11 + src/gen/java/com/uber/cadence/History.java | 11 + .../java/com/uber/cadence/HistoryBranch.java | 13 + .../com/uber/cadence/HistoryBranchRange.java | 13 + .../java/com/uber/cadence/HistoryEvent.java | 73 ++++ .../uber/cadence/HistoryEventFilterType.java | 6 + .../com/uber/cadence/IndexedValueType.java | 10 + .../InternalDataInconsistencyError.java | 28 ++ .../uber/cadence/InternalServiceError.java | 28 ++ .../cadence/IsolationGroupConfiguration.java | 11 + .../uber/cadence/IsolationGroupMetrics.java | 12 + .../uber/cadence/IsolationGroupPartition.java | 12 + .../com/uber/cadence/IsolationGroupState.java | 7 + .../com/uber/cadence/LimitExceededError.java | 28 ++ ...ListArchivedWorkflowExecutionsRequest.java | 14 + ...istArchivedWorkflowExecutionsResponse.java | 12 + .../ListClosedWorkflowExecutionsRequest.java | 17 + .../ListClosedWorkflowExecutionsResponse.java | 12 + .../com/uber/cadence/ListDomainsRequest.java | 12 + .../com/uber/cadence/ListDomainsResponse.java | 12 + .../ListOpenWorkflowExecutionsRequest.java | 16 + .../ListOpenWorkflowExecutionsResponse.java | 12 + .../ListTaskListPartitionsRequest.java | 12 + .../ListTaskListPartitionsResponse.java | 12 + .../ListWorkflowExecutionsRequest.java | 14 + .../ListWorkflowExecutionsResponse.java | 12 + .../MarkerRecordedEventAttributes.java | 14 + src/gen/java/com/uber/cadence/Memo.java | 11 + .../com/uber/cadence/ParentClosePolicy.java | 7 + .../com/uber/cadence/PendingActivityInfo.java | 25 ++ .../uber/cadence/PendingActivityState.java | 7 + .../cadence/PendingChildExecutionInfo.java | 16 + .../com/uber/cadence/PendingDecisionInfo.java | 16 + .../uber/cadence/PendingDecisionState.java | 6 + .../cadence/PollForActivityTaskRequest.java | 14 + .../cadence/PollForActivityTaskResponse.java | 27 ++ .../cadence/PollForDecisionTaskRequest.java | 14 + .../cadence/PollForDecisionTaskResponse.java | 27 ++ src/gen/java/com/uber/cadence/PollerInfo.java | 13 + .../uber/cadence/QueryConsistencyLevel.java | 6 + .../com/uber/cadence/QueryFailedError.java | 28 ++ .../uber/cadence/QueryRejectCondition.java | 6 + .../java/com/uber/cadence/QueryRejected.java | 11 + .../com/uber/cadence/QueryResultType.java | 6 + .../uber/cadence/QueryTaskCompletedType.java | 6 + .../uber/cadence/QueryWorkflowRequest.java | 15 + .../uber/cadence/QueryWorkflowResponse.java | 12 + .../uber/cadence/ReapplyEventsRequest.java | 13 + ...ecordActivityTaskHeartbeatByIDRequest.java | 16 + .../RecordActivityTaskHeartbeatRequest.java | 13 + .../RecordActivityTaskHeartbeatResponse.java | 11 + .../RecordMarkerDecisionAttributes.java | 13 + .../cadence/RefreshWorkflowTasksRequest.java | 12 + .../uber/cadence/RegisterDomainRequest.java | 24 ++ .../uber/cadence/RemoteSyncMatchedError.java | 28 ++ .../com/uber/cadence/RemoveTaskRequest.java | 15 + ...tCancelActivityTaskDecisionAttributes.java | 11 + ...ncelActivityTaskFailedEventAttributes.java | 13 + ...alWorkflowExecutionDecisionAttributes.java | 15 + ...orkflowExecutionFailedEventAttributes.java | 16 + ...flowExecutionInitiatedEventAttributes.java | 15 + ...RequestCancelWorkflowExecutionRequest.java | 16 + .../java/com/uber/cadence/ResetPointInfo.java | 16 + .../java/com/uber/cadence/ResetPoints.java | 11 + .../com/uber/cadence/ResetQueueRequest.java | 13 + .../cadence/ResetStickyTaskListRequest.java | 12 + .../cadence/ResetStickyTaskListResponse.java | 9 + .../ResetWorkflowExecutionRequest.java | 16 + .../ResetWorkflowExecutionResponse.java | 11 + ...espondActivityTaskCanceledByIDRequest.java | 16 + .../RespondActivityTaskCanceledRequest.java | 13 + ...spondActivityTaskCompletedByIDRequest.java | 16 + .../RespondActivityTaskCompletedRequest.java | 13 + .../RespondActivityTaskFailedByIDRequest.java | 17 + .../RespondActivityTaskFailedRequest.java | 14 + ...pondCrossClusterTasksCompletedRequest.java | 14 + ...ondCrossClusterTasksCompletedResponse.java | 11 + .../RespondDecisionTaskCompletedRequest.java | 19 ++ .../RespondDecisionTaskCompletedResponse.java | 12 + .../RespondDecisionTaskFailedRequest.java | 15 + .../RespondQueryTaskCompletedRequest.java | 15 + .../RestartWorkflowExecutionRequest.java | 14 + .../RestartWorkflowExecutionResponse.java | 11 + .../java/com/uber/cadence/RetryPolicy.java | 16 + .../com/uber/cadence/RetryTaskV2Error.java | 35 ++ ...cheduleActivityTaskDecisionAttributes.java | 22 ++ .../com/uber/cadence/SearchAttributes.java | 11 + .../com/uber/cadence/ServiceBusyError.java | 29 ++ ...alWorkflowExecutionDecisionAttributes.java | 16 + ...lExternalWorkflowExecutionFailedCause.java | 6 + ...orkflowExecutionFailedEventAttributes.java | 16 + ...flowExecutionInitiatedEventAttributes.java | 17 + ...ithStartWorkflowExecutionAsyncRequest.java | 11 + ...thStartWorkflowExecutionAsyncResponse.java | 9 + ...gnalWithStartWorkflowExecutionRequest.java | 31 ++ .../SignalWorkflowExecutionRequest.java | 17 + ...ldWorkflowExecutionDecisionAttributes.java | 25 ++ ...orkflowExecutionFailedEventAttributes.java | 17 + ...flowExecutionInitiatedEventAttributes.java | 29 ++ .../com/uber/cadence/StartTimeFilter.java | 12 + .../cadence/StartTimerDecisionAttributes.java | 12 + .../StartWorkflowExecutionAsyncRequest.java | 11 + .../StartWorkflowExecutionAsyncResponse.java | 9 + .../StartWorkflowExecutionRequest.java | 28 ++ .../StartWorkflowExecutionResponse.java | 11 + .../cadence/StickyExecutionAttributes.java | 12 + .../cadence/StickyWorkerUnavailableError.java | 28 ++ .../uber/cadence/SupportedClientVersions.java | 12 + .../java/com/uber/cadence/TaskIDBlock.java | 12 + src/gen/java/com/uber/cadence/TaskList.java | 12 + .../java/com/uber/cadence/TaskListKind.java | 6 + .../com/uber/cadence/TaskListMetadata.java | 11 + .../cadence/TaskListNotOwnedByHostError.java | 31 ++ .../cadence/TaskListPartitionMetadata.java | 12 + .../java/com/uber/cadence/TaskListStatus.java | 17 + .../java/com/uber/cadence/TaskListType.java | 6 + .../TerminateWorkflowExecutionRequest.java | 16 + .../java/com/uber/cadence/TimeoutType.java | 8 + .../cadence/TimerCanceledEventAttributes.java | 14 + .../cadence/TimerFiredEventAttributes.java | 12 + .../cadence/TimerStartedEventAttributes.java | 13 + .../uber/cadence/TransientDecisionInfo.java | 12 + .../com/uber/cadence/UpdateDomainInfo.java | 13 + .../com/uber/cadence/UpdateDomainRequest.java | 17 + .../uber/cadence/UpdateDomainResponse.java | 15 + ...lowSearchAttributesDecisionAttributes.java | 11 + ...rkflowSearchAttributesEventAttributes.java | 12 + .../com/uber/cadence/VersionHistories.java | 12 + .../java/com/uber/cadence/VersionHistory.java | 12 + .../com/uber/cadence/VersionHistoryItem.java | 12 + .../com/uber/cadence/WorkerVersionInfo.java | 12 + .../com/uber/cadence/WorkflowExecution.java | 12 + ...orkflowExecutionAlreadyCompletedError.java | 28 ++ .../WorkflowExecutionAlreadyStartedError.java | 30 ++ ...ecutionCancelRequestedEventAttributes.java | 15 + ...kflowExecutionCanceledEventAttributes.java | 12 + .../cadence/WorkflowExecutionCloseStatus.java | 10 + ...flowExecutionCompletedEventAttributes.java | 12 + .../WorkflowExecutionConfiguration.java | 13 + ...xecutionContinuedAsNewEventAttributes.java | 25 ++ ...orkflowExecutionFailedEventAttributes.java | 13 + .../uber/cadence/WorkflowExecutionFilter.java | 12 + .../uber/cadence/WorkflowExecutionInfo.java | 28 ++ ...kflowExecutionSignaledEventAttributes.java | 14 + ...rkflowExecutionStartedEventAttributes.java | 38 +++ ...lowExecutionTerminatedEventAttributes.java | 13 + ...kflowExecutionTimedOutEventAttributes.java | 11 + .../uber/cadence/WorkflowIdReusePolicy.java | 8 + .../java/com/uber/cadence/WorkflowQuery.java | 12 + .../com/uber/cadence/WorkflowQueryResult.java | 13 + .../java/com/uber/cadence/WorkflowType.java | 11 + .../com/uber/cadence/WorkflowTypeFilter.java | 11 + .../com/uber/cadence/shadower/Constants.java | 12 + .../uber/cadence/shadower/ExitCondition.java | 13 + .../java/com/uber/cadence/shadower/Mode.java | 6 + .../ReplayWorkflowActivityParams.java | 13 + .../ReplayWorkflowActivityResult.java | 14 + .../shadower/ScanWorkflowActivityParams.java | 16 + .../shadower/ScanWorkflowActivityResult.java | 13 + .../uber/cadence/shadower/WorkflowParams.java | 20 ++ .../uber/cadence/shadower/WorkflowResult.java | 14 + 278 files changed, 4473 insertions(+) create mode 100644 scripts/v4_entity_generator/generator.go create mode 100644 scripts/v4_entity_generator/go.mod create mode 100644 scripts/v4_entity_generator/go.sum create mode 100644 scripts/v4_entity_generator/main.go create mode 100755 scripts/v4_entity_generator/run.sh create mode 100644 scripts/v4_entity_generator/template/java_base_exception.tmpl create mode 100644 scripts/v4_entity_generator/template/java_enum.tmpl create mode 100644 scripts/v4_entity_generator/template/java_exception.tmpl create mode 100644 scripts/v4_entity_generator/template/java_struct.tmpl create mode 100644 src/gen/java/com/uber/cadence/AccessDeniedError.java create mode 100644 src/gen/java/com/uber/cadence/ActivityLocalDispatchInfo.java create mode 100644 src/gen/java/com/uber/cadence/ActivityTaskCancelRequestedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ActivityTaskCanceledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ActivityTaskCompletedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ActivityTaskFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ActivityTaskScheduledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ActivityTaskStartedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ActivityTaskTimedOutEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ActivityType.java create mode 100644 src/gen/java/com/uber/cadence/Any.java create mode 100644 src/gen/java/com/uber/cadence/ApplyParentClosePolicyAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ApplyParentClosePolicyRequest.java create mode 100644 src/gen/java/com/uber/cadence/ApplyParentClosePolicyResult.java create mode 100644 src/gen/java/com/uber/cadence/ApplyParentClosePolicyStatus.java create mode 100644 src/gen/java/com/uber/cadence/ArchivalStatus.java create mode 100644 src/gen/java/com/uber/cadence/AsyncWorkflowConfiguration.java create mode 100644 src/gen/java/com/uber/cadence/AutoConfigHint.java create mode 100644 src/gen/java/com/uber/cadence/BadBinaries.java create mode 100644 src/gen/java/com/uber/cadence/BadBinaryInfo.java create mode 100644 src/gen/java/com/uber/cadence/BadRequestError.java create mode 100644 src/gen/java/com/uber/cadence/CadenceError.java create mode 100644 src/gen/java/com/uber/cadence/CancelExternalWorkflowExecutionFailedCause.java create mode 100644 src/gen/java/com/uber/cadence/CancelTimerDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CancelTimerFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CancelWorkflowExecutionDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CancellationAlreadyRequestedError.java create mode 100644 src/gen/java/com/uber/cadence/ChildWorkflowExecutionCanceledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ChildWorkflowExecutionCompletedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedCause.java create mode 100644 src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ChildWorkflowExecutionStartedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ChildWorkflowExecutionTerminatedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ChildWorkflowExecutionTimedOutEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ClientVersionNotSupportedError.java create mode 100644 src/gen/java/com/uber/cadence/CloseShardRequest.java create mode 100644 src/gen/java/com/uber/cadence/ClusterInfo.java create mode 100644 src/gen/java/com/uber/cadence/ClusterReplicationConfiguration.java create mode 100644 src/gen/java/com/uber/cadence/CompleteWorkflowExecutionDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ContinueAsNewInitiator.java create mode 100644 src/gen/java/com/uber/cadence/ContinueAsNewWorkflowExecutionDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CountWorkflowExecutionsRequest.java create mode 100644 src/gen/java/com/uber/cadence/CountWorkflowExecutionsResponse.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterCancelExecutionRequestAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterCancelExecutionResponseAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterSignalExecutionRequestAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterSignalExecutionResponseAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionResponseAttributes.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterTaskFailedCause.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterTaskInfo.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterTaskRequest.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterTaskResponse.java create mode 100644 src/gen/java/com/uber/cadence/CrossClusterTaskType.java create mode 100644 src/gen/java/com/uber/cadence/CurrentBranchChangedError.java create mode 100644 src/gen/java/com/uber/cadence/DataBlob.java create mode 100644 src/gen/java/com/uber/cadence/Decision.java create mode 100644 src/gen/java/com/uber/cadence/DecisionTaskCompletedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/DecisionTaskFailedCause.java create mode 100644 src/gen/java/com/uber/cadence/DecisionTaskFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/DecisionTaskScheduledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/DecisionTaskStartedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/DecisionTaskTimedOutCause.java create mode 100644 src/gen/java/com/uber/cadence/DecisionTaskTimedOutEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/DecisionType.java create mode 100644 src/gen/java/com/uber/cadence/DeprecateDomainRequest.java create mode 100644 src/gen/java/com/uber/cadence/DescribeDomainRequest.java create mode 100644 src/gen/java/com/uber/cadence/DescribeDomainResponse.java create mode 100644 src/gen/java/com/uber/cadence/DescribeHistoryHostRequest.java create mode 100644 src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java create mode 100644 src/gen/java/com/uber/cadence/DescribeQueueRequest.java create mode 100644 src/gen/java/com/uber/cadence/DescribeQueueResponse.java create mode 100644 src/gen/java/com/uber/cadence/DescribeShardDistributionRequest.java create mode 100644 src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java create mode 100644 src/gen/java/com/uber/cadence/DescribeTaskListRequest.java create mode 100644 src/gen/java/com/uber/cadence/DescribeTaskListResponse.java create mode 100644 src/gen/java/com/uber/cadence/DescribeWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java create mode 100644 src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionResponse.java create mode 100644 src/gen/java/com/uber/cadence/DomainAlreadyExistsError.java create mode 100644 src/gen/java/com/uber/cadence/DomainCacheInfo.java create mode 100644 src/gen/java/com/uber/cadence/DomainConfiguration.java create mode 100644 src/gen/java/com/uber/cadence/DomainInfo.java create mode 100644 src/gen/java/com/uber/cadence/DomainNotActiveError.java create mode 100644 src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java create mode 100644 src/gen/java/com/uber/cadence/DomainStatus.java create mode 100644 src/gen/java/com/uber/cadence/EncodingType.java create mode 100644 src/gen/java/com/uber/cadence/EntityNotExistsError.java create mode 100644 src/gen/java/com/uber/cadence/EventType.java create mode 100644 src/gen/java/com/uber/cadence/ExternalWorkflowExecutionCancelRequestedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ExternalWorkflowExecutionSignaledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/FailWorkflowExecutionDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/FailoverInfo.java create mode 100644 src/gen/java/com/uber/cadence/FeatureFlags.java create mode 100644 src/gen/java/com/uber/cadence/FeatureNotEnabledError.java create mode 100644 src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java create mode 100644 src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java create mode 100644 src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java create mode 100644 src/gen/java/com/uber/cadence/GetTaskFailedCause.java create mode 100644 src/gen/java/com/uber/cadence/GetTaskListsByDomainRequest.java create mode 100644 src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java create mode 100644 src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryRequest.java create mode 100644 src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java create mode 100644 src/gen/java/com/uber/cadence/Header.java create mode 100644 src/gen/java/com/uber/cadence/History.java create mode 100644 src/gen/java/com/uber/cadence/HistoryBranch.java create mode 100644 src/gen/java/com/uber/cadence/HistoryBranchRange.java create mode 100644 src/gen/java/com/uber/cadence/HistoryEvent.java create mode 100644 src/gen/java/com/uber/cadence/HistoryEventFilterType.java create mode 100644 src/gen/java/com/uber/cadence/IndexedValueType.java create mode 100644 src/gen/java/com/uber/cadence/InternalDataInconsistencyError.java create mode 100644 src/gen/java/com/uber/cadence/InternalServiceError.java create mode 100644 src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java create mode 100644 src/gen/java/com/uber/cadence/IsolationGroupMetrics.java create mode 100644 src/gen/java/com/uber/cadence/IsolationGroupPartition.java create mode 100644 src/gen/java/com/uber/cadence/IsolationGroupState.java create mode 100644 src/gen/java/com/uber/cadence/LimitExceededError.java create mode 100644 src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsRequest.java create mode 100644 src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java create mode 100644 src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsRequest.java create mode 100644 src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java create mode 100644 src/gen/java/com/uber/cadence/ListDomainsRequest.java create mode 100644 src/gen/java/com/uber/cadence/ListDomainsResponse.java create mode 100644 src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsRequest.java create mode 100644 src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java create mode 100644 src/gen/java/com/uber/cadence/ListTaskListPartitionsRequest.java create mode 100644 src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java create mode 100644 src/gen/java/com/uber/cadence/ListWorkflowExecutionsRequest.java create mode 100644 src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java create mode 100644 src/gen/java/com/uber/cadence/MarkerRecordedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/Memo.java create mode 100644 src/gen/java/com/uber/cadence/ParentClosePolicy.java create mode 100644 src/gen/java/com/uber/cadence/PendingActivityInfo.java create mode 100644 src/gen/java/com/uber/cadence/PendingActivityState.java create mode 100644 src/gen/java/com/uber/cadence/PendingChildExecutionInfo.java create mode 100644 src/gen/java/com/uber/cadence/PendingDecisionInfo.java create mode 100644 src/gen/java/com/uber/cadence/PendingDecisionState.java create mode 100644 src/gen/java/com/uber/cadence/PollForActivityTaskRequest.java create mode 100644 src/gen/java/com/uber/cadence/PollForActivityTaskResponse.java create mode 100644 src/gen/java/com/uber/cadence/PollForDecisionTaskRequest.java create mode 100644 src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java create mode 100644 src/gen/java/com/uber/cadence/PollerInfo.java create mode 100644 src/gen/java/com/uber/cadence/QueryConsistencyLevel.java create mode 100644 src/gen/java/com/uber/cadence/QueryFailedError.java create mode 100644 src/gen/java/com/uber/cadence/QueryRejectCondition.java create mode 100644 src/gen/java/com/uber/cadence/QueryRejected.java create mode 100644 src/gen/java/com/uber/cadence/QueryResultType.java create mode 100644 src/gen/java/com/uber/cadence/QueryTaskCompletedType.java create mode 100644 src/gen/java/com/uber/cadence/QueryWorkflowRequest.java create mode 100644 src/gen/java/com/uber/cadence/QueryWorkflowResponse.java create mode 100644 src/gen/java/com/uber/cadence/ReapplyEventsRequest.java create mode 100644 src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatByIDRequest.java create mode 100644 src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatRequest.java create mode 100644 src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatResponse.java create mode 100644 src/gen/java/com/uber/cadence/RecordMarkerDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/RefreshWorkflowTasksRequest.java create mode 100644 src/gen/java/com/uber/cadence/RegisterDomainRequest.java create mode 100644 src/gen/java/com/uber/cadence/RemoteSyncMatchedError.java create mode 100644 src/gen/java/com/uber/cadence/RemoveTaskRequest.java create mode 100644 src/gen/java/com/uber/cadence/RequestCancelActivityTaskDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/RequestCancelActivityTaskFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/RequestCancelWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/ResetPointInfo.java create mode 100644 src/gen/java/com/uber/cadence/ResetPoints.java create mode 100644 src/gen/java/com/uber/cadence/ResetQueueRequest.java create mode 100644 src/gen/java/com/uber/cadence/ResetStickyTaskListRequest.java create mode 100644 src/gen/java/com/uber/cadence/ResetStickyTaskListResponse.java create mode 100644 src/gen/java/com/uber/cadence/ResetWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/ResetWorkflowExecutionResponse.java create mode 100644 src/gen/java/com/uber/cadence/RespondActivityTaskCanceledByIDRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondActivityTaskCanceledRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondActivityTaskCompletedByIDRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondActivityTaskCompletedRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondActivityTaskFailedByIDRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondActivityTaskFailedRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java create mode 100644 src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java create mode 100644 src/gen/java/com/uber/cadence/RespondDecisionTaskFailedRequest.java create mode 100644 src/gen/java/com/uber/cadence/RespondQueryTaskCompletedRequest.java create mode 100644 src/gen/java/com/uber/cadence/RestartWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/RestartWorkflowExecutionResponse.java create mode 100644 src/gen/java/com/uber/cadence/RetryPolicy.java create mode 100644 src/gen/java/com/uber/cadence/RetryTaskV2Error.java create mode 100644 src/gen/java/com/uber/cadence/ScheduleActivityTaskDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/SearchAttributes.java create mode 100644 src/gen/java/com/uber/cadence/ServiceBusyError.java create mode 100644 src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedCause.java create mode 100644 src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionInitiatedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncRequest.java create mode 100644 src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncResponse.java create mode 100644 src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/SignalWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/StartChildWorkflowExecutionDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/StartChildWorkflowExecutionFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/StartChildWorkflowExecutionInitiatedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/StartTimeFilter.java create mode 100644 src/gen/java/com/uber/cadence/StartTimerDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncRequest.java create mode 100644 src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncResponse.java create mode 100644 src/gen/java/com/uber/cadence/StartWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/StartWorkflowExecutionResponse.java create mode 100644 src/gen/java/com/uber/cadence/StickyExecutionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/StickyWorkerUnavailableError.java create mode 100644 src/gen/java/com/uber/cadence/SupportedClientVersions.java create mode 100644 src/gen/java/com/uber/cadence/TaskIDBlock.java create mode 100644 src/gen/java/com/uber/cadence/TaskList.java create mode 100644 src/gen/java/com/uber/cadence/TaskListKind.java create mode 100644 src/gen/java/com/uber/cadence/TaskListMetadata.java create mode 100644 src/gen/java/com/uber/cadence/TaskListNotOwnedByHostError.java create mode 100644 src/gen/java/com/uber/cadence/TaskListPartitionMetadata.java create mode 100644 src/gen/java/com/uber/cadence/TaskListStatus.java create mode 100644 src/gen/java/com/uber/cadence/TaskListType.java create mode 100644 src/gen/java/com/uber/cadence/TerminateWorkflowExecutionRequest.java create mode 100644 src/gen/java/com/uber/cadence/TimeoutType.java create mode 100644 src/gen/java/com/uber/cadence/TimerCanceledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/TimerFiredEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/TimerStartedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/TransientDecisionInfo.java create mode 100644 src/gen/java/com/uber/cadence/UpdateDomainInfo.java create mode 100644 src/gen/java/com/uber/cadence/UpdateDomainRequest.java create mode 100644 src/gen/java/com/uber/cadence/UpdateDomainResponse.java create mode 100644 src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesDecisionAttributes.java create mode 100644 src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/VersionHistories.java create mode 100644 src/gen/java/com/uber/cadence/VersionHistory.java create mode 100644 src/gen/java/com/uber/cadence/VersionHistoryItem.java create mode 100644 src/gen/java/com/uber/cadence/WorkerVersionInfo.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecution.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyCompletedError.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyStartedError.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionCancelRequestedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionCanceledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionCloseStatus.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionCompletedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionConfiguration.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionContinuedAsNewEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionFailedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionFilter.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionSignaledEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionTerminatedEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowExecutionTimedOutEventAttributes.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowIdReusePolicy.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowQuery.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowQueryResult.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowType.java create mode 100644 src/gen/java/com/uber/cadence/WorkflowTypeFilter.java create mode 100644 src/gen/java/com/uber/cadence/shadower/Constants.java create mode 100644 src/gen/java/com/uber/cadence/shadower/ExitCondition.java create mode 100644 src/gen/java/com/uber/cadence/shadower/Mode.java create mode 100644 src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java create mode 100644 src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityResult.java create mode 100644 src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityParams.java create mode 100644 src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java create mode 100644 src/gen/java/com/uber/cadence/shadower/WorkflowParams.java create mode 100644 src/gen/java/com/uber/cadence/shadower/WorkflowResult.java diff --git a/scripts/v4_entity_generator/generator.go b/scripts/v4_entity_generator/generator.go new file mode 100644 index 000000000..de92c2740 --- /dev/null +++ b/scripts/v4_entity_generator/generator.go @@ -0,0 +1,311 @@ +package main + +import ( + "fmt" + "log" + "os" + "strings" + "sync" + "text/template" + + "go.uber.org/thriftrw/ast" + "go.uber.org/thriftrw/idl" +) + +const ( + baseExceptionClassName = "CadenceError" +) + +type Field struct { + Name string + Type string +} + +type TemplateEntity struct { + PackageName string + ClassName string + Fields []Field + AdditionalImports []string +} + +type TemplateEnum struct { + PackageName string + ClassName string + Fields []string +} + +type TemplateException struct { + PackageName string + ClassName string + Fields []Field + BaseExceptionClassName string +} + +type TemplateBaseException struct { + PackageName string + ClassName string +} + +type Generator struct { + tmplStruct *template.Template + tmplEnum *template.Template + tmplException *template.Template + tmplBaseException *template.Template + log *log.Logger +} + +func NewGenerator() *Generator { + return &Generator{ + tmplStruct: template.Must(template.ParseFiles("./template/java_struct.tmpl")), + tmplEnum: template.Must(template.ParseFiles("./template/java_enum.tmpl")), + tmplException: template.Must(template.ParseFiles("./template/java_exception.tmpl")), + tmplBaseException: template.Must(template.ParseFiles("./template/java_base_exception.tmpl")), + log: log.New(os.Stdout, "", log.LstdFlags), + } +} + +func (g *Generator) Generate(input string, outputDir string, packageNameOverride string, additionalImports ...string) error { + config := &idl.Config{} + + content, err := os.ReadFile(input) + if err != nil { + return fmt.Errorf("failed to read file: %w", err) + } + + program, err := config.Parse(content) + if err != nil { + return fmt.Errorf("failed to parse file: %w", err) + } + + packageName := packageNameOverride + if packageName == "" { + packageName, err = getPackageName(program) + if err != nil { + return fmt.Errorf("failed to get package name: %w", err) + } + } + outputDir = fmt.Sprintf("%s/%s", outputDir, strings.ReplaceAll(packageName, ".", "/")) + + err = os.MkdirAll(outputDir, 0755) + if err != nil { + return fmt.Errorf("failed to create output directory: %w", err) + } + + ast.Walk(ast.VisitorFunc(func(w ast.Walker, n ast.Node) { + var err error + switch v:=n.(type) { + case *ast.Struct: + switch v.Type { + case ast.ExceptionType: + err = g.generateException(v, outputDir, packageName) + case ast.StructType: + err = g.generateStruct(v, outputDir, packageName, additionalImports) + } + case *ast.Enum: + err = g.generateEnum(v, outputDir, packageName) + } + if err != nil { + g.log.Fatalf("failed to generate: %v", err) + } + }), program) + return nil +} + +func (g *Generator) generateStruct(v *ast.Struct, outputDir string, packageName string, additionalImports []string) error { + fields := make([]Field, 0) + for _, field := range v.Fields { + typeStr, err := typeMapper(field.Type, true) + if err != nil { + return fmt.Errorf("failed to map field type: %w", err) + } + + fields = append(fields, Field{ + Name: field.Name, + Type: typeStr, + }) + } + + data := TemplateEntity{ + PackageName: packageName, + ClassName: v.Name, + Fields: fields, + AdditionalImports: additionalImports, + } + + outputFile := fmt.Sprintf("%s/%s.java", outputDir, v.Name) + f, err := os.Create(outputFile) + if err != nil { + return fmt.Errorf("failed to create file: %w", err) + } + defer f.Close() + + if err := g.tmplStruct.Execute(f, data); err != nil { + + return fmt.Errorf("failed to execute template: %w", err) + } + + return nil +} + +func (g *Generator) generateException(v *ast.Struct, outputDir string, packageName string) error { + var once sync.Once + once.Do(func(){ + err := g.generateBaseException(baseExceptionClassName, outputDir, packageName) + if err != nil { + g.log.Fatalf("failed to generate base exception: %v", err) + } + }) + + fields := make([]Field, 0) + for _, field := range v.Fields { + if field.Name == "message" { // skip on message field, it is already in the base exception + continue + } + typeStr, err := typeMapper(field.Type, true) + if err != nil { + return fmt.Errorf("failed to map field type: %w", err) + } + fields = append(fields, Field{ + Name: field.Name, + Type: typeStr, + }) + } + + data := TemplateException{ + PackageName: packageName, + ClassName: v.Name, + Fields: fields, + BaseExceptionClassName: baseExceptionClassName, + } + + outputFile := fmt.Sprintf("%s/%s.java", outputDir, v.Name) + f, err := os.Create(outputFile) + if err != nil { + return fmt.Errorf("failed to create file: %w", err) + } + defer f.Close() + + if err := g.tmplException.Execute(f, data); err != nil { + return fmt.Errorf("failed to execute template: %w", err) + } + return nil +} + +func (g *Generator) generateBaseException(className string, outputDir string, packageName string) error { + data := TemplateBaseException{ + PackageName: packageName, + ClassName: className, + } + + outputFile := fmt.Sprintf("%s/%s.java", outputDir, className) + f, err := os.Create(outputFile) + if err != nil { + return fmt.Errorf("failed to create file: %w", err) + } + defer f.Close() + + if err := g.tmplBaseException.Execute(f, data); err != nil { + return fmt.Errorf("failed to execute template: %w", err) + } + return nil +} + +func (g *Generator) generateEnum(v *ast.Enum, outputDir string, packageName string) error { + data := TemplateEnum{ + PackageName: packageName, + ClassName: v.Name, + } + for _, item := range v.Items { + data.Fields = append(data.Fields, item.Name) + } + + outputFile := fmt.Sprintf("%s/%s.java", outputDir, v.Name) + f, err := os.Create(outputFile) + if err != nil { + return fmt.Errorf("failed to create file: %w", err) + } + defer f.Close() + + if err := g.tmplEnum.Execute(f, data); err != nil { + return fmt.Errorf("failed to execute template: %w", err) + } + return nil +} + +func getPackageName(program *ast.Program) (string, error) { + for _, header := range program.Headers { + if header, ok := header.(*ast.Namespace); ok && header.Scope == "java" { + return header.Name, nil + } + } + return "", fmt.Errorf("cannot find package name in the thrift file") +} + +func typeMapper(t ast.Type, usePrimitive bool) (string, error) { + switch tt :=t.(type) { + case ast.BaseType: + return baseTypeMapper(tt, usePrimitive) + case ast.MapType: + keyType, err := typeMapper(tt.KeyType, false) + if err != nil { + return "", fmt.Errorf("failed to map key type: %w", err) + } + valueType, err := typeMapper(tt.ValueType, false) + if err != nil { + return "", fmt.Errorf("failed to map value type: %w", err) + } + return "Map<" + keyType + ", " + valueType + ">", nil + case ast.ListType: + valueType, err := typeMapper(tt.ValueType, false) + if err != nil { + return "", fmt.Errorf("failed to map value type: %w", err) + } + return "List<" + valueType + ">", nil + case ast.SetType: + valueType, err := typeMapper(tt.ValueType, false) + if err != nil { + return "", fmt.Errorf("failed to map value type: %w", err) + } + return "Set<" + valueType + ">", nil + case ast.TypeReference: + return trimReference(tt.Name), nil + default: + return "", fmt.Errorf("do not support type: %v", tt) + } +} + +// trim the reference from the name, e.g. com.uber.cadence.shared.WorkflowExecution -> WorkflowExecution +func trimReference(name string) string { + return strings.Split(name, ".")[len(strings.Split(name, "."))-1] +} + +func baseTypeMapper(t ast.BaseType, usePrimitive bool) (string, error) { + switch t.ID { + case ast.BoolTypeID: + if usePrimitive { + return "boolean", nil + } + return "Boolean", nil + case ast.I8TypeID, ast.I16TypeID, ast.I32TypeID: + if usePrimitive { + return "int", nil + } + return "Integer", nil + case ast.I64TypeID: + if usePrimitive { + return "long", nil + } + return "Long", nil + case ast.DoubleTypeID: + if usePrimitive { + return "double", nil + } + return "Double", nil + case ast.StringTypeID: + return "String", nil + case ast.BinaryTypeID: + return "byte[]", nil + default: + return "", fmt.Errorf("unknown base type: %v", t.ID) + } +} diff --git a/scripts/v4_entity_generator/go.mod b/scripts/v4_entity_generator/go.mod new file mode 100644 index 000000000..6cc75868b --- /dev/null +++ b/scripts/v4_entity_generator/go.mod @@ -0,0 +1,5 @@ +module github.com/uber/cadence-idl/java/generator + +go 1.18 + +require go.uber.org/thriftrw v1.32.0 diff --git a/scripts/v4_entity_generator/go.sum b/scripts/v4_entity_generator/go.sum new file mode 100644 index 000000000..c69fc06fd --- /dev/null +++ b/scripts/v4_entity_generator/go.sum @@ -0,0 +1,10 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +go.uber.org/thriftrw v1.32.0 h1:/d9SS3H0V0lwm5cVcPI29V7EGDWHQQARGLYKeyhzRAM= +go.uber.org/thriftrw v1.32.0/go.mod h1:MTXuf4RAB2SbjKgyvt7PF2SnuLJ8IYajpg8yBo3rEUI= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/scripts/v4_entity_generator/main.go b/scripts/v4_entity_generator/main.go new file mode 100644 index 000000000..b1777e21b --- /dev/null +++ b/scripts/v4_entity_generator/main.go @@ -0,0 +1,12 @@ +package main + +import "fmt" + +func main() { + if err := NewGenerator().Generate("../../src/main/idls/thrift/shared.thrift", "../../src/gen/java", "com.uber.cadence"); err != nil { + panic(fmt.Sprintf("failed to generate: %v", err)) + } + if err := NewGenerator().Generate("../../src/main/idls/thrift/shadower.thrift", "../../src/gen/java", "com.uber.cadence.shadower", "com.uber.cadence.*"); err != nil { + panic(fmt.Sprintf("failed to generate: %v", err)) + } +} diff --git a/scripts/v4_entity_generator/run.sh b/scripts/v4_entity_generator/run.sh new file mode 100755 index 000000000..f9f9c2981 --- /dev/null +++ b/scripts/v4_entity_generator/run.sh @@ -0,0 +1,10 @@ +#! /bin/bash + +# This script is used to generate the java entities from the thrift files. We will eventually remove this script and maintain entities without using thrift. +ROOT_DIR=$(git rev-parse --show-toplevel) +cd $ROOT_DIR/scripts/v4_entity_generator + +go run main.go generator.go + +cd $ROOT_DIR +./gradlew googleJavaFormat diff --git a/scripts/v4_entity_generator/template/java_base_exception.tmpl b/scripts/v4_entity_generator/template/java_base_exception.tmpl new file mode 100644 index 000000000..97c8525fb --- /dev/null +++ b/scripts/v4_entity_generator/template/java_base_exception.tmpl @@ -0,0 +1,19 @@ +package {{.PackageName}}; + +public class {{.ClassName}} extends RuntimeException { + public {{.ClassName}}() { + super(); + } + + public {{.ClassName}}(String message) { + super(message); + } + + public {{.ClassName}}(String message, Throwable cause) { + super(message, cause); + } + + public {{.ClassName}}(Throwable cause) { + super(cause); + } +} diff --git a/scripts/v4_entity_generator/template/java_enum.tmpl b/scripts/v4_entity_generator/template/java_enum.tmpl new file mode 100644 index 000000000..aae6928dc --- /dev/null +++ b/scripts/v4_entity_generator/template/java_enum.tmpl @@ -0,0 +1,7 @@ +package {{.PackageName}}; + +public enum {{.ClassName}} { + {{- range .Fields}} + {{.}}, + {{- end}} +} diff --git a/scripts/v4_entity_generator/template/java_exception.tmpl b/scripts/v4_entity_generator/template/java_exception.tmpl new file mode 100644 index 000000000..c28631ff8 --- /dev/null +++ b/scripts/v4_entity_generator/template/java_exception.tmpl @@ -0,0 +1,31 @@ +package {{.PackageName}}; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import java.util.*; + +@Getter +@Setter +@Accessors(chain = true) +public class {{.ClassName}} extends {{.BaseExceptionClassName}} { + {{- range .Fields}} + private {{.Type}} {{.Name}}; + {{- end}} + + public {{.ClassName}}() { + super(); + } + + public {{.ClassName}}(String message) { + super(message); + } + + public {{.ClassName}}(String message, Throwable cause) { + super(message, cause); + } + + public {{.ClassName}}(Throwable cause) { + super(cause); + } +} diff --git a/scripts/v4_entity_generator/template/java_struct.tmpl b/scripts/v4_entity_generator/template/java_struct.tmpl new file mode 100644 index 000000000..b9d448f40 --- /dev/null +++ b/scripts/v4_entity_generator/template/java_struct.tmpl @@ -0,0 +1,16 @@ +package {{.PackageName}}; + +import lombok.Data; +import lombok.experimental.Accessors; +import java.util.*; +{{- range .AdditionalImports}} +import {{.}}; +{{- end}} + +@Data +@Accessors(chain = true) +public class {{.ClassName}} { + {{- range .Fields}} + private {{.Type}} {{.Name}}; + {{- end}} +} diff --git a/src/gen/java/com/uber/cadence/AccessDeniedError.java b/src/gen/java/com/uber/cadence/AccessDeniedError.java new file mode 100644 index 000000000..aa806d3c0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/AccessDeniedError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class AccessDeniedError extends CadenceError { + + public AccessDeniedError() { + super(); + } + + public AccessDeniedError(String message) { + super(message); + } + + public AccessDeniedError(String message, Throwable cause) { + super(message, cause); + } + + public AccessDeniedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/ActivityLocalDispatchInfo.java b/src/gen/java/com/uber/cadence/ActivityLocalDispatchInfo.java new file mode 100644 index 000000000..0f5fafabf --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityLocalDispatchInfo.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityLocalDispatchInfo { + private String activityId; + private long scheduledTimestamp; + private long startedTimestamp; + private long scheduledTimestampOfThisAttempt; + private byte[] taskToken; +} diff --git a/src/gen/java/com/uber/cadence/ActivityTaskCancelRequestedEventAttributes.java b/src/gen/java/com/uber/cadence/ActivityTaskCancelRequestedEventAttributes.java new file mode 100644 index 000000000..068ceebcd --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityTaskCancelRequestedEventAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityTaskCancelRequestedEventAttributes { + private String activityId; + private long decisionTaskCompletedEventId; +} diff --git a/src/gen/java/com/uber/cadence/ActivityTaskCanceledEventAttributes.java b/src/gen/java/com/uber/cadence/ActivityTaskCanceledEventAttributes.java new file mode 100644 index 000000000..2ba63e1b0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityTaskCanceledEventAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityTaskCanceledEventAttributes { + private byte[] details; + private long latestCancelRequestedEventId; + private long scheduledEventId; + private long startedEventId; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/ActivityTaskCompletedEventAttributes.java b/src/gen/java/com/uber/cadence/ActivityTaskCompletedEventAttributes.java new file mode 100644 index 000000000..babe3b1ec --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityTaskCompletedEventAttributes.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityTaskCompletedEventAttributes { + private byte[] result; + private long scheduledEventId; + private long startedEventId; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/ActivityTaskFailedEventAttributes.java b/src/gen/java/com/uber/cadence/ActivityTaskFailedEventAttributes.java new file mode 100644 index 000000000..06b296c8d --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityTaskFailedEventAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityTaskFailedEventAttributes { + private String reason; + private byte[] details; + private long scheduledEventId; + private long startedEventId; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/ActivityTaskScheduledEventAttributes.java b/src/gen/java/com/uber/cadence/ActivityTaskScheduledEventAttributes.java new file mode 100644 index 000000000..3a2e50e9c --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityTaskScheduledEventAttributes.java @@ -0,0 +1,22 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityTaskScheduledEventAttributes { + private String activityId; + private ActivityType activityType; + private String domain; + private TaskList taskList; + private byte[] input; + private int scheduleToCloseTimeoutSeconds; + private int scheduleToStartTimeoutSeconds; + private int startToCloseTimeoutSeconds; + private int heartbeatTimeoutSeconds; + private long decisionTaskCompletedEventId; + private RetryPolicy retryPolicy; + private Header header; +} diff --git a/src/gen/java/com/uber/cadence/ActivityTaskStartedEventAttributes.java b/src/gen/java/com/uber/cadence/ActivityTaskStartedEventAttributes.java new file mode 100644 index 000000000..e2a8e721d --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityTaskStartedEventAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityTaskStartedEventAttributes { + private long scheduledEventId; + private String identity; + private String requestId; + private int attempt; + private String lastFailureReason; + private byte[] lastFailureDetails; +} diff --git a/src/gen/java/com/uber/cadence/ActivityTaskTimedOutEventAttributes.java b/src/gen/java/com/uber/cadence/ActivityTaskTimedOutEventAttributes.java new file mode 100644 index 000000000..576fd1871 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityTaskTimedOutEventAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityTaskTimedOutEventAttributes { + private byte[] details; + private long scheduledEventId; + private long startedEventId; + private TimeoutType timeoutType; + private String lastFailureReason; + private byte[] lastFailureDetails; +} diff --git a/src/gen/java/com/uber/cadence/ActivityType.java b/src/gen/java/com/uber/cadence/ActivityType.java new file mode 100644 index 000000000..f2b13b35f --- /dev/null +++ b/src/gen/java/com/uber/cadence/ActivityType.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ActivityType { + private String name; +} diff --git a/src/gen/java/com/uber/cadence/Any.java b/src/gen/java/com/uber/cadence/Any.java new file mode 100644 index 000000000..91c36c4bb --- /dev/null +++ b/src/gen/java/com/uber/cadence/Any.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Any { + private String ValueType; + private byte[] Value; +} diff --git a/src/gen/java/com/uber/cadence/ApplyParentClosePolicyAttributes.java b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyAttributes.java new file mode 100644 index 000000000..e5a9121a9 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyAttributes.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ApplyParentClosePolicyAttributes { + private String childDomainID; + private String childWorkflowID; + private String childRunID; + private ParentClosePolicy parentClosePolicy; +} diff --git a/src/gen/java/com/uber/cadence/ApplyParentClosePolicyRequest.java b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyRequest.java new file mode 100644 index 000000000..35487b163 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ApplyParentClosePolicyRequest { + private ApplyParentClosePolicyAttributes child; + private ApplyParentClosePolicyStatus status; +} diff --git a/src/gen/java/com/uber/cadence/ApplyParentClosePolicyResult.java b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyResult.java new file mode 100644 index 000000000..f1433789d --- /dev/null +++ b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyResult.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ApplyParentClosePolicyResult { + private ApplyParentClosePolicyAttributes child; + private CrossClusterTaskFailedCause failedCause; +} diff --git a/src/gen/java/com/uber/cadence/ApplyParentClosePolicyStatus.java b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyStatus.java new file mode 100644 index 000000000..dff46039f --- /dev/null +++ b/src/gen/java/com/uber/cadence/ApplyParentClosePolicyStatus.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ApplyParentClosePolicyStatus { + private boolean completed; + private CrossClusterTaskFailedCause failedCause; +} diff --git a/src/gen/java/com/uber/cadence/ArchivalStatus.java b/src/gen/java/com/uber/cadence/ArchivalStatus.java new file mode 100644 index 000000000..a590f87fe --- /dev/null +++ b/src/gen/java/com/uber/cadence/ArchivalStatus.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum ArchivalStatus { + DISABLED, + ENABLED, +} diff --git a/src/gen/java/com/uber/cadence/AsyncWorkflowConfiguration.java b/src/gen/java/com/uber/cadence/AsyncWorkflowConfiguration.java new file mode 100644 index 000000000..16666c180 --- /dev/null +++ b/src/gen/java/com/uber/cadence/AsyncWorkflowConfiguration.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class AsyncWorkflowConfiguration { + private boolean enabled; + private String predefinedQueueName; + private String queueType; + private DataBlob queueConfig; +} diff --git a/src/gen/java/com/uber/cadence/AutoConfigHint.java b/src/gen/java/com/uber/cadence/AutoConfigHint.java new file mode 100644 index 000000000..8c222dc37 --- /dev/null +++ b/src/gen/java/com/uber/cadence/AutoConfigHint.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class AutoConfigHint { + private boolean enableAutoConfig; + private long pollerWaitTimeInMs; +} diff --git a/src/gen/java/com/uber/cadence/BadBinaries.java b/src/gen/java/com/uber/cadence/BadBinaries.java new file mode 100644 index 000000000..490f93018 --- /dev/null +++ b/src/gen/java/com/uber/cadence/BadBinaries.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class BadBinaries { + private Map binaries; +} diff --git a/src/gen/java/com/uber/cadence/BadBinaryInfo.java b/src/gen/java/com/uber/cadence/BadBinaryInfo.java new file mode 100644 index 000000000..2fbcd37f4 --- /dev/null +++ b/src/gen/java/com/uber/cadence/BadBinaryInfo.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class BadBinaryInfo { + private String reason; + private String operator; + private long createdTimeNano; +} diff --git a/src/gen/java/com/uber/cadence/BadRequestError.java b/src/gen/java/com/uber/cadence/BadRequestError.java new file mode 100644 index 000000000..ba69e8c5d --- /dev/null +++ b/src/gen/java/com/uber/cadence/BadRequestError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class BadRequestError extends CadenceError { + + public BadRequestError() { + super(); + } + + public BadRequestError(String message) { + super(message); + } + + public BadRequestError(String message, Throwable cause) { + super(message, cause); + } + + public BadRequestError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/CadenceError.java b/src/gen/java/com/uber/cadence/CadenceError.java new file mode 100644 index 000000000..2b6e15d65 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CadenceError.java @@ -0,0 +1,19 @@ +package com.uber.cadence; + +public class CadenceError extends RuntimeException { + public CadenceError() { + super(); + } + + public CadenceError(String message) { + super(message); + } + + public CadenceError(String message, Throwable cause) { + super(message, cause); + } + + public CadenceError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/CancelExternalWorkflowExecutionFailedCause.java b/src/gen/java/com/uber/cadence/CancelExternalWorkflowExecutionFailedCause.java new file mode 100644 index 000000000..434fa96f3 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CancelExternalWorkflowExecutionFailedCause.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum CancelExternalWorkflowExecutionFailedCause { + UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION, + WORKFLOW_ALREADY_COMPLETED, +} diff --git a/src/gen/java/com/uber/cadence/CancelTimerDecisionAttributes.java b/src/gen/java/com/uber/cadence/CancelTimerDecisionAttributes.java new file mode 100644 index 000000000..053e67d0b --- /dev/null +++ b/src/gen/java/com/uber/cadence/CancelTimerDecisionAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CancelTimerDecisionAttributes { + private String timerId; +} diff --git a/src/gen/java/com/uber/cadence/CancelTimerFailedEventAttributes.java b/src/gen/java/com/uber/cadence/CancelTimerFailedEventAttributes.java new file mode 100644 index 000000000..3ee519098 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CancelTimerFailedEventAttributes.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CancelTimerFailedEventAttributes { + private String timerId; + private String cause; + private long decisionTaskCompletedEventId; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/CancelWorkflowExecutionDecisionAttributes.java b/src/gen/java/com/uber/cadence/CancelWorkflowExecutionDecisionAttributes.java new file mode 100644 index 000000000..ef40aafa8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CancelWorkflowExecutionDecisionAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CancelWorkflowExecutionDecisionAttributes { + private byte[] details; +} diff --git a/src/gen/java/com/uber/cadence/CancellationAlreadyRequestedError.java b/src/gen/java/com/uber/cadence/CancellationAlreadyRequestedError.java new file mode 100644 index 000000000..e7a479b5e --- /dev/null +++ b/src/gen/java/com/uber/cadence/CancellationAlreadyRequestedError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class CancellationAlreadyRequestedError extends CadenceError { + + public CancellationAlreadyRequestedError() { + super(); + } + + public CancellationAlreadyRequestedError(String message) { + super(message); + } + + public CancellationAlreadyRequestedError(String message, Throwable cause) { + super(message, cause); + } + + public CancellationAlreadyRequestedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/ChildWorkflowExecutionCanceledEventAttributes.java b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionCanceledEventAttributes.java new file mode 100644 index 000000000..f26702e9b --- /dev/null +++ b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionCanceledEventAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ChildWorkflowExecutionCanceledEventAttributes { + private byte[] details; + private String domain; + private WorkflowExecution workflowExecution; + private WorkflowType workflowType; + private long initiatedEventId; + private long startedEventId; +} diff --git a/src/gen/java/com/uber/cadence/ChildWorkflowExecutionCompletedEventAttributes.java b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionCompletedEventAttributes.java new file mode 100644 index 000000000..329dc7673 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionCompletedEventAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ChildWorkflowExecutionCompletedEventAttributes { + private byte[] result; + private String domain; + private WorkflowExecution workflowExecution; + private WorkflowType workflowType; + private long initiatedEventId; + private long startedEventId; +} diff --git a/src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedCause.java b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedCause.java new file mode 100644 index 000000000..f65487eab --- /dev/null +++ b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedCause.java @@ -0,0 +1,5 @@ +package com.uber.cadence; + +public enum ChildWorkflowExecutionFailedCause { + WORKFLOW_ALREADY_RUNNING, +} diff --git a/src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedEventAttributes.java b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedEventAttributes.java new file mode 100644 index 000000000..9e0b3be61 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionFailedEventAttributes.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ChildWorkflowExecutionFailedEventAttributes { + private String reason; + private byte[] details; + private String domain; + private WorkflowExecution workflowExecution; + private WorkflowType workflowType; + private long initiatedEventId; + private long startedEventId; +} diff --git a/src/gen/java/com/uber/cadence/ChildWorkflowExecutionStartedEventAttributes.java b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionStartedEventAttributes.java new file mode 100644 index 000000000..960725f9a --- /dev/null +++ b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionStartedEventAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ChildWorkflowExecutionStartedEventAttributes { + private String domain; + private long initiatedEventId; + private WorkflowExecution workflowExecution; + private WorkflowType workflowType; + private Header header; +} diff --git a/src/gen/java/com/uber/cadence/ChildWorkflowExecutionTerminatedEventAttributes.java b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionTerminatedEventAttributes.java new file mode 100644 index 000000000..a62405881 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionTerminatedEventAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ChildWorkflowExecutionTerminatedEventAttributes { + private String domain; + private WorkflowExecution workflowExecution; + private WorkflowType workflowType; + private long initiatedEventId; + private long startedEventId; +} diff --git a/src/gen/java/com/uber/cadence/ChildWorkflowExecutionTimedOutEventAttributes.java b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionTimedOutEventAttributes.java new file mode 100644 index 000000000..92951075f --- /dev/null +++ b/src/gen/java/com/uber/cadence/ChildWorkflowExecutionTimedOutEventAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ChildWorkflowExecutionTimedOutEventAttributes { + private TimeoutType timeoutType; + private String domain; + private WorkflowExecution workflowExecution; + private WorkflowType workflowType; + private long initiatedEventId; + private long startedEventId; +} diff --git a/src/gen/java/com/uber/cadence/ClientVersionNotSupportedError.java b/src/gen/java/com/uber/cadence/ClientVersionNotSupportedError.java new file mode 100644 index 000000000..4912d215f --- /dev/null +++ b/src/gen/java/com/uber/cadence/ClientVersionNotSupportedError.java @@ -0,0 +1,31 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class ClientVersionNotSupportedError extends CadenceError { + private String featureVersion; + private String clientImpl; + private String supportedVersions; + + public ClientVersionNotSupportedError() { + super(); + } + + public ClientVersionNotSupportedError(String message) { + super(message); + } + + public ClientVersionNotSupportedError(String message, Throwable cause) { + super(message, cause); + } + + public ClientVersionNotSupportedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/CloseShardRequest.java b/src/gen/java/com/uber/cadence/CloseShardRequest.java new file mode 100644 index 000000000..60ddf9ee1 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CloseShardRequest.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CloseShardRequest { + private int shardID; +} diff --git a/src/gen/java/com/uber/cadence/ClusterInfo.java b/src/gen/java/com/uber/cadence/ClusterInfo.java new file mode 100644 index 000000000..365b6f03b --- /dev/null +++ b/src/gen/java/com/uber/cadence/ClusterInfo.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ClusterInfo { + private SupportedClientVersions supportedClientVersions; +} diff --git a/src/gen/java/com/uber/cadence/ClusterReplicationConfiguration.java b/src/gen/java/com/uber/cadence/ClusterReplicationConfiguration.java new file mode 100644 index 000000000..a6bdfff7e --- /dev/null +++ b/src/gen/java/com/uber/cadence/ClusterReplicationConfiguration.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ClusterReplicationConfiguration { + private String clusterName; +} diff --git a/src/gen/java/com/uber/cadence/CompleteWorkflowExecutionDecisionAttributes.java b/src/gen/java/com/uber/cadence/CompleteWorkflowExecutionDecisionAttributes.java new file mode 100644 index 000000000..c595a10ca --- /dev/null +++ b/src/gen/java/com/uber/cadence/CompleteWorkflowExecutionDecisionAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CompleteWorkflowExecutionDecisionAttributes { + private byte[] result; +} diff --git a/src/gen/java/com/uber/cadence/ContinueAsNewInitiator.java b/src/gen/java/com/uber/cadence/ContinueAsNewInitiator.java new file mode 100644 index 000000000..77c69287e --- /dev/null +++ b/src/gen/java/com/uber/cadence/ContinueAsNewInitiator.java @@ -0,0 +1,7 @@ +package com.uber.cadence; + +public enum ContinueAsNewInitiator { + Decider, + RetryPolicy, + CronSchedule, +} diff --git a/src/gen/java/com/uber/cadence/ContinueAsNewWorkflowExecutionDecisionAttributes.java b/src/gen/java/com/uber/cadence/ContinueAsNewWorkflowExecutionDecisionAttributes.java new file mode 100644 index 000000000..df566206e --- /dev/null +++ b/src/gen/java/com/uber/cadence/ContinueAsNewWorkflowExecutionDecisionAttributes.java @@ -0,0 +1,26 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ContinueAsNewWorkflowExecutionDecisionAttributes { + private WorkflowType workflowType; + private TaskList taskList; + private byte[] input; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; + private int backoffStartIntervalInSeconds; + private RetryPolicy retryPolicy; + private ContinueAsNewInitiator initiator; + private String failureReason; + private byte[] failureDetails; + private byte[] lastCompletionResult; + private String cronSchedule; + private Header header; + private Memo memo; + private SearchAttributes searchAttributes; + private int jitterStartSeconds; +} diff --git a/src/gen/java/com/uber/cadence/CountWorkflowExecutionsRequest.java b/src/gen/java/com/uber/cadence/CountWorkflowExecutionsRequest.java new file mode 100644 index 000000000..0add86cd8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CountWorkflowExecutionsRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CountWorkflowExecutionsRequest { + private String domain; + private String query; +} diff --git a/src/gen/java/com/uber/cadence/CountWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/CountWorkflowExecutionsResponse.java new file mode 100644 index 000000000..463f42f88 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CountWorkflowExecutionsResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CountWorkflowExecutionsResponse { + private long count; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java new file mode 100644 index 000000000..f4263f389 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterApplyParentClosePolicyRequestAttributes { + private List children; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java new file mode 100644 index 000000000..1c5275a49 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterApplyParentClosePolicyResponseAttributes { + private List childrenStatus; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterCancelExecutionRequestAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterCancelExecutionRequestAttributes.java new file mode 100644 index 000000000..cc5377644 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterCancelExecutionRequestAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterCancelExecutionRequestAttributes { + private String targetDomainID; + private String targetWorkflowID; + private String targetRunID; + private String requestID; + private long initiatedEventID; + private boolean childWorkflowOnly; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterCancelExecutionResponseAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterCancelExecutionResponseAttributes.java new file mode 100644 index 000000000..9e2cd9684 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterCancelExecutionResponseAttributes.java @@ -0,0 +1,9 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterCancelExecutionResponseAttributes {} diff --git a/src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes.java new file mode 100644 index 000000000..723893860 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes { + private String targetDomainID; + private String targetWorkflowID; + private String targetRunID; + private long initiatedEventID; + private HistoryEvent completionEvent; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes.java new file mode 100644 index 000000000..80e4f1735 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes.java @@ -0,0 +1,9 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes {} diff --git a/src/gen/java/com/uber/cadence/CrossClusterSignalExecutionRequestAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterSignalExecutionRequestAttributes.java new file mode 100644 index 000000000..152695b0b --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterSignalExecutionRequestAttributes.java @@ -0,0 +1,19 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterSignalExecutionRequestAttributes { + private String targetDomainID; + private String targetWorkflowID; + private String targetRunID; + private String requestID; + private long initiatedEventID; + private boolean childWorkflowOnly; + private String signalName; + private byte[] signalInput; + private byte[] control; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterSignalExecutionResponseAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterSignalExecutionResponseAttributes.java new file mode 100644 index 000000000..99ce35b7a --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterSignalExecutionResponseAttributes.java @@ -0,0 +1,9 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterSignalExecutionResponseAttributes {} diff --git a/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java new file mode 100644 index 000000000..9913a741b --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterStartChildExecutionRequestAttributes { + private String targetDomainID; + private String requestID; + private long initiatedEventID; + private StartChildWorkflowExecutionInitiatedEventAttributes initiatedEventAttributes; + private String targetRunID; + private Map partitionConfig; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionResponseAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionResponseAttributes.java new file mode 100644 index 000000000..d7a0b524a --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionResponseAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterStartChildExecutionResponseAttributes { + private String runID; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterTaskFailedCause.java b/src/gen/java/com/uber/cadence/CrossClusterTaskFailedCause.java new file mode 100644 index 000000000..6729bcb20 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterTaskFailedCause.java @@ -0,0 +1,10 @@ +package com.uber.cadence; + +public enum CrossClusterTaskFailedCause { + DOMAIN_NOT_ACTIVE, + DOMAIN_NOT_EXISTS, + WORKFLOW_ALREADY_RUNNING, + WORKFLOW_NOT_EXISTS, + WORKFLOW_ALREADY_COMPLETED, + UNCATEGORIZED, +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterTaskInfo.java b/src/gen/java/com/uber/cadence/CrossClusterTaskInfo.java new file mode 100644 index 000000000..91a1ad7d2 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterTaskInfo.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterTaskInfo { + private String domainID; + private String workflowID; + private String runID; + private CrossClusterTaskType taskType; + private int taskState; + private long taskID; + private long visibilityTimestamp; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterTaskRequest.java b/src/gen/java/com/uber/cadence/CrossClusterTaskRequest.java new file mode 100644 index 000000000..4f2779e21 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterTaskRequest.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterTaskRequest { + private CrossClusterTaskInfo taskInfo; + private CrossClusterStartChildExecutionRequestAttributes startChildExecutionAttributes; + private CrossClusterCancelExecutionRequestAttributes cancelExecutionAttributes; + private CrossClusterSignalExecutionRequestAttributes signalExecutionAttributes; + private CrossClusterRecordChildWorkflowExecutionCompleteRequestAttributes + recordChildWorkflowExecutionCompleteAttributes; + private CrossClusterApplyParentClosePolicyRequestAttributes applyParentClosePolicyAttributes; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterTaskResponse.java b/src/gen/java/com/uber/cadence/CrossClusterTaskResponse.java new file mode 100644 index 000000000..6308cd9a2 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterTaskResponse.java @@ -0,0 +1,20 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class CrossClusterTaskResponse { + private long taskID; + private CrossClusterTaskType taskType; + private int taskState; + private CrossClusterTaskFailedCause failedCause; + private CrossClusterStartChildExecutionResponseAttributes startChildExecutionAttributes; + private CrossClusterCancelExecutionResponseAttributes cancelExecutionAttributes; + private CrossClusterSignalExecutionResponseAttributes signalExecutionAttributes; + private CrossClusterRecordChildWorkflowExecutionCompleteResponseAttributes + recordChildWorkflowExecutionCompleteAttributes; + private CrossClusterApplyParentClosePolicyResponseAttributes applyParentClosePolicyAttributes; +} diff --git a/src/gen/java/com/uber/cadence/CrossClusterTaskType.java b/src/gen/java/com/uber/cadence/CrossClusterTaskType.java new file mode 100644 index 000000000..3d3d899b8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/CrossClusterTaskType.java @@ -0,0 +1,9 @@ +package com.uber.cadence; + +public enum CrossClusterTaskType { + StartChildExecution, + CancelExecution, + SignalExecution, + RecordChildWorkflowExecutionComplete, + ApplyParentClosePolicy, +} diff --git a/src/gen/java/com/uber/cadence/CurrentBranchChangedError.java b/src/gen/java/com/uber/cadence/CurrentBranchChangedError.java new file mode 100644 index 000000000..d35c9e52d --- /dev/null +++ b/src/gen/java/com/uber/cadence/CurrentBranchChangedError.java @@ -0,0 +1,29 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class CurrentBranchChangedError extends CadenceError { + private byte[] currentBranchToken; + + public CurrentBranchChangedError() { + super(); + } + + public CurrentBranchChangedError(String message) { + super(message); + } + + public CurrentBranchChangedError(String message, Throwable cause) { + super(message, cause); + } + + public CurrentBranchChangedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/DataBlob.java b/src/gen/java/com/uber/cadence/DataBlob.java new file mode 100644 index 000000000..aae0c8846 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DataBlob.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DataBlob { + private EncodingType EncodingType; + private byte[] Data; +} diff --git a/src/gen/java/com/uber/cadence/Decision.java b/src/gen/java/com/uber/cadence/Decision.java new file mode 100644 index 000000000..a5a7e037c --- /dev/null +++ b/src/gen/java/com/uber/cadence/Decision.java @@ -0,0 +1,29 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Decision { + private DecisionType decisionType; + private ScheduleActivityTaskDecisionAttributes scheduleActivityTaskDecisionAttributes; + private StartTimerDecisionAttributes startTimerDecisionAttributes; + private CompleteWorkflowExecutionDecisionAttributes completeWorkflowExecutionDecisionAttributes; + private FailWorkflowExecutionDecisionAttributes failWorkflowExecutionDecisionAttributes; + private RequestCancelActivityTaskDecisionAttributes requestCancelActivityTaskDecisionAttributes; + private CancelTimerDecisionAttributes cancelTimerDecisionAttributes; + private CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes; + private RequestCancelExternalWorkflowExecutionDecisionAttributes + requestCancelExternalWorkflowExecutionDecisionAttributes; + private RecordMarkerDecisionAttributes recordMarkerDecisionAttributes; + private ContinueAsNewWorkflowExecutionDecisionAttributes + continueAsNewWorkflowExecutionDecisionAttributes; + private StartChildWorkflowExecutionDecisionAttributes + startChildWorkflowExecutionDecisionAttributes; + private SignalExternalWorkflowExecutionDecisionAttributes + signalExternalWorkflowExecutionDecisionAttributes; + private UpsertWorkflowSearchAttributesDecisionAttributes + upsertWorkflowSearchAttributesDecisionAttributes; +} diff --git a/src/gen/java/com/uber/cadence/DecisionTaskCompletedEventAttributes.java b/src/gen/java/com/uber/cadence/DecisionTaskCompletedEventAttributes.java new file mode 100644 index 000000000..502f8f6a8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionTaskCompletedEventAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DecisionTaskCompletedEventAttributes { + private byte[] executionContext; + private long scheduledEventId; + private long startedEventId; + private String identity; + private String binaryChecksum; +} diff --git a/src/gen/java/com/uber/cadence/DecisionTaskFailedCause.java b/src/gen/java/com/uber/cadence/DecisionTaskFailedCause.java new file mode 100644 index 000000000..852d11681 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionTaskFailedCause.java @@ -0,0 +1,27 @@ +package com.uber.cadence; + +public enum DecisionTaskFailedCause { + UNHANDLED_DECISION, + BAD_SCHEDULE_ACTIVITY_ATTRIBUTES, + BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES, + BAD_START_TIMER_ATTRIBUTES, + BAD_CANCEL_TIMER_ATTRIBUTES, + BAD_RECORD_MARKER_ATTRIBUTES, + BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES, + BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES, + BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES, + BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES, + BAD_CONTINUE_AS_NEW_ATTRIBUTES, + START_TIMER_DUPLICATE_ID, + RESET_STICKY_TASKLIST, + WORKFLOW_WORKER_UNHANDLED_FAILURE, + BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES, + BAD_START_CHILD_EXECUTION_ATTRIBUTES, + FORCE_CLOSE_DECISION, + FAILOVER_CLOSE_DECISION, + BAD_SIGNAL_INPUT_SIZE, + RESET_WORKFLOW, + BAD_BINARY, + SCHEDULE_ACTIVITY_DUPLICATE_ID, + BAD_SEARCH_ATTRIBUTES, +} diff --git a/src/gen/java/com/uber/cadence/DecisionTaskFailedEventAttributes.java b/src/gen/java/com/uber/cadence/DecisionTaskFailedEventAttributes.java new file mode 100644 index 000000000..38c419af4 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionTaskFailedEventAttributes.java @@ -0,0 +1,21 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DecisionTaskFailedEventAttributes { + private long scheduledEventId; + private long startedEventId; + private DecisionTaskFailedCause cause; + private byte[] details; + private String identity; + private String reason; + private String baseRunId; + private String newRunId; + private long forkEventVersion; + private String binaryChecksum; + private String requestId; +} diff --git a/src/gen/java/com/uber/cadence/DecisionTaskScheduledEventAttributes.java b/src/gen/java/com/uber/cadence/DecisionTaskScheduledEventAttributes.java new file mode 100644 index 000000000..6fc9fb267 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionTaskScheduledEventAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DecisionTaskScheduledEventAttributes { + private TaskList taskList; + private int startToCloseTimeoutSeconds; + private long attempt; +} diff --git a/src/gen/java/com/uber/cadence/DecisionTaskStartedEventAttributes.java b/src/gen/java/com/uber/cadence/DecisionTaskStartedEventAttributes.java new file mode 100644 index 000000000..edafb5515 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionTaskStartedEventAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DecisionTaskStartedEventAttributes { + private long scheduledEventId; + private String identity; + private String requestId; +} diff --git a/src/gen/java/com/uber/cadence/DecisionTaskTimedOutCause.java b/src/gen/java/com/uber/cadence/DecisionTaskTimedOutCause.java new file mode 100644 index 000000000..7550812b9 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionTaskTimedOutCause.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum DecisionTaskTimedOutCause { + TIMEOUT, + RESET, +} diff --git a/src/gen/java/com/uber/cadence/DecisionTaskTimedOutEventAttributes.java b/src/gen/java/com/uber/cadence/DecisionTaskTimedOutEventAttributes.java new file mode 100644 index 000000000..86aa5efea --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionTaskTimedOutEventAttributes.java @@ -0,0 +1,19 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DecisionTaskTimedOutEventAttributes { + private long scheduledEventId; + private long startedEventId; + private TimeoutType timeoutType; + private String baseRunId; + private String newRunId; + private long forkEventVersion; + private String reason; + private DecisionTaskTimedOutCause cause; + private String requestId; +} diff --git a/src/gen/java/com/uber/cadence/DecisionType.java b/src/gen/java/com/uber/cadence/DecisionType.java new file mode 100644 index 000000000..de844e963 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DecisionType.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +public enum DecisionType { + ScheduleActivityTask, + RequestCancelActivityTask, + StartTimer, + CompleteWorkflowExecution, + FailWorkflowExecution, + CancelTimer, + CancelWorkflowExecution, + RequestCancelExternalWorkflowExecution, + RecordMarker, + ContinueAsNewWorkflowExecution, + StartChildWorkflowExecution, + SignalExternalWorkflowExecution, + UpsertWorkflowSearchAttributes, +} diff --git a/src/gen/java/com/uber/cadence/DeprecateDomainRequest.java b/src/gen/java/com/uber/cadence/DeprecateDomainRequest.java new file mode 100644 index 000000000..98fecf32d --- /dev/null +++ b/src/gen/java/com/uber/cadence/DeprecateDomainRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DeprecateDomainRequest { + private String name; + private String securityToken; +} diff --git a/src/gen/java/com/uber/cadence/DescribeDomainRequest.java b/src/gen/java/com/uber/cadence/DescribeDomainRequest.java new file mode 100644 index 000000000..d2a2a2d17 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeDomainRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeDomainRequest { + private String name; + private String uuid; +} diff --git a/src/gen/java/com/uber/cadence/DescribeDomainResponse.java b/src/gen/java/com/uber/cadence/DescribeDomainResponse.java new file mode 100644 index 000000000..0f2675750 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeDomainResponse.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeDomainResponse { + private DomainInfo domainInfo; + private DomainConfiguration configuration; + private DomainReplicationConfiguration replicationConfiguration; + private long failoverVersion; + private boolean isGlobalDomain; + private FailoverInfo failoverInfo; +} diff --git a/src/gen/java/com/uber/cadence/DescribeHistoryHostRequest.java b/src/gen/java/com/uber/cadence/DescribeHistoryHostRequest.java new file mode 100644 index 000000000..0f6536531 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeHistoryHostRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeHistoryHostRequest { + private String hostAddress; + private int shardIdForHost; + private WorkflowExecution executionForHost; +} diff --git a/src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java b/src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java new file mode 100644 index 000000000..e7e2ec5f9 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeHistoryHostResponse { + private int numberOfShards; + private List shardIDs; + private DomainCacheInfo domainCache; + private String shardControllerStatus; + private String address; +} diff --git a/src/gen/java/com/uber/cadence/DescribeQueueRequest.java b/src/gen/java/com/uber/cadence/DescribeQueueRequest.java new file mode 100644 index 000000000..0159e3570 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeQueueRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeQueueRequest { + private int shardID; + private String clusterName; + private int type; +} diff --git a/src/gen/java/com/uber/cadence/DescribeQueueResponse.java b/src/gen/java/com/uber/cadence/DescribeQueueResponse.java new file mode 100644 index 000000000..b1c543e3a --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeQueueResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeQueueResponse { + private List processingQueueStates; +} diff --git a/src/gen/java/com/uber/cadence/DescribeShardDistributionRequest.java b/src/gen/java/com/uber/cadence/DescribeShardDistributionRequest.java new file mode 100644 index 000000000..1cd96d81b --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeShardDistributionRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeShardDistributionRequest { + private int pageSize; + private int pageID; +} diff --git a/src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java b/src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java new file mode 100644 index 000000000..8e985d592 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeShardDistributionResponse { + private int numberOfShards; + private Map shards; +} diff --git a/src/gen/java/com/uber/cadence/DescribeTaskListRequest.java b/src/gen/java/com/uber/cadence/DescribeTaskListRequest.java new file mode 100644 index 000000000..aac3603e7 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeTaskListRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeTaskListRequest { + private String domain; + private TaskList taskList; + private TaskListType taskListType; + private boolean includeTaskListStatus; +} diff --git a/src/gen/java/com/uber/cadence/DescribeTaskListResponse.java b/src/gen/java/com/uber/cadence/DescribeTaskListResponse.java new file mode 100644 index 000000000..823fcfc77 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeTaskListResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeTaskListResponse { + private List pollers; + private TaskListStatus taskListStatus; +} diff --git a/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionRequest.java new file mode 100644 index 000000000..ff3ed37cb --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeWorkflowExecutionRequest { + private String domain; + private WorkflowExecution execution; + private QueryConsistencyLevel queryConsistencyLevel; +} diff --git a/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java b/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java new file mode 100644 index 000000000..3761915fe --- /dev/null +++ b/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DescribeWorkflowExecutionResponse { + private WorkflowExecutionConfiguration executionConfiguration; + private WorkflowExecutionInfo workflowExecutionInfo; + private List pendingActivities; + private List pendingChildren; + private PendingDecisionInfo pendingDecision; +} diff --git a/src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionRequest.java new file mode 100644 index 000000000..40363a5cb --- /dev/null +++ b/src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DiagnoseWorkflowExecutionRequest { + private String domain; + private WorkflowExecution workflowExecution; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionResponse.java b/src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionResponse.java new file mode 100644 index 000000000..bdc3dff9c --- /dev/null +++ b/src/gen/java/com/uber/cadence/DiagnoseWorkflowExecutionResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DiagnoseWorkflowExecutionResponse { + private String domain; + private WorkflowExecution diagnosticWorkflowExecution; +} diff --git a/src/gen/java/com/uber/cadence/DomainAlreadyExistsError.java b/src/gen/java/com/uber/cadence/DomainAlreadyExistsError.java new file mode 100644 index 000000000..02c948cb8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DomainAlreadyExistsError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class DomainAlreadyExistsError extends CadenceError { + + public DomainAlreadyExistsError() { + super(); + } + + public DomainAlreadyExistsError(String message) { + super(message); + } + + public DomainAlreadyExistsError(String message, Throwable cause) { + super(message, cause); + } + + public DomainAlreadyExistsError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/DomainCacheInfo.java b/src/gen/java/com/uber/cadence/DomainCacheInfo.java new file mode 100644 index 000000000..733561aa7 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DomainCacheInfo.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DomainCacheInfo { + private long numOfItemsInCacheByID; + private long numOfItemsInCacheByName; +} diff --git a/src/gen/java/com/uber/cadence/DomainConfiguration.java b/src/gen/java/com/uber/cadence/DomainConfiguration.java new file mode 100644 index 000000000..c1b875247 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DomainConfiguration.java @@ -0,0 +1,19 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DomainConfiguration { + private int workflowExecutionRetentionPeriodInDays; + private boolean emitMetric; + private IsolationGroupConfiguration isolationgroups; + private BadBinaries badBinaries; + private ArchivalStatus historyArchivalStatus; + private String historyArchivalURI; + private ArchivalStatus visibilityArchivalStatus; + private String visibilityArchivalURI; + private AsyncWorkflowConfiguration AsyncWorkflowConfiguration; +} diff --git a/src/gen/java/com/uber/cadence/DomainInfo.java b/src/gen/java/com/uber/cadence/DomainInfo.java new file mode 100644 index 000000000..4e236c771 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DomainInfo.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DomainInfo { + private String name; + private DomainStatus status; + private String description; + private String ownerEmail; + private Map data; + private String uuid; +} diff --git a/src/gen/java/com/uber/cadence/DomainNotActiveError.java b/src/gen/java/com/uber/cadence/DomainNotActiveError.java new file mode 100644 index 000000000..4d00bb00b --- /dev/null +++ b/src/gen/java/com/uber/cadence/DomainNotActiveError.java @@ -0,0 +1,31 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class DomainNotActiveError extends CadenceError { + private String domainName; + private String currentCluster; + private String activeCluster; + + public DomainNotActiveError() { + super(); + } + + public DomainNotActiveError(String message) { + super(message); + } + + public DomainNotActiveError(String message, Throwable cause) { + super(message, cause); + } + + public DomainNotActiveError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java b/src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java new file mode 100644 index 000000000..d4650de5c --- /dev/null +++ b/src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class DomainReplicationConfiguration { + private String activeClusterName; + private List clusters; +} diff --git a/src/gen/java/com/uber/cadence/DomainStatus.java b/src/gen/java/com/uber/cadence/DomainStatus.java new file mode 100644 index 000000000..224a4c176 --- /dev/null +++ b/src/gen/java/com/uber/cadence/DomainStatus.java @@ -0,0 +1,7 @@ +package com.uber.cadence; + +public enum DomainStatus { + REGISTERED, + DEPRECATED, + DELETED, +} diff --git a/src/gen/java/com/uber/cadence/EncodingType.java b/src/gen/java/com/uber/cadence/EncodingType.java new file mode 100644 index 000000000..3a5e57ebf --- /dev/null +++ b/src/gen/java/com/uber/cadence/EncodingType.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum EncodingType { + ThriftRW, + JSON, +} diff --git a/src/gen/java/com/uber/cadence/EntityNotExistsError.java b/src/gen/java/com/uber/cadence/EntityNotExistsError.java new file mode 100644 index 000000000..20ccd12c1 --- /dev/null +++ b/src/gen/java/com/uber/cadence/EntityNotExistsError.java @@ -0,0 +1,30 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class EntityNotExistsError extends CadenceError { + private String currentCluster; + private String activeCluster; + + public EntityNotExistsError() { + super(); + } + + public EntityNotExistsError(String message) { + super(message); + } + + public EntityNotExistsError(String message, Throwable cause) { + super(message, cause); + } + + public EntityNotExistsError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/EventType.java b/src/gen/java/com/uber/cadence/EventType.java new file mode 100644 index 000000000..1cd58f1e5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/EventType.java @@ -0,0 +1,46 @@ +package com.uber.cadence; + +public enum EventType { + WorkflowExecutionStarted, + WorkflowExecutionCompleted, + WorkflowExecutionFailed, + WorkflowExecutionTimedOut, + DecisionTaskScheduled, + DecisionTaskStarted, + DecisionTaskCompleted, + DecisionTaskTimedOut, + DecisionTaskFailed, + ActivityTaskScheduled, + ActivityTaskStarted, + ActivityTaskCompleted, + ActivityTaskFailed, + ActivityTaskTimedOut, + ActivityTaskCancelRequested, + RequestCancelActivityTaskFailed, + ActivityTaskCanceled, + TimerStarted, + TimerFired, + CancelTimerFailed, + TimerCanceled, + WorkflowExecutionCancelRequested, + WorkflowExecutionCanceled, + RequestCancelExternalWorkflowExecutionInitiated, + RequestCancelExternalWorkflowExecutionFailed, + ExternalWorkflowExecutionCancelRequested, + MarkerRecorded, + WorkflowExecutionSignaled, + WorkflowExecutionTerminated, + WorkflowExecutionContinuedAsNew, + StartChildWorkflowExecutionInitiated, + StartChildWorkflowExecutionFailed, + ChildWorkflowExecutionStarted, + ChildWorkflowExecutionCompleted, + ChildWorkflowExecutionFailed, + ChildWorkflowExecutionCanceled, + ChildWorkflowExecutionTimedOut, + ChildWorkflowExecutionTerminated, + SignalExternalWorkflowExecutionInitiated, + SignalExternalWorkflowExecutionFailed, + ExternalWorkflowExecutionSignaled, + UpsertWorkflowSearchAttributes, +} diff --git a/src/gen/java/com/uber/cadence/ExternalWorkflowExecutionCancelRequestedEventAttributes.java b/src/gen/java/com/uber/cadence/ExternalWorkflowExecutionCancelRequestedEventAttributes.java new file mode 100644 index 000000000..a7ac1fb1c --- /dev/null +++ b/src/gen/java/com/uber/cadence/ExternalWorkflowExecutionCancelRequestedEventAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ExternalWorkflowExecutionCancelRequestedEventAttributes { + private long initiatedEventId; + private String domain; + private WorkflowExecution workflowExecution; +} diff --git a/src/gen/java/com/uber/cadence/ExternalWorkflowExecutionSignaledEventAttributes.java b/src/gen/java/com/uber/cadence/ExternalWorkflowExecutionSignaledEventAttributes.java new file mode 100644 index 000000000..bf3a32a54 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ExternalWorkflowExecutionSignaledEventAttributes.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ExternalWorkflowExecutionSignaledEventAttributes { + private long initiatedEventId; + private String domain; + private WorkflowExecution workflowExecution; + private byte[] control; +} diff --git a/src/gen/java/com/uber/cadence/FailWorkflowExecutionDecisionAttributes.java b/src/gen/java/com/uber/cadence/FailWorkflowExecutionDecisionAttributes.java new file mode 100644 index 000000000..43376e0df --- /dev/null +++ b/src/gen/java/com/uber/cadence/FailWorkflowExecutionDecisionAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class FailWorkflowExecutionDecisionAttributes { + private String reason; + private byte[] details; +} diff --git a/src/gen/java/com/uber/cadence/FailoverInfo.java b/src/gen/java/com/uber/cadence/FailoverInfo.java new file mode 100644 index 000000000..cb1f52495 --- /dev/null +++ b/src/gen/java/com/uber/cadence/FailoverInfo.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class FailoverInfo { + private long failoverVersion; + private long failoverStartTimestamp; + private long failoverExpireTimestamp; + private int completedShardCount; + private List pendingShards; +} diff --git a/src/gen/java/com/uber/cadence/FeatureFlags.java b/src/gen/java/com/uber/cadence/FeatureFlags.java new file mode 100644 index 000000000..3498c1724 --- /dev/null +++ b/src/gen/java/com/uber/cadence/FeatureFlags.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class FeatureFlags { + private boolean WorkflowExecutionAlreadyCompletedErrorEnabled; +} diff --git a/src/gen/java/com/uber/cadence/FeatureNotEnabledError.java b/src/gen/java/com/uber/cadence/FeatureNotEnabledError.java new file mode 100644 index 000000000..1ddfc8783 --- /dev/null +++ b/src/gen/java/com/uber/cadence/FeatureNotEnabledError.java @@ -0,0 +1,29 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class FeatureNotEnabledError extends CadenceError { + private String featureFlag; + + public FeatureNotEnabledError() { + super(); + } + + public FeatureNotEnabledError(String message) { + super(message); + } + + public FeatureNotEnabledError(String message, Throwable cause) { + super(message, cause); + } + + public FeatureNotEnabledError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java b/src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java new file mode 100644 index 000000000..f7662365e --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class GetCrossClusterTasksRequest { + private List shardIDs; + private String targetCluster; +} diff --git a/src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java b/src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java new file mode 100644 index 000000000..ee056bd0a --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class GetCrossClusterTasksResponse { + private Map> tasksByShard; + private Map failedCauseByShard; +} diff --git a/src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java b/src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java new file mode 100644 index 000000000..f03df08ec --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class GetSearchAttributesResponse { + private Map keys; +} diff --git a/src/gen/java/com/uber/cadence/GetTaskFailedCause.java b/src/gen/java/com/uber/cadence/GetTaskFailedCause.java new file mode 100644 index 000000000..2f0b0e038 --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetTaskFailedCause.java @@ -0,0 +1,8 @@ +package com.uber.cadence; + +public enum GetTaskFailedCause { + SERVICE_BUSY, + TIMEOUT, + SHARD_OWNERSHIP_LOST, + UNCATEGORIZED, +} diff --git a/src/gen/java/com/uber/cadence/GetTaskListsByDomainRequest.java b/src/gen/java/com/uber/cadence/GetTaskListsByDomainRequest.java new file mode 100644 index 000000000..0efd92c1b --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetTaskListsByDomainRequest.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class GetTaskListsByDomainRequest { + private String domainName; +} diff --git a/src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java b/src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java new file mode 100644 index 000000000..aaf886b6e --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class GetTaskListsByDomainResponse { + private Map decisionTaskListMap; + private Map activityTaskListMap; +} diff --git a/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryRequest.java b/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryRequest.java new file mode 100644 index 000000000..0ee10d981 --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryRequest.java @@ -0,0 +1,18 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class GetWorkflowExecutionHistoryRequest { + private String domain; + private WorkflowExecution execution; + private int maximumPageSize; + private byte[] nextPageToken; + private boolean waitForNewEvent; + private HistoryEventFilterType HistoryEventFilterType; + private boolean skipArchival; + private QueryConsistencyLevel queryConsistencyLevel; +} diff --git a/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java b/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java new file mode 100644 index 000000000..ab983713b --- /dev/null +++ b/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class GetWorkflowExecutionHistoryResponse { + private History history; + private List rawHistory; + private byte[] nextPageToken; + private boolean archived; +} diff --git a/src/gen/java/com/uber/cadence/Header.java b/src/gen/java/com/uber/cadence/Header.java new file mode 100644 index 000000000..f7d7c9e99 --- /dev/null +++ b/src/gen/java/com/uber/cadence/Header.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Header { + private Map fields; +} diff --git a/src/gen/java/com/uber/cadence/History.java b/src/gen/java/com/uber/cadence/History.java new file mode 100644 index 000000000..57af7fd55 --- /dev/null +++ b/src/gen/java/com/uber/cadence/History.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class History { + private List events; +} diff --git a/src/gen/java/com/uber/cadence/HistoryBranch.java b/src/gen/java/com/uber/cadence/HistoryBranch.java new file mode 100644 index 000000000..12c3ade4e --- /dev/null +++ b/src/gen/java/com/uber/cadence/HistoryBranch.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class HistoryBranch { + private String treeID; + private String branchID; + private List ancestors; +} diff --git a/src/gen/java/com/uber/cadence/HistoryBranchRange.java b/src/gen/java/com/uber/cadence/HistoryBranchRange.java new file mode 100644 index 000000000..2814e2d1b --- /dev/null +++ b/src/gen/java/com/uber/cadence/HistoryBranchRange.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class HistoryBranchRange { + private String branchID; + private long beginNodeID; + private long endNodeID; +} diff --git a/src/gen/java/com/uber/cadence/HistoryEvent.java b/src/gen/java/com/uber/cadence/HistoryEvent.java new file mode 100644 index 000000000..c41af9480 --- /dev/null +++ b/src/gen/java/com/uber/cadence/HistoryEvent.java @@ -0,0 +1,73 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class HistoryEvent { + private long eventId; + private long timestamp; + private EventType eventType; + private long version; + private long taskId; + private WorkflowExecutionStartedEventAttributes workflowExecutionStartedEventAttributes; + private WorkflowExecutionCompletedEventAttributes workflowExecutionCompletedEventAttributes; + private WorkflowExecutionFailedEventAttributes workflowExecutionFailedEventAttributes; + private WorkflowExecutionTimedOutEventAttributes workflowExecutionTimedOutEventAttributes; + private DecisionTaskScheduledEventAttributes decisionTaskScheduledEventAttributes; + private DecisionTaskStartedEventAttributes decisionTaskStartedEventAttributes; + private DecisionTaskCompletedEventAttributes decisionTaskCompletedEventAttributes; + private DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes; + private DecisionTaskFailedEventAttributes decisionTaskFailedEventAttributes; + private ActivityTaskScheduledEventAttributes activityTaskScheduledEventAttributes; + private ActivityTaskStartedEventAttributes activityTaskStartedEventAttributes; + private ActivityTaskCompletedEventAttributes activityTaskCompletedEventAttributes; + private ActivityTaskFailedEventAttributes activityTaskFailedEventAttributes; + private ActivityTaskTimedOutEventAttributes activityTaskTimedOutEventAttributes; + private TimerStartedEventAttributes timerStartedEventAttributes; + private TimerFiredEventAttributes timerFiredEventAttributes; + private ActivityTaskCancelRequestedEventAttributes activityTaskCancelRequestedEventAttributes; + private RequestCancelActivityTaskFailedEventAttributes + requestCancelActivityTaskFailedEventAttributes; + private ActivityTaskCanceledEventAttributes activityTaskCanceledEventAttributes; + private TimerCanceledEventAttributes timerCanceledEventAttributes; + private CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes; + private MarkerRecordedEventAttributes markerRecordedEventAttributes; + private WorkflowExecutionSignaledEventAttributes workflowExecutionSignaledEventAttributes; + private WorkflowExecutionTerminatedEventAttributes workflowExecutionTerminatedEventAttributes; + private WorkflowExecutionCancelRequestedEventAttributes + workflowExecutionCancelRequestedEventAttributes; + private WorkflowExecutionCanceledEventAttributes workflowExecutionCanceledEventAttributes; + private RequestCancelExternalWorkflowExecutionInitiatedEventAttributes + requestCancelExternalWorkflowExecutionInitiatedEventAttributes; + private RequestCancelExternalWorkflowExecutionFailedEventAttributes + requestCancelExternalWorkflowExecutionFailedEventAttributes; + private ExternalWorkflowExecutionCancelRequestedEventAttributes + externalWorkflowExecutionCancelRequestedEventAttributes; + private WorkflowExecutionContinuedAsNewEventAttributes + workflowExecutionContinuedAsNewEventAttributes; + private StartChildWorkflowExecutionInitiatedEventAttributes + startChildWorkflowExecutionInitiatedEventAttributes; + private StartChildWorkflowExecutionFailedEventAttributes + startChildWorkflowExecutionFailedEventAttributes; + private ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStartedEventAttributes; + private ChildWorkflowExecutionCompletedEventAttributes + childWorkflowExecutionCompletedEventAttributes; + private ChildWorkflowExecutionFailedEventAttributes childWorkflowExecutionFailedEventAttributes; + private ChildWorkflowExecutionCanceledEventAttributes + childWorkflowExecutionCanceledEventAttributes; + private ChildWorkflowExecutionTimedOutEventAttributes + childWorkflowExecutionTimedOutEventAttributes; + private ChildWorkflowExecutionTerminatedEventAttributes + childWorkflowExecutionTerminatedEventAttributes; + private SignalExternalWorkflowExecutionInitiatedEventAttributes + signalExternalWorkflowExecutionInitiatedEventAttributes; + private SignalExternalWorkflowExecutionFailedEventAttributes + signalExternalWorkflowExecutionFailedEventAttributes; + private ExternalWorkflowExecutionSignaledEventAttributes + externalWorkflowExecutionSignaledEventAttributes; + private UpsertWorkflowSearchAttributesEventAttributes + upsertWorkflowSearchAttributesEventAttributes; +} diff --git a/src/gen/java/com/uber/cadence/HistoryEventFilterType.java b/src/gen/java/com/uber/cadence/HistoryEventFilterType.java new file mode 100644 index 000000000..0a98e0cd0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/HistoryEventFilterType.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum HistoryEventFilterType { + ALL_EVENT, + CLOSE_EVENT, +} diff --git a/src/gen/java/com/uber/cadence/IndexedValueType.java b/src/gen/java/com/uber/cadence/IndexedValueType.java new file mode 100644 index 000000000..bbc1585f4 --- /dev/null +++ b/src/gen/java/com/uber/cadence/IndexedValueType.java @@ -0,0 +1,10 @@ +package com.uber.cadence; + +public enum IndexedValueType { + STRING, + KEYWORD, + INT, + DOUBLE, + BOOL, + DATETIME, +} diff --git a/src/gen/java/com/uber/cadence/InternalDataInconsistencyError.java b/src/gen/java/com/uber/cadence/InternalDataInconsistencyError.java new file mode 100644 index 000000000..ba05772b7 --- /dev/null +++ b/src/gen/java/com/uber/cadence/InternalDataInconsistencyError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class InternalDataInconsistencyError extends CadenceError { + + public InternalDataInconsistencyError() { + super(); + } + + public InternalDataInconsistencyError(String message) { + super(message); + } + + public InternalDataInconsistencyError(String message, Throwable cause) { + super(message, cause); + } + + public InternalDataInconsistencyError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/InternalServiceError.java b/src/gen/java/com/uber/cadence/InternalServiceError.java new file mode 100644 index 000000000..abc49cf92 --- /dev/null +++ b/src/gen/java/com/uber/cadence/InternalServiceError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class InternalServiceError extends CadenceError { + + public InternalServiceError() { + super(); + } + + public InternalServiceError(String message) { + super(message); + } + + public InternalServiceError(String message, Throwable cause) { + super(message, cause); + } + + public InternalServiceError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java b/src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java new file mode 100644 index 000000000..40bb07973 --- /dev/null +++ b/src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class IsolationGroupConfiguration { + private List isolationGroups; +} diff --git a/src/gen/java/com/uber/cadence/IsolationGroupMetrics.java b/src/gen/java/com/uber/cadence/IsolationGroupMetrics.java new file mode 100644 index 000000000..63dd8944a --- /dev/null +++ b/src/gen/java/com/uber/cadence/IsolationGroupMetrics.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class IsolationGroupMetrics { + private double newTasksPerSecond; + private long pollerCount; +} diff --git a/src/gen/java/com/uber/cadence/IsolationGroupPartition.java b/src/gen/java/com/uber/cadence/IsolationGroupPartition.java new file mode 100644 index 000000000..44cdfa9cb --- /dev/null +++ b/src/gen/java/com/uber/cadence/IsolationGroupPartition.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class IsolationGroupPartition { + private String name; + private IsolationGroupState state; +} diff --git a/src/gen/java/com/uber/cadence/IsolationGroupState.java b/src/gen/java/com/uber/cadence/IsolationGroupState.java new file mode 100644 index 000000000..bab1f7ea5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/IsolationGroupState.java @@ -0,0 +1,7 @@ +package com.uber.cadence; + +public enum IsolationGroupState { + INVALID, + HEALTHY, + DRAINED, +} diff --git a/src/gen/java/com/uber/cadence/LimitExceededError.java b/src/gen/java/com/uber/cadence/LimitExceededError.java new file mode 100644 index 000000000..a2053334a --- /dev/null +++ b/src/gen/java/com/uber/cadence/LimitExceededError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class LimitExceededError extends CadenceError { + + public LimitExceededError() { + super(); + } + + public LimitExceededError(String message) { + super(message); + } + + public LimitExceededError(String message, Throwable cause) { + super(message, cause); + } + + public LimitExceededError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsRequest.java b/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsRequest.java new file mode 100644 index 000000000..7b493ca75 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListArchivedWorkflowExecutionsRequest { + private String domain; + private int pageSize; + private byte[] nextPageToken; + private String query; +} diff --git a/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java new file mode 100644 index 000000000..7ccfa1075 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListArchivedWorkflowExecutionsResponse { + private List executions; + private byte[] nextPageToken; +} diff --git a/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsRequest.java b/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsRequest.java new file mode 100644 index 000000000..aa0e87855 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsRequest.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListClosedWorkflowExecutionsRequest { + private String domain; + private int maximumPageSize; + private byte[] nextPageToken; + private StartTimeFilter StartTimeFilter; + private WorkflowExecutionFilter executionFilter; + private WorkflowTypeFilter typeFilter; + private WorkflowExecutionCloseStatus statusFilter; +} diff --git a/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java new file mode 100644 index 000000000..7b9aa1752 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListClosedWorkflowExecutionsResponse { + private List executions; + private byte[] nextPageToken; +} diff --git a/src/gen/java/com/uber/cadence/ListDomainsRequest.java b/src/gen/java/com/uber/cadence/ListDomainsRequest.java new file mode 100644 index 000000000..0c7730f4d --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListDomainsRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListDomainsRequest { + private int pageSize; + private byte[] nextPageToken; +} diff --git a/src/gen/java/com/uber/cadence/ListDomainsResponse.java b/src/gen/java/com/uber/cadence/ListDomainsResponse.java new file mode 100644 index 000000000..399dd2401 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListDomainsResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListDomainsResponse { + private List domains; + private byte[] nextPageToken; +} diff --git a/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsRequest.java b/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsRequest.java new file mode 100644 index 000000000..74e264255 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsRequest.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListOpenWorkflowExecutionsRequest { + private String domain; + private int maximumPageSize; + private byte[] nextPageToken; + private StartTimeFilter StartTimeFilter; + private WorkflowExecutionFilter executionFilter; + private WorkflowTypeFilter typeFilter; +} diff --git a/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java new file mode 100644 index 000000000..4877d9f32 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListOpenWorkflowExecutionsResponse { + private List executions; + private byte[] nextPageToken; +} diff --git a/src/gen/java/com/uber/cadence/ListTaskListPartitionsRequest.java b/src/gen/java/com/uber/cadence/ListTaskListPartitionsRequest.java new file mode 100644 index 000000000..77dc5d221 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListTaskListPartitionsRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListTaskListPartitionsRequest { + private String domain; + private TaskList taskList; +} diff --git a/src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java b/src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java new file mode 100644 index 000000000..09cc67233 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListTaskListPartitionsResponse { + private List activityTaskListPartitions; + private List decisionTaskListPartitions; +} diff --git a/src/gen/java/com/uber/cadence/ListWorkflowExecutionsRequest.java b/src/gen/java/com/uber/cadence/ListWorkflowExecutionsRequest.java new file mode 100644 index 000000000..714847698 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListWorkflowExecutionsRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListWorkflowExecutionsRequest { + private String domain; + private int pageSize; + private byte[] nextPageToken; + private String query; +} diff --git a/src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java new file mode 100644 index 000000000..ecc2eb46e --- /dev/null +++ b/src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ListWorkflowExecutionsResponse { + private List executions; + private byte[] nextPageToken; +} diff --git a/src/gen/java/com/uber/cadence/MarkerRecordedEventAttributes.java b/src/gen/java/com/uber/cadence/MarkerRecordedEventAttributes.java new file mode 100644 index 000000000..02005f7f6 --- /dev/null +++ b/src/gen/java/com/uber/cadence/MarkerRecordedEventAttributes.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class MarkerRecordedEventAttributes { + private String markerName; + private byte[] details; + private long decisionTaskCompletedEventId; + private Header header; +} diff --git a/src/gen/java/com/uber/cadence/Memo.java b/src/gen/java/com/uber/cadence/Memo.java new file mode 100644 index 000000000..e109857cc --- /dev/null +++ b/src/gen/java/com/uber/cadence/Memo.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Memo { + private Map fields; +} diff --git a/src/gen/java/com/uber/cadence/ParentClosePolicy.java b/src/gen/java/com/uber/cadence/ParentClosePolicy.java new file mode 100644 index 000000000..5f98519f2 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ParentClosePolicy.java @@ -0,0 +1,7 @@ +package com.uber.cadence; + +public enum ParentClosePolicy { + ABANDON, + REQUEST_CANCEL, + TERMINATE, +} diff --git a/src/gen/java/com/uber/cadence/PendingActivityInfo.java b/src/gen/java/com/uber/cadence/PendingActivityInfo.java new file mode 100644 index 000000000..33428cea5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/PendingActivityInfo.java @@ -0,0 +1,25 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PendingActivityInfo { + private String activityID; + private ActivityType activityType; + private PendingActivityState state; + private byte[] heartbeatDetails; + private long lastHeartbeatTimestamp; + private long lastStartedTimestamp; + private int attempt; + private int maximumAttempts; + private long scheduledTimestamp; + private long expirationTimestamp; + private String lastFailureReason; + private String lastWorkerIdentity; + private byte[] lastFailureDetails; + private String startedWorkerIdentity; + private long scheduleID; +} diff --git a/src/gen/java/com/uber/cadence/PendingActivityState.java b/src/gen/java/com/uber/cadence/PendingActivityState.java new file mode 100644 index 000000000..2a0ebd2fc --- /dev/null +++ b/src/gen/java/com/uber/cadence/PendingActivityState.java @@ -0,0 +1,7 @@ +package com.uber.cadence; + +public enum PendingActivityState { + SCHEDULED, + STARTED, + CANCEL_REQUESTED, +} diff --git a/src/gen/java/com/uber/cadence/PendingChildExecutionInfo.java b/src/gen/java/com/uber/cadence/PendingChildExecutionInfo.java new file mode 100644 index 000000000..41e4db18c --- /dev/null +++ b/src/gen/java/com/uber/cadence/PendingChildExecutionInfo.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PendingChildExecutionInfo { + private String domain; + private String workflowID; + private String runID; + private String workflowTypName; + private long initiatedID; + private ParentClosePolicy parentClosePolicy; +} diff --git a/src/gen/java/com/uber/cadence/PendingDecisionInfo.java b/src/gen/java/com/uber/cadence/PendingDecisionInfo.java new file mode 100644 index 000000000..28bfb0ea6 --- /dev/null +++ b/src/gen/java/com/uber/cadence/PendingDecisionInfo.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PendingDecisionInfo { + private PendingDecisionState state; + private long scheduledTimestamp; + private long startedTimestamp; + private long attempt; + private long originalScheduledTimestamp; + private long scheduleID; +} diff --git a/src/gen/java/com/uber/cadence/PendingDecisionState.java b/src/gen/java/com/uber/cadence/PendingDecisionState.java new file mode 100644 index 000000000..0f21f49b7 --- /dev/null +++ b/src/gen/java/com/uber/cadence/PendingDecisionState.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum PendingDecisionState { + SCHEDULED, + STARTED, +} diff --git a/src/gen/java/com/uber/cadence/PollForActivityTaskRequest.java b/src/gen/java/com/uber/cadence/PollForActivityTaskRequest.java new file mode 100644 index 000000000..55bc38424 --- /dev/null +++ b/src/gen/java/com/uber/cadence/PollForActivityTaskRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PollForActivityTaskRequest { + private String domain; + private TaskList taskList; + private String identity; + private TaskListMetadata taskListMetadata; +} diff --git a/src/gen/java/com/uber/cadence/PollForActivityTaskResponse.java b/src/gen/java/com/uber/cadence/PollForActivityTaskResponse.java new file mode 100644 index 000000000..6dc625309 --- /dev/null +++ b/src/gen/java/com/uber/cadence/PollForActivityTaskResponse.java @@ -0,0 +1,27 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PollForActivityTaskResponse { + private byte[] taskToken; + private WorkflowExecution workflowExecution; + private String activityId; + private ActivityType activityType; + private byte[] input; + private long scheduledTimestamp; + private int scheduleToCloseTimeoutSeconds; + private long startedTimestamp; + private int startToCloseTimeoutSeconds; + private int heartbeatTimeoutSeconds; + private int attempt; + private long scheduledTimestampOfThisAttempt; + private byte[] heartbeatDetails; + private WorkflowType workflowType; + private String workflowDomain; + private Header header; + private AutoConfigHint autoConfigHint; +} diff --git a/src/gen/java/com/uber/cadence/PollForDecisionTaskRequest.java b/src/gen/java/com/uber/cadence/PollForDecisionTaskRequest.java new file mode 100644 index 000000000..e51aca829 --- /dev/null +++ b/src/gen/java/com/uber/cadence/PollForDecisionTaskRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PollForDecisionTaskRequest { + private String domain; + private TaskList taskList; + private String identity; + private String binaryChecksum; +} diff --git a/src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java b/src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java new file mode 100644 index 000000000..365d56d9e --- /dev/null +++ b/src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java @@ -0,0 +1,27 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PollForDecisionTaskResponse { + private byte[] taskToken; + private WorkflowExecution workflowExecution; + private WorkflowType workflowType; + private long previousStartedEventId; + private long startedEventId; + private long attempt; + private long backlogCountHint; + private History history; + private byte[] nextPageToken; + private WorkflowQuery query; + private TaskList WorkflowExecutionTaskList; + private long scheduledTimestamp; + private long startedTimestamp; + private Map queries; + private long nextEventId; + private long totalHistoryBytes; + private AutoConfigHint autoConfigHint; +} diff --git a/src/gen/java/com/uber/cadence/PollerInfo.java b/src/gen/java/com/uber/cadence/PollerInfo.java new file mode 100644 index 000000000..50a39d1c9 --- /dev/null +++ b/src/gen/java/com/uber/cadence/PollerInfo.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class PollerInfo { + private long lastAccessTime; + private String identity; + private double ratePerSecond; +} diff --git a/src/gen/java/com/uber/cadence/QueryConsistencyLevel.java b/src/gen/java/com/uber/cadence/QueryConsistencyLevel.java new file mode 100644 index 000000000..f358d6ba6 --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryConsistencyLevel.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum QueryConsistencyLevel { + EVENTUAL, + STRONG, +} diff --git a/src/gen/java/com/uber/cadence/QueryFailedError.java b/src/gen/java/com/uber/cadence/QueryFailedError.java new file mode 100644 index 000000000..c518e21b0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryFailedError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class QueryFailedError extends CadenceError { + + public QueryFailedError() { + super(); + } + + public QueryFailedError(String message) { + super(message); + } + + public QueryFailedError(String message, Throwable cause) { + super(message, cause); + } + + public QueryFailedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/QueryRejectCondition.java b/src/gen/java/com/uber/cadence/QueryRejectCondition.java new file mode 100644 index 000000000..451449ce5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryRejectCondition.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum QueryRejectCondition { + NOT_OPEN, + NOT_COMPLETED_CLEANLY, +} diff --git a/src/gen/java/com/uber/cadence/QueryRejected.java b/src/gen/java/com/uber/cadence/QueryRejected.java new file mode 100644 index 000000000..209ae72aa --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryRejected.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class QueryRejected { + private WorkflowExecutionCloseStatus closeStatus; +} diff --git a/src/gen/java/com/uber/cadence/QueryResultType.java b/src/gen/java/com/uber/cadence/QueryResultType.java new file mode 100644 index 000000000..72b451d0f --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryResultType.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum QueryResultType { + ANSWERED, + FAILED, +} diff --git a/src/gen/java/com/uber/cadence/QueryTaskCompletedType.java b/src/gen/java/com/uber/cadence/QueryTaskCompletedType.java new file mode 100644 index 000000000..59b5d008f --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryTaskCompletedType.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum QueryTaskCompletedType { + COMPLETED, + FAILED, +} diff --git a/src/gen/java/com/uber/cadence/QueryWorkflowRequest.java b/src/gen/java/com/uber/cadence/QueryWorkflowRequest.java new file mode 100644 index 000000000..a3fd7070a --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryWorkflowRequest.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class QueryWorkflowRequest { + private String domain; + private WorkflowExecution execution; + private WorkflowQuery query; + private QueryRejectCondition queryRejectCondition; + private QueryConsistencyLevel queryConsistencyLevel; +} diff --git a/src/gen/java/com/uber/cadence/QueryWorkflowResponse.java b/src/gen/java/com/uber/cadence/QueryWorkflowResponse.java new file mode 100644 index 000000000..202fbf533 --- /dev/null +++ b/src/gen/java/com/uber/cadence/QueryWorkflowResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class QueryWorkflowResponse { + private byte[] queryResult; + private QueryRejected queryRejected; +} diff --git a/src/gen/java/com/uber/cadence/ReapplyEventsRequest.java b/src/gen/java/com/uber/cadence/ReapplyEventsRequest.java new file mode 100644 index 000000000..a285f0946 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ReapplyEventsRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ReapplyEventsRequest { + private String domainName; + private WorkflowExecution workflowExecution; + private DataBlob events; +} diff --git a/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatByIDRequest.java b/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatByIDRequest.java new file mode 100644 index 000000000..6590faa99 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatByIDRequest.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RecordActivityTaskHeartbeatByIDRequest { + private String domain; + private String workflowID; + private String runID; + private String activityID; + private byte[] details; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatRequest.java b/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatRequest.java new file mode 100644 index 000000000..8b1a99ca0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RecordActivityTaskHeartbeatRequest { + private byte[] taskToken; + private byte[] details; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatResponse.java b/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatResponse.java new file mode 100644 index 000000000..acc2dcbbb --- /dev/null +++ b/src/gen/java/com/uber/cadence/RecordActivityTaskHeartbeatResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RecordActivityTaskHeartbeatResponse { + private boolean cancelRequested; +} diff --git a/src/gen/java/com/uber/cadence/RecordMarkerDecisionAttributes.java b/src/gen/java/com/uber/cadence/RecordMarkerDecisionAttributes.java new file mode 100644 index 000000000..a35b74d7a --- /dev/null +++ b/src/gen/java/com/uber/cadence/RecordMarkerDecisionAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RecordMarkerDecisionAttributes { + private String markerName; + private byte[] details; + private Header header; +} diff --git a/src/gen/java/com/uber/cadence/RefreshWorkflowTasksRequest.java b/src/gen/java/com/uber/cadence/RefreshWorkflowTasksRequest.java new file mode 100644 index 000000000..68ab1c045 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RefreshWorkflowTasksRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RefreshWorkflowTasksRequest { + private String domain; + private WorkflowExecution execution; +} diff --git a/src/gen/java/com/uber/cadence/RegisterDomainRequest.java b/src/gen/java/com/uber/cadence/RegisterDomainRequest.java new file mode 100644 index 000000000..36d0b1093 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RegisterDomainRequest.java @@ -0,0 +1,24 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RegisterDomainRequest { + private String name; + private String description; + private String ownerEmail; + private int workflowExecutionRetentionPeriodInDays; + private boolean emitMetric; + private List clusters; + private String activeClusterName; + private Map data; + private String securityToken; + private boolean isGlobalDomain; + private ArchivalStatus historyArchivalStatus; + private String historyArchivalURI; + private ArchivalStatus visibilityArchivalStatus; + private String visibilityArchivalURI; +} diff --git a/src/gen/java/com/uber/cadence/RemoteSyncMatchedError.java b/src/gen/java/com/uber/cadence/RemoteSyncMatchedError.java new file mode 100644 index 000000000..887f5334a --- /dev/null +++ b/src/gen/java/com/uber/cadence/RemoteSyncMatchedError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class RemoteSyncMatchedError extends CadenceError { + + public RemoteSyncMatchedError() { + super(); + } + + public RemoteSyncMatchedError(String message) { + super(message); + } + + public RemoteSyncMatchedError(String message, Throwable cause) { + super(message, cause); + } + + public RemoteSyncMatchedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/RemoveTaskRequest.java b/src/gen/java/com/uber/cadence/RemoveTaskRequest.java new file mode 100644 index 000000000..797ba2a99 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RemoveTaskRequest.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RemoveTaskRequest { + private int shardID; + private int type; + private long taskID; + private long visibilityTimestamp; + private String clusterName; +} diff --git a/src/gen/java/com/uber/cadence/RequestCancelActivityTaskDecisionAttributes.java b/src/gen/java/com/uber/cadence/RequestCancelActivityTaskDecisionAttributes.java new file mode 100644 index 000000000..d57be8e9b --- /dev/null +++ b/src/gen/java/com/uber/cadence/RequestCancelActivityTaskDecisionAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RequestCancelActivityTaskDecisionAttributes { + private String activityId; +} diff --git a/src/gen/java/com/uber/cadence/RequestCancelActivityTaskFailedEventAttributes.java b/src/gen/java/com/uber/cadence/RequestCancelActivityTaskFailedEventAttributes.java new file mode 100644 index 000000000..5eb765acb --- /dev/null +++ b/src/gen/java/com/uber/cadence/RequestCancelActivityTaskFailedEventAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RequestCancelActivityTaskFailedEventAttributes { + private String activityId; + private String cause; + private long decisionTaskCompletedEventId; +} diff --git a/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionDecisionAttributes.java b/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionDecisionAttributes.java new file mode 100644 index 000000000..2f89cb82f --- /dev/null +++ b/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionDecisionAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RequestCancelExternalWorkflowExecutionDecisionAttributes { + private String domain; + private String workflowId; + private String runId; + private byte[] control; + private boolean childWorkflowOnly; +} diff --git a/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionFailedEventAttributes.java b/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionFailedEventAttributes.java new file mode 100644 index 000000000..9395e1518 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionFailedEventAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RequestCancelExternalWorkflowExecutionFailedEventAttributes { + private CancelExternalWorkflowExecutionFailedCause cause; + private long decisionTaskCompletedEventId; + private String domain; + private WorkflowExecution workflowExecution; + private long initiatedEventId; + private byte[] control; +} diff --git a/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.java b/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.java new file mode 100644 index 000000000..01be14954 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RequestCancelExternalWorkflowExecutionInitiatedEventAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RequestCancelExternalWorkflowExecutionInitiatedEventAttributes { + private long decisionTaskCompletedEventId; + private String domain; + private WorkflowExecution workflowExecution; + private byte[] control; + private boolean childWorkflowOnly; +} diff --git a/src/gen/java/com/uber/cadence/RequestCancelWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/RequestCancelWorkflowExecutionRequest.java new file mode 100644 index 000000000..1301762f2 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RequestCancelWorkflowExecutionRequest.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RequestCancelWorkflowExecutionRequest { + private String domain; + private WorkflowExecution workflowExecution; + private String identity; + private String requestId; + private String cause; + private String firstExecutionRunID; +} diff --git a/src/gen/java/com/uber/cadence/ResetPointInfo.java b/src/gen/java/com/uber/cadence/ResetPointInfo.java new file mode 100644 index 000000000..07a1a1fd8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ResetPointInfo.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ResetPointInfo { + private String binaryChecksum; + private String runId; + private long firstDecisionCompletedId; + private long createdTimeNano; + private long expiringTimeNano; + private boolean resettable; +} diff --git a/src/gen/java/com/uber/cadence/ResetPoints.java b/src/gen/java/com/uber/cadence/ResetPoints.java new file mode 100644 index 000000000..e01d21b61 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ResetPoints.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ResetPoints { + private List points; +} diff --git a/src/gen/java/com/uber/cadence/ResetQueueRequest.java b/src/gen/java/com/uber/cadence/ResetQueueRequest.java new file mode 100644 index 000000000..869b3acb7 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ResetQueueRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ResetQueueRequest { + private int shardID; + private String clusterName; + private int type; +} diff --git a/src/gen/java/com/uber/cadence/ResetStickyTaskListRequest.java b/src/gen/java/com/uber/cadence/ResetStickyTaskListRequest.java new file mode 100644 index 000000000..0af64412f --- /dev/null +++ b/src/gen/java/com/uber/cadence/ResetStickyTaskListRequest.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ResetStickyTaskListRequest { + private String domain; + private WorkflowExecution execution; +} diff --git a/src/gen/java/com/uber/cadence/ResetStickyTaskListResponse.java b/src/gen/java/com/uber/cadence/ResetStickyTaskListResponse.java new file mode 100644 index 000000000..82a991059 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ResetStickyTaskListResponse.java @@ -0,0 +1,9 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ResetStickyTaskListResponse {} diff --git a/src/gen/java/com/uber/cadence/ResetWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/ResetWorkflowExecutionRequest.java new file mode 100644 index 000000000..69351faa6 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ResetWorkflowExecutionRequest.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ResetWorkflowExecutionRequest { + private String domain; + private WorkflowExecution workflowExecution; + private String reason; + private long decisionFinishEventId; + private String requestId; + private boolean skipSignalReapply; +} diff --git a/src/gen/java/com/uber/cadence/ResetWorkflowExecutionResponse.java b/src/gen/java/com/uber/cadence/ResetWorkflowExecutionResponse.java new file mode 100644 index 000000000..524a3f4c1 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ResetWorkflowExecutionResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ResetWorkflowExecutionResponse { + private String runId; +} diff --git a/src/gen/java/com/uber/cadence/RespondActivityTaskCanceledByIDRequest.java b/src/gen/java/com/uber/cadence/RespondActivityTaskCanceledByIDRequest.java new file mode 100644 index 000000000..d13e3a183 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondActivityTaskCanceledByIDRequest.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondActivityTaskCanceledByIDRequest { + private String domain; + private String workflowID; + private String runID; + private String activityID; + private byte[] details; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RespondActivityTaskCanceledRequest.java b/src/gen/java/com/uber/cadence/RespondActivityTaskCanceledRequest.java new file mode 100644 index 000000000..cf868b19d --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondActivityTaskCanceledRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondActivityTaskCanceledRequest { + private byte[] taskToken; + private byte[] details; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RespondActivityTaskCompletedByIDRequest.java b/src/gen/java/com/uber/cadence/RespondActivityTaskCompletedByIDRequest.java new file mode 100644 index 000000000..c6bfb8320 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondActivityTaskCompletedByIDRequest.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondActivityTaskCompletedByIDRequest { + private String domain; + private String workflowID; + private String runID; + private String activityID; + private byte[] result; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RespondActivityTaskCompletedRequest.java b/src/gen/java/com/uber/cadence/RespondActivityTaskCompletedRequest.java new file mode 100644 index 000000000..d03ed99b2 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondActivityTaskCompletedRequest.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondActivityTaskCompletedRequest { + private byte[] taskToken; + private byte[] result; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RespondActivityTaskFailedByIDRequest.java b/src/gen/java/com/uber/cadence/RespondActivityTaskFailedByIDRequest.java new file mode 100644 index 000000000..eff5711cb --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondActivityTaskFailedByIDRequest.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondActivityTaskFailedByIDRequest { + private String domain; + private String workflowID; + private String runID; + private String activityID; + private String reason; + private byte[] details; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RespondActivityTaskFailedRequest.java b/src/gen/java/com/uber/cadence/RespondActivityTaskFailedRequest.java new file mode 100644 index 000000000..f3ae7d6ba --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondActivityTaskFailedRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondActivityTaskFailedRequest { + private byte[] taskToken; + private String reason; + private byte[] details; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java new file mode 100644 index 000000000..f366f9406 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondCrossClusterTasksCompletedRequest { + private int shardID; + private String targetCluster; + private List taskResponses; + private boolean fetchNewTasks; +} diff --git a/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java new file mode 100644 index 000000000..0d53f65e6 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondCrossClusterTasksCompletedResponse { + private List tasks; +} diff --git a/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java new file mode 100644 index 000000000..523b6a162 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java @@ -0,0 +1,19 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondDecisionTaskCompletedRequest { + private byte[] taskToken; + private List decisions; + private byte[] executionContext; + private String identity; + private StickyExecutionAttributes stickyAttributes; + private boolean returnNewDecisionTask; + private boolean forceCreateNewDecisionTask; + private String binaryChecksum; + private Map queryResults; +} diff --git a/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java new file mode 100644 index 000000000..b787abd71 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondDecisionTaskCompletedResponse { + private PollForDecisionTaskResponse decisionTask; + private Map activitiesToDispatchLocally; +} diff --git a/src/gen/java/com/uber/cadence/RespondDecisionTaskFailedRequest.java b/src/gen/java/com/uber/cadence/RespondDecisionTaskFailedRequest.java new file mode 100644 index 000000000..6c9cb643a --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondDecisionTaskFailedRequest.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondDecisionTaskFailedRequest { + private byte[] taskToken; + private DecisionTaskFailedCause cause; + private byte[] details; + private String identity; + private String binaryChecksum; +} diff --git a/src/gen/java/com/uber/cadence/RespondQueryTaskCompletedRequest.java b/src/gen/java/com/uber/cadence/RespondQueryTaskCompletedRequest.java new file mode 100644 index 000000000..82c334f05 --- /dev/null +++ b/src/gen/java/com/uber/cadence/RespondQueryTaskCompletedRequest.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RespondQueryTaskCompletedRequest { + private byte[] taskToken; + private QueryTaskCompletedType completedType; + private byte[] queryResult; + private String errorMessage; + private WorkerVersionInfo workerVersionInfo; +} diff --git a/src/gen/java/com/uber/cadence/RestartWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/RestartWorkflowExecutionRequest.java new file mode 100644 index 000000000..22811127e --- /dev/null +++ b/src/gen/java/com/uber/cadence/RestartWorkflowExecutionRequest.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RestartWorkflowExecutionRequest { + private String domain; + private WorkflowExecution workflowExecution; + private String reason; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/RestartWorkflowExecutionResponse.java b/src/gen/java/com/uber/cadence/RestartWorkflowExecutionResponse.java new file mode 100644 index 000000000..0cc94c67b --- /dev/null +++ b/src/gen/java/com/uber/cadence/RestartWorkflowExecutionResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RestartWorkflowExecutionResponse { + private String runId; +} diff --git a/src/gen/java/com/uber/cadence/RetryPolicy.java b/src/gen/java/com/uber/cadence/RetryPolicy.java new file mode 100644 index 000000000..6ab4fde6f --- /dev/null +++ b/src/gen/java/com/uber/cadence/RetryPolicy.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class RetryPolicy { + private int initialIntervalInSeconds; + private double backoffCoefficient; + private int maximumIntervalInSeconds; + private int maximumAttempts; + private List nonRetriableErrorReasons; + private int expirationIntervalInSeconds; +} diff --git a/src/gen/java/com/uber/cadence/RetryTaskV2Error.java b/src/gen/java/com/uber/cadence/RetryTaskV2Error.java new file mode 100644 index 000000000..2dc65d94a --- /dev/null +++ b/src/gen/java/com/uber/cadence/RetryTaskV2Error.java @@ -0,0 +1,35 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class RetryTaskV2Error extends CadenceError { + private String domainId; + private String workflowId; + private String runId; + private long startEventId; + private long startEventVersion; + private long endEventId; + private long endEventVersion; + + public RetryTaskV2Error() { + super(); + } + + public RetryTaskV2Error(String message) { + super(message); + } + + public RetryTaskV2Error(String message, Throwable cause) { + super(message, cause); + } + + public RetryTaskV2Error(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/ScheduleActivityTaskDecisionAttributes.java b/src/gen/java/com/uber/cadence/ScheduleActivityTaskDecisionAttributes.java new file mode 100644 index 000000000..c69cabbb1 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ScheduleActivityTaskDecisionAttributes.java @@ -0,0 +1,22 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ScheduleActivityTaskDecisionAttributes { + private String activityId; + private ActivityType activityType; + private String domain; + private TaskList taskList; + private byte[] input; + private int scheduleToCloseTimeoutSeconds; + private int scheduleToStartTimeoutSeconds; + private int startToCloseTimeoutSeconds; + private int heartbeatTimeoutSeconds; + private RetryPolicy retryPolicy; + private Header header; + private boolean requestLocalDispatch; +} diff --git a/src/gen/java/com/uber/cadence/SearchAttributes.java b/src/gen/java/com/uber/cadence/SearchAttributes.java new file mode 100644 index 000000000..6356fc62d --- /dev/null +++ b/src/gen/java/com/uber/cadence/SearchAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SearchAttributes { + private Map indexedFields; +} diff --git a/src/gen/java/com/uber/cadence/ServiceBusyError.java b/src/gen/java/com/uber/cadence/ServiceBusyError.java new file mode 100644 index 000000000..f41e7c511 --- /dev/null +++ b/src/gen/java/com/uber/cadence/ServiceBusyError.java @@ -0,0 +1,29 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class ServiceBusyError extends CadenceError { + private String reason; + + public ServiceBusyError() { + super(); + } + + public ServiceBusyError(String message) { + super(message); + } + + public ServiceBusyError(String message, Throwable cause) { + super(message, cause); + } + + public ServiceBusyError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionDecisionAttributes.java b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionDecisionAttributes.java new file mode 100644 index 000000000..98fb1872e --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionDecisionAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SignalExternalWorkflowExecutionDecisionAttributes { + private String domain; + private WorkflowExecution execution; + private String signalName; + private byte[] input; + private byte[] control; + private boolean childWorkflowOnly; +} diff --git a/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedCause.java b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedCause.java new file mode 100644 index 000000000..e3f0f3bf0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedCause.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum SignalExternalWorkflowExecutionFailedCause { + UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION, + WORKFLOW_ALREADY_COMPLETED, +} diff --git a/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedEventAttributes.java b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedEventAttributes.java new file mode 100644 index 000000000..40d0ec1b6 --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionFailedEventAttributes.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SignalExternalWorkflowExecutionFailedEventAttributes { + private SignalExternalWorkflowExecutionFailedCause cause; + private long decisionTaskCompletedEventId; + private String domain; + private WorkflowExecution workflowExecution; + private long initiatedEventId; + private byte[] control; +} diff --git a/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionInitiatedEventAttributes.java b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionInitiatedEventAttributes.java new file mode 100644 index 000000000..c9b9c8533 --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalExternalWorkflowExecutionInitiatedEventAttributes.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SignalExternalWorkflowExecutionInitiatedEventAttributes { + private long decisionTaskCompletedEventId; + private String domain; + private WorkflowExecution workflowExecution; + private String signalName; + private byte[] input; + private byte[] control; + private boolean childWorkflowOnly; +} diff --git a/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncRequest.java b/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncRequest.java new file mode 100644 index 000000000..d945df3db --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncRequest.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SignalWithStartWorkflowExecutionAsyncRequest { + private SignalWithStartWorkflowExecutionRequest request; +} diff --git a/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncResponse.java b/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncResponse.java new file mode 100644 index 000000000..d55055256 --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionAsyncResponse.java @@ -0,0 +1,9 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SignalWithStartWorkflowExecutionAsyncResponse {} diff --git a/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionRequest.java new file mode 100644 index 000000000..c2235c01b --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalWithStartWorkflowExecutionRequest.java @@ -0,0 +1,31 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SignalWithStartWorkflowExecutionRequest { + private String domain; + private String workflowId; + private WorkflowType workflowType; + private TaskList taskList; + private byte[] input; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; + private String identity; + private String requestId; + private WorkflowIdReusePolicy workflowIdReusePolicy; + private String signalName; + private byte[] signalInput; + private byte[] control; + private RetryPolicy retryPolicy; + private String cronSchedule; + private Memo memo; + private SearchAttributes searchAttributes; + private Header header; + private int delayStartSeconds; + private int jitterStartSeconds; + private long firstRunAtTimestamp; +} diff --git a/src/gen/java/com/uber/cadence/SignalWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/SignalWorkflowExecutionRequest.java new file mode 100644 index 000000000..135606f36 --- /dev/null +++ b/src/gen/java/com/uber/cadence/SignalWorkflowExecutionRequest.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SignalWorkflowExecutionRequest { + private String domain; + private WorkflowExecution workflowExecution; + private String signalName; + private byte[] input; + private String identity; + private String requestId; + private byte[] control; +} diff --git a/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionDecisionAttributes.java b/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionDecisionAttributes.java new file mode 100644 index 000000000..0bc40c6f4 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionDecisionAttributes.java @@ -0,0 +1,25 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartChildWorkflowExecutionDecisionAttributes { + private String domain; + private String workflowId; + private WorkflowType workflowType; + private TaskList taskList; + private byte[] input; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; + private ParentClosePolicy parentClosePolicy; + private byte[] control; + private WorkflowIdReusePolicy workflowIdReusePolicy; + private RetryPolicy retryPolicy; + private String cronSchedule; + private Header header; + private Memo memo; + private SearchAttributes searchAttributes; +} diff --git a/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionFailedEventAttributes.java b/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionFailedEventAttributes.java new file mode 100644 index 000000000..141580d52 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionFailedEventAttributes.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartChildWorkflowExecutionFailedEventAttributes { + private String domain; + private String workflowId; + private WorkflowType workflowType; + private ChildWorkflowExecutionFailedCause cause; + private byte[] control; + private long initiatedEventId; + private long decisionTaskCompletedEventId; +} diff --git a/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionInitiatedEventAttributes.java b/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionInitiatedEventAttributes.java new file mode 100644 index 000000000..d9ba326c9 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartChildWorkflowExecutionInitiatedEventAttributes.java @@ -0,0 +1,29 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartChildWorkflowExecutionInitiatedEventAttributes { + private String domain; + private String workflowId; + private WorkflowType workflowType; + private TaskList taskList; + private byte[] input; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; + private ParentClosePolicy parentClosePolicy; + private byte[] control; + private long decisionTaskCompletedEventId; + private WorkflowIdReusePolicy workflowIdReusePolicy; + private RetryPolicy retryPolicy; + private String cronSchedule; + private Header header; + private Memo memo; + private SearchAttributes searchAttributes; + private int delayStartSeconds; + private int jitterStartSeconds; + private long firstRunAtTimestamp; +} diff --git a/src/gen/java/com/uber/cadence/StartTimeFilter.java b/src/gen/java/com/uber/cadence/StartTimeFilter.java new file mode 100644 index 000000000..55fa4d4c5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartTimeFilter.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartTimeFilter { + private long earliestTime; + private long latestTime; +} diff --git a/src/gen/java/com/uber/cadence/StartTimerDecisionAttributes.java b/src/gen/java/com/uber/cadence/StartTimerDecisionAttributes.java new file mode 100644 index 000000000..9589bcc5f --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartTimerDecisionAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartTimerDecisionAttributes { + private String timerId; + private long startToFireTimeoutSeconds; +} diff --git a/src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncRequest.java b/src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncRequest.java new file mode 100644 index 000000000..fe667ab96 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncRequest.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartWorkflowExecutionAsyncRequest { + private StartWorkflowExecutionRequest request; +} diff --git a/src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncResponse.java b/src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncResponse.java new file mode 100644 index 000000000..a4e21fb01 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartWorkflowExecutionAsyncResponse.java @@ -0,0 +1,9 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartWorkflowExecutionAsyncResponse {} diff --git a/src/gen/java/com/uber/cadence/StartWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/StartWorkflowExecutionRequest.java new file mode 100644 index 000000000..85b5dab42 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartWorkflowExecutionRequest.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartWorkflowExecutionRequest { + private String domain; + private String workflowId; + private WorkflowType workflowType; + private TaskList taskList; + private byte[] input; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; + private String identity; + private String requestId; + private WorkflowIdReusePolicy workflowIdReusePolicy; + private RetryPolicy retryPolicy; + private String cronSchedule; + private Memo memo; + private SearchAttributes searchAttributes; + private Header header; + private int delayStartSeconds; + private int jitterStartSeconds; + private long firstRunAtTimestamp; +} diff --git a/src/gen/java/com/uber/cadence/StartWorkflowExecutionResponse.java b/src/gen/java/com/uber/cadence/StartWorkflowExecutionResponse.java new file mode 100644 index 000000000..26e5304b5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StartWorkflowExecutionResponse.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StartWorkflowExecutionResponse { + private String runId; +} diff --git a/src/gen/java/com/uber/cadence/StickyExecutionAttributes.java b/src/gen/java/com/uber/cadence/StickyExecutionAttributes.java new file mode 100644 index 000000000..d94c003d8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/StickyExecutionAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StickyExecutionAttributes { + private TaskList workerTaskList; + private int scheduleToStartTimeoutSeconds; +} diff --git a/src/gen/java/com/uber/cadence/StickyWorkerUnavailableError.java b/src/gen/java/com/uber/cadence/StickyWorkerUnavailableError.java new file mode 100644 index 000000000..3914a5f6b --- /dev/null +++ b/src/gen/java/com/uber/cadence/StickyWorkerUnavailableError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class StickyWorkerUnavailableError extends CadenceError { + + public StickyWorkerUnavailableError() { + super(); + } + + public StickyWorkerUnavailableError(String message) { + super(message); + } + + public StickyWorkerUnavailableError(String message, Throwable cause) { + super(message, cause); + } + + public StickyWorkerUnavailableError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/SupportedClientVersions.java b/src/gen/java/com/uber/cadence/SupportedClientVersions.java new file mode 100644 index 000000000..74779dea0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/SupportedClientVersions.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class SupportedClientVersions { + private String goSdk; + private String javaSdk; +} diff --git a/src/gen/java/com/uber/cadence/TaskIDBlock.java b/src/gen/java/com/uber/cadence/TaskIDBlock.java new file mode 100644 index 000000000..e1fa49b78 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskIDBlock.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TaskIDBlock { + private long startID; + private long endID; +} diff --git a/src/gen/java/com/uber/cadence/TaskList.java b/src/gen/java/com/uber/cadence/TaskList.java new file mode 100644 index 000000000..3bc7afe5d --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskList.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TaskList { + private String name; + private TaskListKind kind; +} diff --git a/src/gen/java/com/uber/cadence/TaskListKind.java b/src/gen/java/com/uber/cadence/TaskListKind.java new file mode 100644 index 000000000..4b8487578 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskListKind.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum TaskListKind { + NORMAL, + STICKY, +} diff --git a/src/gen/java/com/uber/cadence/TaskListMetadata.java b/src/gen/java/com/uber/cadence/TaskListMetadata.java new file mode 100644 index 000000000..5db6305b7 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskListMetadata.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TaskListMetadata { + private double maxTasksPerSecond; +} diff --git a/src/gen/java/com/uber/cadence/TaskListNotOwnedByHostError.java b/src/gen/java/com/uber/cadence/TaskListNotOwnedByHostError.java new file mode 100644 index 000000000..f13547ab0 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskListNotOwnedByHostError.java @@ -0,0 +1,31 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class TaskListNotOwnedByHostError extends CadenceError { + private String ownedByIdentity; + private String myIdentity; + private String tasklistName; + + public TaskListNotOwnedByHostError() { + super(); + } + + public TaskListNotOwnedByHostError(String message) { + super(message); + } + + public TaskListNotOwnedByHostError(String message, Throwable cause) { + super(message, cause); + } + + public TaskListNotOwnedByHostError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/TaskListPartitionMetadata.java b/src/gen/java/com/uber/cadence/TaskListPartitionMetadata.java new file mode 100644 index 000000000..8a2bccdcb --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskListPartitionMetadata.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TaskListPartitionMetadata { + private String key; + private String ownerHostName; +} diff --git a/src/gen/java/com/uber/cadence/TaskListStatus.java b/src/gen/java/com/uber/cadence/TaskListStatus.java new file mode 100644 index 000000000..4bf3db53f --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskListStatus.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TaskListStatus { + private long backlogCountHint; + private long readLevel; + private long ackLevel; + private double ratePerSecond; + private TaskIDBlock taskIDBlock; + private Map isolationGroupMetrics; + private double newTasksPerSecond; +} diff --git a/src/gen/java/com/uber/cadence/TaskListType.java b/src/gen/java/com/uber/cadence/TaskListType.java new file mode 100644 index 000000000..281c33ef6 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TaskListType.java @@ -0,0 +1,6 @@ +package com.uber.cadence; + +public enum TaskListType { + Decision, + Activity, +} diff --git a/src/gen/java/com/uber/cadence/TerminateWorkflowExecutionRequest.java b/src/gen/java/com/uber/cadence/TerminateWorkflowExecutionRequest.java new file mode 100644 index 000000000..290ce14fe --- /dev/null +++ b/src/gen/java/com/uber/cadence/TerminateWorkflowExecutionRequest.java @@ -0,0 +1,16 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TerminateWorkflowExecutionRequest { + private String domain; + private WorkflowExecution workflowExecution; + private String reason; + private byte[] details; + private String identity; + private String firstExecutionRunID; +} diff --git a/src/gen/java/com/uber/cadence/TimeoutType.java b/src/gen/java/com/uber/cadence/TimeoutType.java new file mode 100644 index 000000000..634d621be --- /dev/null +++ b/src/gen/java/com/uber/cadence/TimeoutType.java @@ -0,0 +1,8 @@ +package com.uber.cadence; + +public enum TimeoutType { + START_TO_CLOSE, + SCHEDULE_TO_START, + SCHEDULE_TO_CLOSE, + HEARTBEAT, +} diff --git a/src/gen/java/com/uber/cadence/TimerCanceledEventAttributes.java b/src/gen/java/com/uber/cadence/TimerCanceledEventAttributes.java new file mode 100644 index 000000000..e9f8c8f8b --- /dev/null +++ b/src/gen/java/com/uber/cadence/TimerCanceledEventAttributes.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TimerCanceledEventAttributes { + private String timerId; + private long startedEventId; + private long decisionTaskCompletedEventId; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/TimerFiredEventAttributes.java b/src/gen/java/com/uber/cadence/TimerFiredEventAttributes.java new file mode 100644 index 000000000..ac611ce27 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TimerFiredEventAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TimerFiredEventAttributes { + private String timerId; + private long startedEventId; +} diff --git a/src/gen/java/com/uber/cadence/TimerStartedEventAttributes.java b/src/gen/java/com/uber/cadence/TimerStartedEventAttributes.java new file mode 100644 index 000000000..41e90e8ed --- /dev/null +++ b/src/gen/java/com/uber/cadence/TimerStartedEventAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TimerStartedEventAttributes { + private String timerId; + private long startToFireTimeoutSeconds; + private long decisionTaskCompletedEventId; +} diff --git a/src/gen/java/com/uber/cadence/TransientDecisionInfo.java b/src/gen/java/com/uber/cadence/TransientDecisionInfo.java new file mode 100644 index 000000000..ba9fa5f99 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TransientDecisionInfo.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class TransientDecisionInfo { + private HistoryEvent scheduledEvent; + private HistoryEvent startedEvent; +} diff --git a/src/gen/java/com/uber/cadence/UpdateDomainInfo.java b/src/gen/java/com/uber/cadence/UpdateDomainInfo.java new file mode 100644 index 000000000..805932fa7 --- /dev/null +++ b/src/gen/java/com/uber/cadence/UpdateDomainInfo.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class UpdateDomainInfo { + private String description; + private String ownerEmail; + private Map data; +} diff --git a/src/gen/java/com/uber/cadence/UpdateDomainRequest.java b/src/gen/java/com/uber/cadence/UpdateDomainRequest.java new file mode 100644 index 000000000..7605f5d4c --- /dev/null +++ b/src/gen/java/com/uber/cadence/UpdateDomainRequest.java @@ -0,0 +1,17 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class UpdateDomainRequest { + private String name; + private UpdateDomainInfo updatedInfo; + private DomainConfiguration configuration; + private DomainReplicationConfiguration replicationConfiguration; + private String securityToken; + private String deleteBadBinary; + private int failoverTimeoutInSeconds; +} diff --git a/src/gen/java/com/uber/cadence/UpdateDomainResponse.java b/src/gen/java/com/uber/cadence/UpdateDomainResponse.java new file mode 100644 index 000000000..af44ad460 --- /dev/null +++ b/src/gen/java/com/uber/cadence/UpdateDomainResponse.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class UpdateDomainResponse { + private DomainInfo domainInfo; + private DomainConfiguration configuration; + private DomainReplicationConfiguration replicationConfiguration; + private long failoverVersion; + private boolean isGlobalDomain; +} diff --git a/src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesDecisionAttributes.java b/src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesDecisionAttributes.java new file mode 100644 index 000000000..69111102b --- /dev/null +++ b/src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesDecisionAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class UpsertWorkflowSearchAttributesDecisionAttributes { + private SearchAttributes searchAttributes; +} diff --git a/src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesEventAttributes.java b/src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesEventAttributes.java new file mode 100644 index 000000000..cce65d833 --- /dev/null +++ b/src/gen/java/com/uber/cadence/UpsertWorkflowSearchAttributesEventAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class UpsertWorkflowSearchAttributesEventAttributes { + private long decisionTaskCompletedEventId; + private SearchAttributes searchAttributes; +} diff --git a/src/gen/java/com/uber/cadence/VersionHistories.java b/src/gen/java/com/uber/cadence/VersionHistories.java new file mode 100644 index 000000000..f213a88d1 --- /dev/null +++ b/src/gen/java/com/uber/cadence/VersionHistories.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class VersionHistories { + private int currentVersionHistoryIndex; + private List histories; +} diff --git a/src/gen/java/com/uber/cadence/VersionHistory.java b/src/gen/java/com/uber/cadence/VersionHistory.java new file mode 100644 index 000000000..84612a4d3 --- /dev/null +++ b/src/gen/java/com/uber/cadence/VersionHistory.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class VersionHistory { + private byte[] branchToken; + private List items; +} diff --git a/src/gen/java/com/uber/cadence/VersionHistoryItem.java b/src/gen/java/com/uber/cadence/VersionHistoryItem.java new file mode 100644 index 000000000..c71a0bc2b --- /dev/null +++ b/src/gen/java/com/uber/cadence/VersionHistoryItem.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class VersionHistoryItem { + private long eventID; + private long version; +} diff --git a/src/gen/java/com/uber/cadence/WorkerVersionInfo.java b/src/gen/java/com/uber/cadence/WorkerVersionInfo.java new file mode 100644 index 000000000..b86c9cc3c --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkerVersionInfo.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkerVersionInfo { + private String impl; + private String featureVersion; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecution.java b/src/gen/java/com/uber/cadence/WorkflowExecution.java new file mode 100644 index 000000000..e1871e1ab --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecution.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecution { + private String workflowId; + private String runId; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyCompletedError.java b/src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyCompletedError.java new file mode 100644 index 000000000..1a9bfb3f5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyCompletedError.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class WorkflowExecutionAlreadyCompletedError extends CadenceError { + + public WorkflowExecutionAlreadyCompletedError() { + super(); + } + + public WorkflowExecutionAlreadyCompletedError(String message) { + super(message); + } + + public WorkflowExecutionAlreadyCompletedError(String message, Throwable cause) { + super(message, cause); + } + + public WorkflowExecutionAlreadyCompletedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyStartedError.java b/src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyStartedError.java new file mode 100644 index 000000000..b04e15dda --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionAlreadyStartedError.java @@ -0,0 +1,30 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +public class WorkflowExecutionAlreadyStartedError extends CadenceError { + private String startRequestId; + private String runId; + + public WorkflowExecutionAlreadyStartedError() { + super(); + } + + public WorkflowExecutionAlreadyStartedError(String message) { + super(message); + } + + public WorkflowExecutionAlreadyStartedError(String message, Throwable cause) { + super(message, cause); + } + + public WorkflowExecutionAlreadyStartedError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionCancelRequestedEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionCancelRequestedEventAttributes.java new file mode 100644 index 000000000..9aee03cbb --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionCancelRequestedEventAttributes.java @@ -0,0 +1,15 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionCancelRequestedEventAttributes { + private String cause; + private long externalInitiatedEventId; + private WorkflowExecution externalWorkflowExecution; + private String identity; + private String requestId; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionCanceledEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionCanceledEventAttributes.java new file mode 100644 index 000000000..04f1453a2 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionCanceledEventAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionCanceledEventAttributes { + private long decisionTaskCompletedEventId; + private byte[] details; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionCloseStatus.java b/src/gen/java/com/uber/cadence/WorkflowExecutionCloseStatus.java new file mode 100644 index 000000000..487b50fdb --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionCloseStatus.java @@ -0,0 +1,10 @@ +package com.uber.cadence; + +public enum WorkflowExecutionCloseStatus { + COMPLETED, + FAILED, + CANCELED, + TERMINATED, + CONTINUED_AS_NEW, + TIMED_OUT, +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionCompletedEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionCompletedEventAttributes.java new file mode 100644 index 000000000..1dc699ebe --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionCompletedEventAttributes.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionCompletedEventAttributes { + private byte[] result; + private long decisionTaskCompletedEventId; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionConfiguration.java b/src/gen/java/com/uber/cadence/WorkflowExecutionConfiguration.java new file mode 100644 index 000000000..532420450 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionConfiguration.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionConfiguration { + private TaskList taskList; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionContinuedAsNewEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionContinuedAsNewEventAttributes.java new file mode 100644 index 000000000..613f0e3a8 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionContinuedAsNewEventAttributes.java @@ -0,0 +1,25 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionContinuedAsNewEventAttributes { + private String newExecutionRunId; + private WorkflowType workflowType; + private TaskList taskList; + private byte[] input; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; + private long decisionTaskCompletedEventId; + private int backoffStartIntervalInSeconds; + private ContinueAsNewInitiator initiator; + private String failureReason; + private byte[] failureDetails; + private byte[] lastCompletionResult; + private Header header; + private Memo memo; + private SearchAttributes searchAttributes; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionFailedEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionFailedEventAttributes.java new file mode 100644 index 000000000..f5184103c --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionFailedEventAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionFailedEventAttributes { + private String reason; + private byte[] details; + private long decisionTaskCompletedEventId; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionFilter.java b/src/gen/java/com/uber/cadence/WorkflowExecutionFilter.java new file mode 100644 index 000000000..8f1b1592f --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionFilter.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionFilter { + private String workflowId; + private String runId; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java b/src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java new file mode 100644 index 000000000..a892afb59 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java @@ -0,0 +1,28 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionInfo { + private WorkflowExecution execution; + private WorkflowType type; + private long startTime; + private long closeTime; + private WorkflowExecutionCloseStatus closeStatus; + private long historyLength; + private String parentDomainId; + private String parentDomainName; + private long parentInitatedId; + private WorkflowExecution parentExecution; + private long executionTime; + private Memo memo; + private SearchAttributes searchAttributes; + private ResetPoints autoResetPoints; + private String taskList; + private boolean isCron; + private long updateTime; + private Map partitionConfig; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionSignaledEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionSignaledEventAttributes.java new file mode 100644 index 000000000..44caedff5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionSignaledEventAttributes.java @@ -0,0 +1,14 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionSignaledEventAttributes { + private String signalName; + private byte[] input; + private String identity; + private String requestId; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java new file mode 100644 index 000000000..952bdd2e5 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java @@ -0,0 +1,38 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionStartedEventAttributes { + private WorkflowType workflowType; + private String parentWorkflowDomain; + private WorkflowExecution parentWorkflowExecution; + private long parentInitiatedEventId; + private TaskList taskList; + private byte[] input; + private int executionStartToCloseTimeoutSeconds; + private int taskStartToCloseTimeoutSeconds; + private String continuedExecutionRunId; + private ContinueAsNewInitiator initiator; + private String continuedFailureReason; + private byte[] continuedFailureDetails; + private byte[] lastCompletionResult; + private String originalExecutionRunId; + private String identity; + private String firstExecutionRunId; + private long firstScheduledTimeNano; + private RetryPolicy retryPolicy; + private int attempt; + private long expirationTimestamp; + private String cronSchedule; + private int firstDecisionTaskBackoffSeconds; + private Memo memo; + private SearchAttributes searchAttributes; + private ResetPoints prevAutoResetPoints; + private Header header; + private Map partitionConfig; + private String requestId; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionTerminatedEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionTerminatedEventAttributes.java new file mode 100644 index 000000000..e9c09a964 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionTerminatedEventAttributes.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionTerminatedEventAttributes { + private String reason; + private byte[] details; + private String identity; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionTimedOutEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionTimedOutEventAttributes.java new file mode 100644 index 000000000..e4176d35c --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionTimedOutEventAttributes.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowExecutionTimedOutEventAttributes { + private TimeoutType timeoutType; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowIdReusePolicy.java b/src/gen/java/com/uber/cadence/WorkflowIdReusePolicy.java new file mode 100644 index 000000000..b9eb56e7c --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowIdReusePolicy.java @@ -0,0 +1,8 @@ +package com.uber.cadence; + +public enum WorkflowIdReusePolicy { + AllowDuplicateFailedOnly, + AllowDuplicate, + RejectDuplicate, + TerminateIfRunning, +} diff --git a/src/gen/java/com/uber/cadence/WorkflowQuery.java b/src/gen/java/com/uber/cadence/WorkflowQuery.java new file mode 100644 index 000000000..562c9f075 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowQuery.java @@ -0,0 +1,12 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowQuery { + private String queryType; + private byte[] queryArgs; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowQueryResult.java b/src/gen/java/com/uber/cadence/WorkflowQueryResult.java new file mode 100644 index 000000000..9e38de5d9 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowQueryResult.java @@ -0,0 +1,13 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowQueryResult { + private QueryResultType resultType; + private byte[] answer; + private String errorMessage; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowType.java b/src/gen/java/com/uber/cadence/WorkflowType.java new file mode 100644 index 000000000..ce3fd5457 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowType.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowType { + private String name; +} diff --git a/src/gen/java/com/uber/cadence/WorkflowTypeFilter.java b/src/gen/java/com/uber/cadence/WorkflowTypeFilter.java new file mode 100644 index 000000000..d1ded6343 --- /dev/null +++ b/src/gen/java/com/uber/cadence/WorkflowTypeFilter.java @@ -0,0 +1,11 @@ +package com.uber.cadence; + +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowTypeFilter { + private String name; +} diff --git a/src/gen/java/com/uber/cadence/shadower/Constants.java b/src/gen/java/com/uber/cadence/shadower/Constants.java new file mode 100644 index 000000000..d3596d21c --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/Constants.java @@ -0,0 +1,12 @@ +package com.uber.cadence.shadower; + +public class Constants { + public static final String LocalDomainName = "cadence-shadower"; + public static final String TaskList = "cadence-shadower-tl"; + public static final String WorkflowName = "cadence-shadow-workflow"; + public static final String ScanWorkflowActivityName = "scanWorkflowActivity"; + public static final String ReplayWorkflowActivityName = "replayWorkflowActivity"; + public static final String WorkflowIDSuffix = "-shadow-workflow"; + public static final String ErrNonRetryableType = + "com.uber.cadence.internal.shadowing.NonRetryableException"; +} diff --git a/src/gen/java/com/uber/cadence/shadower/ExitCondition.java b/src/gen/java/com/uber/cadence/shadower/ExitCondition.java new file mode 100644 index 000000000..f6ebecd42 --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/ExitCondition.java @@ -0,0 +1,13 @@ +package com.uber.cadence.shadower; + +import com.uber.cadence.*; +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ExitCondition { + private int expirationIntervalInSeconds; + private int shadowCount; +} diff --git a/src/gen/java/com/uber/cadence/shadower/Mode.java b/src/gen/java/com/uber/cadence/shadower/Mode.java new file mode 100644 index 000000000..295a4301f --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/Mode.java @@ -0,0 +1,6 @@ +package com.uber.cadence.shadower; + +public enum Mode { + Normal, + Continuous, +} diff --git a/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java b/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java new file mode 100644 index 000000000..1851eda76 --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java @@ -0,0 +1,13 @@ +package com.uber.cadence.shadower; + +import com.uber.cadence.*; +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ReplayWorkflowActivityParams { + private String domain; + private List executions; +} diff --git a/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityResult.java b/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityResult.java new file mode 100644 index 000000000..78f59199e --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityResult.java @@ -0,0 +1,14 @@ +package com.uber.cadence.shadower; + +import com.uber.cadence.*; +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ReplayWorkflowActivityResult { + private int succeeded; + private int skipped; + private int failed; +} diff --git a/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityParams.java b/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityParams.java new file mode 100644 index 000000000..155f0536e --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityParams.java @@ -0,0 +1,16 @@ +package com.uber.cadence.shadower; + +import com.uber.cadence.*; +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ScanWorkflowActivityParams { + private String domain; + private String workflowQuery; + private byte[] nextPageToken; + private int pageSize; + private double samplingRate; +} diff --git a/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java b/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java new file mode 100644 index 000000000..21cb40b34 --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java @@ -0,0 +1,13 @@ +package com.uber.cadence.shadower; + +import com.uber.cadence.*; +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ScanWorkflowActivityResult { + private List executions; + private byte[] nextPageToken; +} diff --git a/src/gen/java/com/uber/cadence/shadower/WorkflowParams.java b/src/gen/java/com/uber/cadence/shadower/WorkflowParams.java new file mode 100644 index 000000000..b0f95ef62 --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/WorkflowParams.java @@ -0,0 +1,20 @@ +package com.uber.cadence.shadower; + +import com.uber.cadence.*; +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowParams { + private String domain; + private String taskList; + private String workflowQuery; + private byte[] nextPageToken; + private double samplingRate; + private Mode shadowMode; + private ExitCondition exitCondition; + private int concurrency; + private WorkflowResult lastRunResult; +} diff --git a/src/gen/java/com/uber/cadence/shadower/WorkflowResult.java b/src/gen/java/com/uber/cadence/shadower/WorkflowResult.java new file mode 100644 index 000000000..1cdd4cbd3 --- /dev/null +++ b/src/gen/java/com/uber/cadence/shadower/WorkflowResult.java @@ -0,0 +1,14 @@ +package com.uber.cadence.shadower; + +import com.uber.cadence.*; +import java.util.*; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class WorkflowResult { + private int succeeded; + private int skipped; + private int failed; +} From 2a6abb68591b3a98c6aeb3a63bbf09bd12ddd54e Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Wed, 1 Oct 2025 16:20:03 -0700 Subject: [PATCH 13/17] feat (thrift deprecation)!: replace thrift entities with internal ones (#1022) What changed? Migration Guide To construct GRPC Workflow Service use new WorkflowServiceGrpc() instead of new Thrift2ProtoAdapter(IGrpcServiceStubs.newInstance()); Removed TException and now all workflow service method returns CadenceError instead; Replaced thrift generated entities with internal entities (Currently still generated from thrift files but no longer has runtime dependency on thrift); Removed support for thrift entities in default data converter; Why? Java thrift deprecation How did you test it? Unit Test --- .github/workflows/release.yml | 16 - build.gradle | 16 +- docker/github_actions/Dockerfile | 20 +- scripts/install-thrift-locally-osx.sh | 39 - scripts/v4_entity_generator/generator.go | 14 + .../template/java_struct.tmpl | 2 +- .../java/com/uber/cadence/BadBinaries.java | 2 +- ...plyParentClosePolicyRequestAttributes.java | 2 +- ...lyParentClosePolicyResponseAttributes.java | 2 +- ...rStartChildExecutionRequestAttributes.java | 2 +- .../cadence/DescribeHistoryHostResponse.java | 2 +- .../uber/cadence/DescribeQueueResponse.java | 2 +- .../DescribeShardDistributionResponse.java | 2 +- .../cadence/DescribeTaskListResponse.java | 2 +- .../DescribeWorkflowExecutionResponse.java | 4 +- src/gen/java/com/uber/cadence/DomainInfo.java | 2 +- .../DomainReplicationConfiguration.java | 2 +- .../java/com/uber/cadence/FailoverInfo.java | 2 +- .../cadence/GetCrossClusterTasksRequest.java | 2 +- .../cadence/GetCrossClusterTasksResponse.java | 4 +- .../cadence/GetSearchAttributesResponse.java | 2 +- .../cadence/GetTaskListsByDomainResponse.java | 4 +- .../GetWorkflowExecutionHistoryResponse.java | 2 +- src/gen/java/com/uber/cadence/Header.java | 2 +- src/gen/java/com/uber/cadence/History.java | 2 +- .../java/com/uber/cadence/HistoryBranch.java | 2 +- .../cadence/IsolationGroupConfiguration.java | 2 +- ...istArchivedWorkflowExecutionsResponse.java | 2 +- .../ListClosedWorkflowExecutionsResponse.java | 2 +- .../com/uber/cadence/ListDomainsResponse.java | 2 +- .../ListOpenWorkflowExecutionsResponse.java | 2 +- .../ListTaskListPartitionsResponse.java | 4 +- .../ListWorkflowExecutionsResponse.java | 2 +- src/gen/java/com/uber/cadence/Memo.java | 2 +- .../cadence/PollForDecisionTaskResponse.java | 2 +- .../uber/cadence/RegisterDomainRequest.java | 4 +- .../java/com/uber/cadence/ResetPoints.java | 2 +- ...pondCrossClusterTasksCompletedRequest.java | 2 +- ...ondCrossClusterTasksCompletedResponse.java | 2 +- .../RespondDecisionTaskCompletedRequest.java | 4 +- .../RespondDecisionTaskCompletedResponse.java | 2 +- .../java/com/uber/cadence/RetryPolicy.java | 2 +- .../com/uber/cadence/SearchAttributes.java | 2 +- .../java/com/uber/cadence/TaskListStatus.java | 2 +- .../java/com/uber/cadence/TimeoutError.java | 23 + .../com/uber/cadence/UpdateDomainInfo.java | 2 +- .../com/uber/cadence/VersionHistories.java | 2 +- .../java/com/uber/cadence/VersionHistory.java | 2 +- .../uber/cadence/WorkflowExecutionInfo.java | 2 +- ...rkflowExecutionStartedEventAttributes.java | 2 +- .../ReplayWorkflowActivityParams.java | 2 +- .../shadower/ScanWorkflowActivityResult.java | 2 +- .../uber/cadence/client/WorkflowClient.java | 4 +- .../common/WorkflowExecutionHistory.java | 19 +- .../cadence/converter/JsonDataConverter.java | 8 +- .../converter/TBaseTypeAdapterFactory.java | 105 - .../converter/TEnumTypeAdapterFactory.java | 75 - .../internal/common/InternalUtils.java | 9 +- .../common/LocalActivityMarkerData.java | 6 +- .../common/WorkflowExecutionUtils.java | 18 +- .../compatibility/Thrift2ProtoAdapter.java | 1323 ------- .../compatibility/proto/EnumMapper.java | 294 -- .../compatibility/proto/TypeMapper.java | 313 -- .../proto/{ => mappers}/DecisionMapper.java | 37 +- .../proto/mappers/EnumMapper.java | 587 +++ .../proto/mappers/ErrorMapper.java | 121 + .../proto/{ => mappers}/Helpers.java | 26 +- .../mappers}/HistoryMapper.java | 422 +- .../proto/{ => mappers}/RequestMapper.java | 228 +- .../proto/mappers/ResponseMapper.java | 521 +++ .../proto/mappers/TypeMapper.java | 957 +++++ .../compatibility/thrift/EnumMapper.java | 346 -- .../compatibility/thrift/ErrorMapper.java | 114 - .../compatibility/thrift/Helpers.java | 49 - .../compatibility/thrift/ResponseMapper.java | 459 --- .../compatibility/thrift/TypeMapper.java | 700 ---- .../GenericWorkflowClientExternalImpl.java | 58 +- .../ManualActivityCompletionClientImpl.java | 27 +- .../replay/ActivityDecisionContext.java | 5 +- .../cadence/internal/replay/DeciderCache.java | 1 + .../internal/replay/HistoryHelper.java | 5 +- .../internal/replay/MarkerHandler.java | 6 +- .../internal/replay/ReplayDecider.java | 30 +- .../replay/ReplayDecisionTaskHandler.java | 2 +- .../internal/replay/WorkflowContext.java | 9 +- .../replay/WorkflowDecisionContext.java | 7 +- .../shadowing/ReplayWorkflowActivity.java | 4 +- .../shadowing/ScanWorkflowActivity.java | 2 +- .../sync/ActivityExecutionContextImpl.java | 12 +- .../sync/TestActivityEnvironmentInternal.java | 193 +- .../sync/TestWorkflowEnvironmentInternal.java | 192 +- .../internal/sync/WorkflowClientInternal.java | 4 +- .../internal/sync/WorkflowStubImpl.java | 2 +- .../internal/testservice/StateMachines.java | 42 +- .../testservice/TestWorkflowMutableState.java | 37 +- .../TestWorkflowMutableStateImpl.java | 85 +- .../testservice/TestWorkflowService.java | 222 +- .../testservice/TestWorkflowStoreImpl.java | 28 +- .../internal/tracing/TracingPropagator.java | 19 +- .../internal/worker/ActivityPollTask.java | 12 +- .../internal/worker/ActivityPollTaskBase.java | 6 +- .../internal/worker/ActivityWorker.java | 12 +- .../worker/LocalActivityPollTask.java | 4 +- .../LocallyDispatchedActivityPollTask.java | 37 +- .../worker/PollDecisionTaskDispatcher.java | 2 +- .../uber/cadence/internal/worker/Poller.java | 15 +- .../internal/worker/WorkflowPollTask.java | 12 +- .../internal/worker/WorkflowWorker.java | 28 +- .../migration/MigrationIWorkflowService.java | 110 +- .../migration/MigrationInterceptor.java | 12 +- .../serviceclient/AsyncMethodCallback.java | 33 + .../serviceclient/IWorkflowService.java | 754 +++- .../serviceclient/IWorkflowServiceBase.java | 193 +- .../serviceclient/WorkflowServiceGrpc.java | 1395 +++++++ .../WorkflowServiceTChannel.java | 2982 -------------- .../uber/cadence/worker/ShadowingWorker.java | 20 +- .../cadence/workflow/WorkflowInterceptor.java | 2 +- .../uber/cadence/workflow/WorkflowUtils.java | 8 +- .../uber/cadence/FakeWorkflowServiceRule.java | 137 - .../com/uber/cadence/RegisterTestDomain.java | 3 +- .../StartWorkflowExecutionParametersTest.java | 2 +- .../common/WorkflowExecutionUtilsTest.java | 16 +- ...{ThriftObjects.java => ClientObjects.java} | 115 +- .../compatibility/EnumMapperTest.java | 379 -- .../compatibility/MapperTestUtil.java | 72 +- .../Thrift2ProtoAdapterTest.java | 1084 ------ .../{ => mappers}/DecisionMapperTest.java | 61 +- .../proto/mappers/ErrorMapperTest.java | 138 + .../{ => mappers}/RequestMapperTest.java | 117 +- .../proto/{ => mappers}/TypeMapperTest.java | 54 +- .../compatibility/thrift/ErrorMapperTest.java | 187 - .../thrift/HistoryMapperEventTest.java | 338 -- .../thrift/ResponseMapperTest.java | 198 - .../compatibility/thrift/TypeMapperTest.java | 218 -- .../replay/ExecuteActivityParametersTest.java | 2 +- ...erDecisionTaskWithHistoryIteratorTest.java | 15 +- .../replay/ReplayDeciderCacheTests.java | 4 +- .../replay/ReplayDeciderTaskHandlerTests.java | 2 +- .../internal/replay/WorkflowContextTest.java | 5 +- .../shadowing/NonRetryableExceptionTest.java | 2 +- .../sync/SyncDecisionContextTest.java | 10 +- .../TestWorkflowEnvironmentInternalTest.java | 2 +- .../sync/WorkflowClientInternalTest.java | 538 --- .../internal/testing/ActivityTestingTest.java | 12 +- .../testing/WorkflowStickynessTest.java | 36 +- .../internal/testing/WorkflowTestingTest.java | 15 +- .../TestWorkflowServiceDiagnoseTest.java | 2 +- .../internal/tracing/StartWorkflowTest.java | 59 +- .../tracing/TracingPropagatorTest.java | 8 +- .../internal/worker/ActivityPollTaskTest.java | 24 +- ...LocallyDispatchedActivityPollTaskTest.java | 6 +- .../internal/worker/WorkflowPollTaskTest.java | 15 +- .../MigrationIWorkflowServiceTest.java | 91 +- .../WorkflowServiceTChannelDiagnoseTest.java | 59 - .../WorkflowServiceTChannelTest.java | 3410 ----------------- .../uber/cadence/testUtils/HistoryUtils.java | 4 +- .../cadence/testUtils/TestEnvironment.java | 6 +- .../cadence/testUtils/TestServiceUtils.java | 25 +- .../worker/CleanWorkerShutdownTest.java | 13 +- .../cadence/worker/ShadowingWorkerTest.java | 16 +- .../workflow/TestEnvironmentWorkflowTest.java | 2 +- .../workflow/WorkflowMigrationTest.java | 5 +- .../uber/cadence/workflow/WorkflowTest.java | 24 +- 163 files changed, 6027 insertions(+), 15106 deletions(-) delete mode 100755 scripts/install-thrift-locally-osx.sh create mode 100644 src/gen/java/com/uber/cadence/TimeoutError.java delete mode 100644 src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java delete mode 100644 src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/proto/EnumMapper.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/proto/TypeMapper.java rename src/main/java/com/uber/cadence/internal/compatibility/proto/{ => mappers}/DecisionMapper.java (88%) create mode 100644 src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/EnumMapper.java create mode 100644 src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapper.java rename src/main/java/com/uber/cadence/internal/compatibility/proto/{ => mappers}/Helpers.java (78%) rename src/main/java/com/uber/cadence/internal/compatibility/{thrift => proto/mappers}/HistoryMapper.java (71%) rename src/main/java/com/uber/cadence/internal/compatibility/proto/{ => mappers}/RequestMapper.java (78%) create mode 100644 src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ResponseMapper.java create mode 100644 src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/thrift/EnumMapper.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapper.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/thrift/Helpers.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java delete mode 100644 src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java create mode 100644 src/main/java/com/uber/cadence/serviceclient/AsyncMethodCallback.java create mode 100644 src/main/java/com/uber/cadence/serviceclient/WorkflowServiceGrpc.java delete mode 100644 src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java delete mode 100644 src/test/java/com/uber/cadence/FakeWorkflowServiceRule.java rename src/test/java/com/uber/cadence/internal/compatibility/{ThriftObjects.java => ClientObjects.java} (95%) delete mode 100644 src/test/java/com/uber/cadence/internal/compatibility/EnumMapperTest.java delete mode 100644 src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java rename src/test/java/com/uber/cadence/internal/compatibility/proto/{ => mappers}/DecisionMapperTest.java (64%) create mode 100644 src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapperTest.java rename src/test/java/com/uber/cadence/internal/compatibility/proto/{ => mappers}/RequestMapperTest.java (68%) rename src/test/java/com/uber/cadence/internal/compatibility/proto/{ => mappers}/TypeMapperTest.java (74%) delete mode 100644 src/test/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapperTest.java delete mode 100644 src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java delete mode 100644 src/test/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapperTest.java delete mode 100644 src/test/java/com/uber/cadence/internal/compatibility/thrift/TypeMapperTest.java delete mode 100644 src/test/java/com/uber/cadence/internal/sync/WorkflowClientInternalTest.java delete mode 100644 src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java delete mode 100644 src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelTest.java diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e750a79f4..d095ee614 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,22 +24,6 @@ jobs: java-version: '11' distribution: 'temurin' cache: 'gradle' - - name: Install necessary tooling - env: - APACHE_THRIFT_VERSION: 0.9.3 - run: | - apt-get update && apt-get install -y wget gcc make build-essential git - - wget https://archive.apache.org/dist/thrift/${APACHE_THRIFT_VERSION}/thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - tar -xvf thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - rm thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - cd thrift-${APACHE_THRIFT_VERSION}/ && \ - ./configure --enable-libs=no --enable-tests=no --enable-tutorial=no --with-cpp=no --with-c_glib=no --with-java=yes --with-ruby=no --with-erlang=no --with-go=no --with-nodejs=no --with-python=no && \ - make && \ - make install && \ - cd .. && \ - rm -rf thrift-${APACHE_THRIFT_VERSION} - - name: Determine release version id: vars run: | diff --git a/build.gradle b/build.gradle index f57c0add2..45489d18e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,5 @@ buildscript { dependencies { - classpath "gradle.plugin.org.jruyi.gradle:thrift-gradle-plugin:0.4.1" classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.11' } } @@ -34,7 +33,6 @@ repositories { apply plugin: 'com.google.protobuf' apply plugin: 'idea' // IntelliJ plugin to see files generated from protos apply plugin: 'maven' -apply plugin: 'org.jruyi.thrift' apply plugin: 'maven-publish' apply plugin: 'com.github.sherter.google-java-format' @@ -44,7 +42,7 @@ googleJavaFormat { exclude '**/generated-sources/*' } -tasks.googleJavaFormat.dependsOn 'license' +tasks.googleJavaFormat.dependsOn 'licenseFormat' group = 'com.uber.cadence' @@ -77,7 +75,6 @@ dependencies { compile group: 'com.uber.tchannel', name: 'tchannel-core', version: '0.8.30' compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.36' - compile group: 'org.apache.thrift', name: 'libthrift', version: '0.9.3' compile group: 'com.google.code.gson', name: 'gson', version: '2.10' compile group: 'com.uber.m3', name: 'tally-core', version: '0.11.1' compile group: 'com.google.guava', name: 'guava', version: '31.1-jre' @@ -89,6 +86,10 @@ dependencies { compile group: 'com.google.api.grpc', name: 'proto-google-common-protos', version: '2.10.0' compile group: 'com.google.protobuf', name: 'protobuf-java-util', version: '3.21.9' compile group: 'com.google.oauth-client', name: 'google-oauth-client', version: '1.35.0' + compileOnly 'org.projectlombok:lombok:1.18.30' + annotationProcessor 'org.projectlombok:lombok:1.18.30' + testCompileOnly 'org.projectlombok:lombok:1.18.30' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.30' implementation 'io.grpc:grpc-netty-shaded:1.54.2' implementation 'io.grpc:grpc-protobuf:1.54.2' @@ -126,12 +127,6 @@ task updateDlsSubmodule(type: Exec) { commandLine 'git', 'submodule', 'update' } -compileThrift { - dependsOn updateDlsSubmodule - verbose true - sourceItems "${projectDir}/src/main/idls/thrift/cadence.thrift","${projectDir}/src/main/idls/thrift/shared.thrift","${projectDir}/src/main/idls/thrift/shadower.thrift" -} - sourceSets { main { proto { @@ -139,6 +134,7 @@ sourceSets { } java { srcDir 'src/main' + srcDir 'src/gen/java' } } } diff --git a/docker/github_actions/Dockerfile b/docker/github_actions/Dockerfile index 80d770d4a..bd2f9cdaf 100644 --- a/docker/github_actions/Dockerfile +++ b/docker/github_actions/Dockerfile @@ -3,28 +3,10 @@ # commits to that branch and one of them can break the build FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine -# Apache Thrift version -ENV APACHE_THRIFT_VERSION=0.9.3 - # Install dependencies using apk -RUN apk update && apk add --virtual wget ca-certificates wget && apk add --virtual build-dependencies build-base gcc +RUN apk update && apk add --virtual wget ca-certificates wget # Git is needed in order to update the dls submodule RUN apk add git libstdc++ bash curl -# Compile source -RUN set -ex ;\ - wget https://archive.apache.org/dist/thrift/${APACHE_THRIFT_VERSION}/thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - tar -xvf thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - rm thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - cd thrift-${APACHE_THRIFT_VERSION}/ && \ - ./configure --enable-libs=no --enable-tests=no --enable-tutorial=no --with-cpp=no --with-c_glib=no --with-java=yes --with-ruby=no --with-erlang=no --with-go=no --with-nodejs=no --with-python=no && \ - make && \ - make install && \ - cd .. && \ - rm -rf thrift-${APACHE_THRIFT_VERSION} - -# Cleanup packages and remove cache -RUN apk del build-dependencies wget && rm -rf /var/cache/apk/* - RUN mkdir /cadence-java-client WORKDIR /cadence-java-client diff --git a/scripts/install-thrift-locally-osx.sh b/scripts/install-thrift-locally-osx.sh deleted file mode 100755 index 3b89a2624..000000000 --- a/scripts/install-thrift-locally-osx.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -e - -cd $(dirname $0)/.. - -if [[ ! -d .dependencies ]]; then - mkdir .dependencies -fi - -cd .dependencies -rm -rf thrift -mkdir thrift -cd thrift - -APACHE_THRIFT_VERSION=0.9.3 - -brew install bison - -# macs have an old versiion of bison hanging around typically -# so override it by using the brew version in PATH -export PATH="/opt/homebrew/opt/bison/bin:$PATH" - -wget https://archive.apache.org/dist/thrift/${APACHE_THRIFT_VERSION}/thrift-${APACHE_THRIFT_VERSION}.tar.gz && \ - -tar -xvf thrift-${APACHE_THRIFT_VERSION}.tar.gz -rm thrift-${APACHE_THRIFT_VERSION}.tar.gz -cd thrift-${APACHE_THRIFT_VERSION}/ - -./configure --enable-libs=no --enable-tests=no --enable-tutorial=no --with-cpp=no --with-c_glib=no --with-java=yes --with-ruby=no --with-erlang=no --with-go=no --with-nodejs=no --with-python=no && \ - -make -echo "" -echo "thrift expects to be globally installed :/" -echo "asking do do with sudo to install to /usr/local/bin" -echo "" -sudo make install && \ -cd .. && \ -rm -rf thrift-${APACHE_THRIFT_VERSION} -thrift --version -echo "done" diff --git a/scripts/v4_entity_generator/generator.go b/scripts/v4_entity_generator/generator.go index de92c2740..59f39c231 100644 --- a/scripts/v4_entity_generator/generator.go +++ b/scripts/v4_entity_generator/generator.go @@ -19,6 +19,7 @@ const ( type Field struct { Name string Type string + Initializer string } type TemplateEntity struct { @@ -119,9 +120,22 @@ func (g *Generator) generateStruct(v *ast.Struct, outputDir string, packageName return fmt.Errorf("failed to map field type: %w", err) } + initializer := "" + switch field.Type.(type) { + case ast.SetType: + initializer = " = new HashSet<>();" + case ast.ListType: + initializer = " = new ArrayList<>();" + case ast.MapType: + initializer = " = new HashMap<>();" + } + + fmt.Println(field.Name, initializer, typeStr) + fields = append(fields, Field{ Name: field.Name, Type: typeStr, + Initializer: initializer, }) } diff --git a/scripts/v4_entity_generator/template/java_struct.tmpl b/scripts/v4_entity_generator/template/java_struct.tmpl index b9d448f40..df8f3f6f1 100644 --- a/scripts/v4_entity_generator/template/java_struct.tmpl +++ b/scripts/v4_entity_generator/template/java_struct.tmpl @@ -11,6 +11,6 @@ import {{.}}; @Accessors(chain = true) public class {{.ClassName}} { {{- range .Fields}} - private {{.Type}} {{.Name}}; + private {{.Type}} {{.Name}}{{.Initializer}}; {{- end}} } diff --git a/src/gen/java/com/uber/cadence/BadBinaries.java b/src/gen/java/com/uber/cadence/BadBinaries.java index 490f93018..96dbfbefb 100644 --- a/src/gen/java/com/uber/cadence/BadBinaries.java +++ b/src/gen/java/com/uber/cadence/BadBinaries.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class BadBinaries { - private Map binaries; + private Map binaries = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java index f4263f389..120d5666a 100644 --- a/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java +++ b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyRequestAttributes.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class CrossClusterApplyParentClosePolicyRequestAttributes { - private List children; + private List children = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java index 1c5275a49..0fde60e52 100644 --- a/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java +++ b/src/gen/java/com/uber/cadence/CrossClusterApplyParentClosePolicyResponseAttributes.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class CrossClusterApplyParentClosePolicyResponseAttributes { - private List childrenStatus; + private List childrenStatus = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java b/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java index 9913a741b..19ec37683 100644 --- a/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java +++ b/src/gen/java/com/uber/cadence/CrossClusterStartChildExecutionRequestAttributes.java @@ -12,5 +12,5 @@ public class CrossClusterStartChildExecutionRequestAttributes { private long initiatedEventID; private StartChildWorkflowExecutionInitiatedEventAttributes initiatedEventAttributes; private String targetRunID; - private Map partitionConfig; + private Map partitionConfig = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java b/src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java index e7e2ec5f9..cec93b765 100644 --- a/src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java +++ b/src/gen/java/com/uber/cadence/DescribeHistoryHostResponse.java @@ -8,7 +8,7 @@ @Accessors(chain = true) public class DescribeHistoryHostResponse { private int numberOfShards; - private List shardIDs; + private List shardIDs = new ArrayList<>();; private DomainCacheInfo domainCache; private String shardControllerStatus; private String address; diff --git a/src/gen/java/com/uber/cadence/DescribeQueueResponse.java b/src/gen/java/com/uber/cadence/DescribeQueueResponse.java index b1c543e3a..af5efc15e 100644 --- a/src/gen/java/com/uber/cadence/DescribeQueueResponse.java +++ b/src/gen/java/com/uber/cadence/DescribeQueueResponse.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class DescribeQueueResponse { - private List processingQueueStates; + private List processingQueueStates = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java b/src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java index 8e985d592..5abd918b4 100644 --- a/src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java +++ b/src/gen/java/com/uber/cadence/DescribeShardDistributionResponse.java @@ -8,5 +8,5 @@ @Accessors(chain = true) public class DescribeShardDistributionResponse { private int numberOfShards; - private Map shards; + private Map shards = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/DescribeTaskListResponse.java b/src/gen/java/com/uber/cadence/DescribeTaskListResponse.java index 823fcfc77..a7bbd9b05 100644 --- a/src/gen/java/com/uber/cadence/DescribeTaskListResponse.java +++ b/src/gen/java/com/uber/cadence/DescribeTaskListResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class DescribeTaskListResponse { - private List pollers; + private List pollers = new ArrayList<>();; private TaskListStatus taskListStatus; } diff --git a/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java b/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java index 3761915fe..214d7abc0 100644 --- a/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java +++ b/src/gen/java/com/uber/cadence/DescribeWorkflowExecutionResponse.java @@ -9,7 +9,7 @@ public class DescribeWorkflowExecutionResponse { private WorkflowExecutionConfiguration executionConfiguration; private WorkflowExecutionInfo workflowExecutionInfo; - private List pendingActivities; - private List pendingChildren; + private List pendingActivities = new ArrayList<>();; + private List pendingChildren = new ArrayList<>();; private PendingDecisionInfo pendingDecision; } diff --git a/src/gen/java/com/uber/cadence/DomainInfo.java b/src/gen/java/com/uber/cadence/DomainInfo.java index 4e236c771..48c8fb445 100644 --- a/src/gen/java/com/uber/cadence/DomainInfo.java +++ b/src/gen/java/com/uber/cadence/DomainInfo.java @@ -11,6 +11,6 @@ public class DomainInfo { private DomainStatus status; private String description; private String ownerEmail; - private Map data; + private Map data = new HashMap<>();; private String uuid; } diff --git a/src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java b/src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java index d4650de5c..40770dae2 100644 --- a/src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java +++ b/src/gen/java/com/uber/cadence/DomainReplicationConfiguration.java @@ -8,5 +8,5 @@ @Accessors(chain = true) public class DomainReplicationConfiguration { private String activeClusterName; - private List clusters; + private List clusters = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/FailoverInfo.java b/src/gen/java/com/uber/cadence/FailoverInfo.java index cb1f52495..803ec1eb1 100644 --- a/src/gen/java/com/uber/cadence/FailoverInfo.java +++ b/src/gen/java/com/uber/cadence/FailoverInfo.java @@ -11,5 +11,5 @@ public class FailoverInfo { private long failoverStartTimestamp; private long failoverExpireTimestamp; private int completedShardCount; - private List pendingShards; + private List pendingShards = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java b/src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java index f7662365e..f332c6b2e 100644 --- a/src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java +++ b/src/gen/java/com/uber/cadence/GetCrossClusterTasksRequest.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class GetCrossClusterTasksRequest { - private List shardIDs; + private List shardIDs = new ArrayList<>();; private String targetCluster; } diff --git a/src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java b/src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java index ee056bd0a..325308dd1 100644 --- a/src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java +++ b/src/gen/java/com/uber/cadence/GetCrossClusterTasksResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class GetCrossClusterTasksResponse { - private Map> tasksByShard; - private Map failedCauseByShard; + private Map> tasksByShard = new HashMap<>();; + private Map failedCauseByShard = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java b/src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java index f03df08ec..2686465a5 100644 --- a/src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java +++ b/src/gen/java/com/uber/cadence/GetSearchAttributesResponse.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class GetSearchAttributesResponse { - private Map keys; + private Map keys = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java b/src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java index aaf886b6e..83b35e0f5 100644 --- a/src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java +++ b/src/gen/java/com/uber/cadence/GetTaskListsByDomainResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class GetTaskListsByDomainResponse { - private Map decisionTaskListMap; - private Map activityTaskListMap; + private Map decisionTaskListMap = new HashMap<>();; + private Map activityTaskListMap = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java b/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java index ab983713b..615025f7c 100644 --- a/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java +++ b/src/gen/java/com/uber/cadence/GetWorkflowExecutionHistoryResponse.java @@ -8,7 +8,7 @@ @Accessors(chain = true) public class GetWorkflowExecutionHistoryResponse { private History history; - private List rawHistory; + private List rawHistory = new ArrayList<>();; private byte[] nextPageToken; private boolean archived; } diff --git a/src/gen/java/com/uber/cadence/Header.java b/src/gen/java/com/uber/cadence/Header.java index f7d7c9e99..b974601df 100644 --- a/src/gen/java/com/uber/cadence/Header.java +++ b/src/gen/java/com/uber/cadence/Header.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class Header { - private Map fields; + private Map fields = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/History.java b/src/gen/java/com/uber/cadence/History.java index 57af7fd55..f502c72af 100644 --- a/src/gen/java/com/uber/cadence/History.java +++ b/src/gen/java/com/uber/cadence/History.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class History { - private List events; + private List events = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/HistoryBranch.java b/src/gen/java/com/uber/cadence/HistoryBranch.java index 12c3ade4e..9d67dfde5 100644 --- a/src/gen/java/com/uber/cadence/HistoryBranch.java +++ b/src/gen/java/com/uber/cadence/HistoryBranch.java @@ -9,5 +9,5 @@ public class HistoryBranch { private String treeID; private String branchID; - private List ancestors; + private List ancestors = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java b/src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java index 40bb07973..6c2856d03 100644 --- a/src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java +++ b/src/gen/java/com/uber/cadence/IsolationGroupConfiguration.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class IsolationGroupConfiguration { - private List isolationGroups; + private List isolationGroups = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java index 7ccfa1075..527606215 100644 --- a/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java +++ b/src/gen/java/com/uber/cadence/ListArchivedWorkflowExecutionsResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class ListArchivedWorkflowExecutionsResponse { - private List executions; + private List executions = new ArrayList<>();; private byte[] nextPageToken; } diff --git a/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java index 7b9aa1752..931205407 100644 --- a/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java +++ b/src/gen/java/com/uber/cadence/ListClosedWorkflowExecutionsResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class ListClosedWorkflowExecutionsResponse { - private List executions; + private List executions = new ArrayList<>();; private byte[] nextPageToken; } diff --git a/src/gen/java/com/uber/cadence/ListDomainsResponse.java b/src/gen/java/com/uber/cadence/ListDomainsResponse.java index 399dd2401..aa03d9001 100644 --- a/src/gen/java/com/uber/cadence/ListDomainsResponse.java +++ b/src/gen/java/com/uber/cadence/ListDomainsResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class ListDomainsResponse { - private List domains; + private List domains = new ArrayList<>();; private byte[] nextPageToken; } diff --git a/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java index 4877d9f32..3c8d44150 100644 --- a/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java +++ b/src/gen/java/com/uber/cadence/ListOpenWorkflowExecutionsResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class ListOpenWorkflowExecutionsResponse { - private List executions; + private List executions = new ArrayList<>();; private byte[] nextPageToken; } diff --git a/src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java b/src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java index 09cc67233..c311c2de5 100644 --- a/src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java +++ b/src/gen/java/com/uber/cadence/ListTaskListPartitionsResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class ListTaskListPartitionsResponse { - private List activityTaskListPartitions; - private List decisionTaskListPartitions; + private List activityTaskListPartitions = new ArrayList<>();; + private List decisionTaskListPartitions = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java b/src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java index ecc2eb46e..82d47671c 100644 --- a/src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java +++ b/src/gen/java/com/uber/cadence/ListWorkflowExecutionsResponse.java @@ -7,6 +7,6 @@ @Data @Accessors(chain = true) public class ListWorkflowExecutionsResponse { - private List executions; + private List executions = new ArrayList<>();; private byte[] nextPageToken; } diff --git a/src/gen/java/com/uber/cadence/Memo.java b/src/gen/java/com/uber/cadence/Memo.java index e109857cc..ccc5f554f 100644 --- a/src/gen/java/com/uber/cadence/Memo.java +++ b/src/gen/java/com/uber/cadence/Memo.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class Memo { - private Map fields; + private Map fields = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java b/src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java index 365d56d9e..88ecda1ff 100644 --- a/src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java +++ b/src/gen/java/com/uber/cadence/PollForDecisionTaskResponse.java @@ -20,7 +20,7 @@ public class PollForDecisionTaskResponse { private TaskList WorkflowExecutionTaskList; private long scheduledTimestamp; private long startedTimestamp; - private Map queries; + private Map queries = new HashMap<>();; private long nextEventId; private long totalHistoryBytes; private AutoConfigHint autoConfigHint; diff --git a/src/gen/java/com/uber/cadence/RegisterDomainRequest.java b/src/gen/java/com/uber/cadence/RegisterDomainRequest.java index 36d0b1093..1958fb21f 100644 --- a/src/gen/java/com/uber/cadence/RegisterDomainRequest.java +++ b/src/gen/java/com/uber/cadence/RegisterDomainRequest.java @@ -12,9 +12,9 @@ public class RegisterDomainRequest { private String ownerEmail; private int workflowExecutionRetentionPeriodInDays; private boolean emitMetric; - private List clusters; + private List clusters = new ArrayList<>();; private String activeClusterName; - private Map data; + private Map data = new HashMap<>();; private String securityToken; private boolean isGlobalDomain; private ArchivalStatus historyArchivalStatus; diff --git a/src/gen/java/com/uber/cadence/ResetPoints.java b/src/gen/java/com/uber/cadence/ResetPoints.java index e01d21b61..393a9d347 100644 --- a/src/gen/java/com/uber/cadence/ResetPoints.java +++ b/src/gen/java/com/uber/cadence/ResetPoints.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class ResetPoints { - private List points; + private List points = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java index f366f9406..aede04feb 100644 --- a/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java +++ b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedRequest.java @@ -9,6 +9,6 @@ public class RespondCrossClusterTasksCompletedRequest { private int shardID; private String targetCluster; - private List taskResponses; + private List taskResponses = new ArrayList<>();; private boolean fetchNewTasks; } diff --git a/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java index 0d53f65e6..f1bd7c877 100644 --- a/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java +++ b/src/gen/java/com/uber/cadence/RespondCrossClusterTasksCompletedResponse.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class RespondCrossClusterTasksCompletedResponse { - private List tasks; + private List tasks = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java index 523b6a162..8197e6154 100644 --- a/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java +++ b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedRequest.java @@ -8,12 +8,12 @@ @Accessors(chain = true) public class RespondDecisionTaskCompletedRequest { private byte[] taskToken; - private List decisions; + private List decisions = new ArrayList<>();; private byte[] executionContext; private String identity; private StickyExecutionAttributes stickyAttributes; private boolean returnNewDecisionTask; private boolean forceCreateNewDecisionTask; private String binaryChecksum; - private Map queryResults; + private Map queryResults = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java index b787abd71..0306b5fa7 100644 --- a/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java +++ b/src/gen/java/com/uber/cadence/RespondDecisionTaskCompletedResponse.java @@ -8,5 +8,5 @@ @Accessors(chain = true) public class RespondDecisionTaskCompletedResponse { private PollForDecisionTaskResponse decisionTask; - private Map activitiesToDispatchLocally; + private Map activitiesToDispatchLocally = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/RetryPolicy.java b/src/gen/java/com/uber/cadence/RetryPolicy.java index 6ab4fde6f..e9c270e35 100644 --- a/src/gen/java/com/uber/cadence/RetryPolicy.java +++ b/src/gen/java/com/uber/cadence/RetryPolicy.java @@ -11,6 +11,6 @@ public class RetryPolicy { private double backoffCoefficient; private int maximumIntervalInSeconds; private int maximumAttempts; - private List nonRetriableErrorReasons; + private List nonRetriableErrorReasons = new ArrayList<>();; private int expirationIntervalInSeconds; } diff --git a/src/gen/java/com/uber/cadence/SearchAttributes.java b/src/gen/java/com/uber/cadence/SearchAttributes.java index 6356fc62d..078041df4 100644 --- a/src/gen/java/com/uber/cadence/SearchAttributes.java +++ b/src/gen/java/com/uber/cadence/SearchAttributes.java @@ -7,5 +7,5 @@ @Data @Accessors(chain = true) public class SearchAttributes { - private Map indexedFields; + private Map indexedFields = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/TaskListStatus.java b/src/gen/java/com/uber/cadence/TaskListStatus.java index 4bf3db53f..3bac49d5b 100644 --- a/src/gen/java/com/uber/cadence/TaskListStatus.java +++ b/src/gen/java/com/uber/cadence/TaskListStatus.java @@ -12,6 +12,6 @@ public class TaskListStatus { private long ackLevel; private double ratePerSecond; private TaskIDBlock taskIDBlock; - private Map isolationGroupMetrics; + private Map isolationGroupMetrics = new HashMap<>();; private double newTasksPerSecond; } diff --git a/src/gen/java/com/uber/cadence/TimeoutError.java b/src/gen/java/com/uber/cadence/TimeoutError.java new file mode 100644 index 000000000..5b3d4d182 --- /dev/null +++ b/src/gen/java/com/uber/cadence/TimeoutError.java @@ -0,0 +1,23 @@ +package com.uber.cadence; + +import lombok.experimental.Accessors; + +@Accessors(chain = true) +public class TimeoutError extends CadenceError { + + public TimeoutError() { + super(); + } + + public TimeoutError(String message) { + super(message); + } + + public TimeoutError(String message, Throwable cause) { + super(message, cause); + } + + public TimeoutError(Throwable cause) { + super(cause); + } +} diff --git a/src/gen/java/com/uber/cadence/UpdateDomainInfo.java b/src/gen/java/com/uber/cadence/UpdateDomainInfo.java index 805932fa7..8c23aa909 100644 --- a/src/gen/java/com/uber/cadence/UpdateDomainInfo.java +++ b/src/gen/java/com/uber/cadence/UpdateDomainInfo.java @@ -9,5 +9,5 @@ public class UpdateDomainInfo { private String description; private String ownerEmail; - private Map data; + private Map data = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/VersionHistories.java b/src/gen/java/com/uber/cadence/VersionHistories.java index f213a88d1..e9074d1fd 100644 --- a/src/gen/java/com/uber/cadence/VersionHistories.java +++ b/src/gen/java/com/uber/cadence/VersionHistories.java @@ -8,5 +8,5 @@ @Accessors(chain = true) public class VersionHistories { private int currentVersionHistoryIndex; - private List histories; + private List histories = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/VersionHistory.java b/src/gen/java/com/uber/cadence/VersionHistory.java index 84612a4d3..6b43690a0 100644 --- a/src/gen/java/com/uber/cadence/VersionHistory.java +++ b/src/gen/java/com/uber/cadence/VersionHistory.java @@ -8,5 +8,5 @@ @Accessors(chain = true) public class VersionHistory { private byte[] branchToken; - private List items; + private List items = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java b/src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java index a892afb59..0226aa150 100644 --- a/src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionInfo.java @@ -24,5 +24,5 @@ public class WorkflowExecutionInfo { private String taskList; private boolean isCron; private long updateTime; - private Map partitionConfig; + private Map partitionConfig = new HashMap<>();; } diff --git a/src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java b/src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java index 952bdd2e5..e1f9d5f24 100644 --- a/src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java +++ b/src/gen/java/com/uber/cadence/WorkflowExecutionStartedEventAttributes.java @@ -33,6 +33,6 @@ public class WorkflowExecutionStartedEventAttributes { private SearchAttributes searchAttributes; private ResetPoints prevAutoResetPoints; private Header header; - private Map partitionConfig; + private Map partitionConfig = new HashMap<>();; private String requestId; } diff --git a/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java b/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java index 1851eda76..dc06e32b6 100644 --- a/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java +++ b/src/gen/java/com/uber/cadence/shadower/ReplayWorkflowActivityParams.java @@ -9,5 +9,5 @@ @Accessors(chain = true) public class ReplayWorkflowActivityParams { private String domain; - private List executions; + private List executions = new ArrayList<>();; } diff --git a/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java b/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java index 21cb40b34..b6dacd389 100644 --- a/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java +++ b/src/gen/java/com/uber/cadence/shadower/ScanWorkflowActivityResult.java @@ -8,6 +8,6 @@ @Data @Accessors(chain = true) public class ScanWorkflowActivityResult { - private List executions; + private List executions = new ArrayList<>();; private byte[] nextPageToken; } diff --git a/src/main/java/com/uber/cadence/client/WorkflowClient.java b/src/main/java/com/uber/cadence/client/WorkflowClient.java index dffa3c7a9..effe77262 100644 --- a/src/main/java/com/uber/cadence/client/WorkflowClient.java +++ b/src/main/java/com/uber/cadence/client/WorkflowClient.java @@ -17,6 +17,7 @@ package com.uber.cadence.client; +import com.uber.cadence.CadenceError; import com.uber.cadence.RefreshWorkflowTasksRequest; import com.uber.cadence.WorkflowExecution; import com.uber.cadence.activity.Activity; @@ -35,7 +36,6 @@ import com.uber.cadence.workflow.WorkflowMethod; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import org.apache.thrift.TException; /** * Client to the Cadence service used to start and query workflows by external processes. Also it @@ -260,7 +260,7 @@ WorkflowStub newUntypedWorkflowStub( * @param refreshWorkflowTasksRequest that contains WorkflowID and RunID of the started workflow. */ void refreshWorkflowTasks(RefreshWorkflowTasksRequest refreshWorkflowTasksRequest) - throws TException; + throws CadenceError; /** * Executes zero argument workflow with void return type diff --git a/src/main/java/com/uber/cadence/common/WorkflowExecutionHistory.java b/src/main/java/com/uber/cadence/common/WorkflowExecutionHistory.java index 30f27b187..751f80d05 100644 --- a/src/main/java/com/uber/cadence/common/WorkflowExecutionHistory.java +++ b/src/main/java/com/uber/cadence/common/WorkflowExecutionHistory.java @@ -32,7 +32,6 @@ import com.uber.cadence.HistoryEvent; import com.uber.cadence.WorkflowExecution; import java.lang.reflect.Type; -import java.nio.ByteBuffer; import java.util.Base64; import java.util.List; @@ -47,7 +46,7 @@ public WorkflowExecutionHistory(List events) { public static WorkflowExecutionHistory fromJson(String serialized) { GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(ByteBuffer.class, new ByteBufferJsonDeserializer()); + gsonBuilder.registerTypeAdapter(byte[].class, new ByteArrayJsonDeserializer()); Gson gson = gsonBuilder.create(); Type eventsType = new TypeToken>() {}.getType(); List events = gson.fromJson(serialized, eventsType); @@ -85,21 +84,21 @@ public List getEvents() { return events; } - private static final class ByteBufferJsonDeserializer - implements JsonDeserializer, JsonSerializer { + private static final class ByteArrayJsonDeserializer + implements JsonDeserializer, JsonSerializer { @Override - public JsonElement serialize(ByteBuffer value, Type type, JsonSerializationContext ctx) { - if (value.arrayOffset() > 0) { - throw new IllegalArgumentException("non zero value array offset: " + value.arrayOffset()); + public JsonElement serialize(byte[] value, Type type, JsonSerializationContext ctx) { + if (value.length > 0) { + throw new IllegalArgumentException("non zero value array offset: " + value.length); } - return new JsonPrimitive(Base64.getEncoder().encodeToString(value.array())); + return new JsonPrimitive(Base64.getEncoder().encodeToString(value)); } @Override - public ByteBuffer deserialize(JsonElement e, Type type, JsonDeserializationContext ctx) + public byte[] deserialize(JsonElement e, Type type, JsonDeserializationContext ctx) throws JsonParseException { - return ByteBuffer.wrap(Base64.getDecoder().decode(e.getAsString())); + return Base64.getDecoder().decode(e.getAsString()); } } } diff --git a/src/main/java/com/uber/cadence/converter/JsonDataConverter.java b/src/main/java/com/uber/cadence/converter/JsonDataConverter.java index aed0c91e5..26ff1a615 100644 --- a/src/main/java/com/uber/cadence/converter/JsonDataConverter.java +++ b/src/main/java/com/uber/cadence/converter/JsonDataConverter.java @@ -33,12 +33,10 @@ import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; import java.util.function.Function; -import org.apache.thrift.protocol.TJSONProtocol; /** * Implements conversion through GSON JSON processor. To extend use {@link - * #JsonDataConverter(Function)} constructor. Thrift structures are converted using {@link - * TJSONProtocol}. When using thrift only one argument of a method is expected. + * #JsonDataConverter(Function)} constructor. * * @author fateev */ @@ -78,9 +76,7 @@ public JsonDataConverter(Function builderInterceptor) GsonBuilder gsonBuilder = new GsonBuilder() .serializeNulls() - .registerTypeAdapterFactory(new ThrowableTypeAdapterFactory()) - .registerTypeAdapterFactory(new TBaseTypeAdapterFactory(metricsScope)) - .registerTypeAdapterFactory(new TEnumTypeAdapterFactory()); + .registerTypeAdapterFactory(new ThrowableTypeAdapterFactory()); GsonBuilder intercepted = builderInterceptor.apply(gsonBuilder); gson = intercepted.create(); } diff --git a/src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java b/src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java deleted file mode 100644 index 5fcb32cd0..000000000 --- a/src/main/java/com/uber/cadence/converter/TBaseTypeAdapterFactory.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.converter; - -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import com.uber.m3.tally.Scope; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import org.apache.thrift.TBase; -import org.apache.thrift.TDeserializer; -import org.apache.thrift.TException; -import org.apache.thrift.TSerializer; -import org.apache.thrift.protocol.TJSONProtocol; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Special handling of TBase message serialization and deserialization. This is to support for - * inline Thrift fields in Java class. - */ -public class TBaseTypeAdapterFactory implements TypeAdapterFactory { - - private static final Logger logger = LoggerFactory.getLogger(TBaseTypeAdapterFactory.class); - private final Scope metricsScope; - - public TBaseTypeAdapterFactory(Scope metricsScope) { - this.metricsScope = metricsScope; - } - - @Override - public TypeAdapter create(Gson gson, TypeToken typeToken) { - // this class only serializes 'TBase' and its subtypes - if (!TBase.class.isAssignableFrom(typeToken.getRawType())) { - return null; - } - TypeAdapter result = - new TypeAdapter() { - @Override - public void write(JsonWriter jsonWriter, T value) throws IOException { - if (metricsScope != null) { - metricsScope.counter("tbase_message_write").inc(1); - } - try { - String result = - newThriftSerializer().toString((TBase) value, StandardCharsets.UTF_8.name()); - jsonWriter.value(result); - logger.warn( - "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}", - result.getClass().getName()); - } catch (TException e) { - throw new DataConverterException("Failed to serialize TBase", e); - } - } - - @Override - public T read(JsonReader jsonReader) throws IOException { - if (metricsScope != null) { - metricsScope.counter("tbase_message_read").inc(1); - } - String value = jsonReader.nextString(); - try { - @SuppressWarnings("unchecked") - T instance = (T) typeToken.getRawType().getConstructor().newInstance(); - newThriftDeserializer() - .deserialize((TBase) instance, value, StandardCharsets.UTF_8.name()); - logger.warn( - "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}", - instance.getClass().getName()); - return instance; - } catch (Exception e) { - throw new DataConverterException("Failed to deserialize TBase", e); - } - } - }.nullSafe(); - return result; - } - - private static TSerializer newThriftSerializer() { - return new TSerializer(new TJSONProtocol.Factory()); - } - - private static TDeserializer newThriftDeserializer() { - return new TDeserializer(new TJSONProtocol.Factory()); - } -} diff --git a/src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java b/src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java deleted file mode 100644 index 63f02ba8d..000000000 --- a/src/main/java/com/uber/cadence/converter/TEnumTypeAdapterFactory.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.converter; - -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; -import com.google.gson.TypeAdapterFactory; -import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import java.io.IOException; -import java.lang.reflect.Method; -import org.apache.thrift.TEnum; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Special handling of TEnum serialization and deserialization. This is to support for inline TEnum - * fields in Java class. The default gson serde serialize the TEnum with its String name - * representation, this adapter serialize the TEnum class with its int representation. - */ -public class TEnumTypeAdapterFactory implements TypeAdapterFactory { - - private static final Logger logger = LoggerFactory.getLogger(TEnumTypeAdapterFactory.class); - - @Override - public TypeAdapter create(Gson gson, TypeToken typeToken) { - // this class only serializes 'TEnum' and its subtypes - if (!TEnum.class.isAssignableFrom(typeToken.getRawType())) { - return null; - } - TypeAdapter result = - new TypeAdapter() { - @Override - public void write(JsonWriter jsonWriter, T value) throws IOException { - logger.warn( - "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}", - value.getClass().getName()); - jsonWriter.value(((TEnum) value).getValue()); - } - - @Override - public T read(JsonReader jsonReader) throws IOException { - int value = jsonReader.nextInt(); - try { - Method m = (typeToken.getRawType().getDeclaredMethod("findByValue", Integer.TYPE)); - @SuppressWarnings("unchecked") - T instance = (T) m.invoke(null, value); - logger.warn( - "Thrift message will no longer be supported for data conversion in cadence-java-client V4, payload class name {}", - instance.getClass().getName()); - return instance; - } catch (Exception e) { - throw new DataConverterException("Failed to deserilize TEnum", e); - } - } - }.nullSafe(); - return result; - } -} diff --git a/src/main/java/com/uber/cadence/internal/common/InternalUtils.java b/src/main/java/com/uber/cadence/internal/common/InternalUtils.java index e5b4b330b..51c7cfabe 100644 --- a/src/main/java/com/uber/cadence/internal/common/InternalUtils.java +++ b/src/main/java/com/uber/cadence/internal/common/InternalUtils.java @@ -27,7 +27,6 @@ import com.uber.cadence.internal.worker.Shutdownable; import com.uber.cadence.workflow.WorkflowMethod; import java.lang.reflect.Method; -import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -135,10 +134,10 @@ public static Object getValueOrDefault(Object value, Class valueClass) { public static Memo convertMapToMemo(Map memo) { DataConverter converter = JsonDataConverter.getInstance(); - Map mapOfByteBuffer = new HashMap<>(); + Map mapOfByteBuffer = new HashMap<>(); memo.forEach( (key, value) -> { - mapOfByteBuffer.put(key, ByteBuffer.wrap(converter.toData(value))); + mapOfByteBuffer.put(key, converter.toData(value)); }); return new Memo().setFields(mapOfByteBuffer); } @@ -146,10 +145,10 @@ public static Memo convertMapToMemo(Map memo) { public static SearchAttributes convertMapToSearchAttributes( Map searchAttributes) { DataConverter converter = JsonDataConverter.getInstance(); - Map mapOfByteBuffer = new HashMap<>(); + Map mapOfByteBuffer = new HashMap<>(); searchAttributes.forEach( (key, value) -> { - mapOfByteBuffer.put(key, ByteBuffer.wrap(converter.toData(value))); + mapOfByteBuffer.put(key, converter.toData(value)); }); return new SearchAttributes().setIndexedFields(mapOfByteBuffer); } diff --git a/src/main/java/com/uber/cadence/internal/common/LocalActivityMarkerData.java b/src/main/java/com/uber/cadence/internal/common/LocalActivityMarkerData.java index f2367eaba..fe2ca67a0 100644 --- a/src/main/java/com/uber/cadence/internal/common/LocalActivityMarkerData.java +++ b/src/main/java/com/uber/cadence/internal/common/LocalActivityMarkerData.java @@ -25,7 +25,6 @@ import com.uber.cadence.RespondActivityTaskFailedRequest; import com.uber.cadence.converter.DataConverter; import com.uber.m3.util.ImmutableMap; -import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.time.Duration; @@ -190,14 +189,13 @@ public boolean getIsCancelled() { public Header getHeader(DataConverter converter) { byte[] headerData = converter.toData(headers); Header header = new Header(); - header.setFields(ImmutableMap.of(LOCAL_ACTIVITY_HEADER_KEY, ByteBuffer.wrap(headerData))); + header.setFields(ImmutableMap.of(LOCAL_ACTIVITY_HEADER_KEY, headerData)); return header; } public static LocalActivityMarkerData fromEventAttributes( MarkerRecordedEventAttributes attributes, DataConverter converter) { - ByteBuffer byteBuffer = attributes.getHeader().getFields().get(LOCAL_ACTIVITY_HEADER_KEY); - byte[] bytes = org.apache.thrift.TBaseHelper.byteBufferToByteArray(byteBuffer); + byte[] bytes = attributes.getHeader().getFields().get(LOCAL_ACTIVITY_HEADER_KEY); LocalActivityMarkerHeader header = converter.fromData(bytes, LocalActivityMarkerHeader.class, LocalActivityMarkerHeader.class); return new LocalActivityMarkerData(header, attributes.getDetails()); diff --git a/src/main/java/com/uber/cadence/internal/common/WorkflowExecutionUtils.java b/src/main/java/com/uber/cadence/internal/common/WorkflowExecutionUtils.java index 9cff4deca..3a1cf2f31 100644 --- a/src/main/java/com/uber/cadence/internal/common/WorkflowExecutionUtils.java +++ b/src/main/java/com/uber/cadence/internal/common/WorkflowExecutionUtils.java @@ -27,6 +27,7 @@ import com.google.gson.JsonParser; import com.google.gson.JsonPrimitive; import com.uber.cadence.ActivityType; +import com.uber.cadence.CadenceError; import com.uber.cadence.Decision; import com.uber.cadence.DecisionType; import com.uber.cadence.EntityNotExistsError; @@ -47,6 +48,7 @@ import com.uber.cadence.client.WorkflowTimedOutException; import com.uber.cadence.common.RetryOptions; import com.uber.cadence.common.WorkflowExecutionHistory; +import com.uber.cadence.serviceclient.AsyncMethodCallback; import com.uber.cadence.serviceclient.IWorkflowService; import java.io.File; import java.io.IOException; @@ -63,8 +65,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; /** * Convenience methods to be used by unit tests and during development. @@ -200,9 +200,9 @@ private static HistoryEvent getInstanceCloseEvent( retryOptions, () -> service.GetWorkflowExecutionHistoryWithTimeout(r, unit.toMillis(timeout))); } catch (EntityNotExistsError e) { - if (e.activeCluster != null - && e.currentCluster != null - && !e.activeCluster.equals(e.currentCluster)) { + if (e.getActiveCluster() != null + && e.getCurrentCluster() != null + && !e.getActiveCluster().equals(e.getCurrentCluster())) { // Current cluster is passive cluster. Execution might not exist because of replication // lag. If we are still within timeout, wait for a little bit and retry. if (timeout != 0 @@ -220,7 +220,7 @@ private static HistoryEvent getInstanceCloseEvent( continue; } throw e; - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } @@ -356,7 +356,7 @@ public void onError(Exception exception) { } }, unit.toMillis(timeout)); - } catch (TException e) { + } catch (CadenceError e) { result.completeExceptionally(e); } return result; @@ -425,7 +425,7 @@ public static GetWorkflowExecutionHistoryResponse getHistoryPage( GetWorkflowExecutionHistoryResponse history; try { history = service.GetWorkflowExecutionHistory(getHistoryRequest); - } catch (TException e) { + } catch (CadenceError e) { throw new Error(e); } if (history == null) { @@ -601,7 +601,7 @@ private static String prettyPrintObject( return new String((byte[]) object, UTF_8); } if (ByteBuffer.class.isAssignableFrom(clz)) { - byte[] bytes = org.apache.thrift.TBaseHelper.byteBufferToByteArray((ByteBuffer) object); + byte[] bytes = ((ByteBuffer) object).array(); return new String(bytes, UTF_8); } if (clz.equals(Date.class)) { diff --git a/src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java b/src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java deleted file mode 100644 index b4bae6557..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapter.java +++ /dev/null @@ -1,1323 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility; - -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import com.uber.cadence.BadRequestError; -import com.uber.cadence.CancellationAlreadyRequestedError; -import com.uber.cadence.ClientVersionNotSupportedError; -import com.uber.cadence.ClusterInfo; -import com.uber.cadence.CountWorkflowExecutionsRequest; -import com.uber.cadence.CountWorkflowExecutionsResponse; -import com.uber.cadence.DeprecateDomainRequest; -import com.uber.cadence.DescribeDomainRequest; -import com.uber.cadence.DescribeDomainResponse; -import com.uber.cadence.DescribeTaskListRequest; -import com.uber.cadence.DescribeTaskListResponse; -import com.uber.cadence.DescribeWorkflowExecutionRequest; -import com.uber.cadence.DescribeWorkflowExecutionResponse; -import com.uber.cadence.DiagnoseWorkflowExecutionRequest; -import com.uber.cadence.DiagnoseWorkflowExecutionResponse; -import com.uber.cadence.DomainAlreadyExistsError; -import com.uber.cadence.DomainNotActiveError; -import com.uber.cadence.EntityNotExistsError; -import com.uber.cadence.GetSearchAttributesResponse; -import com.uber.cadence.GetTaskListsByDomainRequest; -import com.uber.cadence.GetTaskListsByDomainResponse; -import com.uber.cadence.GetWorkflowExecutionHistoryRequest; -import com.uber.cadence.GetWorkflowExecutionHistoryResponse; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.LimitExceededError; -import com.uber.cadence.ListArchivedWorkflowExecutionsRequest; -import com.uber.cadence.ListArchivedWorkflowExecutionsResponse; -import com.uber.cadence.ListClosedWorkflowExecutionsRequest; -import com.uber.cadence.ListClosedWorkflowExecutionsResponse; -import com.uber.cadence.ListDomainsRequest; -import com.uber.cadence.ListDomainsResponse; -import com.uber.cadence.ListOpenWorkflowExecutionsRequest; -import com.uber.cadence.ListOpenWorkflowExecutionsResponse; -import com.uber.cadence.ListTaskListPartitionsRequest; -import com.uber.cadence.ListTaskListPartitionsResponse; -import com.uber.cadence.ListWorkflowExecutionsRequest; -import com.uber.cadence.ListWorkflowExecutionsResponse; -import com.uber.cadence.PollForActivityTaskRequest; -import com.uber.cadence.PollForActivityTaskResponse; -import com.uber.cadence.PollForDecisionTaskRequest; -import com.uber.cadence.PollForDecisionTaskResponse; -import com.uber.cadence.QueryFailedError; -import com.uber.cadence.QueryWorkflowRequest; -import com.uber.cadence.QueryWorkflowResponse; -import com.uber.cadence.RecordActivityTaskHeartbeatByIDRequest; -import com.uber.cadence.RecordActivityTaskHeartbeatRequest; -import com.uber.cadence.RecordActivityTaskHeartbeatResponse; -import com.uber.cadence.RefreshWorkflowTasksRequest; -import com.uber.cadence.RegisterDomainRequest; -import com.uber.cadence.RequestCancelWorkflowExecutionRequest; -import com.uber.cadence.ResetStickyTaskListRequest; -import com.uber.cadence.ResetStickyTaskListResponse; -import com.uber.cadence.ResetWorkflowExecutionRequest; -import com.uber.cadence.ResetWorkflowExecutionResponse; -import com.uber.cadence.RespondActivityTaskCanceledByIDRequest; -import com.uber.cadence.RespondActivityTaskCanceledRequest; -import com.uber.cadence.RespondActivityTaskCompletedByIDRequest; -import com.uber.cadence.RespondActivityTaskCompletedRequest; -import com.uber.cadence.RespondActivityTaskFailedByIDRequest; -import com.uber.cadence.RespondActivityTaskFailedRequest; -import com.uber.cadence.RespondDecisionTaskCompletedRequest; -import com.uber.cadence.RespondDecisionTaskCompletedResponse; -import com.uber.cadence.RespondDecisionTaskFailedRequest; -import com.uber.cadence.RespondQueryTaskCompletedRequest; -import com.uber.cadence.RestartWorkflowExecutionRequest; -import com.uber.cadence.RestartWorkflowExecutionResponse; -import com.uber.cadence.ServiceBusyError; -import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncRequest; -import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncResponse; -import com.uber.cadence.SignalWithStartWorkflowExecutionRequest; -import com.uber.cadence.SignalWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncResponse; -import com.uber.cadence.StartWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionResponse; -import com.uber.cadence.TerminateWorkflowExecutionRequest; -import com.uber.cadence.UpdateDomainRequest; -import com.uber.cadence.UpdateDomainResponse; -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; -import com.uber.cadence.WorkflowExecutionAlreadyStartedError; -import com.uber.cadence.api.v1.GetSearchAttributesRequest; -import com.uber.cadence.api.v1.HealthRequest; -import com.uber.cadence.api.v1.HealthResponse; -import com.uber.cadence.internal.compatibility.proto.RequestMapper; -import com.uber.cadence.internal.compatibility.proto.serviceclient.IGrpcServiceStubs; -import com.uber.cadence.internal.compatibility.thrift.ErrorMapper; -import com.uber.cadence.internal.compatibility.thrift.ResponseMapper; -import com.uber.cadence.serviceclient.ClientOptions; -import com.uber.cadence.serviceclient.IWorkflowService; -import io.grpc.Deadline; -import io.grpc.StatusRuntimeException; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.TimeUnit; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; - -public class Thrift2ProtoAdapter implements IWorkflowService { - - IGrpcServiceStubs grpcServiceStubs; - - public Thrift2ProtoAdapter(IGrpcServiceStubs grpcServiceStubs) { - this.grpcServiceStubs = grpcServiceStubs; - } - - @Override - public ClientOptions getOptions() { - return grpcServiceStubs.getOptions(); - } - - @Override - public void RegisterDomain(RegisterDomainRequest registerRequest) - throws BadRequestError, DomainAlreadyExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - grpcServiceStubs - .domainBlockingStub() - .registerDomain(RequestMapper.registerDomainRequest(registerRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.DescribeDomainResponse response = - grpcServiceStubs - .domainBlockingStub() - .describeDomain(RequestMapper.describeDomainRequest(describeRequest)); - return ResponseMapper.describeDomainResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( - DiagnoseWorkflowExecutionRequest diagnoseRequest) - throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { - throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); - } - - @Override - public ListDomainsResponse ListDomains(ListDomainsRequest listRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.ListDomainsResponse response = - grpcServiceStubs - .domainBlockingStub() - .listDomains(RequestMapper.listDomainsRequest(listRequest)); - return ResponseMapper.listDomainsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.UpdateDomainResponse response = - grpcServiceStubs - .domainBlockingStub() - .updateDomain(RequestMapper.updateDomainRequest(updateRequest)); - return ResponseMapper.updateDomainResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - ClientVersionNotSupportedError, TException { - try { - grpcServiceStubs - .domainBlockingStub() - .deprecateDomain(RequestMapper.deprecateDomainRequest(deprecateRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public RestartWorkflowExecutionResponse RestartWorkflowExecution( - RestartWorkflowExecutionRequest restartRequest) - throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, - EntityNotExistsError, ClientVersionNotSupportedError, TException { - throw new UnsupportedOperationException("unimplemented"); - } - - @Override - public StartWorkflowExecutionResponse StartWorkflowExecution( - StartWorkflowExecutionRequest startRequest) - throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, - DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { - return startWorkflowExecution(startRequest); - } - - @Override - public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( - StartWorkflowExecutionAsyncRequest startRequest) - throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, - DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { - initializeStartWorkflowExecutionRequest(startRequest.getRequest()); - try { - com.uber.cadence.api.v1.StartWorkflowExecutionAsyncResponse response = - grpcServiceStubs - .workflowBlockingStub() - .startWorkflowExecutionAsync( - RequestMapper.startWorkflowExecutionAsyncRequest(startRequest)); - return ResponseMapper.startWorkflowExecutionAsyncResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - private StartWorkflowExecutionResponse startWorkflowExecution( - StartWorkflowExecutionRequest startRequest) - throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, - DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { - initializeStartWorkflowExecutionRequest(startRequest); - try { - com.uber.cadence.api.v1.StartWorkflowExecutionResponse response = - grpcServiceStubs - .workflowBlockingStub() - .startWorkflowExecution(RequestMapper.startWorkflowExecutionRequest(startRequest)); - return ResponseMapper.startWorkflowExecutionResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - private void initializeStartWorkflowExecutionRequest(StartWorkflowExecutionRequest request) { - if (!request.isSetRequestId()) { - request.setRequestId(UUID.randomUUID().toString()); - } - } - - @Override - public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( - GetWorkflowExecutionHistoryRequest getRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.GetWorkflowExecutionHistoryResponse response = - grpcServiceStubs - .workflowBlockingStub() - .getWorkflowExecutionHistory( - RequestMapper.getWorkflowExecutionHistoryRequest(getRequest)); - return ResponseMapper.getWorkflowExecutionHistoryResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest) - throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, - DomainNotActiveError, ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.PollForDecisionTaskResponse response = - grpcServiceStubs - .workerBlockingStub() - .pollForDecisionTask(RequestMapper.pollForDecisionTaskRequest(pollRequest)); - return ResponseMapper.pollForDecisionTaskResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( - RespondDecisionTaskCompletedRequest completeRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - com.uber.cadence.api.v1.RespondDecisionTaskCompletedResponse response = - grpcServiceStubs - .workerBlockingStub() - .respondDecisionTaskCompleted( - RequestMapper.respondDecisionTaskCompletedRequest(completeRequest)); - return ResponseMapper.respondDecisionTaskCompletedResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondDecisionTaskFailed(RequestMapper.respondDecisionTaskFailedRequest(failedRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest) - throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, - DomainNotActiveError, ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.PollForActivityTaskResponse response = - grpcServiceStubs - .workerBlockingStub() - .pollForActivityTask(RequestMapper.pollForActivityTaskRequest(pollRequest)); - return ResponseMapper.pollForActivityTaskResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( - RecordActivityTaskHeartbeatRequest heartbeatRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - com.uber.cadence.api.v1.RecordActivityTaskHeartbeatResponse response = - grpcServiceStubs - .workerBlockingStub() - .recordActivityTaskHeartbeat( - RequestMapper.recordActivityTaskHeartbeatRequest(heartbeatRequest)); - return ResponseMapper.recordActivityTaskHeartbeatResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( - RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - com.uber.cadence.api.v1.RecordActivityTaskHeartbeatByIDResponse response = - grpcServiceStubs - .workerBlockingStub() - .recordActivityTaskHeartbeatByID( - RequestMapper.recordActivityTaskHeartbeatByIdRequest(heartbeatRequest)); - return ResponseMapper.recordActivityTaskHeartbeatByIdResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondActivityTaskCompleted( - RequestMapper.respondActivityTaskCompletedRequest(completeRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondActivityTaskCompletedByID( - RespondActivityTaskCompletedByIDRequest completeRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondActivityTaskCompletedByID( - RequestMapper.respondActivityTaskCompletedByIdRequest(completeRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondActivityTaskFailed(RequestMapper.respondActivityTaskFailedRequest(failRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondActivityTaskFailedByID( - RequestMapper.respondActivityTaskFailedByIdRequest(failRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondActivityTaskCanceled( - RequestMapper.respondActivityTaskCanceledRequest(canceledRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondActivityTaskCanceledByID( - RespondActivityTaskCanceledByIDRequest canceledRequest) - throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondActivityTaskCanceledByID( - RequestMapper.respondActivityTaskCanceledByIdRequest(canceledRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) - throws BadRequestError, EntityNotExistsError, CancellationAlreadyRequestedError, - ServiceBusyError, DomainNotActiveError, LimitExceededError, - ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, TException { - if (!cancelRequest.isSetRequestId()) { - cancelRequest.setRequestId(UUID.randomUUID().toString()); - } - try { - grpcServiceStubs - .workflowBlockingStub() - .requestCancelWorkflowExecution( - RequestMapper.requestCancelWorkflowExecutionRequest(cancelRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - LimitExceededError, ClientVersionNotSupportedError, - WorkflowExecutionAlreadyCompletedError, TException { - if (!signalRequest.isSetRequestId()) { - signalRequest.setRequestId(UUID.randomUUID().toString()); - } - try { - grpcServiceStubs - .workflowBlockingStub() - .signalWorkflowExecution(RequestMapper.signalWorkflowExecutionRequest(signalRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( - SignalWithStartWorkflowExecutionRequest signalWithStartRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - LimitExceededError, WorkflowExecutionAlreadyStartedError, ClientVersionNotSupportedError, - TException { - try { - initializeSignalWithStartWorkflowExecution(signalWithStartRequest); - com.uber.cadence.api.v1.SignalWithStartWorkflowExecutionResponse response = - grpcServiceStubs - .workflowBlockingStub() - .signalWithStartWorkflowExecution( - RequestMapper.signalWithStartWorkflowExecutionRequest(signalWithStartRequest)); - return ResponseMapper.signalWithStartWorkflowExecutionResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExecutionAsync( - SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) - throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, - DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { - try { - initializeSignalWithStartWorkflowExecution(signalWithStartRequest.getRequest()); - com.uber.cadence.api.v1.SignalWithStartWorkflowExecutionAsyncResponse response = - grpcServiceStubs - .workflowBlockingStub() - .signalWithStartWorkflowExecutionAsync( - RequestMapper.signalWithStartWorkflowExecutionAsyncRequest( - signalWithStartRequest)); - return ResponseMapper.signalWithStartWorkflowExecutionAsyncResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - private void initializeSignalWithStartWorkflowExecution( - SignalWithStartWorkflowExecutionRequest request) { - if (!request.isSetRequestId()) { - request.setRequestId(UUID.randomUUID().toString()); - } - } - - @Override - public ResetWorkflowExecutionResponse ResetWorkflowExecution( - ResetWorkflowExecutionRequest resetRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - LimitExceededError, ClientVersionNotSupportedError, TException { - try { - if (!resetRequest.isSetRequestId()) { - resetRequest.setRequestId(UUID.randomUUID().toString()); - } - com.uber.cadence.api.v1.ResetWorkflowExecutionResponse response = - grpcServiceStubs - .workflowBlockingStub() - .resetWorkflowExecution(RequestMapper.resetWorkflowExecutionRequest(resetRequest)); - return ResponseMapper.resetWorkflowExecutionResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - LimitExceededError, ClientVersionNotSupportedError, - WorkflowExecutionAlreadyCompletedError, TException { - try { - grpcServiceStubs - .workflowBlockingStub() - .terminateWorkflowExecution( - RequestMapper.terminateWorkflowExecutionRequest(terminateRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( - ListOpenWorkflowExecutionsRequest listRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, LimitExceededError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.ListOpenWorkflowExecutionsResponse response = - grpcServiceStubs - .visibilityBlockingStub() - .listOpenWorkflowExecutions( - RequestMapper.listOpenWorkflowExecutionsRequest(listRequest)); - return ResponseMapper.listOpenWorkflowExecutionsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( - ListClosedWorkflowExecutionsRequest listRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.ListClosedWorkflowExecutionsResponse response = - grpcServiceStubs - .visibilityBlockingStub() - .listClosedWorkflowExecutions( - RequestMapper.listClosedWorkflowExecutionsRequest(listRequest)); - return ResponseMapper.listClosedWorkflowExecutionsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public ListWorkflowExecutionsResponse ListWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.ListWorkflowExecutionsResponse response = - grpcServiceStubs - .visibilityBlockingStub() - .listWorkflowExecutions(RequestMapper.listWorkflowExecutionsRequest(listRequest)); - return ResponseMapper.listWorkflowExecutionsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( - ListArchivedWorkflowExecutionsRequest listRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.ListArchivedWorkflowExecutionsResponse response = - grpcServiceStubs - .visibilityBlockingStub() - .listArchivedWorkflowExecutions( - RequestMapper.listArchivedWorkflowExecutionsRequest(listRequest)); - return ResponseMapper.listArchivedWorkflowExecutionsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public ListWorkflowExecutionsResponse ScanWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.ScanWorkflowExecutionsResponse response = - grpcServiceStubs - .visibilityBlockingStub() - .scanWorkflowExecutions(RequestMapper.scanWorkflowExecutionsRequest(listRequest)); - return ResponseMapper.scanWorkflowExecutionsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public CountWorkflowExecutionsResponse CountWorkflowExecutions( - CountWorkflowExecutionsRequest countRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.CountWorkflowExecutionsResponse response = - grpcServiceStubs - .visibilityBlockingStub() - .countWorkflowExecutions(RequestMapper.countWorkflowExecutionsRequest(countRequest)); - return ResponseMapper.countWorkflowExecutionsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public GetSearchAttributesResponse GetSearchAttributes() - throws ServiceBusyError, ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.GetSearchAttributesResponse response = - grpcServiceStubs - .visibilityBlockingStub() - .getSearchAttributes(GetSearchAttributesRequest.newBuilder().build()); - return ResponseMapper.getSearchAttributesResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) - throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - DomainNotActiveError, ClientVersionNotSupportedError, TException { - try { - grpcServiceStubs - .workerBlockingStub() - .respondQueryTaskCompleted( - RequestMapper.respondQueryTaskCompletedRequest(completeRequest)); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) - throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - DomainNotActiveError, ClientVersionNotSupportedError, - WorkflowExecutionAlreadyCompletedError, TException { - try { - com.uber.cadence.api.v1.ResetStickyTaskListResponse response = - grpcServiceStubs - .workerBlockingStub() - .resetStickyTaskList(RequestMapper.resetStickyTaskListRequest(resetRequest)); - return new ResetStickyTaskListResponse(); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) - throws BadRequestError, EntityNotExistsError, QueryFailedError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.QueryWorkflowResponse response = - grpcServiceStubs - .workflowBlockingStub() - .queryWorkflow(RequestMapper.queryWorkflowRequest(queryRequest)); - return ResponseMapper.queryWorkflowResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public DescribeWorkflowExecutionResponse DescribeWorkflowExecution( - DescribeWorkflowExecutionRequest describeRequest) - throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.DescribeWorkflowExecutionResponse response = - grpcServiceStubs - .workflowBlockingStub() - .describeWorkflowExecution( - RequestMapper.describeWorkflowExecutionRequest(describeRequest)); - return ResponseMapper.describeWorkflowExecutionResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) - throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - try { - com.uber.cadence.api.v1.DescribeTaskListResponse response = - grpcServiceStubs - .workflowBlockingStub() - .describeTaskList(RequestMapper.describeTaskListRequest(request)); - return ResponseMapper.describeTaskListResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, TException { - try { - com.uber.cadence.api.v1.GetClusterInfoResponse response = - grpcServiceStubs - .workflowBlockingStub() - .getClusterInfo(com.uber.cadence.api.v1.GetClusterInfoRequest.newBuilder().build()); - return ResponseMapper.getClusterInfoResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request) { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public ListTaskListPartitionsResponse ListTaskListPartitions( - ListTaskListPartitionsRequest request) - throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - TException { - try { - com.uber.cadence.api.v1.ListTaskListPartitionsResponse response = - grpcServiceStubs - .workflowBlockingStub() - .listTaskListPartitions(RequestMapper.listTaskListPartitionsRequest(request)); - return ResponseMapper.listTaskListPartitionsResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request) - throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - TException { - try { - grpcServiceStubs - .workflowBlockingStub() - .refreshWorkflowTasks( - com.uber.cadence.api.v1.RefreshWorkflowTasksRequest.newBuilder().build()); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void RegisterDomain( - RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DescribeDomain( - DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DiagnoseWorkflowExecution( - DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void UpdateDomain(UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DeprecateDomain( - DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RestartWorkflowExecution( - RestartWorkflowExecutionRequest restartRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("unimplemented"); - } - - @Override - public void StartWorkflowExecution( - StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void StartWorkflowExecutionAsync( - StartWorkflowExecutionAsyncRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { - try { - initializeStartWorkflowExecutionRequest(startRequest.getRequest()); - ListenableFuture resultFuture = - grpcServiceStubs - .workflowFutureStub() - .startWorkflowExecutionAsync( - RequestMapper.startWorkflowExecutionAsyncRequest(startRequest)); - resultFuture.addListener( - () -> { - try { - com.uber.cadence.api.v1.StartWorkflowExecutionAsyncResponse response = - resultFuture.get(); - resultHandler.onComplete( - ResponseMapper.startWorkflowExecutionAsyncResponse(response)); - } catch (Exception e) { - handleAsyncException(resultHandler, e); - } - }, - ForkJoinPool.commonPool()); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void GetWorkflowExecutionHistory( - GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void PollForDecisionTask( - PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondDecisionTaskCompleted( - RespondDecisionTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondDecisionTaskFailed( - RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void PollForActivityTask( - PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RecordActivityTaskHeartbeat( - RecordActivityTaskHeartbeatRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RecordActivityTaskHeartbeatByID( - RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCompleted( - RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCompletedByID( - RespondActivityTaskCompletedByIDRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskFailed( - RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskFailedByID( - RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCanceled( - RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCanceledByID( - RespondActivityTaskCanceledByIDRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RequestCancelWorkflowExecution( - RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void SignalWorkflowExecution( - SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) - throws TException { - try { - if (!signalRequest.isSetRequestId()) { - signalRequest.setRequestId(UUID.randomUUID().toString()); - } - ListenableFuture resultFuture = - grpcServiceStubs - .workflowFutureStub() - .signalWorkflowExecution(RequestMapper.signalWorkflowExecutionRequest(signalRequest)); - resultFuture.addListener( - () -> { - try { - com.uber.cadence.api.v1.SignalWorkflowExecutionResponse response = resultFuture.get(); - resultHandler.onComplete(null); - } catch (Exception e) { - handleAsyncException(resultHandler, e); - } - }, - ForkJoinPool.commonPool()); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void SignalWithStartWorkflowExecution( - SignalWithStartWorkflowExecutionRequest signalWithStartRequest, - AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void SignalWithStartWorkflowExecutionAsync( - SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, - AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("unimplemented"); - } - - @Override - public void ResetWorkflowExecution( - ResetWorkflowExecutionRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void TerminateWorkflowExecution( - TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListOpenWorkflowExecutions( - ListOpenWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListClosedWorkflowExecutions( - ListClosedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListArchivedWorkflowExecutions( - ListArchivedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ScanWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void CountWorkflowExecutions( - CountWorkflowExecutionsRequest countRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondQueryTaskCompleted( - RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ResetStickyTaskList( - ResetStickyTaskListRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void QueryWorkflow(QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DescribeWorkflowExecution( - DescribeWorkflowExecutionRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DescribeTaskList(DescribeTaskListRequest request, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void GetClusterInfo(AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void GetTaskListsByDomain( - GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListTaskListPartitions( - ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RefreshWorkflowTasks( - RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void close() { - grpcServiceStubs.shutdownNow(); - } - - @Override - public CompletableFuture isHealthy() { - ListenableFuture listenableFuture = - grpcServiceStubs.metaFutureStub().health(HealthRequest.newBuilder().build()); - CompletableFuture completable = - new CompletableFuture() { - @Override - public boolean cancel(boolean mayInterruptIfRunning) { - boolean result = listenableFuture.cancel(mayInterruptIfRunning); - super.cancel(mayInterruptIfRunning); - return result; - } - }; - Futures.addCallback( - listenableFuture, - new FutureCallback() { - @Override - public void onSuccess(HealthResponse result) { - completable.complete(true); - } - - @Override - public void onFailure(Throwable t) { - completable.completeExceptionally(t); - } - }, - ForkJoinPool.commonPool()); - return completable; - } - - @Override - public void StartWorkflowExecutionWithTimeout( - StartWorkflowExecutionRequest startRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) - throws TException { - try { - initializeStartWorkflowExecutionRequest(startRequest); - ListenableFuture resultFuture = - grpcServiceStubs - .workflowFutureStub() - .withDeadline(Deadline.after(timeoutInMillis, TimeUnit.MILLISECONDS)) - .startWorkflowExecution(RequestMapper.startWorkflowExecutionRequest(startRequest)); - resultFuture.addListener( - () -> { - try { - com.uber.cadence.api.v1.StartWorkflowExecutionResponse response = resultFuture.get(); - resultHandler.onComplete(ResponseMapper.startWorkflowExecutionResponse(response)); - } catch (Exception e) { - handleAsyncException(resultHandler, e); - } - }, - ForkJoinPool.commonPool()); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void StartWorkflowExecutionAsyncWithTimeout( - StartWorkflowExecutionAsyncRequest startAsyncRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) - throws TException { - try { - initializeStartWorkflowExecutionRequest(startAsyncRequest.getRequest()); - ListenableFuture resultFuture = - grpcServiceStubs - .workflowFutureStub() - .withDeadline(Deadline.after(timeoutInMillis, TimeUnit.MILLISECONDS)) - .startWorkflowExecutionAsync( - RequestMapper.startWorkflowExecutionAsyncRequest(startAsyncRequest)); - resultFuture.addListener( - () -> { - try { - com.uber.cadence.api.v1.StartWorkflowExecutionAsyncResponse response = - resultFuture.get(); - resultHandler.onComplete( - ResponseMapper.startWorkflowExecutionAsyncResponse(response)); - } catch (Exception e) { - handleAsyncException(resultHandler, e); - } - }, - ForkJoinPool.commonPool()); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( - GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws TException { - try { - com.uber.cadence.api.v1.GetWorkflowExecutionHistoryResponse response = - grpcServiceStubs - .workflowBlockingStub() - .withDeadline(Deadline.after(timeoutInMillis, TimeUnit.MILLISECONDS)) - .getWorkflowExecutionHistory( - RequestMapper.getWorkflowExecutionHistoryRequest(getRequest)); - return ResponseMapper.getWorkflowExecutionHistoryResponse(response); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void GetWorkflowExecutionHistoryWithTimeout( - GetWorkflowExecutionHistoryRequest getRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) - throws TException { - try { - ListenableFuture resultFuture = - grpcServiceStubs - .workflowFutureStub() - .withDeadline(Deadline.after(timeoutInMillis, TimeUnit.MILLISECONDS)) - .getWorkflowExecutionHistory( - RequestMapper.getWorkflowExecutionHistoryRequest(getRequest)); - resultFuture.addListener( - () -> { - try { - com.uber.cadence.api.v1.GetWorkflowExecutionHistoryResponse response = - resultFuture.get(); - resultHandler.onComplete( - ResponseMapper.getWorkflowExecutionHistoryResponse(response)); - } catch (Exception e) { - handleAsyncException(resultHandler, e); - } - }, - ForkJoinPool.commonPool()); - } catch (StatusRuntimeException e) { - throw ErrorMapper.Error(e); - } - } - - @Override - public void SignalWorkflowExecutionWithTimeout( - SignalWorkflowExecutionRequest signalRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - private void handleAsyncException(AsyncMethodCallback callback, Exception exception) { - if (exception instanceof ExecutionException - && exception.getCause() instanceof StatusRuntimeException) { - callback.onError(ErrorMapper.Error(((StatusRuntimeException) exception.getCause()))); - } else { - callback.onError(exception); - } - } -} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/EnumMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/EnumMapper.java deleted file mode 100644 index 6978c615d..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/EnumMapper.java +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.proto; - -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_BINARY; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_TIMER_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_CONTINUE_AS_NEW_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_RECORD_MARKER_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SCHEDULE_ACTIVITY_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SEARCH_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_INPUT_SIZE; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_START_CHILD_EXECUTION_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_START_TIMER_ATTRIBUTES; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_FAILOVER_CLOSE_DECISION; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_FORCE_CLOSE_DECISION; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_INVALID; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_RESET_STICKY_TASK_LIST; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_RESET_WORKFLOW; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_SCHEDULE_ACTIVITY_DUPLICATE_ID; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_START_TIMER_DUPLICATE_ID; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_UNHANDLED_DECISION; -import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_WORKFLOW_WORKER_UNHANDLED_FAILURE; -import static com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_ANSWERED; -import static com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_FAILED; -import static com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_INVALID; - -import com.uber.cadence.api.v1.ArchivalStatus; -import com.uber.cadence.api.v1.ContinueAsNewInitiator; -import com.uber.cadence.api.v1.DecisionTaskFailedCause; -import com.uber.cadence.api.v1.EventFilterType; -import com.uber.cadence.api.v1.ParentClosePolicy; -import com.uber.cadence.api.v1.QueryConsistencyLevel; -import com.uber.cadence.api.v1.QueryRejectCondition; -import com.uber.cadence.api.v1.QueryResultType; -import com.uber.cadence.api.v1.TaskListKind; -import com.uber.cadence.api.v1.TaskListType; -import com.uber.cadence.api.v1.WorkflowExecutionCloseStatus; -import com.uber.cadence.api.v1.WorkflowIdReusePolicy; - -public final class EnumMapper { - - private EnumMapper() {} - - public static TaskListKind taskListKind(com.uber.cadence.TaskListKind t) { - if (t == null) { - return TaskListKind.TASK_LIST_KIND_INVALID; - } - switch (t) { - case NORMAL: - return TaskListKind.TASK_LIST_KIND_NORMAL; - case STICKY: - return TaskListKind.TASK_LIST_KIND_STICKY; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static TaskListType taskListType(com.uber.cadence.TaskListType t) { - if (t == null) { - return TaskListType.TASK_LIST_TYPE_INVALID; - } - switch (t) { - case Decision: - return TaskListType.TASK_LIST_TYPE_DECISION; - case Activity: - return TaskListType.TASK_LIST_TYPE_ACTIVITY; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static EventFilterType eventFilterType(com.uber.cadence.HistoryEventFilterType t) { - if (t == null) { - return EventFilterType.EVENT_FILTER_TYPE_INVALID; - } - switch (t) { - case ALL_EVENT: - return EventFilterType.EVENT_FILTER_TYPE_ALL_EVENT; - case CLOSE_EVENT: - return EventFilterType.EVENT_FILTER_TYPE_CLOSE_EVENT; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static QueryRejectCondition queryRejectCondition(com.uber.cadence.QueryRejectCondition t) { - if (t == null) { - return QueryRejectCondition.QUERY_REJECT_CONDITION_INVALID; - } - switch (t) { - case NOT_OPEN: - return QueryRejectCondition.QUERY_REJECT_CONDITION_NOT_OPEN; - case NOT_COMPLETED_CLEANLY: - return QueryRejectCondition.QUERY_REJECT_CONDITION_NOT_COMPLETED_CLEANLY; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static QueryConsistencyLevel queryConsistencyLevel( - com.uber.cadence.QueryConsistencyLevel t) { - if (t == null) { - return QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_INVALID; - } - switch (t) { - case EVENTUAL: - return QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_EVENTUAL; - case STRONG: - return QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_STRONG; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static ContinueAsNewInitiator continueAsNewInitiator( - com.uber.cadence.ContinueAsNewInitiator t) { - if (t == null) { - return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_INVALID; - } - switch (t) { - case Decider: - return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_DECIDER; - case RetryPolicy: - return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_RETRY_POLICY; - case CronSchedule: - return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_CRON_SCHEDULE; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static WorkflowIdReusePolicy workflowIdReusePolicy( - com.uber.cadence.WorkflowIdReusePolicy t) { - if (t == null) { - return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_INVALID; - } - switch (t) { - case AllowDuplicateFailedOnly: - return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY; - case AllowDuplicate: - return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE; - case RejectDuplicate: - return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE; - case TerminateIfRunning: - return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static QueryResultType queryResultType(com.uber.cadence.QueryResultType t) { - if (t == null) { - return QUERY_RESULT_TYPE_INVALID; - } - switch (t) { - case ANSWERED: - return QUERY_RESULT_TYPE_ANSWERED; - case FAILED: - return QUERY_RESULT_TYPE_FAILED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static ArchivalStatus archivalStatus(com.uber.cadence.ArchivalStatus t) { - if (t == null) { - return ArchivalStatus.ARCHIVAL_STATUS_INVALID; - } - switch (t) { - case DISABLED: - return ArchivalStatus.ARCHIVAL_STATUS_DISABLED; - case ENABLED: - return ArchivalStatus.ARCHIVAL_STATUS_ENABLED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static ParentClosePolicy parentClosePolicy(com.uber.cadence.ParentClosePolicy t) { - if (t == null) { - return ParentClosePolicy.PARENT_CLOSE_POLICY_INVALID; - } - switch (t) { - case ABANDON: - return ParentClosePolicy.PARENT_CLOSE_POLICY_ABANDON; - case REQUEST_CANCEL: - return ParentClosePolicy.PARENT_CLOSE_POLICY_REQUEST_CANCEL; - case TERMINATE: - return ParentClosePolicy.PARENT_CLOSE_POLICY_TERMINATE; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static DecisionTaskFailedCause decisionTaskFailedCause( - com.uber.cadence.DecisionTaskFailedCause t) { - if (t == null) { - return DECISION_TASK_FAILED_CAUSE_INVALID; - } - switch (t) { - case UNHANDLED_DECISION: - return DECISION_TASK_FAILED_CAUSE_UNHANDLED_DECISION; - case BAD_SCHEDULE_ACTIVITY_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_SCHEDULE_ACTIVITY_ATTRIBUTES; - case BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES; - case BAD_START_TIMER_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_START_TIMER_ATTRIBUTES; - case BAD_CANCEL_TIMER_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_TIMER_ATTRIBUTES; - case BAD_RECORD_MARKER_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_RECORD_MARKER_ATTRIBUTES; - case BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES; - case BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES; - case BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES; - case BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES; - case BAD_CONTINUE_AS_NEW_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_CONTINUE_AS_NEW_ATTRIBUTES; - case START_TIMER_DUPLICATE_ID: - return DECISION_TASK_FAILED_CAUSE_START_TIMER_DUPLICATE_ID; - case RESET_STICKY_TASKLIST: - return DECISION_TASK_FAILED_CAUSE_RESET_STICKY_TASK_LIST; - case WORKFLOW_WORKER_UNHANDLED_FAILURE: - return DECISION_TASK_FAILED_CAUSE_WORKFLOW_WORKER_UNHANDLED_FAILURE; - case BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES; - case BAD_START_CHILD_EXECUTION_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_START_CHILD_EXECUTION_ATTRIBUTES; - case FORCE_CLOSE_DECISION: - return DECISION_TASK_FAILED_CAUSE_FORCE_CLOSE_DECISION; - case FAILOVER_CLOSE_DECISION: - return DECISION_TASK_FAILED_CAUSE_FAILOVER_CLOSE_DECISION; - case BAD_SIGNAL_INPUT_SIZE: - return DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_INPUT_SIZE; - case RESET_WORKFLOW: - return DECISION_TASK_FAILED_CAUSE_RESET_WORKFLOW; - case BAD_BINARY: - return DECISION_TASK_FAILED_CAUSE_BAD_BINARY; - case SCHEDULE_ACTIVITY_DUPLICATE_ID: - return DECISION_TASK_FAILED_CAUSE_SCHEDULE_ACTIVITY_DUPLICATE_ID; - case BAD_SEARCH_ATTRIBUTES: - return DECISION_TASK_FAILED_CAUSE_BAD_SEARCH_ATTRIBUTES; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static WorkflowExecutionCloseStatus workflowExecutionCloseStatus( - com.uber.cadence.WorkflowExecutionCloseStatus t) { - if (t == null) { - return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_INVALID; - } - switch (t) { - case COMPLETED: - return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_COMPLETED; - case FAILED: - return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_FAILED; - case CANCELED: - return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_CANCELED; - case TERMINATED: - return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_TERMINATED; - case CONTINUED_AS_NEW: - return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_CONTINUED_AS_NEW; - case TIMED_OUT: - return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_TIMED_OUT; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static QueryResultType queryTaskCompletedType(com.uber.cadence.QueryTaskCompletedType t) { - if (t == null) { - return QUERY_RESULT_TYPE_INVALID; - } - switch (t) { - case COMPLETED: - return QUERY_RESULT_TYPE_ANSWERED; - case FAILED: - return QUERY_RESULT_TYPE_FAILED; - } - throw new IllegalArgumentException("unexpected enum value"); - } -} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/TypeMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/TypeMapper.java deleted file mode 100644 index c2d4cb03a..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/TypeMapper.java +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.proto; - -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.queryResultType; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.taskListKind; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.workflowExecutionCloseStatus; -import static com.uber.cadence.internal.compatibility.proto.Helpers.arrayToByteString; -import static com.uber.cadence.internal.compatibility.proto.Helpers.fromDoubleValue; -import static com.uber.cadence.internal.compatibility.proto.Helpers.secondsToDuration; -import static com.uber.cadence.internal.compatibility.proto.Helpers.unixNanoToTime; - -import com.google.common.base.Strings; -import com.uber.cadence.api.v1.ActivityType; -import com.uber.cadence.api.v1.BadBinaries; -import com.uber.cadence.api.v1.BadBinaryInfo; -import com.uber.cadence.api.v1.ClusterReplicationConfiguration; -import com.uber.cadence.api.v1.Failure; -import com.uber.cadence.api.v1.Header; -import com.uber.cadence.api.v1.Memo; -import com.uber.cadence.api.v1.Payload; -import com.uber.cadence.api.v1.RetryPolicy; -import com.uber.cadence.api.v1.SearchAttributes; -import com.uber.cadence.api.v1.StartTimeFilter; -import com.uber.cadence.api.v1.StatusFilter; -import com.uber.cadence.api.v1.StickyExecutionAttributes; -import com.uber.cadence.api.v1.TaskList; -import com.uber.cadence.api.v1.TaskListMetadata; -import com.uber.cadence.api.v1.WorkerVersionInfo; -import com.uber.cadence.api.v1.WorkflowExecution; -import com.uber.cadence.api.v1.WorkflowExecutionFilter; -import com.uber.cadence.api.v1.WorkflowQuery; -import com.uber.cadence.api.v1.WorkflowQueryResult; -import com.uber.cadence.api.v1.WorkflowType; -import com.uber.cadence.api.v1.WorkflowTypeFilter; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -class TypeMapper { - - static BadBinaryInfo badBinaryInfo(com.uber.cadence.BadBinaryInfo t) { - if (t == null) { - return null; - } - return BadBinaryInfo.newBuilder() - .setReason(t.getReason()) - .setOperator(t.getOperator()) - .setCreatedTime(unixNanoToTime(t.getCreatedTimeNano())) - .build(); - } - - static Payload payload(byte[] data) { - if (data == null) { - return Payload.newBuilder().build(); - } - return Payload.newBuilder().setData(arrayToByteString(data)).build(); - } - - static Failure failure(String reason, byte[] details) { - if (reason == null) { - return Failure.newBuilder().build(); - } - return Failure.newBuilder().setReason(reason).setDetails(arrayToByteString(details)).build(); - } - - static WorkflowExecution workflowExecution(com.uber.cadence.WorkflowExecution t) { - if (t == null) { - return WorkflowExecution.newBuilder().build(); - } - if (t.getWorkflowId() == null && t.getRunId() == null) { - return WorkflowExecution.newBuilder().build(); - } - WorkflowExecution.Builder builder = - WorkflowExecution.newBuilder().setWorkflowId(t.getWorkflowId()); - if (t.getRunId() != null) { - builder.setRunId(t.getRunId()); - } - return builder.build(); - } - - static WorkflowExecution workflowRunPair(String workflowId, String runId) { - if (Strings.isNullOrEmpty(workflowId) && Strings.isNullOrEmpty(runId)) { - return WorkflowExecution.newBuilder().build(); - } - return WorkflowExecution.newBuilder().setWorkflowId(workflowId).setRunId(runId).build(); - } - - static ActivityType activityType(com.uber.cadence.ActivityType t) { - if (t == null) { - return ActivityType.newBuilder().build(); - } - return ActivityType.newBuilder().setName(t.getName()).build(); - } - - static WorkflowType workflowType(com.uber.cadence.WorkflowType t) { - if (t == null) { - return WorkflowType.newBuilder().build(); - } - return WorkflowType.newBuilder().setName(t.getName()).build(); - } - - static TaskList taskList(com.uber.cadence.TaskList t) { - if (t == null) { - return TaskList.newBuilder().build(); - } - return TaskList.newBuilder().setName(t.getName()).setKind(taskListKind(t.getKind())).build(); - } - - static TaskListMetadata taskListMetadata(com.uber.cadence.TaskListMetadata t) { - if (t == null) { - return TaskListMetadata.newBuilder().build(); - } - return TaskListMetadata.newBuilder() - .setMaxTasksPerSecond(fromDoubleValue(t.getMaxTasksPerSecond())) - .build(); - } - - static RetryPolicy retryPolicy(com.uber.cadence.RetryPolicy t) { - if (t == null) { - return null; - } - RetryPolicy.Builder builder = - RetryPolicy.newBuilder() - .setInitialInterval(secondsToDuration(t.getInitialIntervalInSeconds())) - .setBackoffCoefficient(t.getBackoffCoefficient()) - .setMaximumInterval(secondsToDuration(t.getMaximumIntervalInSeconds())) - .setMaximumAttempts(t.getMaximumAttempts()) - .setExpirationInterval(secondsToDuration(t.getExpirationIntervalInSeconds())); - if (t.getNonRetriableErrorReasons() != null) { - builder.addAllNonRetryableErrorReasons(t.getNonRetriableErrorReasons()); - } - return builder.build(); - } - - static Header header(com.uber.cadence.Header t) { - if (t == null) { - return Header.newBuilder().build(); - } - return Header.newBuilder().putAllFields(payloadByteBufferMap(t.getFields())).build(); - } - - static Memo memo(com.uber.cadence.Memo t) { - if (t == null) { - return Memo.newBuilder().build(); - } - return Memo.newBuilder().putAllFields(payloadByteBufferMap(t.getFields())).build(); - } - - static SearchAttributes searchAttributes(com.uber.cadence.SearchAttributes t) { - if (t == null) { - return SearchAttributes.newBuilder().build(); - } - return SearchAttributes.newBuilder() - .putAllIndexedFields(payloadByteBufferMap(t.getIndexedFields())) - .build(); - } - - static BadBinaries badBinaries(com.uber.cadence.BadBinaries t) { - if (t == null) { - return BadBinaries.newBuilder().build(); - } - return BadBinaries.newBuilder().putAllBinaries(badBinaryInfoMap(t.getBinaries())).build(); - } - - static ClusterReplicationConfiguration clusterReplicationConfiguration( - com.uber.cadence.ClusterReplicationConfiguration t) { - if (t == null) { - return ClusterReplicationConfiguration.newBuilder().build(); - } - return ClusterReplicationConfiguration.newBuilder().setClusterName(t.getClusterName()).build(); - } - - static WorkflowQuery workflowQuery(com.uber.cadence.WorkflowQuery t) { - if (t == null) { - return null; - } - return WorkflowQuery.newBuilder() - .setQueryType(t.getQueryType()) - .setQueryArgs(payload(t.getQueryArgs())) - .build(); - } - - static WorkflowQueryResult workflowQueryResult(com.uber.cadence.WorkflowQueryResult t) { - if (t == null) { - return WorkflowQueryResult.newBuilder().build(); - } - return WorkflowQueryResult.newBuilder() - .setResultType(queryResultType(t.getResultType())) - .setAnswer(payload(t.getAnswer())) - .setErrorMessage(t.getErrorMessage()) - .build(); - } - - static StickyExecutionAttributes stickyExecutionAttributes( - com.uber.cadence.StickyExecutionAttributes t) { - if (t == null) { - return StickyExecutionAttributes.newBuilder().build(); - } - return StickyExecutionAttributes.newBuilder() - .setWorkerTaskList(taskList(t.getWorkerTaskList())) - .setScheduleToStartTimeout(secondsToDuration(t.getScheduleToStartTimeoutSeconds())) - .build(); - } - - static WorkerVersionInfo workerVersionInfo(com.uber.cadence.WorkerVersionInfo t) { - if (t == null) { - return WorkerVersionInfo.newBuilder().build(); - } - return WorkerVersionInfo.newBuilder() - .setImpl(t.getImpl()) - .setFeatureVersion(t.getFeatureVersion()) - .build(); - } - - static StartTimeFilter startTimeFilter(com.uber.cadence.StartTimeFilter t) { - if (t == null) { - return null; - } - return StartTimeFilter.newBuilder() - .setEarliestTime(unixNanoToTime(t.getEarliestTime())) - .setLatestTime(unixNanoToTime(t.getLatestTime())) - .build(); - } - - static WorkflowExecutionFilter workflowExecutionFilter( - com.uber.cadence.WorkflowExecutionFilter t) { - if (t == null) { - return WorkflowExecutionFilter.newBuilder().build(); - } - return WorkflowExecutionFilter.newBuilder() - .setWorkflowId(t.getWorkflowId()) - .setRunId(t.getRunId()) - .build(); - } - - static WorkflowTypeFilter workflowTypeFilter(com.uber.cadence.WorkflowTypeFilter t) { - if (t == null) { - return WorkflowTypeFilter.newBuilder().build(); - } - return WorkflowTypeFilter.newBuilder().setName(t.getName()).build(); - } - - static StatusFilter statusFilter(com.uber.cadence.WorkflowExecutionCloseStatus t) { - if (t == null) { - return null; - } - return StatusFilter.newBuilder().setStatus(workflowExecutionCloseStatus(t)).build(); - } - - static Map payloadByteBufferMap(Map t) { - if (t == null) { - return Collections.emptyMap(); - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, payload(t.get(key).array())); - } - return v; - } - - static Map badBinaryInfoMap( - Map t) { - if (t == null) { - return Collections.emptyMap(); - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, badBinaryInfo(t.get(key))); - } - return v; - } - - static List clusterReplicationConfigurationArray( - List t) { - if (t == null) { - return Collections.emptyList(); - } - List v = new ArrayList<>(); - for (int i = 0; i < t.size(); i++) { - v.add(clusterReplicationConfiguration(t.get(i))); - } - return v; - } - - static Map workflowQueryResultMap( - Map t) { - if (t == null) { - return Collections.emptyMap(); - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, workflowQueryResult(t.get(key))); - } - return v; - } -} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/DecisionMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapper.java similarity index 88% rename from src/main/java/com/uber/cadence/internal/compatibility/proto/DecisionMapper.java rename to src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapper.java index a3d5e5ca5..518367d37 100644 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/DecisionMapper.java +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapper.java @@ -13,25 +13,25 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.uber.cadence.internal.compatibility.proto; +package com.uber.cadence.internal.compatibility.proto.mappers; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.continueAsNewInitiator; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.parentClosePolicy; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.workflowIdReusePolicy; -import static com.uber.cadence.internal.compatibility.proto.Helpers.arrayToByteString; -import static com.uber.cadence.internal.compatibility.proto.Helpers.longToInt; -import static com.uber.cadence.internal.compatibility.proto.Helpers.secondsToDuration; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.activityType; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.failure; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.header; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.memo; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.payload; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.retryPolicy; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.searchAttributes; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.taskList; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowExecution; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowRunPair; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.continueAsNewInitiator; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.parentClosePolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.workflowIdReusePolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.arrayToByteString; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.longToInt; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.secondsToDuration; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.activityType; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.failure; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.header; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.memo; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.payload; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.retryPolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.searchAttributes; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.taskList; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecution; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowRunPair; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowType; import com.uber.cadence.api.v1.CancelTimerDecisionAttributes; import com.uber.cadence.api.v1.CancelWorkflowExecutionDecisionAttributes; @@ -52,7 +52,6 @@ import java.util.List; class DecisionMapper { - static List decisionArray(List t) { if (t == null) { return null; diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/EnumMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/EnumMapper.java new file mode 100644 index 000000000..e34de9e97 --- /dev/null +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/EnumMapper.java @@ -0,0 +1,587 @@ +/* + * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package com.uber.cadence.internal.compatibility.proto.mappers; + +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_BINARY; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_TIMER_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_CONTINUE_AS_NEW_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_RECORD_MARKER_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SCHEDULE_ACTIVITY_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SEARCH_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_INPUT_SIZE; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_START_CHILD_EXECUTION_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_BAD_START_TIMER_ATTRIBUTES; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_FAILOVER_CLOSE_DECISION; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_FORCE_CLOSE_DECISION; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_INVALID; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_RESET_STICKY_TASK_LIST; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_RESET_WORKFLOW; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_SCHEDULE_ACTIVITY_DUPLICATE_ID; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_START_TIMER_DUPLICATE_ID; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_UNHANDLED_DECISION; +import static com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_WORKFLOW_WORKER_UNHANDLED_FAILURE; +import static com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_ANSWERED; +import static com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_FAILED; +import static com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_INVALID; + +import com.uber.cadence.api.v1.*; + +public final class EnumMapper { + + private EnumMapper() {} + + public static TaskListKind taskListKind(com.uber.cadence.TaskListKind t) { + if (t == null) { + return TaskListKind.TASK_LIST_KIND_INVALID; + } + switch (t) { + case NORMAL: + return TaskListKind.TASK_LIST_KIND_NORMAL; + case STICKY: + return TaskListKind.TASK_LIST_KIND_STICKY; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static TaskListType taskListType(com.uber.cadence.TaskListType t) { + if (t == null) { + return TaskListType.TASK_LIST_TYPE_INVALID; + } + switch (t) { + case Decision: + return TaskListType.TASK_LIST_TYPE_DECISION; + case Activity: + return TaskListType.TASK_LIST_TYPE_ACTIVITY; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static EventFilterType eventFilterType(com.uber.cadence.HistoryEventFilterType t) { + if (t == null) { + return EventFilterType.EVENT_FILTER_TYPE_INVALID; + } + switch (t) { + case ALL_EVENT: + return EventFilterType.EVENT_FILTER_TYPE_ALL_EVENT; + case CLOSE_EVENT: + return EventFilterType.EVENT_FILTER_TYPE_CLOSE_EVENT; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static QueryRejectCondition queryRejectCondition(com.uber.cadence.QueryRejectCondition t) { + if (t == null) { + return QueryRejectCondition.QUERY_REJECT_CONDITION_INVALID; + } + switch (t) { + case NOT_OPEN: + return QueryRejectCondition.QUERY_REJECT_CONDITION_NOT_OPEN; + case NOT_COMPLETED_CLEANLY: + return QueryRejectCondition.QUERY_REJECT_CONDITION_NOT_COMPLETED_CLEANLY; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static QueryConsistencyLevel queryConsistencyLevel( + com.uber.cadence.QueryConsistencyLevel t) { + if (t == null) { + return QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_INVALID; + } + switch (t) { + case EVENTUAL: + return QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_EVENTUAL; + case STRONG: + return QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_STRONG; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static ContinueAsNewInitiator continueAsNewInitiator( + com.uber.cadence.ContinueAsNewInitiator t) { + if (t == null) { + return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_INVALID; + } + switch (t) { + case Decider: + return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_DECIDER; + case RetryPolicy: + return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_RETRY_POLICY; + case CronSchedule: + return ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_CRON_SCHEDULE; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static WorkflowIdReusePolicy workflowIdReusePolicy( + com.uber.cadence.WorkflowIdReusePolicy t) { + if (t == null) { + return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_INVALID; + } + switch (t) { + case AllowDuplicateFailedOnly: + return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY; + case AllowDuplicate: + return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE; + case RejectDuplicate: + return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE; + case TerminateIfRunning: + return WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static QueryResultType queryResultType(com.uber.cadence.QueryResultType t) { + if (t == null) { + return QUERY_RESULT_TYPE_INVALID; + } + switch (t) { + case ANSWERED: + return QUERY_RESULT_TYPE_ANSWERED; + case FAILED: + return QUERY_RESULT_TYPE_FAILED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static ArchivalStatus archivalStatus(com.uber.cadence.ArchivalStatus t) { + if (t == null) { + return ArchivalStatus.ARCHIVAL_STATUS_INVALID; + } + switch (t) { + case DISABLED: + return ArchivalStatus.ARCHIVAL_STATUS_DISABLED; + case ENABLED: + return ArchivalStatus.ARCHIVAL_STATUS_ENABLED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static ParentClosePolicy parentClosePolicy(com.uber.cadence.ParentClosePolicy t) { + if (t == null) { + return ParentClosePolicy.PARENT_CLOSE_POLICY_INVALID; + } + switch (t) { + case ABANDON: + return ParentClosePolicy.PARENT_CLOSE_POLICY_ABANDON; + case REQUEST_CANCEL: + return ParentClosePolicy.PARENT_CLOSE_POLICY_REQUEST_CANCEL; + case TERMINATE: + return ParentClosePolicy.PARENT_CLOSE_POLICY_TERMINATE; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static DecisionTaskFailedCause decisionTaskFailedCause( + com.uber.cadence.DecisionTaskFailedCause t) { + if (t == null) { + return DECISION_TASK_FAILED_CAUSE_INVALID; + } + switch (t) { + case UNHANDLED_DECISION: + return DECISION_TASK_FAILED_CAUSE_UNHANDLED_DECISION; + case BAD_SCHEDULE_ACTIVITY_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_SCHEDULE_ACTIVITY_ATTRIBUTES; + case BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES; + case BAD_START_TIMER_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_START_TIMER_ATTRIBUTES; + case BAD_CANCEL_TIMER_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_TIMER_ATTRIBUTES; + case BAD_RECORD_MARKER_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_RECORD_MARKER_ATTRIBUTES; + case BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES; + case BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES; + case BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES; + case BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES; + case BAD_CONTINUE_AS_NEW_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_CONTINUE_AS_NEW_ATTRIBUTES; + case START_TIMER_DUPLICATE_ID: + return DECISION_TASK_FAILED_CAUSE_START_TIMER_DUPLICATE_ID; + case RESET_STICKY_TASKLIST: + return DECISION_TASK_FAILED_CAUSE_RESET_STICKY_TASK_LIST; + case WORKFLOW_WORKER_UNHANDLED_FAILURE: + return DECISION_TASK_FAILED_CAUSE_WORKFLOW_WORKER_UNHANDLED_FAILURE; + case BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES; + case BAD_START_CHILD_EXECUTION_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_START_CHILD_EXECUTION_ATTRIBUTES; + case FORCE_CLOSE_DECISION: + return DECISION_TASK_FAILED_CAUSE_FORCE_CLOSE_DECISION; + case FAILOVER_CLOSE_DECISION: + return DECISION_TASK_FAILED_CAUSE_FAILOVER_CLOSE_DECISION; + case BAD_SIGNAL_INPUT_SIZE: + return DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_INPUT_SIZE; + case RESET_WORKFLOW: + return DECISION_TASK_FAILED_CAUSE_RESET_WORKFLOW; + case BAD_BINARY: + return DECISION_TASK_FAILED_CAUSE_BAD_BINARY; + case SCHEDULE_ACTIVITY_DUPLICATE_ID: + return DECISION_TASK_FAILED_CAUSE_SCHEDULE_ACTIVITY_DUPLICATE_ID; + case BAD_SEARCH_ATTRIBUTES: + return DECISION_TASK_FAILED_CAUSE_BAD_SEARCH_ATTRIBUTES; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static WorkflowExecutionCloseStatus workflowExecutionCloseStatus( + com.uber.cadence.WorkflowExecutionCloseStatus t) { + if (t == null) { + return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_INVALID; + } + switch (t) { + case COMPLETED: + return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_COMPLETED; + case FAILED: + return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_FAILED; + case CANCELED: + return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_CANCELED; + case TERMINATED: + return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_TERMINATED; + case CONTINUED_AS_NEW: + return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_CONTINUED_AS_NEW; + case TIMED_OUT: + return WorkflowExecutionCloseStatus.WORKFLOW_EXECUTION_CLOSE_STATUS_TIMED_OUT; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static QueryResultType queryTaskCompletedType(com.uber.cadence.QueryTaskCompletedType t) { + if (t == null) { + return QUERY_RESULT_TYPE_INVALID; + } + switch (t) { + case COMPLETED: + return QUERY_RESULT_TYPE_ANSWERED; + case FAILED: + return QUERY_RESULT_TYPE_FAILED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.TaskListKind taskListKind(TaskListKind t) { + switch (t) { + case TASK_LIST_KIND_INVALID: + return null; + case TASK_LIST_KIND_NORMAL: + return com.uber.cadence.TaskListKind.NORMAL; + case TASK_LIST_KIND_STICKY: + return com.uber.cadence.TaskListKind.STICKY; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.QueryRejectCondition queryRejectCondition(QueryRejectCondition t) { + if (t == QueryRejectCondition.QUERY_REJECT_CONDITION_INVALID) { + return null; + } + switch (t) { + case QUERY_REJECT_CONDITION_NOT_OPEN: + return com.uber.cadence.QueryRejectCondition.NOT_OPEN; + case QUERY_REJECT_CONDITION_NOT_COMPLETED_CLEANLY: + return com.uber.cadence.QueryRejectCondition.NOT_COMPLETED_CLEANLY; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.ContinueAsNewInitiator continueAsNewInitiator( + ContinueAsNewInitiator t) { + switch (t) { + case CONTINUE_AS_NEW_INITIATOR_INVALID: + return null; + case CONTINUE_AS_NEW_INITIATOR_DECIDER: + return com.uber.cadence.ContinueAsNewInitiator.Decider; + case CONTINUE_AS_NEW_INITIATOR_RETRY_POLICY: + return com.uber.cadence.ContinueAsNewInitiator.RetryPolicy; + case CONTINUE_AS_NEW_INITIATOR_CRON_SCHEDULE: + return com.uber.cadence.ContinueAsNewInitiator.CronSchedule; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.WorkflowIdReusePolicy workflowIdReusePolicy( + WorkflowIdReusePolicy t) { + switch (t) { + case WORKFLOW_ID_REUSE_POLICY_INVALID: + return null; + case WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY: + return com.uber.cadence.WorkflowIdReusePolicy.AllowDuplicateFailedOnly; + case WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE: + return com.uber.cadence.WorkflowIdReusePolicy.AllowDuplicate; + case WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE: + return com.uber.cadence.WorkflowIdReusePolicy.RejectDuplicate; + case WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING: + return com.uber.cadence.WorkflowIdReusePolicy.TerminateIfRunning; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.ArchivalStatus archivalStatus(ArchivalStatus t) { + switch (t) { + case ARCHIVAL_STATUS_INVALID: + return null; + case ARCHIVAL_STATUS_DISABLED: + return com.uber.cadence.ArchivalStatus.DISABLED; + case ARCHIVAL_STATUS_ENABLED: + return com.uber.cadence.ArchivalStatus.ENABLED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.ParentClosePolicy parentClosePolicy(ParentClosePolicy t) { + switch (t) { + case PARENT_CLOSE_POLICY_INVALID: + return null; + case PARENT_CLOSE_POLICY_ABANDON: + return com.uber.cadence.ParentClosePolicy.ABANDON; + case PARENT_CLOSE_POLICY_REQUEST_CANCEL: + return com.uber.cadence.ParentClosePolicy.REQUEST_CANCEL; + case PARENT_CLOSE_POLICY_TERMINATE: + return com.uber.cadence.ParentClosePolicy.TERMINATE; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.DecisionTaskFailedCause decisionTaskFailedCause( + DecisionTaskFailedCause t) { + switch (t) { + case DECISION_TASK_FAILED_CAUSE_INVALID: + return null; + case DECISION_TASK_FAILED_CAUSE_UNHANDLED_DECISION: + return com.uber.cadence.DecisionTaskFailedCause.UNHANDLED_DECISION; + case DECISION_TASK_FAILED_CAUSE_BAD_SCHEDULE_ACTIVITY_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_SCHEDULE_ACTIVITY_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_START_TIMER_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_START_TIMER_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_TIMER_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_CANCEL_TIMER_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_RECORD_MARKER_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_RECORD_MARKER_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause + .BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_CONTINUE_AS_NEW_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_CONTINUE_AS_NEW_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_START_TIMER_DUPLICATE_ID: + return com.uber.cadence.DecisionTaskFailedCause.START_TIMER_DUPLICATE_ID; + case DECISION_TASK_FAILED_CAUSE_RESET_STICKY_TASK_LIST: + return com.uber.cadence.DecisionTaskFailedCause.RESET_STICKY_TASKLIST; + case DECISION_TASK_FAILED_CAUSE_WORKFLOW_WORKER_UNHANDLED_FAILURE: + return com.uber.cadence.DecisionTaskFailedCause.WORKFLOW_WORKER_UNHANDLED_FAILURE; + case DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_BAD_START_CHILD_EXECUTION_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_START_CHILD_EXECUTION_ATTRIBUTES; + case DECISION_TASK_FAILED_CAUSE_FORCE_CLOSE_DECISION: + return com.uber.cadence.DecisionTaskFailedCause.FORCE_CLOSE_DECISION; + case DECISION_TASK_FAILED_CAUSE_FAILOVER_CLOSE_DECISION: + return com.uber.cadence.DecisionTaskFailedCause.FAILOVER_CLOSE_DECISION; + case DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_INPUT_SIZE: + return com.uber.cadence.DecisionTaskFailedCause.BAD_SIGNAL_INPUT_SIZE; + case DECISION_TASK_FAILED_CAUSE_RESET_WORKFLOW: + return com.uber.cadence.DecisionTaskFailedCause.RESET_WORKFLOW; + case DECISION_TASK_FAILED_CAUSE_BAD_BINARY: + return com.uber.cadence.DecisionTaskFailedCause.BAD_BINARY; + case DECISION_TASK_FAILED_CAUSE_SCHEDULE_ACTIVITY_DUPLICATE_ID: + return com.uber.cadence.DecisionTaskFailedCause.SCHEDULE_ACTIVITY_DUPLICATE_ID; + case DECISION_TASK_FAILED_CAUSE_BAD_SEARCH_ATTRIBUTES: + return com.uber.cadence.DecisionTaskFailedCause.BAD_SEARCH_ATTRIBUTES; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.WorkflowExecutionCloseStatus workflowExecutionCloseStatus( + WorkflowExecutionCloseStatus t) { + switch (t) { + case WORKFLOW_EXECUTION_CLOSE_STATUS_INVALID: + return null; + case WORKFLOW_EXECUTION_CLOSE_STATUS_COMPLETED: + return com.uber.cadence.WorkflowExecutionCloseStatus.COMPLETED; + case WORKFLOW_EXECUTION_CLOSE_STATUS_FAILED: + return com.uber.cadence.WorkflowExecutionCloseStatus.FAILED; + case WORKFLOW_EXECUTION_CLOSE_STATUS_CANCELED: + return com.uber.cadence.WorkflowExecutionCloseStatus.CANCELED; + case WORKFLOW_EXECUTION_CLOSE_STATUS_TERMINATED: + return com.uber.cadence.WorkflowExecutionCloseStatus.TERMINATED; + case WORKFLOW_EXECUTION_CLOSE_STATUS_CONTINUED_AS_NEW: + return com.uber.cadence.WorkflowExecutionCloseStatus.CONTINUED_AS_NEW; + case WORKFLOW_EXECUTION_CLOSE_STATUS_TIMED_OUT: + return com.uber.cadence.WorkflowExecutionCloseStatus.TIMED_OUT; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.DomainStatus domainStatus(DomainStatus t) { + switch (t) { + case DOMAIN_STATUS_INVALID: + return null; + case DOMAIN_STATUS_REGISTERED: + return com.uber.cadence.DomainStatus.REGISTERED; + case DOMAIN_STATUS_DEPRECATED: + return com.uber.cadence.DomainStatus.DEPRECATED; + case DOMAIN_STATUS_DELETED: + return com.uber.cadence.DomainStatus.DELETED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.PendingActivityState pendingActivityState(PendingActivityState t) { + switch (t) { + case PENDING_ACTIVITY_STATE_INVALID: + return null; + case PENDING_ACTIVITY_STATE_SCHEDULED: + return com.uber.cadence.PendingActivityState.SCHEDULED; + case PENDING_ACTIVITY_STATE_STARTED: + return com.uber.cadence.PendingActivityState.STARTED; + case PENDING_ACTIVITY_STATE_CANCEL_REQUESTED: + return com.uber.cadence.PendingActivityState.CANCEL_REQUESTED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.PendingDecisionState pendingDecisionState(PendingDecisionState t) { + switch (t) { + case PENDING_DECISION_STATE_INVALID: + return null; + case PENDING_DECISION_STATE_SCHEDULED: + return com.uber.cadence.PendingDecisionState.SCHEDULED; + case PENDING_DECISION_STATE_STARTED: + return com.uber.cadence.PendingDecisionState.STARTED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.IndexedValueType indexedValueType(IndexedValueType t) { + switch (t) { + case INDEXED_VALUE_TYPE_INVALID: + throw new IllegalArgumentException("received IndexedValueType_INDEXED_VALUE_TYPE_INVALID"); + case INDEXED_VALUE_TYPE_STRING: + return com.uber.cadence.IndexedValueType.STRING; + case INDEXED_VALUE_TYPE_KEYWORD: + return com.uber.cadence.IndexedValueType.KEYWORD; + case INDEXED_VALUE_TYPE_INT: + return com.uber.cadence.IndexedValueType.INT; + case INDEXED_VALUE_TYPE_DOUBLE: + return com.uber.cadence.IndexedValueType.DOUBLE; + case INDEXED_VALUE_TYPE_BOOL: + return com.uber.cadence.IndexedValueType.BOOL; + case INDEXED_VALUE_TYPE_DATETIME: + return com.uber.cadence.IndexedValueType.DATETIME; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.EncodingType encodingType(EncodingType t) { + switch (t) { + case ENCODING_TYPE_INVALID: + return null; + case ENCODING_TYPE_THRIFTRW: + return com.uber.cadence.EncodingType.ThriftRW; + case ENCODING_TYPE_JSON: + return com.uber.cadence.EncodingType.JSON; + case ENCODING_TYPE_PROTO3: + throw new UnsupportedOperationException(); + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.TimeoutType timeoutType(TimeoutType t) { + switch (t) { + case TIMEOUT_TYPE_INVALID: + return null; + case TIMEOUT_TYPE_START_TO_CLOSE: + return com.uber.cadence.TimeoutType.START_TO_CLOSE; + case TIMEOUT_TYPE_SCHEDULE_TO_START: + return com.uber.cadence.TimeoutType.SCHEDULE_TO_START; + case TIMEOUT_TYPE_SCHEDULE_TO_CLOSE: + return com.uber.cadence.TimeoutType.SCHEDULE_TO_CLOSE; + case TIMEOUT_TYPE_HEARTBEAT: + return com.uber.cadence.TimeoutType.HEARTBEAT; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.DecisionTaskTimedOutCause decisionTaskTimedOutCause( + DecisionTaskTimedOutCause t) { + switch (t) { + case DECISION_TASK_TIMED_OUT_CAUSE_INVALID: + return null; + case DECISION_TASK_TIMED_OUT_CAUSE_TIMEOUT: + return com.uber.cadence.DecisionTaskTimedOutCause.TIMEOUT; + case DECISION_TASK_TIMED_OUT_CAUSE_RESET: + return com.uber.cadence.DecisionTaskTimedOutCause.RESET; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.CancelExternalWorkflowExecutionFailedCause + cancelExternalWorkflowExecutionFailedCause(CancelExternalWorkflowExecutionFailedCause t) { + switch (t) { + case CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID: + return null; + case CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION: + return com.uber.cadence.CancelExternalWorkflowExecutionFailedCause + .UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION; + case CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_COMPLETED: + return com.uber.cadence.CancelExternalWorkflowExecutionFailedCause + .WORKFLOW_ALREADY_COMPLETED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.SignalExternalWorkflowExecutionFailedCause + signalExternalWorkflowExecutionFailedCause(SignalExternalWorkflowExecutionFailedCause t) { + switch (t) { + case SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID: + return null; + case SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION: + return com.uber.cadence.SignalExternalWorkflowExecutionFailedCause + .UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION; + case SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_COMPLETED: + return com.uber.cadence.SignalExternalWorkflowExecutionFailedCause + .WORKFLOW_ALREADY_COMPLETED; + } + throw new IllegalArgumentException("unexpected enum value"); + } + + public static com.uber.cadence.ChildWorkflowExecutionFailedCause + childWorkflowExecutionFailedCause(ChildWorkflowExecutionFailedCause t) { + switch (t) { + case CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID: + return null; + case CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_RUNNING: + return com.uber.cadence.ChildWorkflowExecutionFailedCause.WORKFLOW_ALREADY_RUNNING; + } + throw new IllegalArgumentException("unexpected enum value"); + } +} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapper.java new file mode 100644 index 000000000..599dc7992 --- /dev/null +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapper.java @@ -0,0 +1,121 @@ +/* + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Modifications copyright (C) 2017 Uber Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.uber.cadence.internal.compatibility.proto.mappers; + +import com.google.protobuf.Any; +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.rpc.Status; +import com.uber.cadence.AccessDeniedError; +import com.uber.cadence.CadenceError; +import com.uber.cadence.CancellationAlreadyRequestedError; +import com.uber.cadence.ClientVersionNotSupportedError; +import com.uber.cadence.DomainAlreadyExistsError; +import com.uber.cadence.DomainNotActiveError; +import com.uber.cadence.EntityNotExistsError; +import com.uber.cadence.FeatureNotEnabledError; +import com.uber.cadence.InternalDataInconsistencyError; +import com.uber.cadence.InternalServiceError; +import com.uber.cadence.LimitExceededError; +import com.uber.cadence.ServiceBusyError; +import com.uber.cadence.TimeoutError; +import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; +import com.uber.cadence.WorkflowExecutionAlreadyStartedError; +import io.grpc.StatusRuntimeException; +import io.grpc.protobuf.StatusProto; + +public class ErrorMapper { + public static CadenceError Error(StatusRuntimeException e) { + + Status status = StatusProto.fromThrowable(e); + if (status == null) { + return new CadenceError("empty status", e); + } + + Any detail = Any.getDefaultInstance(); + if (status.getDetailsCount() > 0) { + detail = status.getDetails(0); + } + + try { + switch (e.getStatus().getCode()) { + case PERMISSION_DENIED: + return new AccessDeniedError(e); + case INTERNAL: + return new InternalServiceError(e); + case NOT_FOUND: + if (detail.is(com.uber.cadence.api.v1.WorkflowExecutionAlreadyCompletedError.class)) { + return new WorkflowExecutionAlreadyCompletedError(e); + } else if (detail.is(com.uber.cadence.api.v1.EntityNotExistsError.class) + && status.getMessage().contains("Workflow execution already completed.")) { + // old server returns EntityNotExistsError with message Workflow is alredy completed + return new WorkflowExecutionAlreadyCompletedError(e); + } else { + return new EntityNotExistsError(e); + } + case ALREADY_EXISTS: + if (detail.is(com.uber.cadence.api.v1.CancellationAlreadyRequestedError.class)) { + return new CancellationAlreadyRequestedError(e); + } else if (detail.is(com.uber.cadence.api.v1.DomainAlreadyExistsError.class)) { + return new DomainAlreadyExistsError(e); + } else if (detail.is( + com.uber.cadence.api.v1.WorkflowExecutionAlreadyStartedError.class)) { + com.uber.cadence.api.v1.WorkflowExecutionAlreadyStartedError error = + detail.unpack(com.uber.cadence.api.v1.WorkflowExecutionAlreadyStartedError.class); + return new WorkflowExecutionAlreadyStartedError() + .setStartRequestId(error.getStartRequestId()) + .setRunId(error.getRunId()); + } + case DATA_LOSS: + return new InternalDataInconsistencyError(e); + case FAILED_PRECONDITION: + if (detail.is(com.uber.cadence.api.v1.ClientVersionNotSupportedError.class)) { + com.uber.cadence.api.v1.ClientVersionNotSupportedError error = + detail.unpack(com.uber.cadence.api.v1.ClientVersionNotSupportedError.class); + return new ClientVersionNotSupportedError() + .setFeatureVersion(error.getFeatureVersion()) + .setClientImpl(error.getClientImpl()) + .setSupportedVersions(error.getSupportedVersions()); + } else if (detail.is(com.uber.cadence.api.v1.FeatureNotEnabledError.class)) { + com.uber.cadence.api.v1.FeatureNotEnabledError error = + detail.unpack(com.uber.cadence.api.v1.FeatureNotEnabledError.class); + return new FeatureNotEnabledError().setFeatureFlag(error.getFeatureFlag()); + } else if (detail.is(com.uber.cadence.api.v1.DomainNotActiveError.class)) { + com.uber.cadence.api.v1.DomainNotActiveError error = + detail.unpack(com.uber.cadence.api.v1.DomainNotActiveError.class); + return new DomainNotActiveError() + .setDomainName(error.getDomain()) + .setCurrentCluster(error.getCurrentCluster()) + .setActiveCluster(error.getActiveCluster()); + } + case RESOURCE_EXHAUSTED: + if (detail.is(com.uber.cadence.api.v1.LimitExceededError.class)) { + return new LimitExceededError(e); + } else { + return new ServiceBusyError().setReason(e.getMessage()); + } + case DEADLINE_EXCEEDED: + return new TimeoutError(e); + case UNKNOWN: + default: + return new CadenceError(e); + } + } catch (InvalidProtocolBufferException ex) { + return new CadenceError(ex); + } + } +} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/Helpers.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/Helpers.java similarity index 78% rename from src/main/java/com/uber/cadence/internal/compatibility/proto/Helpers.java rename to src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/Helpers.java index 37993d0af..8128fbc66 100644 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/Helpers.java +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/Helpers.java @@ -13,7 +13,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.uber.cadence.internal.compatibility.proto; +package com.uber.cadence.internal.compatibility.proto.mappers; import com.google.common.base.MoreObjects; import com.google.common.base.Strings; @@ -21,6 +21,7 @@ import com.google.protobuf.DoubleValue; import com.google.protobuf.Duration; import com.google.protobuf.FieldMask; +import com.google.protobuf.Int64Value; import com.google.protobuf.Timestamp; import com.google.protobuf.util.Durations; import com.google.protobuf.util.Timestamps; @@ -72,4 +73,27 @@ static ByteString arrayToByteString(byte[] t) { } return ByteString.copyFrom(t); } + + static long toInt64Value(Int64Value v) { + return v.getValue(); + } + + static long timeToUnixNano(Timestamp t) { + return Timestamps.toNanos(t); + } + + static int durationToDays(Duration d) { + return (int) Durations.toDays(d); + } + + static int durationToSeconds(Duration d) { + return (int) Durations.toSeconds(d); + } + + static byte[] byteStringToArray(ByteString t) { + if (t == null || t.size() == 0) { + return null; + } + return t.toByteArray(); + } } diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/HistoryMapper.java similarity index 71% rename from src/main/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapper.java rename to src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/HistoryMapper.java index 8c49de1f7..2fef9712e 100644 --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapper.java +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/HistoryMapper.java @@ -13,154 +13,70 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.uber.cadence.internal.compatibility.thrift; +package com.uber.cadence.internal.compatibility.proto.mappers; -import static com.uber.cadence.EventType.ActivityTaskCancelRequested; -import static com.uber.cadence.EventType.ActivityTaskCanceled; -import static com.uber.cadence.EventType.ActivityTaskCompleted; -import static com.uber.cadence.EventType.ActivityTaskFailed; -import static com.uber.cadence.EventType.ActivityTaskScheduled; -import static com.uber.cadence.EventType.ActivityTaskStarted; -import static com.uber.cadence.EventType.ActivityTaskTimedOut; -import static com.uber.cadence.EventType.CancelTimerFailed; -import static com.uber.cadence.EventType.ChildWorkflowExecutionCanceled; -import static com.uber.cadence.EventType.ChildWorkflowExecutionCompleted; -import static com.uber.cadence.EventType.ChildWorkflowExecutionFailed; -import static com.uber.cadence.EventType.ChildWorkflowExecutionStarted; -import static com.uber.cadence.EventType.ChildWorkflowExecutionTerminated; -import static com.uber.cadence.EventType.ChildWorkflowExecutionTimedOut; -import static com.uber.cadence.EventType.DecisionTaskCompleted; -import static com.uber.cadence.EventType.DecisionTaskFailed; -import static com.uber.cadence.EventType.DecisionTaskScheduled; -import static com.uber.cadence.EventType.DecisionTaskStarted; -import static com.uber.cadence.EventType.DecisionTaskTimedOut; -import static com.uber.cadence.EventType.ExternalWorkflowExecutionCancelRequested; -import static com.uber.cadence.EventType.ExternalWorkflowExecutionSignaled; -import static com.uber.cadence.EventType.MarkerRecorded; -import static com.uber.cadence.EventType.RequestCancelActivityTaskFailed; -import static com.uber.cadence.EventType.RequestCancelExternalWorkflowExecutionFailed; -import static com.uber.cadence.EventType.RequestCancelExternalWorkflowExecutionInitiated; -import static com.uber.cadence.EventType.SignalExternalWorkflowExecutionFailed; -import static com.uber.cadence.EventType.SignalExternalWorkflowExecutionInitiated; -import static com.uber.cadence.EventType.StartChildWorkflowExecutionFailed; -import static com.uber.cadence.EventType.StartChildWorkflowExecutionInitiated; -import static com.uber.cadence.EventType.TimerCanceled; -import static com.uber.cadence.EventType.TimerFired; -import static com.uber.cadence.EventType.TimerStarted; -import static com.uber.cadence.EventType.UpsertWorkflowSearchAttributes; -import static com.uber.cadence.EventType.WorkflowExecutionCancelRequested; -import static com.uber.cadence.EventType.WorkflowExecutionCanceled; -import static com.uber.cadence.EventType.WorkflowExecutionCompleted; -import static com.uber.cadence.EventType.WorkflowExecutionContinuedAsNew; -import static com.uber.cadence.EventType.WorkflowExecutionFailed; -import static com.uber.cadence.EventType.WorkflowExecutionSignaled; -import static com.uber.cadence.EventType.WorkflowExecutionStarted; -import static com.uber.cadence.EventType.WorkflowExecutionTerminated; -import static com.uber.cadence.EventType.WorkflowExecutionTimedOut; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.cancelExternalWorkflowExecutionFailedCause; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.childWorkflowExecutionFailedCause; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.continueAsNewInitiator; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.decisionTaskFailedCause; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.decisionTaskTimedOutCause; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.parentClosePolicy; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.signalExternalWorkflowExecutionFailedCause; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.timeoutType; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.workflowIdReusePolicy; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.byteStringToArray; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.durationToSeconds; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.timeToUnixNano; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.activityType; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.externalInitiatedId; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.externalWorkflowExecution; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.failureDetails; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.failureReason; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.header; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.memo; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.parentDomainName; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.parentInitiatedId; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.parentWorkflowExecution; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.payload; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.resetPoints; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.retryPolicy; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.searchAttributes; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.taskList; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowExecution; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowType; +import static com.uber.cadence.EventType.*; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.cancelExternalWorkflowExecutionFailedCause; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.childWorkflowExecutionFailedCause; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.continueAsNewInitiator; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.decisionTaskFailedCause; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.decisionTaskTimedOutCause; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.parentClosePolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.signalExternalWorkflowExecutionFailedCause; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.timeoutType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.workflowIdReusePolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.byteStringToArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.durationToSeconds; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.timeToUnixNano; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.activityType; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.externalInitiatedId; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.externalWorkflowExecution; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.failureDetails; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.failureReason; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.header; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.memo; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.parentDomainName; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.parentInitiatedId; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.parentWorkflowExecution; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.payload; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.resetPoints; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.retryPolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.searchAttributes; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.taskList; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecution; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowType; -import com.uber.cadence.ActivityTaskCancelRequestedEventAttributes; -import com.uber.cadence.ActivityTaskCanceledEventAttributes; -import com.uber.cadence.ActivityTaskCompletedEventAttributes; -import com.uber.cadence.ActivityTaskFailedEventAttributes; -import com.uber.cadence.ActivityTaskScheduledEventAttributes; -import com.uber.cadence.ActivityTaskStartedEventAttributes; -import com.uber.cadence.ActivityTaskTimedOutEventAttributes; -import com.uber.cadence.CancelTimerFailedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionCanceledEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionCompletedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionStartedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionTerminatedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionTimedOutEventAttributes; -import com.uber.cadence.DecisionTaskCompletedEventAttributes; -import com.uber.cadence.DecisionTaskFailedEventAttributes; -import com.uber.cadence.DecisionTaskScheduledEventAttributes; -import com.uber.cadence.DecisionTaskStartedEventAttributes; -import com.uber.cadence.DecisionTaskTimedOutEventAttributes; -import com.uber.cadence.ExternalWorkflowExecutionCancelRequestedEventAttributes; -import com.uber.cadence.ExternalWorkflowExecutionSignaledEventAttributes; -import com.uber.cadence.History; -import com.uber.cadence.HistoryEvent; -import com.uber.cadence.MarkerRecordedEventAttributes; -import com.uber.cadence.RequestCancelActivityTaskFailedEventAttributes; -import com.uber.cadence.RequestCancelExternalWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes; -import com.uber.cadence.SignalExternalWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.SignalExternalWorkflowExecutionInitiatedEventAttributes; -import com.uber.cadence.StartChildWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.StartChildWorkflowExecutionInitiatedEventAttributes; -import com.uber.cadence.TimerCanceledEventAttributes; -import com.uber.cadence.TimerFiredEventAttributes; -import com.uber.cadence.TimerStartedEventAttributes; -import com.uber.cadence.UpsertWorkflowSearchAttributesEventAttributes; -import com.uber.cadence.WorkflowExecutionCancelRequestedEventAttributes; -import com.uber.cadence.WorkflowExecutionCanceledEventAttributes; -import com.uber.cadence.WorkflowExecutionCompletedEventAttributes; -import com.uber.cadence.WorkflowExecutionContinuedAsNewEventAttributes; -import com.uber.cadence.WorkflowExecutionFailedEventAttributes; -import com.uber.cadence.WorkflowExecutionSignaledEventAttributes; -import com.uber.cadence.WorkflowExecutionStartedEventAttributes; -import com.uber.cadence.WorkflowExecutionTerminatedEventAttributes; -import com.uber.cadence.WorkflowExecutionTimedOutEventAttributes; import java.util.ArrayList; import java.util.List; class HistoryMapper { - static History history(com.uber.cadence.api.v1.History t) { + static com.uber.cadence.History history(com.uber.cadence.api.v1.History t) { if (t == null || t == com.uber.cadence.api.v1.History.getDefaultInstance()) { return null; } - History history = new History(); + com.uber.cadence.History history = new com.uber.cadence.History(); history.setEvents(historyEventArray(t.getEventsList())); return history; } - static List historyEventArray(List t) { + static List historyEventArray( + List t) { if (t == null) { return null; } - List v = new ArrayList<>(); + List v = new ArrayList<>(); for (int i = 0; i < t.size(); i++) { v.add(historyEvent(t.get(i))); } return v; } - static HistoryEvent historyEvent(com.uber.cadence.api.v1.HistoryEvent e) { + static com.uber.cadence.HistoryEvent historyEvent(com.uber.cadence.api.v1.HistoryEvent e) { if (e == null || e == com.uber.cadence.api.v1.HistoryEvent.getDefaultInstance()) { return null; } - HistoryEvent event = new HistoryEvent(); + com.uber.cadence.HistoryEvent event = new com.uber.cadence.HistoryEvent(); event.setEventId(e.getEventId()); event.setTimestamp(timeToUnixNano(e.getEventTime())); event.setVersion(e.getVersion()); @@ -426,28 +342,30 @@ static HistoryEvent historyEvent(com.uber.cadence.api.v1.HistoryEvent e) { return event; } - static ActivityTaskCancelRequestedEventAttributes activityTaskCancelRequestedEventAttributes( - com.uber.cadence.api.v1.ActivityTaskCancelRequestedEventAttributes t) { + static com.uber.cadence.ActivityTaskCancelRequestedEventAttributes + activityTaskCancelRequestedEventAttributes( + com.uber.cadence.api.v1.ActivityTaskCancelRequestedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ActivityTaskCancelRequestedEventAttributes .getDefaultInstance()) { return null; } - ActivityTaskCancelRequestedEventAttributes res = - new ActivityTaskCancelRequestedEventAttributes(); + com.uber.cadence.ActivityTaskCancelRequestedEventAttributes res = + new com.uber.cadence.ActivityTaskCancelRequestedEventAttributes(); res.setActivityId(t.getActivityId()); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); return res; } - static ActivityTaskCanceledEventAttributes activityTaskCanceledEventAttributes( + static com.uber.cadence.ActivityTaskCanceledEventAttributes activityTaskCanceledEventAttributes( com.uber.cadence.api.v1.ActivityTaskCanceledEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ActivityTaskCanceledEventAttributes.getDefaultInstance()) { return null; } - ActivityTaskCanceledEventAttributes res = new ActivityTaskCanceledEventAttributes(); + com.uber.cadence.ActivityTaskCanceledEventAttributes res = + new com.uber.cadence.ActivityTaskCanceledEventAttributes(); res.setDetails(payload(t.getDetails())); res.setLatestCancelRequestedEventId(t.getLatestCancelRequestedEventId()); res.setScheduledEventId(t.getScheduledEventId()); @@ -456,13 +374,14 @@ static ActivityTaskCanceledEventAttributes activityTaskCanceledEventAttributes( return res; } - static ActivityTaskCompletedEventAttributes activityTaskCompletedEventAttributes( + static com.uber.cadence.ActivityTaskCompletedEventAttributes activityTaskCompletedEventAttributes( com.uber.cadence.api.v1.ActivityTaskCompletedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ActivityTaskCompletedEventAttributes.getDefaultInstance()) { return null; } - ActivityTaskCompletedEventAttributes res = new ActivityTaskCompletedEventAttributes(); + com.uber.cadence.ActivityTaskCompletedEventAttributes res = + new com.uber.cadence.ActivityTaskCompletedEventAttributes(); res.setResult(payload(t.getResult())); res.setScheduledEventId(t.getScheduledEventId()); res.setStartedEventId(t.getStartedEventId()); @@ -470,13 +389,14 @@ static ActivityTaskCompletedEventAttributes activityTaskCompletedEventAttributes return res; } - static ActivityTaskFailedEventAttributes activityTaskFailedEventAttributes( + static com.uber.cadence.ActivityTaskFailedEventAttributes activityTaskFailedEventAttributes( com.uber.cadence.api.v1.ActivityTaskFailedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ActivityTaskFailedEventAttributes.getDefaultInstance()) { return null; } - ActivityTaskFailedEventAttributes res = new ActivityTaskFailedEventAttributes(); + com.uber.cadence.ActivityTaskFailedEventAttributes res = + new com.uber.cadence.ActivityTaskFailedEventAttributes(); res.setReason(failureReason(t.getFailure())); res.setDetails(failureDetails(t.getFailure())); res.setScheduledEventId(t.getScheduledEventId()); @@ -485,13 +405,14 @@ static ActivityTaskFailedEventAttributes activityTaskFailedEventAttributes( return res; } - static ActivityTaskScheduledEventAttributes activityTaskScheduledEventAttributes( + static com.uber.cadence.ActivityTaskScheduledEventAttributes activityTaskScheduledEventAttributes( com.uber.cadence.api.v1.ActivityTaskScheduledEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ActivityTaskScheduledEventAttributes.getDefaultInstance()) { return null; } - ActivityTaskScheduledEventAttributes res = new ActivityTaskScheduledEventAttributes(); + com.uber.cadence.ActivityTaskScheduledEventAttributes res = + new com.uber.cadence.ActivityTaskScheduledEventAttributes(); res.setActivityId(t.getActivityId()); res.setActivityType(activityType(t.getActivityType())); res.setDomain(t.getDomain()); @@ -507,13 +428,14 @@ static ActivityTaskScheduledEventAttributes activityTaskScheduledEventAttributes return res; } - static ActivityTaskStartedEventAttributes activityTaskStartedEventAttributes( + static com.uber.cadence.ActivityTaskStartedEventAttributes activityTaskStartedEventAttributes( com.uber.cadence.api.v1.ActivityTaskStartedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ActivityTaskStartedEventAttributes.getDefaultInstance()) { return null; } - ActivityTaskStartedEventAttributes res = new ActivityTaskStartedEventAttributes(); + com.uber.cadence.ActivityTaskStartedEventAttributes res = + new com.uber.cadence.ActivityTaskStartedEventAttributes(); res.setScheduledEventId(t.getScheduledEventId()); res.setIdentity(t.getIdentity()); res.setRequestId(t.getRequestId()); @@ -523,13 +445,14 @@ static ActivityTaskStartedEventAttributes activityTaskStartedEventAttributes( return res; } - static ActivityTaskTimedOutEventAttributes activityTaskTimedOutEventAttributes( + static com.uber.cadence.ActivityTaskTimedOutEventAttributes activityTaskTimedOutEventAttributes( com.uber.cadence.api.v1.ActivityTaskTimedOutEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ActivityTaskTimedOutEventAttributes.getDefaultInstance()) { return null; } - ActivityTaskTimedOutEventAttributes res = new ActivityTaskTimedOutEventAttributes(); + com.uber.cadence.ActivityTaskTimedOutEventAttributes res = + new com.uber.cadence.ActivityTaskTimedOutEventAttributes(); res.setDetails(payload(t.getDetails())); res.setScheduledEventId(t.getScheduledEventId()); res.setStartedEventId(t.getStartedEventId()); @@ -539,13 +462,14 @@ static ActivityTaskTimedOutEventAttributes activityTaskTimedOutEventAttributes( return res; } - static CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes( + static com.uber.cadence.CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes( com.uber.cadence.api.v1.CancelTimerFailedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.CancelTimerFailedEventAttributes.getDefaultInstance()) { return null; } - CancelTimerFailedEventAttributes res = new CancelTimerFailedEventAttributes(); + com.uber.cadence.CancelTimerFailedEventAttributes res = + new com.uber.cadence.CancelTimerFailedEventAttributes(); res.setTimerId(t.getTimerId()); res.setCause(t.getCause()); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); @@ -553,7 +477,7 @@ static CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes( return res; } - static ChildWorkflowExecutionCanceledEventAttributes + static com.uber.cadence.ChildWorkflowExecutionCanceledEventAttributes childWorkflowExecutionCanceledEventAttributes( com.uber.cadence.api.v1.ChildWorkflowExecutionCanceledEventAttributes t) { if (t == null @@ -562,8 +486,8 @@ static CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes( .getDefaultInstance()) { return null; } - ChildWorkflowExecutionCanceledEventAttributes res = - new ChildWorkflowExecutionCanceledEventAttributes(); + com.uber.cadence.ChildWorkflowExecutionCanceledEventAttributes res = + new com.uber.cadence.ChildWorkflowExecutionCanceledEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -573,7 +497,7 @@ static CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes( return res; } - static ChildWorkflowExecutionCompletedEventAttributes + static com.uber.cadence.ChildWorkflowExecutionCompletedEventAttributes childWorkflowExecutionCompletedEventAttributes( com.uber.cadence.api.v1.ChildWorkflowExecutionCompletedEventAttributes t) { if (t == null @@ -582,8 +506,8 @@ static CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes( .getDefaultInstance()) { return null; } - ChildWorkflowExecutionCompletedEventAttributes res = - new ChildWorkflowExecutionCompletedEventAttributes(); + com.uber.cadence.ChildWorkflowExecutionCompletedEventAttributes res = + new com.uber.cadence.ChildWorkflowExecutionCompletedEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -593,16 +517,17 @@ static CancelTimerFailedEventAttributes cancelTimerFailedEventAttributes( return res; } - static ChildWorkflowExecutionFailedEventAttributes childWorkflowExecutionFailedEventAttributes( - com.uber.cadence.api.v1.ChildWorkflowExecutionFailedEventAttributes t) { + static com.uber.cadence.ChildWorkflowExecutionFailedEventAttributes + childWorkflowExecutionFailedEventAttributes( + com.uber.cadence.api.v1.ChildWorkflowExecutionFailedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ChildWorkflowExecutionFailedEventAttributes .getDefaultInstance()) { return null; } - ChildWorkflowExecutionFailedEventAttributes res = - new ChildWorkflowExecutionFailedEventAttributes(); + com.uber.cadence.ChildWorkflowExecutionFailedEventAttributes res = + new com.uber.cadence.ChildWorkflowExecutionFailedEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -613,16 +538,17 @@ static ChildWorkflowExecutionFailedEventAttributes childWorkflowExecutionFailedE return res; } - static ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStartedEventAttributes( - com.uber.cadence.api.v1.ChildWorkflowExecutionStartedEventAttributes t) { + static com.uber.cadence.ChildWorkflowExecutionStartedEventAttributes + childWorkflowExecutionStartedEventAttributes( + com.uber.cadence.api.v1.ChildWorkflowExecutionStartedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.ChildWorkflowExecutionStartedEventAttributes .getDefaultInstance()) { return null; } - ChildWorkflowExecutionStartedEventAttributes res = - new ChildWorkflowExecutionStartedEventAttributes(); + com.uber.cadence.ChildWorkflowExecutionStartedEventAttributes res = + new com.uber.cadence.ChildWorkflowExecutionStartedEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -631,7 +557,7 @@ static ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStarte return res; } - static ChildWorkflowExecutionTerminatedEventAttributes + static com.uber.cadence.ChildWorkflowExecutionTerminatedEventAttributes childWorkflowExecutionTerminatedEventAttributes( com.uber.cadence.api.v1.ChildWorkflowExecutionTerminatedEventAttributes t) { if (t == null @@ -640,8 +566,8 @@ static ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStarte .getDefaultInstance()) { return null; } - ChildWorkflowExecutionTerminatedEventAttributes res = - new ChildWorkflowExecutionTerminatedEventAttributes(); + com.uber.cadence.ChildWorkflowExecutionTerminatedEventAttributes res = + new com.uber.cadence.ChildWorkflowExecutionTerminatedEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -650,7 +576,7 @@ static ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStarte return res; } - static ChildWorkflowExecutionTimedOutEventAttributes + static com.uber.cadence.ChildWorkflowExecutionTimedOutEventAttributes childWorkflowExecutionTimedOutEventAttributes( com.uber.cadence.api.v1.ChildWorkflowExecutionTimedOutEventAttributes t) { if (t == null @@ -659,8 +585,8 @@ static ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStarte .getDefaultInstance()) { return null; } - ChildWorkflowExecutionTimedOutEventAttributes res = - new ChildWorkflowExecutionTimedOutEventAttributes(); + com.uber.cadence.ChildWorkflowExecutionTimedOutEventAttributes res = + new com.uber.cadence.ChildWorkflowExecutionTimedOutEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -670,13 +596,14 @@ static ChildWorkflowExecutionStartedEventAttributes childWorkflowExecutionStarte return res; } - static DecisionTaskFailedEventAttributes decisionTaskFailedEventAttributes( + static com.uber.cadence.DecisionTaskFailedEventAttributes decisionTaskFailedEventAttributes( com.uber.cadence.api.v1.DecisionTaskFailedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.DecisionTaskFailedEventAttributes.getDefaultInstance()) { return null; } - DecisionTaskFailedEventAttributes res = new DecisionTaskFailedEventAttributes(); + com.uber.cadence.DecisionTaskFailedEventAttributes res = + new com.uber.cadence.DecisionTaskFailedEventAttributes(); res.setScheduledEventId(t.getScheduledEventId()); res.setStartedEventId(t.getStartedEventId()); res.setCause(decisionTaskFailedCause(t.getCause())); @@ -690,39 +617,42 @@ static DecisionTaskFailedEventAttributes decisionTaskFailedEventAttributes( return res; } - static DecisionTaskScheduledEventAttributes decisionTaskScheduledEventAttributes( + static com.uber.cadence.DecisionTaskScheduledEventAttributes decisionTaskScheduledEventAttributes( com.uber.cadence.api.v1.DecisionTaskScheduledEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.DecisionTaskScheduledEventAttributes.getDefaultInstance()) { return null; } - DecisionTaskScheduledEventAttributes res = new DecisionTaskScheduledEventAttributes(); + com.uber.cadence.DecisionTaskScheduledEventAttributes res = + new com.uber.cadence.DecisionTaskScheduledEventAttributes(); res.setTaskList(taskList(t.getTaskList())); res.setStartToCloseTimeoutSeconds(durationToSeconds(t.getStartToCloseTimeout())); res.setAttempt(t.getAttempt()); return res; } - static DecisionTaskStartedEventAttributes decisionTaskStartedEventAttributes( + static com.uber.cadence.DecisionTaskStartedEventAttributes decisionTaskStartedEventAttributes( com.uber.cadence.api.v1.DecisionTaskStartedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.DecisionTaskStartedEventAttributes.getDefaultInstance()) { return null; } - DecisionTaskStartedEventAttributes res = new DecisionTaskStartedEventAttributes(); + com.uber.cadence.DecisionTaskStartedEventAttributes res = + new com.uber.cadence.DecisionTaskStartedEventAttributes(); res.setScheduledEventId(t.getScheduledEventId()); res.setIdentity(t.getIdentity()); res.setRequestId(t.getRequestId()); return res; } - static DecisionTaskCompletedEventAttributes decisionTaskCompletedEventAttributes( + static com.uber.cadence.DecisionTaskCompletedEventAttributes decisionTaskCompletedEventAttributes( com.uber.cadence.api.v1.DecisionTaskCompletedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.DecisionTaskCompletedEventAttributes.getDefaultInstance()) { return null; } - DecisionTaskCompletedEventAttributes res = new DecisionTaskCompletedEventAttributes(); + com.uber.cadence.DecisionTaskCompletedEventAttributes res = + new com.uber.cadence.DecisionTaskCompletedEventAttributes(); res.setScheduledEventId(t.getScheduledEventId()); res.setStartedEventId(t.getStartedEventId()); res.setIdentity(t.getIdentity()); @@ -731,13 +661,14 @@ static DecisionTaskCompletedEventAttributes decisionTaskCompletedEventAttributes return res; } - static DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes( + static com.uber.cadence.DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes( com.uber.cadence.api.v1.DecisionTaskTimedOutEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.DecisionTaskTimedOutEventAttributes.getDefaultInstance()) { return null; } - DecisionTaskTimedOutEventAttributes res = new DecisionTaskTimedOutEventAttributes(); + com.uber.cadence.DecisionTaskTimedOutEventAttributes res = + new com.uber.cadence.DecisionTaskTimedOutEventAttributes(); res.setScheduledEventId(t.getScheduledEventId()); res.setStartedEventId(t.getStartedEventId()); res.setTimeoutType(timeoutType(t.getTimeoutType())); @@ -749,7 +680,7 @@ static DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes( return res; } - static ExternalWorkflowExecutionCancelRequestedEventAttributes + static com.uber.cadence.ExternalWorkflowExecutionCancelRequestedEventAttributes externalWorkflowExecutionCancelRequestedEventAttributes( com.uber.cadence.api.v1.ExternalWorkflowExecutionCancelRequestedEventAttributes t) { if (t == null @@ -758,15 +689,15 @@ static DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes( .getDefaultInstance()) { return null; } - ExternalWorkflowExecutionCancelRequestedEventAttributes res = - new ExternalWorkflowExecutionCancelRequestedEventAttributes(); + com.uber.cadence.ExternalWorkflowExecutionCancelRequestedEventAttributes res = + new com.uber.cadence.ExternalWorkflowExecutionCancelRequestedEventAttributes(); res.setInitiatedEventId(t.getInitiatedEventId()); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); return res; } - static ExternalWorkflowExecutionSignaledEventAttributes + static com.uber.cadence.ExternalWorkflowExecutionSignaledEventAttributes externalWorkflowExecutionSignaledEventAttributes( com.uber.cadence.api.v1.ExternalWorkflowExecutionSignaledEventAttributes t) { if (t == null @@ -775,8 +706,8 @@ static DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes( .getDefaultInstance()) { return null; } - ExternalWorkflowExecutionSignaledEventAttributes res = - new ExternalWorkflowExecutionSignaledEventAttributes(); + com.uber.cadence.ExternalWorkflowExecutionSignaledEventAttributes res = + new com.uber.cadence.ExternalWorkflowExecutionSignaledEventAttributes(); res.setInitiatedEventId(t.getInitiatedEventId()); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); @@ -784,13 +715,14 @@ static DecisionTaskTimedOutEventAttributes decisionTaskTimedOutEventAttributes( return res; } - static MarkerRecordedEventAttributes markerRecordedEventAttributes( + static com.uber.cadence.MarkerRecordedEventAttributes markerRecordedEventAttributes( com.uber.cadence.api.v1.MarkerRecordedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.MarkerRecordedEventAttributes.getDefaultInstance()) { return null; } - MarkerRecordedEventAttributes res = new MarkerRecordedEventAttributes(); + com.uber.cadence.MarkerRecordedEventAttributes res = + new com.uber.cadence.MarkerRecordedEventAttributes(); res.setMarkerName(t.getMarkerName()); res.setDetails(payload(t.getDetails())); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); @@ -798,7 +730,7 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( return res; } - static RequestCancelActivityTaskFailedEventAttributes + static com.uber.cadence.RequestCancelActivityTaskFailedEventAttributes requestCancelActivityTaskFailedEventAttributes( com.uber.cadence.api.v1.RequestCancelActivityTaskFailedEventAttributes t) { if (t == null @@ -807,15 +739,15 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( .getDefaultInstance()) { return null; } - RequestCancelActivityTaskFailedEventAttributes res = - new RequestCancelActivityTaskFailedEventAttributes(); + com.uber.cadence.RequestCancelActivityTaskFailedEventAttributes res = + new com.uber.cadence.RequestCancelActivityTaskFailedEventAttributes(); res.setActivityId(t.getActivityId()); res.setCause(t.getCause()); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); return res; } - static RequestCancelExternalWorkflowExecutionFailedEventAttributes + static com.uber.cadence.RequestCancelExternalWorkflowExecutionFailedEventAttributes requestCancelExternalWorkflowExecutionFailedEventAttributes( com.uber.cadence.api.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributes t) { if (t == null @@ -824,8 +756,8 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( .getDefaultInstance()) { return null; } - RequestCancelExternalWorkflowExecutionFailedEventAttributes res = - new RequestCancelExternalWorkflowExecutionFailedEventAttributes(); + com.uber.cadence.RequestCancelExternalWorkflowExecutionFailedEventAttributes res = + new com.uber.cadence.RequestCancelExternalWorkflowExecutionFailedEventAttributes(); res.setCause(cancelExternalWorkflowExecutionFailedCause(t.getCause())); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); res.setDomain(t.getDomain()); @@ -835,7 +767,7 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( return res; } - static RequestCancelExternalWorkflowExecutionInitiatedEventAttributes + static com.uber.cadence.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes requestCancelExternalWorkflowExecutionInitiatedEventAttributes( com.uber.cadence.api.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes t) { @@ -846,8 +778,8 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( .getDefaultInstance()) { return null; } - RequestCancelExternalWorkflowExecutionInitiatedEventAttributes res = - new RequestCancelExternalWorkflowExecutionInitiatedEventAttributes(); + com.uber.cadence.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes res = + new com.uber.cadence.RequestCancelExternalWorkflowExecutionInitiatedEventAttributes(); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); @@ -856,7 +788,7 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( return res; } - static SignalExternalWorkflowExecutionFailedEventAttributes + static com.uber.cadence.SignalExternalWorkflowExecutionFailedEventAttributes signalExternalWorkflowExecutionFailedEventAttributes( com.uber.cadence.api.v1.SignalExternalWorkflowExecutionFailedEventAttributes t) { if (t == null @@ -865,8 +797,8 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( .getDefaultInstance()) { return null; } - SignalExternalWorkflowExecutionFailedEventAttributes res = - new SignalExternalWorkflowExecutionFailedEventAttributes(); + com.uber.cadence.SignalExternalWorkflowExecutionFailedEventAttributes res = + new com.uber.cadence.SignalExternalWorkflowExecutionFailedEventAttributes(); res.setCause(signalExternalWorkflowExecutionFailedCause(t.getCause())); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); res.setDomain(t.getDomain()); @@ -876,7 +808,7 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( return res; } - static SignalExternalWorkflowExecutionInitiatedEventAttributes + static com.uber.cadence.SignalExternalWorkflowExecutionInitiatedEventAttributes signalExternalWorkflowExecutionInitiatedEventAttributes( com.uber.cadence.api.v1.SignalExternalWorkflowExecutionInitiatedEventAttributes t) { if (t == null @@ -885,8 +817,8 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( .getDefaultInstance()) { return null; } - SignalExternalWorkflowExecutionInitiatedEventAttributes res = - new SignalExternalWorkflowExecutionInitiatedEventAttributes(); + com.uber.cadence.SignalExternalWorkflowExecutionInitiatedEventAttributes res = + new com.uber.cadence.SignalExternalWorkflowExecutionInitiatedEventAttributes(); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); res.setDomain(t.getDomain()); res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); @@ -897,7 +829,7 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( return res; } - static StartChildWorkflowExecutionFailedEventAttributes + static com.uber.cadence.StartChildWorkflowExecutionFailedEventAttributes startChildWorkflowExecutionFailedEventAttributes( com.uber.cadence.api.v1.StartChildWorkflowExecutionFailedEventAttributes t) { if (t == null @@ -906,8 +838,8 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( .getDefaultInstance()) { return null; } - StartChildWorkflowExecutionFailedEventAttributes res = - new StartChildWorkflowExecutionFailedEventAttributes(); + com.uber.cadence.StartChildWorkflowExecutionFailedEventAttributes res = + new com.uber.cadence.StartChildWorkflowExecutionFailedEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowId(t.getWorkflowId()); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -918,7 +850,7 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( return res; } - static StartChildWorkflowExecutionInitiatedEventAttributes + static com.uber.cadence.StartChildWorkflowExecutionInitiatedEventAttributes startChildWorkflowExecutionInitiatedEventAttributes( com.uber.cadence.api.v1.StartChildWorkflowExecutionInitiatedEventAttributes t) { if (t == null @@ -927,8 +859,8 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( .getDefaultInstance()) { return null; } - StartChildWorkflowExecutionInitiatedEventAttributes res = - new StartChildWorkflowExecutionInitiatedEventAttributes(); + com.uber.cadence.StartChildWorkflowExecutionInitiatedEventAttributes res = + new com.uber.cadence.StartChildWorkflowExecutionInitiatedEventAttributes(); res.setDomain(t.getDomain()); res.setWorkflowId(t.getWorkflowId()); res.setWorkflowType(workflowType(t.getWorkflowType())); @@ -947,18 +879,17 @@ static MarkerRecordedEventAttributes markerRecordedEventAttributes( res.setMemo(memo(t.getMemo())); res.setSearchAttributes(searchAttributes(t.getSearchAttributes())); res.setDelayStartSeconds(durationToSeconds(t.getDelayStart())); - res.setJitterStartSeconds(durationToSeconds(t.getJitterStart())); - res.setFirstRunAtTimestamp(timeToUnixNano(t.getFirstRunAt())); return res; } - static TimerCanceledEventAttributes timerCanceledEventAttributes( + static com.uber.cadence.TimerCanceledEventAttributes timerCanceledEventAttributes( com.uber.cadence.api.v1.TimerCanceledEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.TimerCanceledEventAttributes.getDefaultInstance()) { return null; } - TimerCanceledEventAttributes res = new TimerCanceledEventAttributes(); + com.uber.cadence.TimerCanceledEventAttributes res = + new com.uber.cadence.TimerCanceledEventAttributes(); res.setTimerId(t.getTimerId()); res.setStartedEventId(t.getStartedEventId()); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); @@ -966,31 +897,33 @@ static TimerCanceledEventAttributes timerCanceledEventAttributes( return res; } - static TimerFiredEventAttributes timerFiredEventAttributes( + static com.uber.cadence.TimerFiredEventAttributes timerFiredEventAttributes( com.uber.cadence.api.v1.TimerFiredEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.TimerFiredEventAttributes.getDefaultInstance()) { return null; } - TimerFiredEventAttributes res = new TimerFiredEventAttributes(); + com.uber.cadence.TimerFiredEventAttributes res = + new com.uber.cadence.TimerFiredEventAttributes(); res.setTimerId(t.getTimerId()); res.setStartedEventId(t.getStartedEventId()); return res; } - static TimerStartedEventAttributes timerStartedEventAttributes( + static com.uber.cadence.TimerStartedEventAttributes timerStartedEventAttributes( com.uber.cadence.api.v1.TimerStartedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.TimerStartedEventAttributes.getDefaultInstance()) { return null; } - TimerStartedEventAttributes res = new TimerStartedEventAttributes(); + com.uber.cadence.TimerStartedEventAttributes res = + new com.uber.cadence.TimerStartedEventAttributes(); res.setTimerId(t.getTimerId()); res.setStartToFireTimeoutSeconds(durationToSeconds(t.getStartToFireTimeout())); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); return res; } - static UpsertWorkflowSearchAttributesEventAttributes + static com.uber.cadence.UpsertWorkflowSearchAttributesEventAttributes upsertWorkflowSearchAttributesEventAttributes( com.uber.cadence.api.v1.UpsertWorkflowSearchAttributesEventAttributes t) { if (t == null @@ -999,14 +932,14 @@ static TimerStartedEventAttributes timerStartedEventAttributes( .getDefaultInstance()) { return null; } - UpsertWorkflowSearchAttributesEventAttributes res = - new UpsertWorkflowSearchAttributesEventAttributes(); + com.uber.cadence.UpsertWorkflowSearchAttributesEventAttributes res = + new com.uber.cadence.UpsertWorkflowSearchAttributesEventAttributes(); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); res.setSearchAttributes(searchAttributes(t.getSearchAttributes())); return res; } - static WorkflowExecutionCancelRequestedEventAttributes + static com.uber.cadence.WorkflowExecutionCancelRequestedEventAttributes workflowExecutionCancelRequestedEventAttributes( com.uber.cadence.api.v1.WorkflowExecutionCancelRequestedEventAttributes t) { if (t == null @@ -1015,8 +948,8 @@ static TimerStartedEventAttributes timerStartedEventAttributes( .getDefaultInstance()) { return null; } - WorkflowExecutionCancelRequestedEventAttributes res = - new WorkflowExecutionCancelRequestedEventAttributes(); + com.uber.cadence.WorkflowExecutionCancelRequestedEventAttributes res = + new com.uber.cadence.WorkflowExecutionCancelRequestedEventAttributes(); res.setCause(t.getCause()); res.setExternalInitiatedEventId(externalInitiatedId(t.getExternalExecutionInfo())); res.setExternalWorkflowExecution(externalWorkflowExecution(t.getExternalExecutionInfo())); @@ -1024,35 +957,39 @@ static TimerStartedEventAttributes timerStartedEventAttributes( return res; } - static WorkflowExecutionCanceledEventAttributes workflowExecutionCanceledEventAttributes( - com.uber.cadence.api.v1.WorkflowExecutionCanceledEventAttributes t) { + static com.uber.cadence.WorkflowExecutionCanceledEventAttributes + workflowExecutionCanceledEventAttributes( + com.uber.cadence.api.v1.WorkflowExecutionCanceledEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionCanceledEventAttributes .getDefaultInstance()) { return null; } - WorkflowExecutionCanceledEventAttributes res = new WorkflowExecutionCanceledEventAttributes(); + com.uber.cadence.WorkflowExecutionCanceledEventAttributes res = + new com.uber.cadence.WorkflowExecutionCanceledEventAttributes(); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); res.setDetails(payload(t.getDetails())); return res; } - static WorkflowExecutionCompletedEventAttributes workflowExecutionCompletedEventAttributes( - com.uber.cadence.api.v1.WorkflowExecutionCompletedEventAttributes t) { + static com.uber.cadence.WorkflowExecutionCompletedEventAttributes + workflowExecutionCompletedEventAttributes( + com.uber.cadence.api.v1.WorkflowExecutionCompletedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionCompletedEventAttributes .getDefaultInstance()) { return null; } - WorkflowExecutionCompletedEventAttributes res = new WorkflowExecutionCompletedEventAttributes(); + com.uber.cadence.WorkflowExecutionCompletedEventAttributes res = + new com.uber.cadence.WorkflowExecutionCompletedEventAttributes(); res.setResult(payload(t.getResult())); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); return res; } - static WorkflowExecutionContinuedAsNewEventAttributes + static com.uber.cadence.WorkflowExecutionContinuedAsNewEventAttributes workflowExecutionContinuedAsNewEventAttributes( com.uber.cadence.api.v1.WorkflowExecutionContinuedAsNewEventAttributes t) { if (t == null @@ -1061,8 +998,8 @@ static WorkflowExecutionCompletedEventAttributes workflowExecutionCompletedEvent .getDefaultInstance()) { return null; } - WorkflowExecutionContinuedAsNewEventAttributes res = - new WorkflowExecutionContinuedAsNewEventAttributes(); + com.uber.cadence.WorkflowExecutionContinuedAsNewEventAttributes res = + new com.uber.cadence.WorkflowExecutionContinuedAsNewEventAttributes(); res.setNewExecutionRunId(t.getNewExecutionRunId()); res.setWorkflowType(workflowType(t.getWorkflowType())); res.setTaskList(taskList(t.getTaskList())); @@ -1082,45 +1019,51 @@ static WorkflowExecutionCompletedEventAttributes workflowExecutionCompletedEvent return res; } - static WorkflowExecutionFailedEventAttributes workflowExecutionFailedEventAttributes( - com.uber.cadence.api.v1.WorkflowExecutionFailedEventAttributes t) { + static com.uber.cadence.WorkflowExecutionFailedEventAttributes + workflowExecutionFailedEventAttributes( + com.uber.cadence.api.v1.WorkflowExecutionFailedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionFailedEventAttributes .getDefaultInstance()) { return null; } - WorkflowExecutionFailedEventAttributes res = new WorkflowExecutionFailedEventAttributes(); + com.uber.cadence.WorkflowExecutionFailedEventAttributes res = + new com.uber.cadence.WorkflowExecutionFailedEventAttributes(); res.setReason(failureReason(t.getFailure())); res.setDetails(failureDetails(t.getFailure())); res.setDecisionTaskCompletedEventId(t.getDecisionTaskCompletedEventId()); return res; } - static WorkflowExecutionSignaledEventAttributes workflowExecutionSignaledEventAttributes( - com.uber.cadence.api.v1.WorkflowExecutionSignaledEventAttributes t) { + static com.uber.cadence.WorkflowExecutionSignaledEventAttributes + workflowExecutionSignaledEventAttributes( + com.uber.cadence.api.v1.WorkflowExecutionSignaledEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionSignaledEventAttributes .getDefaultInstance()) { return null; } - WorkflowExecutionSignaledEventAttributes res = new WorkflowExecutionSignaledEventAttributes(); + com.uber.cadence.WorkflowExecutionSignaledEventAttributes res = + new com.uber.cadence.WorkflowExecutionSignaledEventAttributes(); res.setSignalName(t.getSignalName()); res.setInput(payload(t.getInput())); res.setIdentity(t.getIdentity()); return res; } - static WorkflowExecutionStartedEventAttributes workflowExecutionStartedEventAttributes( - com.uber.cadence.api.v1.WorkflowExecutionStartedEventAttributes t) { + static com.uber.cadence.WorkflowExecutionStartedEventAttributes + workflowExecutionStartedEventAttributes( + com.uber.cadence.api.v1.WorkflowExecutionStartedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionStartedEventAttributes .getDefaultInstance()) { return null; } - WorkflowExecutionStartedEventAttributes res = new WorkflowExecutionStartedEventAttributes(); + com.uber.cadence.WorkflowExecutionStartedEventAttributes res = + new com.uber.cadence.WorkflowExecutionStartedEventAttributes(); res.setWorkflowType(workflowType(t.getWorkflowType())); res.setParentWorkflowDomain(parentDomainName(t.getParentExecutionInfo())); res.setParentWorkflowExecution(parentWorkflowExecution(t.getParentExecutionInfo())); @@ -1150,31 +1093,34 @@ static WorkflowExecutionStartedEventAttributes workflowExecutionStartedEventAttr return res; } - static WorkflowExecutionTerminatedEventAttributes workflowExecutionTerminatedEventAttributes( - com.uber.cadence.api.v1.WorkflowExecutionTerminatedEventAttributes t) { + static com.uber.cadence.WorkflowExecutionTerminatedEventAttributes + workflowExecutionTerminatedEventAttributes( + com.uber.cadence.api.v1.WorkflowExecutionTerminatedEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionTerminatedEventAttributes .getDefaultInstance()) { return null; } - WorkflowExecutionTerminatedEventAttributes res = - new WorkflowExecutionTerminatedEventAttributes(); + com.uber.cadence.WorkflowExecutionTerminatedEventAttributes res = + new com.uber.cadence.WorkflowExecutionTerminatedEventAttributes(); res.setReason(t.getReason()); res.setDetails(payload(t.getDetails())); res.setIdentity(t.getIdentity()); return res; } - static WorkflowExecutionTimedOutEventAttributes workflowExecutionTimedOutEventAttributes( - com.uber.cadence.api.v1.WorkflowExecutionTimedOutEventAttributes t) { + static com.uber.cadence.WorkflowExecutionTimedOutEventAttributes + workflowExecutionTimedOutEventAttributes( + com.uber.cadence.api.v1.WorkflowExecutionTimedOutEventAttributes t) { if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionTimedOutEventAttributes .getDefaultInstance()) { return null; } - WorkflowExecutionTimedOutEventAttributes res = new WorkflowExecutionTimedOutEventAttributes(); + com.uber.cadence.WorkflowExecutionTimedOutEventAttributes res = + new com.uber.cadence.WorkflowExecutionTimedOutEventAttributes(); res.setTimeoutType(timeoutType(t.getTimeoutType())); return res; } diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/RequestMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java similarity index 78% rename from src/main/java/com/uber/cadence/internal/compatibility/proto/RequestMapper.java rename to src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java index c07d67361..818b97685 100644 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/RequestMapper.java +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java @@ -13,52 +13,49 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.uber.cadence.internal.compatibility.proto; - -import static com.uber.cadence.internal.compatibility.proto.DecisionMapper.decisionArray; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.archivalStatus; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.decisionTaskFailedCause; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.eventFilterType; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.queryConsistencyLevel; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.queryRejectCondition; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.queryTaskCompletedType; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.taskListType; -import static com.uber.cadence.internal.compatibility.proto.EnumMapper.workflowIdReusePolicy; -import static com.uber.cadence.internal.compatibility.proto.Helpers.arrayToByteString; -import static com.uber.cadence.internal.compatibility.proto.Helpers.daysToDuration; -import static com.uber.cadence.internal.compatibility.proto.Helpers.newFieldMask; -import static com.uber.cadence.internal.compatibility.proto.Helpers.nullToEmpty; -import static com.uber.cadence.internal.compatibility.proto.Helpers.secondsToDuration; -import static com.uber.cadence.internal.compatibility.proto.Helpers.unixNanoToTime; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.badBinaries; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.clusterReplicationConfigurationArray; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.failure; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.header; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.memo; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.payload; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.retryPolicy; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.searchAttributes; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.startTimeFilter; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.statusFilter; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.stickyExecutionAttributes; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.taskList; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.taskListMetadata; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workerVersionInfo; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowExecution; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowExecutionFilter; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowQuery; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowQueryResultMap; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowType; -import static com.uber.cadence.internal.compatibility.proto.TypeMapper.workflowTypeFilter; - -import com.uber.cadence.DomainConfiguration; -import com.uber.cadence.DomainReplicationConfiguration; -import com.uber.cadence.UpdateDomainInfo; +package com.uber.cadence.internal.compatibility.proto.mappers; + +import static com.uber.cadence.internal.compatibility.proto.mappers.DecisionMapper.decisionArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.archivalStatus; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.decisionTaskFailedCause; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.eventFilterType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.queryConsistencyLevel; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.queryRejectCondition; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.queryTaskCompletedType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.taskListType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.workflowIdReusePolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.arrayToByteString; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.daysToDuration; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.newFieldMask; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.nullToEmpty; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.secondsToDuration; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.badBinaries; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.clusterReplicationConfigurationArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.failure; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.header; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.memo; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.payload; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.retryPolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.searchAttributes; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.startTimeFilter; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.statusFilter; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.stickyExecutionAttributes; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.taskList; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.taskListMetadata; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workerVersionInfo; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecution; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecutionFilter; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowQuery; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowQueryResultMap; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowType; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowTypeFilter; + import com.uber.cadence.api.v1.CountWorkflowExecutionsRequest; import com.uber.cadence.api.v1.DeprecateDomainRequest; import com.uber.cadence.api.v1.DescribeDomainRequest; import com.uber.cadence.api.v1.DescribeTaskListRequest; import com.uber.cadence.api.v1.DescribeWorkflowExecutionRequest; +import com.uber.cadence.api.v1.GetTaskListsByDomainRequest; import com.uber.cadence.api.v1.GetWorkflowExecutionHistoryRequest; import com.uber.cadence.api.v1.ListArchivedWorkflowExecutionsRequest; import com.uber.cadence.api.v1.ListClosedWorkflowExecutionsRequest; @@ -71,6 +68,7 @@ import com.uber.cadence.api.v1.QueryWorkflowRequest; import com.uber.cadence.api.v1.RecordActivityTaskHeartbeatByIDRequest; import com.uber.cadence.api.v1.RecordActivityTaskHeartbeatRequest; +import com.uber.cadence.api.v1.RefreshWorkflowTasksRequest; import com.uber.cadence.api.v1.RegisterDomainRequest; import com.uber.cadence.api.v1.RequestCancelWorkflowExecutionRequest; import com.uber.cadence.api.v1.ResetStickyTaskListRequest; @@ -84,6 +82,7 @@ import com.uber.cadence.api.v1.RespondDecisionTaskCompletedRequest; import com.uber.cadence.api.v1.RespondDecisionTaskFailedRequest; import com.uber.cadence.api.v1.RespondQueryTaskCompletedRequest; +import com.uber.cadence.api.v1.RestartWorkflowExecutionRequest; import com.uber.cadence.api.v1.ScanWorkflowExecutionsRequest; import com.uber.cadence.api.v1.SignalWithStartWorkflowExecutionAsyncRequest; import com.uber.cadence.api.v1.SignalWithStartWorkflowExecutionRequest; @@ -170,14 +169,14 @@ public static RequestCancelWorkflowExecutionRequest requestCancelWorkflowExecuti .setDomain(t.getDomain()) .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) .setRequestId(t.getRequestId()); - if (t.getCause() != null) { - builder.setCause(t.getCause()); + if (t.getIdentity() != null) { + builder.setIdentity(t.getIdentity()); } if (t.getFirstExecutionRunID() != null) { builder.setFirstExecutionRunId(t.getFirstExecutionRunID()); } - if (t.getIdentity() != null) { - builder.setIdentity(t.getIdentity()); + if (t.getCause() != null) { + builder.setCause(t.getCause()); } return builder.build(); } @@ -201,7 +200,7 @@ public static ResetWorkflowExecutionRequest resetWorkflowExecutionRequest( return ResetWorkflowExecutionRequest.newBuilder() .setDomain(t.getDomain()) .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) - .setReason(t.getReason()) + .setReason(t.getReason() != null ? t.getReason() : "") .setDecisionFinishEventId(t.getDecisionFinishEventId()) .setRequestId(t.getRequestId()) .setSkipSignalReapply(t.isSkipSignalReapply()) @@ -419,7 +418,7 @@ public static GetWorkflowExecutionHistoryRequest getWorkflowExecutionHistoryRequ .setWorkflowExecution(workflowExecution(t.getExecution())) .setPageSize(t.getMaximumPageSize()) .setWaitForNewEvent(t.isWaitForNewEvent()) - .setHistoryEventFilterType(eventFilterType(t.HistoryEventFilterType)) + .setHistoryEventFilterType(eventFilterType(t.getHistoryEventFilterType())) .setSkipArchival(t.isSkipArchival()) .setQueryConsistencyLevel(queryConsistencyLevel(t.getQueryConsistencyLevel())); if (t.getNextPageToken() != null) { @@ -447,10 +446,7 @@ public static SignalWithStartWorkflowExecutionRequest signalWithStartWorkflowExe .setMemo(memo(t.getMemo())) .setSearchAttributes(searchAttributes(t.getSearchAttributes())) .setHeader(header(t.getHeader())) - .setJitterStart(secondsToDuration(t.getJitterStartSeconds())); - if (t.isSetFirstRunAtTimestamp()) { - builder.setFirstRunAt(unixNanoToTime(t.getFirstRunAtTimestamp())); - } + .setFirstRunAt(Helpers.unixNanoToTime(t.getFirstRunAtTimestamp())); if (t.getRetryPolicy() != null) { builder.setRetryPolicy(retryPolicy(t.getRetryPolicy())); } @@ -464,6 +460,7 @@ public static SignalWithStartWorkflowExecutionRequest signalWithStartWorkflowExe if (t.getDelayStartSeconds() > 0) { builder.setDelayStart(secondsToDuration(t.getDelayStartSeconds())); } + builder.setJitterStart(secondsToDuration(t.getJitterStartSeconds())); if (t.getIdentity() != null) { builder.setIdentity(t.getIdentity()); @@ -535,10 +532,8 @@ public static StartWorkflowExecutionRequest startWorkflowExecutionRequest( .setSearchAttributes(searchAttributes(t.getSearchAttributes())) .setHeader(header(t.getHeader())) .setDelayStart(secondsToDuration(t.getDelayStartSeconds())) - .setJitterStart(secondsToDuration(t.getJitterStartSeconds())); - if (t.isSetFirstRunAtTimestamp()) { - request.setFirstRunAt(unixNanoToTime(t.getFirstRunAtTimestamp())); - } + .setJitterStart(secondsToDuration(t.getJitterStartSeconds())) + .setFirstRunAt(Helpers.unixNanoToTime(t.getFirstRunAtTimestamp())); if (t.getRetryPolicy() != null) { request.setRetryPolicy(retryPolicy(t.getRetryPolicy())); } @@ -573,7 +568,7 @@ public static TerminateWorkflowExecutionRequest terminateWorkflowExecutionReques TerminateWorkflowExecutionRequest.newBuilder() .setDomain(t.getDomain()) .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) - .setReason(t.getReason()) + .setReason(t.getReason() != null ? t.getReason() : "") .setDetails(payload(t.getDetails())); if (t.getIdentity() != null) { builder.setIdentity(t.getIdentity()); @@ -600,11 +595,11 @@ public static DescribeDomainRequest describeDomainRequest( if (t == null) { return null; } - if (t.uuid != null) { - return DescribeDomainRequest.newBuilder().setId(t.uuid).build(); + if (t.getUuid() != null) { + return DescribeDomainRequest.newBuilder().setId(t.getUuid()).build(); } - if (t.name != null) { - return DescribeDomainRequest.newBuilder().setName(t.name).build(); + if (t.getName() != null) { + return DescribeDomainRequest.newBuilder().setName(t.getName()).build(); } throw new IllegalArgumentException("neither one of field is set for DescribeDomainRequest"); } @@ -613,7 +608,8 @@ public static ListDomainsRequest listDomainsRequest(com.uber.cadence.ListDomains if (t == null) { return null; } - ListDomainsRequest.Builder request = ListDomainsRequest.newBuilder().setPageSize(t.pageSize); + ListDomainsRequest.Builder request = + ListDomainsRequest.newBuilder().setPageSize(t.getPageSize()); if (t.getNextPageToken() != null) { request.setNextPageToken(arrayToByteString(t.getNextPageToken())); } @@ -745,7 +741,7 @@ public static RegisterDomainRequest registerDomainRequest( .setActiveClusterName(Helpers.nullToEmpty(t.getActiveClusterName())) .putAllData(Helpers.nullToEmpty(t.getData())) .setSecurityToken(Helpers.nullToEmpty(t.getSecurityToken())) - .setIsGlobalDomain(nullToEmpty(t.isIsGlobalDomain())) + .setIsGlobalDomain(nullToEmpty(t.isGlobalDomain())) .setHistoryArchivalStatus(archivalStatus(t.getHistoryArchivalStatus())) .setHistoryArchivalUri(Helpers.nullToEmpty(t.getHistoryArchivalURI())) .setVisibilityArchivalStatus(archivalStatus(t.getVisibilityArchivalStatus())) @@ -754,6 +750,19 @@ public static RegisterDomainRequest registerDomainRequest( return request; } + public static RestartWorkflowExecutionRequest restartWorkflowExecutionRequest( + com.uber.cadence.RestartWorkflowExecutionRequest t) { + if (t == null) { + return null; + } + return RestartWorkflowExecutionRequest.newBuilder() + .setDomain(t.getDomain()) + .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) + .setReason(t.getReason() != null ? t.getReason() : "") + .setIdentity(t.getIdentity() != null ? t.getIdentity() : "") + .build(); + } + public static UpdateDomainRequest updateDomainRequest(com.uber.cadence.UpdateDomainRequest t) { if (t == null) { return null; @@ -764,7 +773,7 @@ public static UpdateDomainRequest updateDomainRequest(com.uber.cadence.UpdateDom .setSecurityToken(t.getSecurityToken()); List fields = new ArrayList<>(); - UpdateDomainInfo updatedInfo = t.getUpdatedInfo(); + com.uber.cadence.UpdateDomainInfo updatedInfo = t.getUpdatedInfo(); if (updatedInfo != null) { if (updatedInfo.getDescription() != null) { request.setDescription(updatedInfo.getDescription()); @@ -779,7 +788,7 @@ public static UpdateDomainRequest updateDomainRequest(com.uber.cadence.UpdateDom fields.add(DomainUpdateDataField); } } - DomainConfiguration configuration = t.getConfiguration(); + com.uber.cadence.DomainConfiguration configuration = t.getConfiguration(); if (configuration != null) { if (configuration.getWorkflowExecutionRetentionPeriodInDays() > 0) { request.setWorkflowExecutionRetentionPeriod( @@ -809,7 +818,8 @@ public static UpdateDomainRequest updateDomainRequest(com.uber.cadence.UpdateDom fields.add(DomainUpdateVisibilityArchivalURIField); } } - DomainReplicationConfiguration replicationConfiguration = t.getReplicationConfiguration(); + com.uber.cadence.DomainReplicationConfiguration replicationConfiguration = + t.getReplicationConfiguration(); if (replicationConfiguration != null) { if (replicationConfiguration.getActiveClusterName() != null) { request.setActiveClusterName(replicationConfiguration.getActiveClusterName()); @@ -885,4 +895,92 @@ public static ListOpenWorkflowExecutionsRequest listOpenWorkflowExecutionsReques } return request.build(); } + + public static RespondActivityTaskFailedByIDRequest respondActivityTaskFailedByIDRequest( + com.uber.cadence.RespondActivityTaskFailedByIDRequest failRequest) { + if (failRequest == null) { + return null; + } + RespondActivityTaskFailedByIDRequest.Builder request = + RespondActivityTaskFailedByIDRequest.newBuilder() + .setDomain(failRequest.getDomain()) + .setWorkflowExecution( + TypeMapper.workflowRunPair(failRequest.getWorkflowID(), failRequest.getRunID())) + .setActivityId(failRequest.getActivityID()) + .setFailure(failure(failRequest.getReason(), failRequest.getDetails())) + .setIdentity(failRequest.getIdentity() != null ? failRequest.getIdentity() : ""); + return request.build(); + } + + public static RespondActivityTaskCompletedByIDRequest respondActivityTaskCompletedByIDRequest( + com.uber.cadence.RespondActivityTaskCompletedByIDRequest completeRequest) { + if (completeRequest == null) { + return null; + } + RespondActivityTaskCompletedByIDRequest.Builder request = + RespondActivityTaskCompletedByIDRequest.newBuilder() + .setDomain(completeRequest.getDomain()) + .setWorkflowExecution( + TypeMapper.workflowRunPair( + completeRequest.getWorkflowID(), completeRequest.getRunID())) + .setActivityId(completeRequest.getActivityID()) + .setResult(payload(completeRequest.getResult())) + .setIdentity( + completeRequest.getIdentity() != null ? completeRequest.getIdentity() : ""); + return request.build(); + } + + public static RecordActivityTaskHeartbeatByIDRequest recordActivityTaskHeartbeatByIDRequest( + com.uber.cadence.RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) { + if (heartbeatRequest == null) { + return null; + } + RecordActivityTaskHeartbeatByIDRequest.Builder request = + RecordActivityTaskHeartbeatByIDRequest.newBuilder() + .setDomain(heartbeatRequest.getDomain()) + .setWorkflowExecution( + TypeMapper.workflowRunPair( + heartbeatRequest.getWorkflowID(), heartbeatRequest.getRunID())) + .setActivityId(heartbeatRequest.getActivityID()) + .setDetails(payload(heartbeatRequest.getDetails())) + .setIdentity( + heartbeatRequest.getIdentity() != null ? heartbeatRequest.getIdentity() : ""); + return request.build(); + } + + public static RespondActivityTaskCanceledByIDRequest respondActivityTaskCanceledByIDRequest( + com.uber.cadence.RespondActivityTaskCanceledByIDRequest canceledRequest) { + if (canceledRequest == null) { + return null; + } + RespondActivityTaskCanceledByIDRequest.Builder request = + RespondActivityTaskCanceledByIDRequest.newBuilder() + .setDomain(canceledRequest.getDomain()) + .setWorkflowExecution( + TypeMapper.workflowRunPair( + canceledRequest.getWorkflowID(), canceledRequest.getRunID())) + .setActivityId(canceledRequest.getActivityID()) + .setDetails(payload(canceledRequest.getDetails())) + .setIdentity( + canceledRequest.getIdentity() != null ? canceledRequest.getIdentity() : ""); + return request.build(); + } + + public static GetTaskListsByDomainRequest getTaskListsByDomainRequest( + com.uber.cadence.GetTaskListsByDomainRequest domainRequest) { + if (domainRequest == null) { + return null; + } + GetTaskListsByDomainRequest.Builder request = + GetTaskListsByDomainRequest.newBuilder().setDomain(domainRequest.getDomainName()); + return request.build(); + } + + public static RefreshWorkflowTasksRequest refreshWorkflowTasksRequest( + com.uber.cadence.RefreshWorkflowTasksRequest request) { + if (request == null) { + return null; + } + return RefreshWorkflowTasksRequest.newBuilder().setDomain(request.getDomain()).build(); + } } diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ResponseMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ResponseMapper.java new file mode 100644 index 000000000..71fbf67cd --- /dev/null +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/ResponseMapper.java @@ -0,0 +1,521 @@ +/** + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + *

    Modifications copyright (C) 2017 Uber Technologies, Inc. + * + *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file + * except in compliance with the License. A copy of the License is located at + * + *

    http://aws.amazon.com/apache2.0 + * + *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package com.uber.cadence.internal.compatibility.proto.mappers; + +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.archivalStatus; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.domainStatus; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.byteStringToArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.durationToDays; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.durationToSeconds; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.timeToUnixNano; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.toInt64Value; +import static com.uber.cadence.internal.compatibility.proto.mappers.HistoryMapper.history; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.activityLocalDispatchInfoMap; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.activityType; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.badBinaries; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.clusterReplicationConfigurationArrayFromProto; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.dataBlobArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.describeDomainResponseArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.header; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.indexedValueTypeMap; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.payload; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.pendingActivityInfoArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.pendingChildExecutionInfoArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.pendingDecisionInfo; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.pollerInfoArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.queryRejected; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.supportedClientVersions; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.taskList; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.taskListPartitionMetadataArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.taskListStatus; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecution; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecutionConfiguration; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecutionInfo; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowExecutionInfoArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowQuery; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowQueryMap; +import static com.uber.cadence.internal.compatibility.proto.mappers.TypeMapper.workflowType; + +import com.uber.cadence.api.v1.*; +import com.uber.cadence.api.v1.GetClusterInfoResponse; +import com.uber.cadence.api.v1.RecordActivityTaskHeartbeatByIDResponse; +import com.uber.cadence.api.v1.ScanWorkflowExecutionsResponse; +import com.uber.cadence.api.v1.SignalWithStartWorkflowExecutionResponse; +import java.util.Map; +import java.util.stream.Collectors; + +public class ResponseMapper { + + public static com.uber.cadence.StartWorkflowExecutionResponse startWorkflowExecutionResponse( + StartWorkflowExecutionResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.StartWorkflowExecutionResponse startWorkflowExecutionResponse = + new com.uber.cadence.StartWorkflowExecutionResponse(); + startWorkflowExecutionResponse.setRunId(t.getRunId()); + return startWorkflowExecutionResponse; + } + + public static com.uber.cadence.StartWorkflowExecutionAsyncResponse + startWorkflowExecutionAsyncResponse(StartWorkflowExecutionAsyncResponse t) { + return t == null ? null : new com.uber.cadence.StartWorkflowExecutionAsyncResponse(); + } + + public static com.uber.cadence.DescribeTaskListResponse describeTaskListResponse( + DescribeTaskListResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.DescribeTaskListResponse describeTaskListResponse = + new com.uber.cadence.DescribeTaskListResponse(); + describeTaskListResponse.setPollers(pollerInfoArray(t.getPollersList())); + describeTaskListResponse.setTaskListStatus(taskListStatus(t.getTaskListStatus())); + return describeTaskListResponse; + } + + public static com.uber.cadence.RestartWorkflowExecutionResponse restartWorkflowExecutionResponse( + RestartWorkflowExecutionResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.RestartWorkflowExecutionResponse restartWorkflowExecutionResponse = + new com.uber.cadence.RestartWorkflowExecutionResponse(); + restartWorkflowExecutionResponse.setRunId(t.getRunId()); + return restartWorkflowExecutionResponse; + } + + public static com.uber.cadence.DescribeWorkflowExecutionResponse + describeWorkflowExecutionResponse(DescribeWorkflowExecutionResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.DescribeWorkflowExecutionResponse describeWorkflowExecutionResponse = + new com.uber.cadence.DescribeWorkflowExecutionResponse(); + describeWorkflowExecutionResponse.setExecutionConfiguration( + workflowExecutionConfiguration(t.getExecutionConfiguration())); + describeWorkflowExecutionResponse.setWorkflowExecutionInfo( + workflowExecutionInfo(t.getWorkflowExecutionInfo())); + describeWorkflowExecutionResponse.setPendingActivities( + pendingActivityInfoArray(t.getPendingActivitiesList())); + describeWorkflowExecutionResponse.setPendingChildren( + pendingChildExecutionInfoArray(t.getPendingChildrenList())); + describeWorkflowExecutionResponse.setPendingDecision( + pendingDecisionInfo(t.getPendingDecision())); + return describeWorkflowExecutionResponse; + } + + public static com.uber.cadence.ClusterInfo getClusterInfoResponse(GetClusterInfoResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ClusterInfo clusterInfo = new com.uber.cadence.ClusterInfo(); + clusterInfo.setSupportedClientVersions(supportedClientVersions(t.getSupportedClientVersions())); + return clusterInfo; + } + + public static com.uber.cadence.GetSearchAttributesResponse getSearchAttributesResponse( + GetSearchAttributesResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.GetSearchAttributesResponse getSearchAttributesResponse = + new com.uber.cadence.GetSearchAttributesResponse(); + getSearchAttributesResponse.setKeys(indexedValueTypeMap(t.getKeysMap())); + return getSearchAttributesResponse; + } + + public static com.uber.cadence.GetWorkflowExecutionHistoryResponse + getWorkflowExecutionHistoryResponse(GetWorkflowExecutionHistoryResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistoryResponse = + new com.uber.cadence.GetWorkflowExecutionHistoryResponse(); + getWorkflowExecutionHistoryResponse.setHistory(history(t.getHistory())); + getWorkflowExecutionHistoryResponse.setRawHistory(dataBlobArray(t.getRawHistoryList())); + getWorkflowExecutionHistoryResponse.setNextPageToken(byteStringToArray(t.getNextPageToken())); + getWorkflowExecutionHistoryResponse.setArchived(t.getArchived()); + return getWorkflowExecutionHistoryResponse; + } + + public static com.uber.cadence.ListArchivedWorkflowExecutionsResponse + listArchivedWorkflowExecutionsResponse(ListArchivedWorkflowExecutionsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ListArchivedWorkflowExecutionsResponse res = + new com.uber.cadence.ListArchivedWorkflowExecutionsResponse(); + res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); + res.setNextPageToken(byteStringToArray(t.getNextPageToken())); + return res; + } + + public static com.uber.cadence.ListClosedWorkflowExecutionsResponse + listClosedWorkflowExecutionsResponse(ListClosedWorkflowExecutionsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ListClosedWorkflowExecutionsResponse res = + new com.uber.cadence.ListClosedWorkflowExecutionsResponse(); + res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); + res.setNextPageToken(byteStringToArray(t.getNextPageToken())); + return res; + } + + public static com.uber.cadence.ListOpenWorkflowExecutionsResponse + listOpenWorkflowExecutionsResponse(ListOpenWorkflowExecutionsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ListOpenWorkflowExecutionsResponse res = + new com.uber.cadence.ListOpenWorkflowExecutionsResponse(); + res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); + res.setNextPageToken(byteStringToArray(t.getNextPageToken())); + return res; + } + + public static com.uber.cadence.ListTaskListPartitionsResponse listTaskListPartitionsResponse( + ListTaskListPartitionsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ListTaskListPartitionsResponse res = + new com.uber.cadence.ListTaskListPartitionsResponse(); + res.setActivityTaskListPartitions( + taskListPartitionMetadataArray(t.getActivityTaskListPartitionsList())); + res.setDecisionTaskListPartitions( + taskListPartitionMetadataArray(t.getDecisionTaskListPartitionsList())); + return res; + } + + public static com.uber.cadence.ListWorkflowExecutionsResponse listWorkflowExecutionsResponse( + ListWorkflowExecutionsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ListWorkflowExecutionsResponse res = + new com.uber.cadence.ListWorkflowExecutionsResponse(); + res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); + res.setNextPageToken(byteStringToArray(t.getNextPageToken())); + return res; + } + + public static com.uber.cadence.PollForActivityTaskResponse pollForActivityTaskResponse( + PollForActivityTaskResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.PollForActivityTaskResponse res = + new com.uber.cadence.PollForActivityTaskResponse(); + res.setTaskToken(byteStringToArray(t.getTaskToken())); + res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); + res.setActivityId(t.getActivityId()); + res.setActivityType(activityType(t.getActivityType())); + res.setInput(payload(t.getInput())); + res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); + res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); + res.setScheduleToCloseTimeoutSeconds(durationToSeconds(t.getScheduleToCloseTimeout())); + res.setStartToCloseTimeoutSeconds(durationToSeconds(t.getStartToCloseTimeout())); + res.setHeartbeatTimeoutSeconds(durationToSeconds(t.getHeartbeatTimeout())); + res.setAttempt(t.getAttempt()); + res.setScheduledTimestampOfThisAttempt(timeToUnixNano(t.getScheduledTimeOfThisAttempt())); + res.setHeartbeatDetails(payload(t.getHeartbeatDetails())); + res.setWorkflowType(workflowType(t.getWorkflowType())); + res.setWorkflowDomain(t.getWorkflowDomain()); + res.setHeader(header(t.getHeader())); + return res; + } + + public static com.uber.cadence.PollForDecisionTaskResponse pollForDecisionTaskResponse( + PollForDecisionTaskResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.PollForDecisionTaskResponse res = + new com.uber.cadence.PollForDecisionTaskResponse(); + res.setTaskToken(byteStringToArray(t.getTaskToken())); + res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); + res.setWorkflowType(workflowType(t.getWorkflowType())); + res.setPreviousStartedEventId(toInt64Value(t.getPreviousStartedEventId())); + res.setStartedEventId(t.getStartedEventId()); + res.setAttempt(t.getAttempt()); + res.setBacklogCountHint(t.getBacklogCountHint()); + res.setHistory(history(t.getHistory())); + res.setNextPageToken(byteStringToArray(t.getNextPageToken())); + if (t.getQuery() != WorkflowQuery.getDefaultInstance()) { + res.setQuery(workflowQuery(t.getQuery())); + } + res.setWorkflowExecutionTaskList(taskList(t.getWorkflowExecutionTaskList())); + res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); + res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); + res.setQueries(workflowQueryMap(t.getQueriesMap())); + res.setNextEventId(t.getNextEventId()); + return res; + } + + public static com.uber.cadence.QueryWorkflowResponse queryWorkflowResponse( + QueryWorkflowResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.QueryWorkflowResponse res = new com.uber.cadence.QueryWorkflowResponse(); + res.setQueryResult(payload(t.getQueryResult())); + res.setQueryRejected(queryRejected(t.getQueryRejected())); + return res; + } + + public static com.uber.cadence.RecordActivityTaskHeartbeatResponse + recordActivityTaskHeartbeatByIdResponse(RecordActivityTaskHeartbeatByIDResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.RecordActivityTaskHeartbeatResponse res = + new com.uber.cadence.RecordActivityTaskHeartbeatResponse(); + res.setCancelRequested(t.getCancelRequested()); + return res; + } + + public static com.uber.cadence.RecordActivityTaskHeartbeatResponse + recordActivityTaskHeartbeatResponse(RecordActivityTaskHeartbeatResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.RecordActivityTaskHeartbeatResponse res = + new com.uber.cadence.RecordActivityTaskHeartbeatResponse(); + res.setCancelRequested(t.getCancelRequested()); + return res; + } + + public static com.uber.cadence.ResetWorkflowExecutionResponse resetWorkflowExecutionResponse( + ResetWorkflowExecutionResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ResetWorkflowExecutionResponse res = + new com.uber.cadence.ResetWorkflowExecutionResponse(); + res.setRunId(t.getRunId()); + return res; + } + + public static com.uber.cadence.RespondDecisionTaskCompletedResponse + respondDecisionTaskCompletedResponse(RespondDecisionTaskCompletedResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.RespondDecisionTaskCompletedResponse res = + new com.uber.cadence.RespondDecisionTaskCompletedResponse(); + res.setDecisionTask(pollForDecisionTaskResponse(t.getDecisionTask())); + res.setActivitiesToDispatchLocally( + activityLocalDispatchInfoMap(t.getActivitiesToDispatchLocallyMap())); + return res; + } + + public static com.uber.cadence.ListWorkflowExecutionsResponse scanWorkflowExecutionsResponse( + ScanWorkflowExecutionsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ListWorkflowExecutionsResponse res = + new com.uber.cadence.ListWorkflowExecutionsResponse(); + res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); + res.setNextPageToken(byteStringToArray(t.getNextPageToken())); + return res; + } + + public static com.uber.cadence.CountWorkflowExecutionsResponse countWorkflowExecutionsResponse( + CountWorkflowExecutionsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.CountWorkflowExecutionsResponse res = + new com.uber.cadence.CountWorkflowExecutionsResponse(); + res.setCount(t.getCount()); + return res; + } + + public static com.uber.cadence.DescribeDomainResponse describeDomainResponse( + DescribeDomainResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.DescribeDomainResponse response = + new com.uber.cadence.DescribeDomainResponse(); + com.uber.cadence.DomainInfo domainInfo = new com.uber.cadence.DomainInfo(); + response.setDomainInfo(domainInfo); + + domainInfo.setName(t.getDomain().getName()); + domainInfo.setStatus(domainStatus(t.getDomain().getStatus())); + domainInfo.setDescription(t.getDomain().getDescription()); + domainInfo.setOwnerEmail(t.getDomain().getOwnerEmail()); + domainInfo.setData(t.getDomain().getDataMap()); + domainInfo.setUuid(t.getDomain().getId()); + + com.uber.cadence.DomainConfiguration domainConfiguration = + new com.uber.cadence.DomainConfiguration(); + response.setConfiguration(domainConfiguration); + + domainConfiguration.setWorkflowExecutionRetentionPeriodInDays( + durationToDays(t.getDomain().getWorkflowExecutionRetentionPeriod())); + domainConfiguration.setEmitMetric(true); + domainConfiguration.setBadBinaries(badBinaries(t.getDomain().getBadBinaries())); + domainConfiguration.setHistoryArchivalStatus( + archivalStatus(t.getDomain().getHistoryArchivalStatus())); + domainConfiguration.setHistoryArchivalURI(t.getDomain().getHistoryArchivalUri()); + domainConfiguration.setVisibilityArchivalStatus( + archivalStatus(t.getDomain().getVisibilityArchivalStatus())); + domainConfiguration.setVisibilityArchivalURI(t.getDomain().getVisibilityArchivalUri()); + + com.uber.cadence.DomainReplicationConfiguration replicationConfiguration = + new com.uber.cadence.DomainReplicationConfiguration(); + response.setReplicationConfiguration(replicationConfiguration); + + replicationConfiguration.setActiveClusterName(t.getDomain().getActiveClusterName()); + replicationConfiguration.setClusters( + clusterReplicationConfigurationArrayFromProto(t.getDomain().getClustersList())); + + response.setFailoverVersion(t.getDomain().getFailoverVersion()); + response.setGlobalDomain(t.getDomain().getIsGlobalDomain()); + return response; + } + + public static com.uber.cadence.ListDomainsResponse listDomainsResponse(ListDomainsResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.ListDomainsResponse res = new com.uber.cadence.ListDomainsResponse(); + res.setDomains(describeDomainResponseArray(t.getDomainsList())); + res.setNextPageToken(byteStringToArray(t.getNextPageToken())); + return res; + } + + public static com.uber.cadence.StartWorkflowExecutionResponse + signalWithStartWorkflowExecutionResponse(SignalWithStartWorkflowExecutionResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.StartWorkflowExecutionResponse startWorkflowExecutionResponse = + new com.uber.cadence.StartWorkflowExecutionResponse(); + startWorkflowExecutionResponse.setRunId(t.getRunId()); + return startWorkflowExecutionResponse; + } + + public static com.uber.cadence.SignalWithStartWorkflowExecutionAsyncResponse + signalWithStartWorkflowExecutionAsyncResponse( + SignalWithStartWorkflowExecutionAsyncResponse t) { + return t == null ? null : new com.uber.cadence.SignalWithStartWorkflowExecutionAsyncResponse(); + } + + public static com.uber.cadence.UpdateDomainResponse updateDomainResponse(UpdateDomainResponse t) { + if (t == null) { + return null; + } + com.uber.cadence.UpdateDomainResponse updateDomainResponse = + new com.uber.cadence.UpdateDomainResponse(); + com.uber.cadence.DomainInfo domainInfo = new com.uber.cadence.DomainInfo(); + updateDomainResponse.setDomainInfo(domainInfo); + + domainInfo.setName(t.getDomain().getName()); + domainInfo.setStatus(domainStatus(t.getDomain().getStatus())); + domainInfo.setDescription(t.getDomain().getDescription()); + domainInfo.setOwnerEmail(t.getDomain().getOwnerEmail()); + domainInfo.setData(t.getDomain().getDataMap()); + domainInfo.setUuid(t.getDomain().getId()); + + com.uber.cadence.DomainConfiguration domainConfiguration = + new com.uber.cadence.DomainConfiguration(); + updateDomainResponse.setConfiguration(domainConfiguration); + + domainConfiguration.setWorkflowExecutionRetentionPeriodInDays( + durationToDays(t.getDomain().getWorkflowExecutionRetentionPeriod())); + domainConfiguration.setEmitMetric(true); + domainConfiguration.setBadBinaries(badBinaries(t.getDomain().getBadBinaries())); + domainConfiguration.setHistoryArchivalStatus( + archivalStatus(t.getDomain().getHistoryArchivalStatus())); + domainConfiguration.setHistoryArchivalURI(t.getDomain().getHistoryArchivalUri()); + domainConfiguration.setVisibilityArchivalStatus( + archivalStatus(t.getDomain().getVisibilityArchivalStatus())); + domainConfiguration.setVisibilityArchivalURI(t.getDomain().getVisibilityArchivalUri()); + + com.uber.cadence.DomainReplicationConfiguration domainReplicationConfiguration = + new com.uber.cadence.DomainReplicationConfiguration(); + updateDomainResponse.setReplicationConfiguration(domainReplicationConfiguration); + + domainReplicationConfiguration.setActiveClusterName(t.getDomain().getActiveClusterName()); + domainReplicationConfiguration.setClusters( + clusterReplicationConfigurationArrayFromProto(t.getDomain().getClustersList())); + updateDomainResponse.setFailoverVersion(t.getDomain().getFailoverVersion()); + updateDomainResponse.setGlobalDomain(t.getDomain().getIsGlobalDomain()); + return updateDomainResponse; + } + + public static com.uber.cadence.RecordActivityTaskHeartbeatResponse + recordActivityTaskHeartbeatResponse( + RecordActivityTaskHeartbeatByIDResponse recordActivityTaskHeartbeatByID) { + if (recordActivityTaskHeartbeatByID == null) { + return null; + } + com.uber.cadence.RecordActivityTaskHeartbeatResponse res = + new com.uber.cadence.RecordActivityTaskHeartbeatResponse(); + res.setCancelRequested(recordActivityTaskHeartbeatByID.getCancelRequested()); + return res; + } + + public static com.uber.cadence.ResetStickyTaskListResponse resetStickyTaskListResponse( + ResetStickyTaskListResponse resetStickyTaskList) { + if (resetStickyTaskList == null) { + return null; + } + com.uber.cadence.ResetStickyTaskListResponse res = + new com.uber.cadence.ResetStickyTaskListResponse(); + return res; + } + + public static com.uber.cadence.ClusterInfo clusterInfoResponse( + GetClusterInfoResponse clusterInfo) { + if (clusterInfo == null) { + return null; + } + com.uber.cadence.ClusterInfo res = new com.uber.cadence.ClusterInfo(); + res.setSupportedClientVersions( + TypeMapper.supportedClientVersions(clusterInfo.getSupportedClientVersions())); + return res; + } + + public static com.uber.cadence.GetTaskListsByDomainResponse getTaskListsByDomainResponse( + GetTaskListsByDomainResponse taskListsByDomain) { + if (taskListsByDomain == null) { + return null; + } + com.uber.cadence.GetTaskListsByDomainResponse res = + new com.uber.cadence.GetTaskListsByDomainResponse(); + + res.setActivityTaskListMap( + taskListsByDomain + .getActivityTaskListMapMap() + .entrySet() + .stream() + .collect( + Collectors.toMap(Map.Entry::getKey, e -> describeTaskListResponse(e.getValue())))); + res.setDecisionTaskListMap( + taskListsByDomain + .getDecisionTaskListMapMap() + .entrySet() + .stream() + .collect( + Collectors.toMap(Map.Entry::getKey, e -> describeTaskListResponse(e.getValue())))); + return res; + } +} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java new file mode 100644 index 000000000..628ba2df3 --- /dev/null +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java @@ -0,0 +1,957 @@ +/* + * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package com.uber.cadence.internal.compatibility.proto.mappers; + +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.archivalStatus; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.domainStatus; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.encodingType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.indexedValueType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.parentClosePolicy; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.pendingActivityState; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.pendingDecisionState; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.queryResultType; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.taskListKind; +import static com.uber.cadence.internal.compatibility.proto.mappers.EnumMapper.workflowExecutionCloseStatus; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.arrayToByteString; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.byteStringToArray; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.durationToDays; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.durationToSeconds; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.fromDoubleValue; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.secondsToDuration; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.timeToUnixNano; +import static com.uber.cadence.internal.compatibility.proto.mappers.Helpers.unixNanoToTime; + +import com.google.common.base.Strings; +import com.uber.cadence.api.v1.*; +import com.uber.cadence.api.v1.ActivityType; +import com.uber.cadence.api.v1.BadBinaries; +import com.uber.cadence.api.v1.BadBinaryInfo; +import com.uber.cadence.api.v1.ClusterReplicationConfiguration; +import com.uber.cadence.api.v1.DataBlob; +import com.uber.cadence.api.v1.Domain; +import com.uber.cadence.api.v1.ExternalExecutionInfo; +import com.uber.cadence.api.v1.Failure; +import com.uber.cadence.api.v1.Header; +import com.uber.cadence.api.v1.IndexedValueType; +import com.uber.cadence.api.v1.Memo; +import com.uber.cadence.api.v1.ParentExecutionInfo; +import com.uber.cadence.api.v1.Payload; +import com.uber.cadence.api.v1.PendingActivityInfo; +import com.uber.cadence.api.v1.PendingChildExecutionInfo; +import com.uber.cadence.api.v1.PendingDecisionInfo; +import com.uber.cadence.api.v1.PollerInfo; +import com.uber.cadence.api.v1.QueryRejected; +import com.uber.cadence.api.v1.ResetPointInfo; +import com.uber.cadence.api.v1.ResetPoints; +import com.uber.cadence.api.v1.RetryPolicy; +import com.uber.cadence.api.v1.SearchAttributes; +import com.uber.cadence.api.v1.StartTimeFilter; +import com.uber.cadence.api.v1.StatusFilter; +import com.uber.cadence.api.v1.StickyExecutionAttributes; +import com.uber.cadence.api.v1.SupportedClientVersions; +import com.uber.cadence.api.v1.TaskIDBlock; +import com.uber.cadence.api.v1.TaskList; +import com.uber.cadence.api.v1.TaskListMetadata; +import com.uber.cadence.api.v1.TaskListPartitionMetadata; +import com.uber.cadence.api.v1.TaskListStatus; +import com.uber.cadence.api.v1.WorkerVersionInfo; +import com.uber.cadence.api.v1.WorkflowExecution; +import com.uber.cadence.api.v1.WorkflowExecutionConfiguration; +import com.uber.cadence.api.v1.WorkflowExecutionFilter; +import com.uber.cadence.api.v1.WorkflowExecutionInfo; +import com.uber.cadence.api.v1.WorkflowQuery; +import com.uber.cadence.api.v1.WorkflowQueryResult; +import com.uber.cadence.api.v1.WorkflowType; +import com.uber.cadence.api.v1.WorkflowTypeFilter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +class TypeMapper { + + static BadBinaryInfo badBinaryInfo(com.uber.cadence.BadBinaryInfo t) { + if (t == null) { + return null; + } + return BadBinaryInfo.newBuilder() + .setReason(t.getReason()) + .setOperator(t.getOperator()) + .setCreatedTime(unixNanoToTime(t.getCreatedTimeNano())) + .build(); + } + + static Payload payload(byte[] data) { + if (data == null) { + return Payload.newBuilder().build(); + } + return Payload.newBuilder().setData(arrayToByteString(data)).build(); + } + + static Failure failure(String reason, byte[] details) { + if (reason == null) { + return Failure.newBuilder().build(); + } + return Failure.newBuilder().setReason(reason).setDetails(arrayToByteString(details)).build(); + } + + static WorkflowExecution workflowExecution(com.uber.cadence.WorkflowExecution t) { + if (t == null) { + return WorkflowExecution.newBuilder().build(); + } + if (t.getWorkflowId() == null && t.getRunId() == null) { + return WorkflowExecution.newBuilder().build(); + } + WorkflowExecution.Builder builder = + WorkflowExecution.newBuilder().setWorkflowId(t.getWorkflowId()); + if (t.getRunId() != null) { + builder.setRunId(t.getRunId()); + } + return builder.build(); + } + + static WorkflowExecution workflowRunPair(String workflowId, String runId) { + if (Strings.isNullOrEmpty(workflowId) && Strings.isNullOrEmpty(runId)) { + return WorkflowExecution.newBuilder().build(); + } + return WorkflowExecution.newBuilder().setWorkflowId(workflowId).setRunId(runId).build(); + } + + static ActivityType activityType(com.uber.cadence.ActivityType t) { + if (t == null) { + return ActivityType.newBuilder().build(); + } + return ActivityType.newBuilder().setName(t.getName()).build(); + } + + static WorkflowType workflowType(com.uber.cadence.WorkflowType t) { + if (t == null) { + return WorkflowType.newBuilder().build(); + } + return WorkflowType.newBuilder().setName(t.getName()).build(); + } + + static TaskList taskList(com.uber.cadence.TaskList t) { + if (t == null) { + return TaskList.newBuilder().build(); + } + return TaskList.newBuilder().setName(t.getName()).setKind(taskListKind(t.getKind())).build(); + } + + static TaskListMetadata taskListMetadata(com.uber.cadence.TaskListMetadata t) { + if (t == null) { + return TaskListMetadata.newBuilder().build(); + } + return TaskListMetadata.newBuilder() + .setMaxTasksPerSecond(fromDoubleValue(t.getMaxTasksPerSecond())) + .build(); + } + + static RetryPolicy retryPolicy(com.uber.cadence.RetryPolicy t) { + if (t == null) { + return null; + } + RetryPolicy.Builder builder = + RetryPolicy.newBuilder() + .setInitialInterval(secondsToDuration(t.getInitialIntervalInSeconds())) + .setBackoffCoefficient(t.getBackoffCoefficient()) + .setMaximumInterval(secondsToDuration(t.getMaximumIntervalInSeconds())) + .setMaximumAttempts(t.getMaximumAttempts()) + .setExpirationInterval(secondsToDuration(t.getExpirationIntervalInSeconds())); + if (t.getNonRetriableErrorReasons() != null) { + builder.addAllNonRetryableErrorReasons(t.getNonRetriableErrorReasons()); + } + return builder.build(); + } + + static Header header(com.uber.cadence.Header t) { + if (t == null) { + return Header.newBuilder().build(); + } + return Header.newBuilder().putAllFields(payloadByteBufferMap(t.getFields())).build(); + } + + static Memo memo(com.uber.cadence.Memo t) { + if (t == null) { + return Memo.newBuilder().build(); + } + return Memo.newBuilder().putAllFields(payloadByteBufferMap(t.getFields())).build(); + } + + static SearchAttributes searchAttributes(com.uber.cadence.SearchAttributes t) { + if (t == null) { + return SearchAttributes.newBuilder().build(); + } + return SearchAttributes.newBuilder() + .putAllIndexedFields(payloadByteBufferMap(t.getIndexedFields())) + .build(); + } + + static BadBinaries badBinaries(com.uber.cadence.BadBinaries t) { + if (t == null) { + return BadBinaries.newBuilder().build(); + } + return BadBinaries.newBuilder().putAllBinaries(badBinaryInfoMap(t.getBinaries())).build(); + } + + static ClusterReplicationConfiguration clusterReplicationConfiguration( + com.uber.cadence.ClusterReplicationConfiguration t) { + if (t == null) { + return ClusterReplicationConfiguration.newBuilder().build(); + } + return ClusterReplicationConfiguration.newBuilder().setClusterName(t.getClusterName()).build(); + } + + static WorkflowQuery workflowQuery(com.uber.cadence.WorkflowQuery t) { + if (t == null) { + return null; + } + return WorkflowQuery.newBuilder() + .setQueryType(t.getQueryType()) + .setQueryArgs(payload(t.getQueryArgs())) + .build(); + } + + static WorkflowQueryResult workflowQueryResult(com.uber.cadence.WorkflowQueryResult t) { + if (t == null) { + return WorkflowQueryResult.newBuilder().build(); + } + return WorkflowQueryResult.newBuilder() + .setResultType(queryResultType(t.getResultType())) + .setAnswer(payload(t.getAnswer())) + .setErrorMessage(t.getErrorMessage()) + .build(); + } + + static StickyExecutionAttributes stickyExecutionAttributes( + com.uber.cadence.StickyExecutionAttributes t) { + if (t == null) { + return StickyExecutionAttributes.newBuilder().build(); + } + return StickyExecutionAttributes.newBuilder() + .setWorkerTaskList(taskList(t.getWorkerTaskList())) + .setScheduleToStartTimeout(secondsToDuration(t.getScheduleToStartTimeoutSeconds())) + .build(); + } + + static WorkerVersionInfo workerVersionInfo(com.uber.cadence.WorkerVersionInfo t) { + if (t == null) { + return WorkerVersionInfo.newBuilder().build(); + } + return WorkerVersionInfo.newBuilder() + .setImpl(t.getImpl()) + .setFeatureVersion(t.getFeatureVersion()) + .build(); + } + + static StartTimeFilter startTimeFilter(com.uber.cadence.StartTimeFilter t) { + if (t == null) { + return null; + } + return StartTimeFilter.newBuilder() + .setEarliestTime(unixNanoToTime(t.getEarliestTime())) + .setLatestTime(unixNanoToTime(t.getLatestTime())) + .build(); + } + + static WorkflowExecutionFilter workflowExecutionFilter( + com.uber.cadence.WorkflowExecutionFilter t) { + if (t == null) { + return WorkflowExecutionFilter.newBuilder().build(); + } + return WorkflowExecutionFilter.newBuilder() + .setWorkflowId(t.getWorkflowId()) + .setRunId(t.getRunId()) + .build(); + } + + static WorkflowTypeFilter workflowTypeFilter(com.uber.cadence.WorkflowTypeFilter t) { + if (t == null) { + return WorkflowTypeFilter.newBuilder().build(); + } + return WorkflowTypeFilter.newBuilder().setName(t.getName()).build(); + } + + static StatusFilter statusFilter(com.uber.cadence.WorkflowExecutionCloseStatus t) { + if (t == null) { + return null; + } + return StatusFilter.newBuilder().setStatus(workflowExecutionCloseStatus(t)).build(); + } + + static Map payloadByteBufferMap(Map t) { + if (t == null) { + return Collections.emptyMap(); + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, payload(t.get(key))); + } + return v; + } + + static Map badBinaryInfoMap( + Map t) { + if (t == null) { + return Collections.emptyMap(); + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, badBinaryInfo(t.get(key))); + } + return v; + } + + static List clusterReplicationConfigurationArray( + List t) { + if (t == null) { + return Collections.emptyList(); + } + List v = new ArrayList<>(); + for (int i = 0; i < t.size(); i++) { + v.add(clusterReplicationConfiguration(t.get(i))); + } + return v; + } + + static Map workflowQueryResultMap( + Map t) { + if (t == null) { + return Collections.emptyMap(); + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, workflowQueryResult(t.get(key))); + } + return v; + } + + static byte[] payload(Payload t) { + if (t == null || t == Payload.getDefaultInstance()) { + return null; + } + if (t.getData().isEmpty()) { + // protoPayload will not generate this case + // however, Data field will be dropped by the encoding if it's empty + // and receiver side will see null for the Data field + // since we already know p is not null, Data field must be an empty byte array + return new byte[0]; + } + return byteStringToArray(t.getData()); + } + + static String failureReason(Failure t) { + if (t == null || t == Failure.getDefaultInstance()) { + return null; + } + return t.getReason(); + } + + static byte[] failureDetails(Failure t) { + if (t == null || t == Failure.getDefaultInstance()) { + return null; + } + return byteStringToArray(t.getDetails()); + } + + static com.uber.cadence.WorkflowExecution workflowExecution(WorkflowExecution t) { + if (t == null || t == WorkflowExecution.getDefaultInstance()) { + return null; + } + com.uber.cadence.WorkflowExecution we = new com.uber.cadence.WorkflowExecution(); + we.setWorkflowId(t.getWorkflowId()); + we.setRunId(t.getRunId()); + return we; + } + + static String workflowId(WorkflowExecution t) { + if (t == null || t == WorkflowExecution.getDefaultInstance()) { + return null; + } + return t.getWorkflowId(); + } + + static String runId(WorkflowExecution t) { + if (t == null || t == WorkflowExecution.getDefaultInstance()) { + return null; + } + return t.getRunId(); + } + + static com.uber.cadence.ActivityType activityType(ActivityType t) { + if (t == null || t == ActivityType.getDefaultInstance()) { + return null; + } + com.uber.cadence.ActivityType activityType = new com.uber.cadence.ActivityType(); + activityType.setName(t.getName()); + return activityType; + } + + static com.uber.cadence.WorkflowType workflowType(WorkflowType t) { + if (t == null || t == WorkflowType.getDefaultInstance()) { + return null; + } + com.uber.cadence.WorkflowType wt = new com.uber.cadence.WorkflowType(); + wt.setName(t.getName()); + return wt; + } + + static com.uber.cadence.TaskList taskList(TaskList t) { + if (t == null || t == TaskList.getDefaultInstance()) { + return null; + } + com.uber.cadence.TaskList taskList = new com.uber.cadence.TaskList(); + taskList.setName(t.getName()); + taskList.setKind(taskListKind(t.getKind())); + return taskList; + } + + static com.uber.cadence.RetryPolicy retryPolicy(RetryPolicy t) { + if (t == null || t == RetryPolicy.getDefaultInstance()) { + return null; + } + com.uber.cadence.RetryPolicy res = new com.uber.cadence.RetryPolicy(); + res.setInitialIntervalInSeconds(durationToSeconds(t.getInitialInterval())); + res.setBackoffCoefficient(t.getBackoffCoefficient()); + res.setMaximumIntervalInSeconds(durationToSeconds(t.getMaximumInterval())); + res.setMaximumAttempts(t.getMaximumAttempts()); + res.setNonRetriableErrorReasons(t.getNonRetryableErrorReasonsList()); + res.setExpirationIntervalInSeconds(durationToSeconds(t.getExpirationInterval())); + return res; + } + + static com.uber.cadence.Header header(Header t) { + if (t == null || t == Header.getDefaultInstance()) { + return null; + } + com.uber.cadence.Header res = new com.uber.cadence.Header(); + res.setFields(payloadMap(t.getFieldsMap())); + return res; + } + + static com.uber.cadence.Memo memo(Memo t) { + if (t == null || t == Memo.getDefaultInstance()) { + return null; + } + com.uber.cadence.Memo res = new com.uber.cadence.Memo(); + res.setFields(payloadMap(t.getFieldsMap())); + return res; + } + + static com.uber.cadence.SearchAttributes searchAttributes(SearchAttributes t) { + if (t == null || t.getAllFields().size() == 0 || t == SearchAttributes.getDefaultInstance()) { + return null; + } + com.uber.cadence.SearchAttributes res = new com.uber.cadence.SearchAttributes(); + res.setIndexedFields(payloadMap(t.getIndexedFieldsMap())); + return res; + } + + static com.uber.cadence.BadBinaries badBinaries(BadBinaries t) { + if (t == null || t == BadBinaries.getDefaultInstance()) { + return null; + } + com.uber.cadence.BadBinaries badBinaries = new com.uber.cadence.BadBinaries(); + badBinaries.setBinaries(badBinaryInfoMapFromProto(t.getBinariesMap())); + return badBinaries; + } + + static com.uber.cadence.BadBinaryInfo badBinaryInfo(BadBinaryInfo t) { + if (t == null || t == BadBinaryInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.BadBinaryInfo res = new com.uber.cadence.BadBinaryInfo(); + res.setReason(t.getReason()); + res.setOperator(t.getOperator()); + res.setCreatedTimeNano(timeToUnixNano(t.getCreatedTime())); + return res; + } + + static Map badBinaryInfoMapFromProto( + Map t) { + if (t == null) { + return null; + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, badBinaryInfo(t.get(key))); + } + return v; + } + + static com.uber.cadence.WorkflowQuery workflowQuery(WorkflowQuery t) { + if (t == null || t == WorkflowQuery.getDefaultInstance()) { + return null; + } + com.uber.cadence.WorkflowQuery res = new com.uber.cadence.WorkflowQuery(); + res.setQueryType(t.getQueryType()); + res.setQueryArgs(payload(t.getQueryArgs())); + return res; + } + + static Map payloadMap(Map t) { + if (t == null) { + return null; + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, payload(t.get(key))); + } + return v; + } + + static List + clusterReplicationConfigurationArrayFromProto(List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (int i = 0; i < t.size(); i++) { + v.add(clusterReplicationConfiguration(t.get(i))); + } + return v; + } + + static com.uber.cadence.ClusterReplicationConfiguration clusterReplicationConfiguration( + ClusterReplicationConfiguration t) { + if (t == null || t == ClusterReplicationConfiguration.getDefaultInstance()) { + return null; + } + com.uber.cadence.ClusterReplicationConfiguration res = + new com.uber.cadence.ClusterReplicationConfiguration(); + res.setClusterName(t.getClusterName()); + return res; + } + + static com.uber.cadence.DataBlob dataBlob(DataBlob t) { + if (t == null || t == DataBlob.getDefaultInstance()) { + return null; + } + com.uber.cadence.DataBlob dataBlob = new com.uber.cadence.DataBlob(); + dataBlob.setEncodingType(encodingType(t.getEncodingType())); + dataBlob.setData(byteStringToArray(t.getData())); + return dataBlob; + } + + static long externalInitiatedId(ExternalExecutionInfo t) { + return t.getInitiatedId(); + } + + static com.uber.cadence.WorkflowExecution externalWorkflowExecution(ExternalExecutionInfo t) { + if (t == null || t == ExternalExecutionInfo.getDefaultInstance()) { + return null; + } + return workflowExecution(t.getWorkflowExecution()); + } + + static com.uber.cadence.ResetPoints resetPoints(ResetPoints t) { + if (t == null || t == ResetPoints.getDefaultInstance()) { + return null; + } + com.uber.cadence.ResetPoints res = new com.uber.cadence.ResetPoints(); + res.setPoints(resetPointInfoArray(t.getPointsList())); + return res; + } + + static com.uber.cadence.ResetPointInfo resetPointInfo(ResetPointInfo t) { + if (t == null || t == ResetPointInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.ResetPointInfo res = new com.uber.cadence.ResetPointInfo(); + res.setBinaryChecksum(t.getBinaryChecksum()); + res.setRunId(t.getRunId()); + res.setFirstDecisionCompletedId(t.getFirstDecisionCompletedId()); + res.setCreatedTimeNano(timeToUnixNano(t.getCreatedTime())); + res.setExpiringTimeNano(timeToUnixNano(t.getExpiringTime())); + res.setResettable(t.getResettable()); + return res; + } + + static com.uber.cadence.PollerInfo pollerInfo(PollerInfo t) { + if (t == null || t == PollerInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.PollerInfo res = new com.uber.cadence.PollerInfo(); + res.setLastAccessTime(timeToUnixNano(t.getLastAccessTime())); + res.setIdentity(t.getIdentity()); + res.setRatePerSecond(t.getRatePerSecond()); + return res; + } + + static com.uber.cadence.TaskListStatus taskListStatus(TaskListStatus t) { + if (t == null || t == TaskListStatus.getDefaultInstance()) { + return null; + } + com.uber.cadence.TaskListStatus res = new com.uber.cadence.TaskListStatus(); + res.setBacklogCountHint(t.getBacklogCountHint()); + res.setReadLevel(t.getReadLevel()); + res.setAckLevel(t.getAckLevel()); + res.setRatePerSecond(t.getRatePerSecond()); + res.setTaskIDBlock(taskIdBlock(t.getTaskIdBlock())); + return res; + } + + static com.uber.cadence.TaskIDBlock taskIdBlock(TaskIDBlock t) { + if (t == null || t == TaskIDBlock.getDefaultInstance()) { + return null; + } + com.uber.cadence.TaskIDBlock res = new com.uber.cadence.TaskIDBlock(); + res.setStartID(t.getStartId()); + res.setEndID(t.getEndId()); + return res; + } + + static com.uber.cadence.WorkflowExecutionConfiguration workflowExecutionConfiguration( + WorkflowExecutionConfiguration t) { + if (t == null || t == WorkflowExecutionConfiguration.getDefaultInstance()) { + return null; + } + com.uber.cadence.WorkflowExecutionConfiguration res = + new com.uber.cadence.WorkflowExecutionConfiguration(); + res.setTaskList(taskList(t.getTaskList())); + res.setExecutionStartToCloseTimeoutSeconds( + durationToSeconds(t.getExecutionStartToCloseTimeout())); + res.setTaskStartToCloseTimeoutSeconds(durationToSeconds(t.getTaskStartToCloseTimeout())); + return res; + } + + static com.uber.cadence.WorkflowExecutionInfo workflowExecutionInfo(WorkflowExecutionInfo t) { + if (t == null || t == WorkflowExecutionInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.WorkflowExecutionInfo res = new com.uber.cadence.WorkflowExecutionInfo(); + res.setExecution(workflowExecution(t.getWorkflowExecution())); + res.setType(workflowType(t.getType())); + res.setStartTime(timeToUnixNano(t.getStartTime())); + res.setCloseTime(timeToUnixNano(t.getCloseTime())); + res.setCloseStatus(workflowExecutionCloseStatus(t.getCloseStatus())); + res.setHistoryLength(t.getHistoryLength()); + res.setParentDomainName(parentDomainName(t.getParentExecutionInfo())); + res.setParentDomainId(parentDomainId(t.getParentExecutionInfo())); + res.setParentExecution(parentWorkflowExecution(t.getParentExecutionInfo())); + res.setExecutionTime(timeToUnixNano(t.getExecutionTime())); + res.setMemo(memo(t.getMemo())); + res.setSearchAttributes(searchAttributes(t.getSearchAttributes())); + res.setAutoResetPoints(resetPoints(t.getAutoResetPoints())); + res.setTaskList(t.getTaskList()); + res.setCron(t.getIsCron()); + return res; + } + + static String parentDomainId(ParentExecutionInfo t) { + if (t == null || t == ParentExecutionInfo.getDefaultInstance()) { + return null; + } + return t.getDomainId(); + } + + static String parentDomainName(ParentExecutionInfo t) { + if (t == null || t == ParentExecutionInfo.getDefaultInstance()) { + return null; + } + return t.getDomainName(); + } + + static long parentInitiatedId(ParentExecutionInfo t) { + if (t == null || t == ParentExecutionInfo.getDefaultInstance()) { + return -1; + } + return t.getInitiatedId(); + } + + static com.uber.cadence.WorkflowExecution parentWorkflowExecution(ParentExecutionInfo t) { + if (t == null || t == ParentExecutionInfo.getDefaultInstance()) { + return null; + } + return workflowExecution(t.getWorkflowExecution()); + } + + static com.uber.cadence.PendingActivityInfo pendingActivityInfo(PendingActivityInfo t) { + if (t == null || t == PendingActivityInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.PendingActivityInfo res = new com.uber.cadence.PendingActivityInfo(); + res.setActivityID(t.getActivityId()); + res.setActivityType(activityType(t.getActivityType())); + res.setState(pendingActivityState(t.getState())); + res.setHeartbeatDetails(payload(t.getHeartbeatDetails())); + res.setLastHeartbeatTimestamp(timeToUnixNano(t.getLastHeartbeatTime())); + res.setLastStartedTimestamp(timeToUnixNano(t.getLastStartedTime())); + res.setAttempt(t.getAttempt()); + res.setMaximumAttempts(t.getMaximumAttempts()); + res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); + res.setExpirationTimestamp(timeToUnixNano(t.getExpirationTime())); + res.setLastFailureReason(failureReason(t.getLastFailure())); + res.setLastFailureDetails(failureDetails(t.getLastFailure())); + res.setLastWorkerIdentity(t.getLastWorkerIdentity()); + return res; + } + + static com.uber.cadence.PendingChildExecutionInfo pendingChildExecutionInfo( + PendingChildExecutionInfo t) { + if (t == null || t == PendingChildExecutionInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.PendingChildExecutionInfo res = + new com.uber.cadence.PendingChildExecutionInfo(); + res.setWorkflowID(workflowId(t.getWorkflowExecution())); + res.setRunID(runId(t.getWorkflowExecution())); + res.setWorkflowTypName(t.getWorkflowTypeName()); + res.setInitiatedID(t.getInitiatedId()); + res.setParentClosePolicy(parentClosePolicy(t.getParentClosePolicy())); + return res; + } + + static com.uber.cadence.PendingDecisionInfo pendingDecisionInfo(PendingDecisionInfo t) { + if (t == null || t == PendingDecisionInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.PendingDecisionInfo res = new com.uber.cadence.PendingDecisionInfo(); + res.setState(pendingDecisionState(t.getState())); + res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); + res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); + res.setAttempt(t.getAttempt()); + res.setOriginalScheduledTimestamp(timeToUnixNano(t.getOriginalScheduledTime())); + return res; + } + + static com.uber.cadence.ActivityLocalDispatchInfo activityLocalDispatchInfo( + ActivityLocalDispatchInfo t) { + if (t == null || t == ActivityLocalDispatchInfo.getDefaultInstance()) { + return null; + } + com.uber.cadence.ActivityLocalDispatchInfo res = + new com.uber.cadence.ActivityLocalDispatchInfo(); + res.setActivityId(t.getActivityId()); + res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); + res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); + res.setScheduledTimestampOfThisAttempt(timeToUnixNano(t.getScheduledTimeOfThisAttempt())); + res.setTaskToken(byteStringToArray(t.getTaskToken())); + return res; + } + + static com.uber.cadence.SupportedClientVersions supportedClientVersions( + SupportedClientVersions t) { + if (t == null || t == SupportedClientVersions.getDefaultInstance()) { + return null; + } + com.uber.cadence.SupportedClientVersions res = new com.uber.cadence.SupportedClientVersions(); + res.setGoSdk(t.getGoSdk()); + res.setJavaSdk(t.getJavaSdk()); + return res; + } + + static com.uber.cadence.DescribeDomainResponse describeDomainResponseDomain(Domain t) { + if (t == null || t == Domain.getDefaultInstance()) { + return null; + } + com.uber.cadence.DescribeDomainResponse res = new com.uber.cadence.DescribeDomainResponse(); + com.uber.cadence.DomainInfo domainInfo = new com.uber.cadence.DomainInfo(); + res.setDomainInfo(domainInfo); + + domainInfo.setName(t.getName()); + domainInfo.setStatus(domainStatus(t.getStatus())); + domainInfo.setDescription(t.getDescription()); + domainInfo.setOwnerEmail(t.getOwnerEmail()); + domainInfo.setData(t.getDataMap()); + domainInfo.setUuid(t.getId()); + + com.uber.cadence.DomainConfiguration domainConfiguration = + new com.uber.cadence.DomainConfiguration(); + res.setConfiguration(domainConfiguration); + + domainConfiguration.setWorkflowExecutionRetentionPeriodInDays( + durationToDays(t.getWorkflowExecutionRetentionPeriod())); + domainConfiguration.setEmitMetric(true); + domainConfiguration.setBadBinaries(badBinaries(t.getBadBinaries())); + domainConfiguration.setHistoryArchivalStatus(archivalStatus(t.getHistoryArchivalStatus())); + domainConfiguration.setHistoryArchivalURI(t.getHistoryArchivalUri()); + domainConfiguration.setVisibilityArchivalStatus( + archivalStatus(t.getVisibilityArchivalStatus())); + domainConfiguration.setVisibilityArchivalURI(t.getVisibilityArchivalUri()); + + com.uber.cadence.DomainReplicationConfiguration domainReplicationConfiguration = + new com.uber.cadence.DomainReplicationConfiguration(); + res.setReplicationConfiguration(domainReplicationConfiguration); + + domainReplicationConfiguration.setActiveClusterName(t.getActiveClusterName()); + domainReplicationConfiguration.setClusters( + clusterReplicationConfigurationArrayFromProto(t.getClustersList())); + res.setFailoverVersion(t.getFailoverVersion()); + res.setGlobalDomain(t.getIsGlobalDomain()); + + return res; + } + + static com.uber.cadence.TaskListMetadata taskListMetadata(TaskListMetadata t) { + if (t == null) { + return null; + } + com.uber.cadence.TaskListMetadata res = new com.uber.cadence.TaskListMetadata(); + res.setMaxTasksPerSecond(t.getMaxTasksPerSecond().getValue()); + return res; + } + + static com.uber.cadence.TaskListPartitionMetadata taskListPartitionMetadata( + TaskListPartitionMetadata t) { + if (t == null || t == TaskListPartitionMetadata.getDefaultInstance()) { + return null; + } + com.uber.cadence.TaskListPartitionMetadata res = + new com.uber.cadence.TaskListPartitionMetadata(); + res.setKey(t.getKey()); + res.setOwnerHostName(t.getOwnerHostName()); + return res; + } + + static com.uber.cadence.QueryRejected queryRejected(QueryRejected t) { + if (t == null || t == QueryRejected.getDefaultInstance()) { + return null; + } + com.uber.cadence.QueryRejected res = new com.uber.cadence.QueryRejected(); + res.setCloseStatus(workflowExecutionCloseStatus(t.getCloseStatus())); + return res; + } + + static List pollerInfoArray(List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (PollerInfo pollerInfo : t) { + v.add(pollerInfo(pollerInfo)); + } + return v; + } + + static List resetPointInfoArray(List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (ResetPointInfo resetPointInfo : t) { + v.add(resetPointInfo(resetPointInfo)); + } + return v; + } + + static List pendingActivityInfoArray( + List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (PendingActivityInfo pendingActivityInfo : t) { + v.add(pendingActivityInfo(pendingActivityInfo)); + } + return v; + } + + static List pendingChildExecutionInfoArray( + List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (PendingChildExecutionInfo pendingChildExecutionInfo : t) { + v.add(pendingChildExecutionInfo(pendingChildExecutionInfo)); + } + return v; + } + + static Map indexedValueTypeMap( + Map t) { + if (t == null) { + return null; + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, indexedValueType(t.get(key))); + } + return v; + } + + static List dataBlobArray(List t) { + if (t == null || t.size() == 0) { + return null; + } + List v = new ArrayList<>(); + for (DataBlob dataBlob : t) { + v.add(dataBlob(dataBlob)); + } + return v; + } + + static List workflowExecutionInfoArray( + List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (WorkflowExecutionInfo workflowExecutionInfo : t) { + v.add(workflowExecutionInfo(workflowExecutionInfo)); + } + return v; + } + + static List describeDomainResponseArray(List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (Domain domain : t) { + v.add(describeDomainResponseDomain(domain)); + } + return v; + } + + static List taskListPartitionMetadataArray( + List t) { + if (t == null) { + return null; + } + List v = new ArrayList<>(); + for (TaskListPartitionMetadata taskListPartitionMetadata : t) { + v.add(taskListPartitionMetadata(taskListPartitionMetadata)); + } + return v; + } + + static Map workflowQueryMap( + Map t) { + if (t == null) { + return null; + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, workflowQuery(t.get(key))); + } + return v; + } + + static Map activityLocalDispatchInfoMap( + Map t) { + if (t == null) { + return null; + } + Map v = new HashMap<>(); + for (String key : t.keySet()) { + v.put(key, activityLocalDispatchInfo(t.get(key))); + } + return v; + } +} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/EnumMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/EnumMapper.java deleted file mode 100644 index 5feb79ed0..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/EnumMapper.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import static com.uber.cadence.api.v1.QueryRejectCondition.QUERY_REJECT_CONDITION_INVALID; - -import com.uber.cadence.ArchivalStatus; -import com.uber.cadence.CancelExternalWorkflowExecutionFailedCause; -import com.uber.cadence.ChildWorkflowExecutionFailedCause; -import com.uber.cadence.ContinueAsNewInitiator; -import com.uber.cadence.DecisionTaskFailedCause; -import com.uber.cadence.DecisionTaskTimedOutCause; -import com.uber.cadence.DomainStatus; -import com.uber.cadence.EncodingType; -import com.uber.cadence.IndexedValueType; -import com.uber.cadence.ParentClosePolicy; -import com.uber.cadence.PendingActivityState; -import com.uber.cadence.PendingDecisionState; -import com.uber.cadence.QueryRejectCondition; -import com.uber.cadence.SignalExternalWorkflowExecutionFailedCause; -import com.uber.cadence.TaskListKind; -import com.uber.cadence.TimeoutType; -import com.uber.cadence.WorkflowExecutionCloseStatus; -import com.uber.cadence.WorkflowIdReusePolicy; - -public final class EnumMapper { - - private EnumMapper() {} - - public static TaskListKind taskListKind(com.uber.cadence.api.v1.TaskListKind t) { - switch (t) { - case TASK_LIST_KIND_INVALID: - return null; - case TASK_LIST_KIND_NORMAL: - return TaskListKind.NORMAL; - case TASK_LIST_KIND_STICKY: - return TaskListKind.STICKY; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static QueryRejectCondition queryRejectCondition( - com.uber.cadence.api.v1.QueryRejectCondition t) { - if (t == QUERY_REJECT_CONDITION_INVALID) { - return null; - } - switch (t) { - case QUERY_REJECT_CONDITION_NOT_OPEN: - return QueryRejectCondition.NOT_OPEN; - case QUERY_REJECT_CONDITION_NOT_COMPLETED_CLEANLY: - return QueryRejectCondition.NOT_COMPLETED_CLEANLY; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static ContinueAsNewInitiator continueAsNewInitiator( - com.uber.cadence.api.v1.ContinueAsNewInitiator t) { - switch (t) { - case CONTINUE_AS_NEW_INITIATOR_INVALID: - return null; - case CONTINUE_AS_NEW_INITIATOR_DECIDER: - return ContinueAsNewInitiator.Decider; - case CONTINUE_AS_NEW_INITIATOR_RETRY_POLICY: - return ContinueAsNewInitiator.RetryPolicy; - case CONTINUE_AS_NEW_INITIATOR_CRON_SCHEDULE: - return ContinueAsNewInitiator.CronSchedule; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static WorkflowIdReusePolicy workflowIdReusePolicy( - com.uber.cadence.api.v1.WorkflowIdReusePolicy t) { - switch (t) { - case WORKFLOW_ID_REUSE_POLICY_INVALID: - return null; - case WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY: - return WorkflowIdReusePolicy.AllowDuplicateFailedOnly; - case WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE: - return WorkflowIdReusePolicy.AllowDuplicate; - case WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE: - return WorkflowIdReusePolicy.RejectDuplicate; - case WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING: - return WorkflowIdReusePolicy.TerminateIfRunning; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static ArchivalStatus archivalStatus(com.uber.cadence.api.v1.ArchivalStatus t) { - switch (t) { - case ARCHIVAL_STATUS_INVALID: - return null; - case ARCHIVAL_STATUS_DISABLED: - return ArchivalStatus.DISABLED; - case ARCHIVAL_STATUS_ENABLED: - return ArchivalStatus.ENABLED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static ParentClosePolicy parentClosePolicy(com.uber.cadence.api.v1.ParentClosePolicy t) { - switch (t) { - case PARENT_CLOSE_POLICY_INVALID: - return null; - case PARENT_CLOSE_POLICY_ABANDON: - return ParentClosePolicy.ABANDON; - case PARENT_CLOSE_POLICY_REQUEST_CANCEL: - return ParentClosePolicy.REQUEST_CANCEL; - case PARENT_CLOSE_POLICY_TERMINATE: - return ParentClosePolicy.TERMINATE; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static DecisionTaskFailedCause decisionTaskFailedCause( - com.uber.cadence.api.v1.DecisionTaskFailedCause t) { - switch (t) { - case DECISION_TASK_FAILED_CAUSE_INVALID: - return null; - case DECISION_TASK_FAILED_CAUSE_UNHANDLED_DECISION: - return DecisionTaskFailedCause.UNHANDLED_DECISION; - case DECISION_TASK_FAILED_CAUSE_BAD_SCHEDULE_ACTIVITY_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_SCHEDULE_ACTIVITY_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_REQUEST_CANCEL_ACTIVITY_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_START_TIMER_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_START_TIMER_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_TIMER_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_CANCEL_TIMER_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_RECORD_MARKER_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_RECORD_MARKER_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_COMPLETE_WORKFLOW_EXECUTION_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_FAIL_WORKFLOW_EXECUTION_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_CANCEL_WORKFLOW_EXECUTION_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_CONTINUE_AS_NEW_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_CONTINUE_AS_NEW_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_START_TIMER_DUPLICATE_ID: - return DecisionTaskFailedCause.START_TIMER_DUPLICATE_ID; - case DECISION_TASK_FAILED_CAUSE_RESET_STICKY_TASK_LIST: - return DecisionTaskFailedCause.RESET_STICKY_TASKLIST; - case DECISION_TASK_FAILED_CAUSE_WORKFLOW_WORKER_UNHANDLED_FAILURE: - return DecisionTaskFailedCause.WORKFLOW_WORKER_UNHANDLED_FAILURE; - case DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_SIGNAL_WORKFLOW_EXECUTION_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_BAD_START_CHILD_EXECUTION_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_START_CHILD_EXECUTION_ATTRIBUTES; - case DECISION_TASK_FAILED_CAUSE_FORCE_CLOSE_DECISION: - return DecisionTaskFailedCause.FORCE_CLOSE_DECISION; - case DECISION_TASK_FAILED_CAUSE_FAILOVER_CLOSE_DECISION: - return DecisionTaskFailedCause.FAILOVER_CLOSE_DECISION; - case DECISION_TASK_FAILED_CAUSE_BAD_SIGNAL_INPUT_SIZE: - return DecisionTaskFailedCause.BAD_SIGNAL_INPUT_SIZE; - case DECISION_TASK_FAILED_CAUSE_RESET_WORKFLOW: - return DecisionTaskFailedCause.RESET_WORKFLOW; - case DECISION_TASK_FAILED_CAUSE_BAD_BINARY: - return DecisionTaskFailedCause.BAD_BINARY; - case DECISION_TASK_FAILED_CAUSE_SCHEDULE_ACTIVITY_DUPLICATE_ID: - return DecisionTaskFailedCause.SCHEDULE_ACTIVITY_DUPLICATE_ID; - case DECISION_TASK_FAILED_CAUSE_BAD_SEARCH_ATTRIBUTES: - return DecisionTaskFailedCause.BAD_SEARCH_ATTRIBUTES; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static WorkflowExecutionCloseStatus workflowExecutionCloseStatus( - com.uber.cadence.api.v1.WorkflowExecutionCloseStatus t) { - switch (t) { - case WORKFLOW_EXECUTION_CLOSE_STATUS_INVALID: - return null; - case WORKFLOW_EXECUTION_CLOSE_STATUS_COMPLETED: - return WorkflowExecutionCloseStatus.COMPLETED; - case WORKFLOW_EXECUTION_CLOSE_STATUS_FAILED: - return WorkflowExecutionCloseStatus.FAILED; - case WORKFLOW_EXECUTION_CLOSE_STATUS_CANCELED: - return WorkflowExecutionCloseStatus.CANCELED; - case WORKFLOW_EXECUTION_CLOSE_STATUS_TERMINATED: - return WorkflowExecutionCloseStatus.TERMINATED; - case WORKFLOW_EXECUTION_CLOSE_STATUS_CONTINUED_AS_NEW: - return WorkflowExecutionCloseStatus.CONTINUED_AS_NEW; - case WORKFLOW_EXECUTION_CLOSE_STATUS_TIMED_OUT: - return WorkflowExecutionCloseStatus.TIMED_OUT; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static DomainStatus domainStatus(com.uber.cadence.api.v1.DomainStatus t) { - switch (t) { - case DOMAIN_STATUS_INVALID: - return null; - case DOMAIN_STATUS_REGISTERED: - return DomainStatus.REGISTERED; - case DOMAIN_STATUS_DEPRECATED: - return DomainStatus.DEPRECATED; - case DOMAIN_STATUS_DELETED: - return DomainStatus.DELETED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static PendingActivityState pendingActivityState( - com.uber.cadence.api.v1.PendingActivityState t) { - switch (t) { - case PENDING_ACTIVITY_STATE_INVALID: - return null; - case PENDING_ACTIVITY_STATE_SCHEDULED: - return PendingActivityState.SCHEDULED; - case PENDING_ACTIVITY_STATE_STARTED: - return PendingActivityState.STARTED; - case PENDING_ACTIVITY_STATE_CANCEL_REQUESTED: - return PendingActivityState.CANCEL_REQUESTED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static PendingDecisionState pendingDecisionState( - com.uber.cadence.api.v1.PendingDecisionState t) { - switch (t) { - case PENDING_DECISION_STATE_INVALID: - return null; - case PENDING_DECISION_STATE_SCHEDULED: - return PendingDecisionState.SCHEDULED; - case PENDING_DECISION_STATE_STARTED: - return PendingDecisionState.STARTED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static IndexedValueType indexedValueType(com.uber.cadence.api.v1.IndexedValueType t) { - switch (t) { - case INDEXED_VALUE_TYPE_INVALID: - throw new IllegalArgumentException("received IndexedValueType_INDEXED_VALUE_TYPE_INVALID"); - case INDEXED_VALUE_TYPE_STRING: - return IndexedValueType.STRING; - case INDEXED_VALUE_TYPE_KEYWORD: - return IndexedValueType.KEYWORD; - case INDEXED_VALUE_TYPE_INT: - return IndexedValueType.INT; - case INDEXED_VALUE_TYPE_DOUBLE: - return IndexedValueType.DOUBLE; - case INDEXED_VALUE_TYPE_BOOL: - return IndexedValueType.BOOL; - case INDEXED_VALUE_TYPE_DATETIME: - return IndexedValueType.DATETIME; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static EncodingType encodingType(com.uber.cadence.api.v1.EncodingType t) { - switch (t) { - case ENCODING_TYPE_INVALID: - return null; - case ENCODING_TYPE_THRIFTRW: - return EncodingType.ThriftRW; - case ENCODING_TYPE_JSON: - return EncodingType.JSON; - case ENCODING_TYPE_PROTO3: - throw new UnsupportedOperationException(); - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static TimeoutType timeoutType(com.uber.cadence.api.v1.TimeoutType t) { - switch (t) { - case TIMEOUT_TYPE_INVALID: - return null; - case TIMEOUT_TYPE_START_TO_CLOSE: - return TimeoutType.START_TO_CLOSE; - case TIMEOUT_TYPE_SCHEDULE_TO_START: - return TimeoutType.SCHEDULE_TO_START; - case TIMEOUT_TYPE_SCHEDULE_TO_CLOSE: - return TimeoutType.SCHEDULE_TO_CLOSE; - case TIMEOUT_TYPE_HEARTBEAT: - return TimeoutType.HEARTBEAT; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static DecisionTaskTimedOutCause decisionTaskTimedOutCause( - com.uber.cadence.api.v1.DecisionTaskTimedOutCause t) { - switch (t) { - case DECISION_TASK_TIMED_OUT_CAUSE_INVALID: - return null; - case DECISION_TASK_TIMED_OUT_CAUSE_TIMEOUT: - return DecisionTaskTimedOutCause.TIMEOUT; - case DECISION_TASK_TIMED_OUT_CAUSE_RESET: - return DecisionTaskTimedOutCause.RESET; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static CancelExternalWorkflowExecutionFailedCause - cancelExternalWorkflowExecutionFailedCause( - com.uber.cadence.api.v1.CancelExternalWorkflowExecutionFailedCause t) { - switch (t) { - case CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID: - return null; - case CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION: - return CancelExternalWorkflowExecutionFailedCause.UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION; - case CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_COMPLETED: - return CancelExternalWorkflowExecutionFailedCause.WORKFLOW_ALREADY_COMPLETED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static SignalExternalWorkflowExecutionFailedCause - signalExternalWorkflowExecutionFailedCause( - com.uber.cadence.api.v1.SignalExternalWorkflowExecutionFailedCause t) { - switch (t) { - case SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID: - return null; - case SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION: - return SignalExternalWorkflowExecutionFailedCause.UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION; - case SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_COMPLETED: - return SignalExternalWorkflowExecutionFailedCause.WORKFLOW_ALREADY_COMPLETED; - } - throw new IllegalArgumentException("unexpected enum value"); - } - - public static ChildWorkflowExecutionFailedCause childWorkflowExecutionFailedCause( - com.uber.cadence.api.v1.ChildWorkflowExecutionFailedCause t) { - switch (t) { - case CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID: - return null; - case CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_RUNNING: - return ChildWorkflowExecutionFailedCause.WORKFLOW_ALREADY_RUNNING; - } - throw new IllegalArgumentException("unexpected enum value"); - } -} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapper.java deleted file mode 100644 index 366c2e6ce..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapper.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import com.uber.cadence.AccessDeniedError; -import com.uber.cadence.CancellationAlreadyRequestedError; -import com.uber.cadence.ClientVersionNotSupportedError; -import com.uber.cadence.DomainAlreadyExistsError; -import com.uber.cadence.DomainNotActiveError; -import com.uber.cadence.EntityNotExistsError; -import com.uber.cadence.FeatureNotEnabledError; -import com.uber.cadence.InternalDataInconsistencyError; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.LimitExceededError; -import com.uber.cadence.ServiceBusyError; -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; -import com.uber.cadence.WorkflowExecutionAlreadyStartedError; -import io.grpc.Metadata; -import io.grpc.StatusRuntimeException; -import org.apache.thrift.TException; - -public class ErrorMapper { - - public static TException Error(StatusRuntimeException ex) { - String details = getErrorDetails(ex); - switch (ex.getStatus().getCode()) { - case PERMISSION_DENIED: - return new AccessDeniedError(ex.getMessage()); - case INTERNAL: - return new InternalServiceError(ex.getMessage()); - case NOT_FOUND: - { - if ("EntityNotExistsError".equals(details) - && ex.getMessage().contains("already completed.")) { - return new WorkflowExecutionAlreadyCompletedError(ex.getMessage()); - } else { - // TODO add cluster info - return new EntityNotExistsError(ex.getMessage()); - } - } - case ALREADY_EXISTS: - { - switch (details) { - case "CancellationAlreadyRequestedError": - return new CancellationAlreadyRequestedError(ex.getMessage()); - case "DomainAlreadyExistsError": - return new DomainAlreadyExistsError(ex.getMessage()); - case "WorkflowExecutionAlreadyStartedError": - { - // TODO add started wf info - WorkflowExecutionAlreadyStartedError e = new WorkflowExecutionAlreadyStartedError(); - e.setMessage(ex.getMessage()); - return e; - } - } - } - case DATA_LOSS: - return new InternalDataInconsistencyError(ex.getMessage()); - case FAILED_PRECONDITION: - switch (details) { - // TODO add infos - case "ClientVersionNotSupportedError": - return new ClientVersionNotSupportedError(); - case "FeatureNotEnabledError": - return new FeatureNotEnabledError(); - case "DomainNotActiveError": - { - DomainNotActiveError e = new DomainNotActiveError(); - e.setMessage(ex.getMessage()); - return e; - } - } - case RESOURCE_EXHAUSTED: - switch (details) { - case "LimitExceededError": - return new LimitExceededError(ex.getMessage()); - case "ServiceBusyError": - return new ServiceBusyError(ex.getMessage()); - } - case UNKNOWN: - return new TException(ex); - default: - // If error does not match anything, return raw grpc status error - // There are some code that casts error to grpc status to check for deadline exceeded status - return new TException(ex); - } - } - - static String getErrorDetails(StatusRuntimeException ex) { - { - Metadata trailer = ex.getTrailers(); - Metadata.Key key = - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER); - if (trailer != null && trailer.containsKey(key)) { - return trailer.get(key); - } else { - return ""; - } - } - } -} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/Helpers.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/Helpers.java deleted file mode 100644 index a80a79c44..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/Helpers.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import com.google.protobuf.ByteString; -import com.google.protobuf.Duration; -import com.google.protobuf.Int64Value; -import com.google.protobuf.Timestamp; -import com.google.protobuf.util.Durations; -import com.google.protobuf.util.Timestamps; - -class Helpers { - - static long toInt64Value(Int64Value v) { - return v.getValue(); - } - - static long timeToUnixNano(Timestamp t) { - return Timestamps.toNanos(t); - } - - static int durationToDays(Duration d) { - return (int) Durations.toDays(d); - } - - static int durationToSeconds(Duration d) { - return (int) Durations.toSeconds(d); - } - - static byte[] byteStringToArray(ByteString t) { - if (t == null || t.size() == 0) { - return null; - } - return t.toByteArray(); - } -} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java deleted file mode 100644 index 10fe645e7..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapper.java +++ /dev/null @@ -1,459 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.archivalStatus; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.domainStatus; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.byteStringToArray; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.durationToDays; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.durationToSeconds; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.timeToUnixNano; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.toInt64Value; -import static com.uber.cadence.internal.compatibility.thrift.HistoryMapper.history; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.activityLocalDispatchInfoMap; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.activityType; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.autoConfigHint; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.badBinaries; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.clusterReplicationConfigurationArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.dataBlobArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.describeDomainResponseArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.header; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.indexedValueTypeMap; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.payload; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.pendingActivityInfoArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.pendingChildExecutionInfoArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.pendingDecisionInfo; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.pollerInfoArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.queryRejected; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.supportedClientVersions; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.taskList; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.taskListPartitionMetadataArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.taskListStatus; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowExecution; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowExecutionConfiguration; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowExecutionInfo; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowExecutionInfoArray; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowQuery; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowQueryMap; -import static com.uber.cadence.internal.compatibility.thrift.TypeMapper.workflowType; - -import com.uber.cadence.ClusterInfo; -import com.uber.cadence.CountWorkflowExecutionsResponse; -import com.uber.cadence.DescribeDomainResponse; -import com.uber.cadence.DescribeTaskListResponse; -import com.uber.cadence.DescribeWorkflowExecutionResponse; -import com.uber.cadence.DomainConfiguration; -import com.uber.cadence.DomainInfo; -import com.uber.cadence.DomainReplicationConfiguration; -import com.uber.cadence.GetSearchAttributesResponse; -import com.uber.cadence.GetWorkflowExecutionHistoryResponse; -import com.uber.cadence.ListArchivedWorkflowExecutionsResponse; -import com.uber.cadence.ListClosedWorkflowExecutionsResponse; -import com.uber.cadence.ListDomainsResponse; -import com.uber.cadence.ListOpenWorkflowExecutionsResponse; -import com.uber.cadence.ListTaskListPartitionsResponse; -import com.uber.cadence.ListWorkflowExecutionsResponse; -import com.uber.cadence.PollForActivityTaskResponse; -import com.uber.cadence.PollForDecisionTaskResponse; -import com.uber.cadence.QueryWorkflowResponse; -import com.uber.cadence.RecordActivityTaskHeartbeatResponse; -import com.uber.cadence.ResetWorkflowExecutionResponse; -import com.uber.cadence.RespondDecisionTaskCompletedResponse; -import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncResponse; -import com.uber.cadence.StartWorkflowExecutionAsyncResponse; -import com.uber.cadence.StartWorkflowExecutionResponse; -import com.uber.cadence.UpdateDomainResponse; -import com.uber.cadence.api.v1.WorkflowQuery; - -public class ResponseMapper { - - public static StartWorkflowExecutionResponse startWorkflowExecutionResponse( - com.uber.cadence.api.v1.StartWorkflowExecutionResponse t) { - if (t == null) { - return null; - } - StartWorkflowExecutionResponse startWorkflowExecutionResponse = - new StartWorkflowExecutionResponse(); - startWorkflowExecutionResponse.setRunId(t.getRunId()); - return startWorkflowExecutionResponse; - } - - public static StartWorkflowExecutionAsyncResponse startWorkflowExecutionAsyncResponse( - com.uber.cadence.api.v1.StartWorkflowExecutionAsyncResponse t) { - return t == null ? null : new StartWorkflowExecutionAsyncResponse(); - } - - public static DescribeTaskListResponse describeTaskListResponse( - com.uber.cadence.api.v1.DescribeTaskListResponse t) { - if (t == null) { - return null; - } - DescribeTaskListResponse describeTaskListResponse = new DescribeTaskListResponse(); - describeTaskListResponse.setPollers(pollerInfoArray(t.getPollersList())); - describeTaskListResponse.setTaskListStatus(taskListStatus(t.getTaskListStatus())); - return describeTaskListResponse; - } - - public static DescribeWorkflowExecutionResponse describeWorkflowExecutionResponse( - com.uber.cadence.api.v1.DescribeWorkflowExecutionResponse t) { - if (t == null) { - return null; - } - DescribeWorkflowExecutionResponse describeWorkflowExecutionResponse = - new DescribeWorkflowExecutionResponse(); - describeWorkflowExecutionResponse.setExecutionConfiguration( - workflowExecutionConfiguration(t.getExecutionConfiguration())); - describeWorkflowExecutionResponse.setWorkflowExecutionInfo( - workflowExecutionInfo(t.getWorkflowExecutionInfo())); - describeWorkflowExecutionResponse.setPendingActivities( - pendingActivityInfoArray(t.getPendingActivitiesList())); - describeWorkflowExecutionResponse.setPendingChildren( - pendingChildExecutionInfoArray(t.getPendingChildrenList())); - describeWorkflowExecutionResponse.setPendingDecision( - pendingDecisionInfo(t.getPendingDecision())); - return describeWorkflowExecutionResponse; - } - - public static ClusterInfo getClusterInfoResponse( - com.uber.cadence.api.v1.GetClusterInfoResponse t) { - if (t == null) { - return null; - } - ClusterInfo clusterInfo = new ClusterInfo(); - clusterInfo.setSupportedClientVersions(supportedClientVersions(t.getSupportedClientVersions())); - return clusterInfo; - } - - public static GetSearchAttributesResponse getSearchAttributesResponse( - com.uber.cadence.api.v1.GetSearchAttributesResponse t) { - if (t == null) { - return null; - } - GetSearchAttributesResponse getSearchAttributesResponse = new GetSearchAttributesResponse(); - getSearchAttributesResponse.setKeys(indexedValueTypeMap(t.getKeysMap())); - return getSearchAttributesResponse; - } - - public static GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistoryResponse( - com.uber.cadence.api.v1.GetWorkflowExecutionHistoryResponse t) { - if (t == null) { - return null; - } - GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistoryResponse = - new GetWorkflowExecutionHistoryResponse(); - getWorkflowExecutionHistoryResponse.setHistory(history(t.getHistory())); - getWorkflowExecutionHistoryResponse.setRawHistory(dataBlobArray(t.getRawHistoryList())); - getWorkflowExecutionHistoryResponse.setNextPageToken(byteStringToArray(t.getNextPageToken())); - getWorkflowExecutionHistoryResponse.setArchived(t.getArchived()); - return getWorkflowExecutionHistoryResponse; - } - - public static ListArchivedWorkflowExecutionsResponse listArchivedWorkflowExecutionsResponse( - com.uber.cadence.api.v1.ListArchivedWorkflowExecutionsResponse t) { - if (t == null) { - return null; - } - ListArchivedWorkflowExecutionsResponse res = new ListArchivedWorkflowExecutionsResponse(); - res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); - res.setNextPageToken(byteStringToArray(t.getNextPageToken())); - return res; - } - - public static ListClosedWorkflowExecutionsResponse listClosedWorkflowExecutionsResponse( - com.uber.cadence.api.v1.ListClosedWorkflowExecutionsResponse t) { - if (t == null) { - return null; - } - ListClosedWorkflowExecutionsResponse res = new ListClosedWorkflowExecutionsResponse(); - res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); - res.setNextPageToken(byteStringToArray(t.getNextPageToken())); - return res; - } - - public static ListOpenWorkflowExecutionsResponse listOpenWorkflowExecutionsResponse( - com.uber.cadence.api.v1.ListOpenWorkflowExecutionsResponse t) { - if (t == null) { - return null; - } - ListOpenWorkflowExecutionsResponse res = new ListOpenWorkflowExecutionsResponse(); - res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); - res.setNextPageToken(byteStringToArray(t.getNextPageToken())); - return res; - } - - public static ListTaskListPartitionsResponse listTaskListPartitionsResponse( - com.uber.cadence.api.v1.ListTaskListPartitionsResponse t) { - if (t == null) { - return null; - } - ListTaskListPartitionsResponse res = new ListTaskListPartitionsResponse(); - res.setActivityTaskListPartitions( - taskListPartitionMetadataArray(t.getActivityTaskListPartitionsList())); - res.setDecisionTaskListPartitions( - taskListPartitionMetadataArray(t.getDecisionTaskListPartitionsList())); - return res; - } - - public static ListWorkflowExecutionsResponse listWorkflowExecutionsResponse( - com.uber.cadence.api.v1.ListWorkflowExecutionsResponse t) { - if (t == null) { - return null; - } - ListWorkflowExecutionsResponse res = new ListWorkflowExecutionsResponse(); - res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); - res.setNextPageToken(byteStringToArray(t.getNextPageToken())); - return res; - } - - public static PollForActivityTaskResponse pollForActivityTaskResponse( - com.uber.cadence.api.v1.PollForActivityTaskResponse t) { - if (t == null) { - return null; - } - PollForActivityTaskResponse res = new PollForActivityTaskResponse(); - res.setTaskToken(byteStringToArray(t.getTaskToken())); - res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); - res.setActivityId(t.getActivityId()); - res.setActivityType(activityType(t.getActivityType())); - res.setInput(payload(t.getInput())); - res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); - res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); - res.setScheduleToCloseTimeoutSeconds(durationToSeconds(t.getScheduleToCloseTimeout())); - res.setStartToCloseTimeoutSeconds(durationToSeconds(t.getStartToCloseTimeout())); - res.setHeartbeatTimeoutSeconds(durationToSeconds(t.getHeartbeatTimeout())); - res.setAttempt(t.getAttempt()); - res.setScheduledTimestampOfThisAttempt(timeToUnixNano(t.getScheduledTimeOfThisAttempt())); - res.setHeartbeatDetails(payload(t.getHeartbeatDetails())); - res.setWorkflowType(workflowType(t.getWorkflowType())); - res.setWorkflowDomain(t.getWorkflowDomain()); - res.setHeader(header(t.getHeader())); - res.setAutoConfigHint(autoConfigHint(t.getAutoConfigHint())); - return res; - } - - public static PollForDecisionTaskResponse pollForDecisionTaskResponse( - com.uber.cadence.api.v1.PollForDecisionTaskResponse t) { - if (t == null) { - return null; - } - PollForDecisionTaskResponse res = new PollForDecisionTaskResponse(); - res.setTaskToken(byteStringToArray(t.getTaskToken())); - res.setWorkflowExecution(workflowExecution(t.getWorkflowExecution())); - res.setWorkflowType(workflowType(t.getWorkflowType())); - res.setPreviousStartedEventId(toInt64Value(t.getPreviousStartedEventId())); - res.setStartedEventId(t.getStartedEventId()); - res.setAttempt(t.getAttempt()); - res.setBacklogCountHint(t.getBacklogCountHint()); - res.setHistory(history(t.getHistory())); - res.setNextPageToken(byteStringToArray(t.getNextPageToken())); - if (t.getQuery() != WorkflowQuery.getDefaultInstance()) { - res.setQuery(workflowQuery(t.getQuery())); - } - res.setWorkflowExecutionTaskList(taskList(t.getWorkflowExecutionTaskList())); - res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); - res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); - res.setQueries(workflowQueryMap(t.getQueriesMap())); - res.setNextEventId(t.getNextEventId()); - res.setAutoConfigHint(autoConfigHint(t.getAutoConfigHint())); - return res; - } - - public static QueryWorkflowResponse queryWorkflowResponse( - com.uber.cadence.api.v1.QueryWorkflowResponse t) { - if (t == null) { - return null; - } - QueryWorkflowResponse res = new QueryWorkflowResponse(); - res.setQueryResult(payload(t.getQueryResult())); - res.setQueryRejected(queryRejected(t.getQueryRejected())); - return res; - } - - public static RecordActivityTaskHeartbeatResponse recordActivityTaskHeartbeatByIdResponse( - com.uber.cadence.api.v1.RecordActivityTaskHeartbeatByIDResponse t) { - if (t == null) { - return null; - } - RecordActivityTaskHeartbeatResponse res = new RecordActivityTaskHeartbeatResponse(); - res.setCancelRequested(t.getCancelRequested()); - return res; - } - - public static RecordActivityTaskHeartbeatResponse recordActivityTaskHeartbeatResponse( - com.uber.cadence.api.v1.RecordActivityTaskHeartbeatResponse t) { - if (t == null) { - return null; - } - RecordActivityTaskHeartbeatResponse res = new RecordActivityTaskHeartbeatResponse(); - res.setCancelRequested(t.getCancelRequested()); - return res; - } - - public static ResetWorkflowExecutionResponse resetWorkflowExecutionResponse( - com.uber.cadence.api.v1.ResetWorkflowExecutionResponse t) { - if (t == null) { - return null; - } - ResetWorkflowExecutionResponse res = new ResetWorkflowExecutionResponse(); - res.setRunId(t.getRunId()); - return res; - } - - public static RespondDecisionTaskCompletedResponse respondDecisionTaskCompletedResponse( - com.uber.cadence.api.v1.RespondDecisionTaskCompletedResponse t) { - if (t == null) { - return null; - } - RespondDecisionTaskCompletedResponse res = new RespondDecisionTaskCompletedResponse(); - res.setDecisionTask(pollForDecisionTaskResponse(t.getDecisionTask())); - res.setActivitiesToDispatchLocally( - activityLocalDispatchInfoMap(t.getActivitiesToDispatchLocallyMap())); - return res; - } - - public static ListWorkflowExecutionsResponse scanWorkflowExecutionsResponse( - com.uber.cadence.api.v1.ScanWorkflowExecutionsResponse t) { - if (t == null) { - return null; - } - ListWorkflowExecutionsResponse res = new ListWorkflowExecutionsResponse(); - res.setExecutions(workflowExecutionInfoArray(t.getExecutionsList())); - res.setNextPageToken(byteStringToArray(t.getNextPageToken())); - return res; - } - - public static CountWorkflowExecutionsResponse countWorkflowExecutionsResponse( - com.uber.cadence.api.v1.CountWorkflowExecutionsResponse t) { - if (t == null) { - return null; - } - CountWorkflowExecutionsResponse res = new CountWorkflowExecutionsResponse(); - res.setCount(t.getCount()); - return res; - } - - public static DescribeDomainResponse describeDomainResponse( - com.uber.cadence.api.v1.DescribeDomainResponse t) { - if (t == null) { - return null; - } - DescribeDomainResponse response = new DescribeDomainResponse(); - DomainInfo domainInfo = new DomainInfo(); - response.setDomainInfo(domainInfo); - - domainInfo.setName(t.getDomain().getName()); - domainInfo.setStatus(domainStatus(t.getDomain().getStatus())); - domainInfo.setDescription(t.getDomain().getDescription()); - domainInfo.setOwnerEmail(t.getDomain().getOwnerEmail()); - domainInfo.setData(t.getDomain().getDataMap()); - domainInfo.setUuid(t.getDomain().getId()); - - DomainConfiguration domainConfiguration = new DomainConfiguration(); - response.setConfiguration(domainConfiguration); - - domainConfiguration.setWorkflowExecutionRetentionPeriodInDays( - durationToDays(t.getDomain().getWorkflowExecutionRetentionPeriod())); - domainConfiguration.setEmitMetric(true); - domainConfiguration.setBadBinaries(badBinaries(t.getDomain().getBadBinaries())); - domainConfiguration.setHistoryArchivalStatus( - archivalStatus(t.getDomain().getHistoryArchivalStatus())); - domainConfiguration.setHistoryArchivalURI(t.getDomain().getHistoryArchivalUri()); - domainConfiguration.setVisibilityArchivalStatus( - archivalStatus(t.getDomain().getVisibilityArchivalStatus())); - domainConfiguration.setVisibilityArchivalURI(t.getDomain().getVisibilityArchivalUri()); - - DomainReplicationConfiguration replicationConfiguration = new DomainReplicationConfiguration(); - response.setReplicationConfiguration(replicationConfiguration); - - replicationConfiguration.setActiveClusterName(t.getDomain().getActiveClusterName()); - replicationConfiguration.setClusters( - clusterReplicationConfigurationArray(t.getDomain().getClustersList())); - - response.setFailoverVersion(t.getDomain().getFailoverVersion()); - response.setIsGlobalDomain(t.getDomain().getIsGlobalDomain()); - return response; - } - - public static ListDomainsResponse listDomainsResponse( - com.uber.cadence.api.v1.ListDomainsResponse t) { - if (t == null) { - return null; - } - ListDomainsResponse res = new ListDomainsResponse(); - res.setDomains(describeDomainResponseArray(t.getDomainsList())); - res.setNextPageToken(byteStringToArray(t.getNextPageToken())); - return res; - } - - public static StartWorkflowExecutionResponse signalWithStartWorkflowExecutionResponse( - com.uber.cadence.api.v1.SignalWithStartWorkflowExecutionResponse t) { - if (t == null) { - return null; - } - StartWorkflowExecutionResponse startWorkflowExecutionResponse = - new StartWorkflowExecutionResponse(); - startWorkflowExecutionResponse.setRunId(t.getRunId()); - return startWorkflowExecutionResponse; - } - - public static SignalWithStartWorkflowExecutionAsyncResponse - signalWithStartWorkflowExecutionAsyncResponse( - com.uber.cadence.api.v1.SignalWithStartWorkflowExecutionAsyncResponse t) { - return t == null ? null : new SignalWithStartWorkflowExecutionAsyncResponse(); - } - - public static UpdateDomainResponse updateDomainResponse( - com.uber.cadence.api.v1.UpdateDomainResponse t) { - if (t == null) { - return null; - } - UpdateDomainResponse updateDomainResponse = new UpdateDomainResponse(); - DomainInfo domainInfo = new DomainInfo(); - updateDomainResponse.setDomainInfo(domainInfo); - - domainInfo.setName(t.getDomain().getName()); - domainInfo.setStatus(domainStatus(t.getDomain().getStatus())); - domainInfo.setDescription(t.getDomain().getDescription()); - domainInfo.setOwnerEmail(t.getDomain().getOwnerEmail()); - domainInfo.setData(t.getDomain().getDataMap()); - domainInfo.setUuid(t.getDomain().getId()); - - DomainConfiguration domainConfiguration = new DomainConfiguration(); - updateDomainResponse.setConfiguration(domainConfiguration); - - domainConfiguration.setWorkflowExecutionRetentionPeriodInDays( - durationToDays(t.getDomain().getWorkflowExecutionRetentionPeriod())); - domainConfiguration.setEmitMetric(true); - domainConfiguration.setBadBinaries(badBinaries(t.getDomain().getBadBinaries())); - domainConfiguration.setHistoryArchivalStatus( - archivalStatus(t.getDomain().getHistoryArchivalStatus())); - domainConfiguration.setHistoryArchivalURI(t.getDomain().getHistoryArchivalUri()); - domainConfiguration.setVisibilityArchivalStatus( - archivalStatus(t.getDomain().getVisibilityArchivalStatus())); - domainConfiguration.setVisibilityArchivalURI(t.getDomain().getVisibilityArchivalUri()); - - DomainReplicationConfiguration domainReplicationConfiguration = - new DomainReplicationConfiguration(); - updateDomainResponse.setReplicationConfiguration(domainReplicationConfiguration); - - domainReplicationConfiguration.setActiveClusterName(t.getDomain().getActiveClusterName()); - domainReplicationConfiguration.setClusters( - clusterReplicationConfigurationArray(t.getDomain().getClustersList())); - updateDomainResponse.setFailoverVersion(t.getDomain().getFailoverVersion()); - updateDomainResponse.setIsGlobalDomain(t.getDomain().getIsGlobalDomain()); - return updateDomainResponse; - } -} diff --git a/src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java deleted file mode 100644 index 681b495dd..000000000 --- a/src/main/java/com/uber/cadence/internal/compatibility/thrift/TypeMapper.java +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Modifications Copyright (c) 2017-2021 Uber Technologies Inc. - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.archivalStatus; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.domainStatus; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.encodingType; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.indexedValueType; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.parentClosePolicy; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.pendingActivityState; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.pendingDecisionState; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.taskListKind; -import static com.uber.cadence.internal.compatibility.thrift.EnumMapper.workflowExecutionCloseStatus; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.byteStringToArray; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.durationToDays; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.durationToSeconds; -import static com.uber.cadence.internal.compatibility.thrift.Helpers.timeToUnixNano; - -import com.uber.cadence.ActivityLocalDispatchInfo; -import com.uber.cadence.ActivityType; -import com.uber.cadence.AutoConfigHint; -import com.uber.cadence.BadBinaries; -import com.uber.cadence.BadBinaryInfo; -import com.uber.cadence.ClusterReplicationConfiguration; -import com.uber.cadence.DataBlob; -import com.uber.cadence.DescribeDomainResponse; -import com.uber.cadence.DomainConfiguration; -import com.uber.cadence.DomainInfo; -import com.uber.cadence.DomainReplicationConfiguration; -import com.uber.cadence.Header; -import com.uber.cadence.IndexedValueType; -import com.uber.cadence.Memo; -import com.uber.cadence.PendingActivityInfo; -import com.uber.cadence.PendingChildExecutionInfo; -import com.uber.cadence.PendingDecisionInfo; -import com.uber.cadence.PollerInfo; -import com.uber.cadence.QueryRejected; -import com.uber.cadence.ResetPointInfo; -import com.uber.cadence.ResetPoints; -import com.uber.cadence.RetryPolicy; -import com.uber.cadence.SearchAttributes; -import com.uber.cadence.SupportedClientVersions; -import com.uber.cadence.TaskIDBlock; -import com.uber.cadence.TaskList; -import com.uber.cadence.TaskListMetadata; -import com.uber.cadence.TaskListPartitionMetadata; -import com.uber.cadence.TaskListStatus; -import com.uber.cadence.WorkflowExecution; -import com.uber.cadence.WorkflowExecutionConfiguration; -import com.uber.cadence.WorkflowExecutionInfo; -import com.uber.cadence.WorkflowQuery; -import com.uber.cadence.WorkflowType; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -class TypeMapper { - - static byte[] payload(com.uber.cadence.api.v1.Payload t) { - if (t == null || t == com.uber.cadence.api.v1.Payload.getDefaultInstance()) { - return null; - } - if (t.getData() == null || t.getData().size() == 0) { - // protoPayload will not generate this case - // however, Data field will be dropped by the encoding if it's empty - // and receiver side will see null for the Data field - // since we already know p is not null, Data field must be an empty byte array - return new byte[0]; - } - return byteStringToArray(t.getData()); - } - - static String failureReason(com.uber.cadence.api.v1.Failure t) { - if (t == null || t == com.uber.cadence.api.v1.Failure.getDefaultInstance()) { - return null; - } - return t.getReason(); - } - - static byte[] failureDetails(com.uber.cadence.api.v1.Failure t) { - if (t == null || t == com.uber.cadence.api.v1.Failure.getDefaultInstance()) { - return null; - } - return byteStringToArray(t.getDetails()); - } - - static WorkflowExecution workflowExecution(com.uber.cadence.api.v1.WorkflowExecution t) { - if (t == null || t == com.uber.cadence.api.v1.WorkflowExecution.getDefaultInstance()) { - return null; - } - WorkflowExecution we = new WorkflowExecution(); - we.setWorkflowId(t.getWorkflowId()); - we.setRunId(t.getRunId()); - return we; - } - - static String workflowId(com.uber.cadence.api.v1.WorkflowExecution t) { - if (t == null || t == com.uber.cadence.api.v1.WorkflowExecution.getDefaultInstance()) { - return null; - } - return t.getWorkflowId(); - } - - static String runId(com.uber.cadence.api.v1.WorkflowExecution t) { - if (t == null || t == com.uber.cadence.api.v1.WorkflowExecution.getDefaultInstance()) { - return null; - } - return t.getRunId(); - } - - static ActivityType activityType(com.uber.cadence.api.v1.ActivityType t) { - if (t == null || t == com.uber.cadence.api.v1.ActivityType.getDefaultInstance()) { - return null; - } - ActivityType activityType = new ActivityType(); - activityType.setName(t.getName()); - return activityType; - } - - static WorkflowType workflowType(com.uber.cadence.api.v1.WorkflowType t) { - if (t == null || t == com.uber.cadence.api.v1.WorkflowType.getDefaultInstance()) { - return null; - } - WorkflowType wt = new WorkflowType(); - wt.setName(t.getName()); - - return wt; - } - - static TaskList taskList(com.uber.cadence.api.v1.TaskList t) { - if (t == null || t == com.uber.cadence.api.v1.TaskList.getDefaultInstance()) { - return null; - } - TaskList taskList = new TaskList(); - taskList.setName(t.getName()); - taskList.setKind(taskListKind(t.getKind())); - return taskList; - } - - static RetryPolicy retryPolicy(com.uber.cadence.api.v1.RetryPolicy t) { - if (t == null || t == com.uber.cadence.api.v1.RetryPolicy.getDefaultInstance()) { - return null; - } - RetryPolicy res = new RetryPolicy(); - res.setInitialIntervalInSeconds(durationToSeconds(t.getInitialInterval())); - res.setBackoffCoefficient(t.getBackoffCoefficient()); - res.setMaximumIntervalInSeconds(durationToSeconds(t.getMaximumInterval())); - res.setMaximumAttempts(t.getMaximumAttempts()); - res.setNonRetriableErrorReasons(t.getNonRetryableErrorReasonsList()); - res.setExpirationIntervalInSeconds(durationToSeconds(t.getExpirationInterval())); - return res; - } - - static Header header(com.uber.cadence.api.v1.Header t) { - if (t == null || t == com.uber.cadence.api.v1.Header.getDefaultInstance()) { - return null; - } - Header res = new Header(); - res.setFields(payloadMap(t.getFieldsMap())); - return res; - } - - static Memo memo(com.uber.cadence.api.v1.Memo t) { - if (t == null || t == com.uber.cadence.api.v1.Memo.getDefaultInstance()) { - return null; - } - Memo res = new Memo(); - res.setFields(payloadMap(t.getFieldsMap())); - return res; - } - - static SearchAttributes searchAttributes(com.uber.cadence.api.v1.SearchAttributes t) { - if (t == null - || t.getAllFields().size() == 0 - || t == com.uber.cadence.api.v1.SearchAttributes.getDefaultInstance()) { - return null; - } - SearchAttributes res = new SearchAttributes(); - res.setIndexedFields(payloadMap(t.getIndexedFieldsMap())); - return res; - } - - static BadBinaries badBinaries(com.uber.cadence.api.v1.BadBinaries t) { - if (t == null || t == com.uber.cadence.api.v1.BadBinaries.getDefaultInstance()) { - return null; - } - BadBinaries badBinaries = new BadBinaries(); - badBinaries.setBinaries(badBinaryInfoMap(t.getBinariesMap())); - return badBinaries; - } - - static BadBinaryInfo badBinaryInfo(com.uber.cadence.api.v1.BadBinaryInfo t) { - if (t == null || t == com.uber.cadence.api.v1.BadBinaryInfo.getDefaultInstance()) { - return null; - } - BadBinaryInfo res = new BadBinaryInfo(); - res.setReason(t.getReason()); - res.setOperator(t.getOperator()); - res.setCreatedTimeNano(timeToUnixNano(t.getCreatedTime())); - return res; - } - - static Map badBinaryInfoMap( - Map t) { - if (t == null) { - return null; - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, badBinaryInfo(t.get(key))); - } - return v; - } - - static WorkflowQuery workflowQuery(com.uber.cadence.api.v1.WorkflowQuery t) { - if (t == null || t == com.uber.cadence.api.v1.WorkflowQuery.getDefaultInstance()) { - return null; - } - WorkflowQuery res = new WorkflowQuery(); - res.setQueryType(t.getQueryType()); - res.setQueryArgs(payload(t.getQueryArgs())); - return res; - } - - static Map payloadMap(Map t) { - if (t == null) { - return null; - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, ByteBuffer.wrap(payload(t.get(key)))); - } - return v; - } - - static List clusterReplicationConfigurationArray( - List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (int i = 0; i < t.size(); i++) { - v.add(clusterReplicationConfiguration(t.get(i))); - } - return v; - } - - static ClusterReplicationConfiguration clusterReplicationConfiguration( - com.uber.cadence.api.v1.ClusterReplicationConfiguration t) { - if (t == null - || t == com.uber.cadence.api.v1.ClusterReplicationConfiguration.getDefaultInstance()) { - return null; - } - ClusterReplicationConfiguration res = new ClusterReplicationConfiguration(); - res.setClusterName(t.getClusterName()); - return res; - } - - static DataBlob dataBlob(com.uber.cadence.api.v1.DataBlob t) { - if (t == null || t == com.uber.cadence.api.v1.DataBlob.getDefaultInstance()) { - return null; - } - DataBlob dataBlob = new DataBlob(); - dataBlob.setEncodingType(encodingType(t.getEncodingType())); - dataBlob.setData(byteStringToArray(t.getData())); - return dataBlob; - } - - static long externalInitiatedId(com.uber.cadence.api.v1.ExternalExecutionInfo t) { - return t.getInitiatedId(); - } - - static WorkflowExecution externalWorkflowExecution( - com.uber.cadence.api.v1.ExternalExecutionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.ExternalExecutionInfo.getDefaultInstance()) { - return null; - } - return workflowExecution(t.getWorkflowExecution()); - } - - static ResetPoints resetPoints(com.uber.cadence.api.v1.ResetPoints t) { - if (t == null || t == com.uber.cadence.api.v1.ResetPoints.getDefaultInstance()) { - return null; - } - ResetPoints res = new ResetPoints(); - res.setPoints(resetPointInfoArray(t.getPointsList())); - return res; - } - - static ResetPointInfo resetPointInfo(com.uber.cadence.api.v1.ResetPointInfo t) { - if (t == null || t == com.uber.cadence.api.v1.ResetPointInfo.getDefaultInstance()) { - return null; - } - ResetPointInfo res = new ResetPointInfo(); - res.setBinaryChecksum(t.getBinaryChecksum()); - res.setRunId(t.getRunId()); - res.setFirstDecisionCompletedId(t.getFirstDecisionCompletedId()); - res.setCreatedTimeNano(timeToUnixNano(t.getCreatedTime())); - res.setExpiringTimeNano(timeToUnixNano(t.getExpiringTime())); - res.setResettable(t.getResettable()); - return res; - } - - static PollerInfo pollerInfo(com.uber.cadence.api.v1.PollerInfo t) { - if (t == null || t == com.uber.cadence.api.v1.PollerInfo.getDefaultInstance()) { - return null; - } - PollerInfo res = new PollerInfo(); - res.setLastAccessTime(timeToUnixNano(t.getLastAccessTime())); - res.setIdentity(t.getIdentity()); - res.setRatePerSecond(t.getRatePerSecond()); - return res; - } - - static TaskListStatus taskListStatus(com.uber.cadence.api.v1.TaskListStatus t) { - if (t == null || t == com.uber.cadence.api.v1.TaskListStatus.getDefaultInstance()) { - return null; - } - TaskListStatus res = new TaskListStatus(); - res.setBacklogCountHint(t.getBacklogCountHint()); - res.setReadLevel(t.getReadLevel()); - res.setAckLevel(t.getAckLevel()); - res.setRatePerSecond(t.getRatePerSecond()); - res.setTaskIDBlock(taskIdBlock(t.getTaskIdBlock())); - return res; - } - - static TaskIDBlock taskIdBlock(com.uber.cadence.api.v1.TaskIDBlock t) { - if (t == null || t == com.uber.cadence.api.v1.TaskIDBlock.getDefaultInstance()) { - return null; - } - TaskIDBlock res = new TaskIDBlock(); - res.setStartID(t.getStartId()); - res.setEndID(t.getEndId()); - return res; - } - - static WorkflowExecutionConfiguration workflowExecutionConfiguration( - com.uber.cadence.api.v1.WorkflowExecutionConfiguration t) { - if (t == null - || t == com.uber.cadence.api.v1.WorkflowExecutionConfiguration.getDefaultInstance()) { - return null; - } - WorkflowExecutionConfiguration res = new WorkflowExecutionConfiguration(); - res.setTaskList(taskList(t.getTaskList())); - res.setExecutionStartToCloseTimeoutSeconds( - durationToSeconds(t.getExecutionStartToCloseTimeout())); - res.setTaskStartToCloseTimeoutSeconds(durationToSeconds(t.getTaskStartToCloseTimeout())); - return res; - } - - static WorkflowExecutionInfo workflowExecutionInfo( - com.uber.cadence.api.v1.WorkflowExecutionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.WorkflowExecutionInfo.getDefaultInstance()) { - return null; - } - WorkflowExecutionInfo res = new WorkflowExecutionInfo(); - res.setExecution(workflowExecution(t.getWorkflowExecution())); - res.setType(workflowType(t.getType())); - res.setStartTime(timeToUnixNano(t.getStartTime())); - res.setCloseTime(timeToUnixNano(t.getCloseTime())); - res.setCloseStatus(workflowExecutionCloseStatus(t.getCloseStatus())); - res.setHistoryLength(t.getHistoryLength()); - res.setParentDomainName(parentDomainName(t.getParentExecutionInfo())); - res.setParentDomainId(parentDomainId(t.getParentExecutionInfo())); - res.setParentExecution(parentWorkflowExecution(t.getParentExecutionInfo())); - res.setExecutionTime(timeToUnixNano(t.getExecutionTime())); - res.setMemo(memo(t.getMemo())); - res.setSearchAttributes(searchAttributes(t.getSearchAttributes())); - res.setAutoResetPoints(resetPoints(t.getAutoResetPoints())); - res.setTaskList(t.getTaskList()); - res.setIsCron(t.getIsCron()); - return res; - } - - static String parentDomainId(com.uber.cadence.api.v1.ParentExecutionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.ParentExecutionInfo.getDefaultInstance()) { - return null; - } - return t.getDomainId(); - } - - static String parentDomainName(com.uber.cadence.api.v1.ParentExecutionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.ParentExecutionInfo.getDefaultInstance()) { - return null; - } - return t.getDomainName(); - } - - static long parentInitiatedId(com.uber.cadence.api.v1.ParentExecutionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.ParentExecutionInfo.getDefaultInstance()) { - return -1; - } - return t.getInitiatedId(); - } - - static WorkflowExecution parentWorkflowExecution(com.uber.cadence.api.v1.ParentExecutionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.ParentExecutionInfo.getDefaultInstance()) { - return null; - } - return workflowExecution(t.getWorkflowExecution()); - } - - static PendingActivityInfo pendingActivityInfo(com.uber.cadence.api.v1.PendingActivityInfo t) { - if (t == null || t == com.uber.cadence.api.v1.PendingActivityInfo.getDefaultInstance()) { - return null; - } - PendingActivityInfo res = new PendingActivityInfo(); - res.setActivityID(t.getActivityId()); - res.setActivityType(activityType(t.getActivityType())); - res.setState(pendingActivityState(t.getState())); - res.setHeartbeatDetails(payload(t.getHeartbeatDetails())); - res.setLastHeartbeatTimestamp(timeToUnixNano(t.getLastHeartbeatTime())); - res.setLastStartedTimestamp(timeToUnixNano(t.getLastStartedTime())); - res.setAttempt(t.getAttempt()); - res.setMaximumAttempts(t.getMaximumAttempts()); - res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); - res.setExpirationTimestamp(timeToUnixNano(t.getExpirationTime())); - res.setLastFailureReason(failureReason(t.getLastFailure())); - res.setLastFailureDetails(failureDetails(t.getLastFailure())); - res.setLastWorkerIdentity(t.getLastWorkerIdentity()); - return res; - } - - static PendingChildExecutionInfo pendingChildExecutionInfo( - com.uber.cadence.api.v1.PendingChildExecutionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.PendingChildExecutionInfo.getDefaultInstance()) { - return null; - } - PendingChildExecutionInfo res = new PendingChildExecutionInfo(); - res.setWorkflowID(workflowId(t.getWorkflowExecution())); - res.setRunID(runId(t.getWorkflowExecution())); - res.setWorkflowTypName(t.getWorkflowTypeName()); - res.setInitiatedID(t.getInitiatedId()); - res.setParentClosePolicy(parentClosePolicy(t.getParentClosePolicy())); - return res; - } - - static PendingDecisionInfo pendingDecisionInfo(com.uber.cadence.api.v1.PendingDecisionInfo t) { - if (t == null || t == com.uber.cadence.api.v1.PendingDecisionInfo.getDefaultInstance()) { - return null; - } - PendingDecisionInfo res = new PendingDecisionInfo(); - res.setState(pendingDecisionState(t.getState())); - res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); - res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); - res.setAttempt(t.getAttempt()); - res.setOriginalScheduledTimestamp(timeToUnixNano(t.getOriginalScheduledTime())); - return res; - } - - static ActivityLocalDispatchInfo activityLocalDispatchInfo( - com.uber.cadence.api.v1.ActivityLocalDispatchInfo t) { - if (t == null || t == com.uber.cadence.api.v1.ActivityLocalDispatchInfo.getDefaultInstance()) { - return null; - } - ActivityLocalDispatchInfo res = new ActivityLocalDispatchInfo(); - res.setActivityId(t.getActivityId()); - res.setScheduledTimestamp(timeToUnixNano(t.getScheduledTime())); - res.setStartedTimestamp(timeToUnixNano(t.getStartedTime())); - res.setScheduledTimestampOfThisAttempt(timeToUnixNano(t.getScheduledTimeOfThisAttempt())); - res.setTaskToken(byteStringToArray(t.getTaskToken())); - return res; - } - - static SupportedClientVersions supportedClientVersions( - com.uber.cadence.api.v1.SupportedClientVersions t) { - if (t == null || t == com.uber.cadence.api.v1.SupportedClientVersions.getDefaultInstance()) { - return null; - } - SupportedClientVersions res = new SupportedClientVersions(); - res.setGoSdk(t.getGoSdk()); - res.setJavaSdk(t.getJavaSdk()); - return res; - } - - static DescribeDomainResponse describeDomainResponseDomain(com.uber.cadence.api.v1.Domain t) { - if (t == null || t == com.uber.cadence.api.v1.Domain.getDefaultInstance()) { - return null; - } - DescribeDomainResponse res = new DescribeDomainResponse(); - DomainInfo domainInfo = new DomainInfo(); - res.setDomainInfo(domainInfo); - - domainInfo.setName(t.getName()); - domainInfo.setStatus(domainStatus(t.getStatus())); - domainInfo.setDescription(t.getDescription()); - domainInfo.setOwnerEmail(t.getOwnerEmail()); - domainInfo.setData(t.getDataMap()); - domainInfo.setUuid(t.getId()); - - DomainConfiguration domainConfiguration = new DomainConfiguration(); - res.setConfiguration(domainConfiguration); - - domainConfiguration.setWorkflowExecutionRetentionPeriodInDays( - durationToDays(t.getWorkflowExecutionRetentionPeriod())); - domainConfiguration.setEmitMetric(true); - domainConfiguration.setBadBinaries(badBinaries(t.getBadBinaries())); - domainConfiguration.setHistoryArchivalStatus(archivalStatus(t.getHistoryArchivalStatus())); - domainConfiguration.setHistoryArchivalURI(t.getHistoryArchivalUri()); - domainConfiguration.setVisibilityArchivalStatus( - archivalStatus(t.getVisibilityArchivalStatus())); - domainConfiguration.setVisibilityArchivalURI(t.getVisibilityArchivalUri()); - - DomainReplicationConfiguration domainReplicationConfiguration = - new DomainReplicationConfiguration(); - res.setReplicationConfiguration(domainReplicationConfiguration); - - domainReplicationConfiguration.setActiveClusterName(t.getActiveClusterName()); - domainReplicationConfiguration.setClusters( - clusterReplicationConfigurationArray(t.getClustersList())); - res.setFailoverVersion(t.getFailoverVersion()); - res.setIsGlobalDomain(t.getIsGlobalDomain()); - - return res; - } - - static TaskListMetadata taskListMetadata(com.uber.cadence.api.v1.TaskListMetadata t) { - if (t == null) { - return null; - } - TaskListMetadata res = new TaskListMetadata(); - res.setMaxTasksPerSecond(t.getMaxTasksPerSecond().getValue()); - return res; - } - - static TaskListPartitionMetadata taskListPartitionMetadata( - com.uber.cadence.api.v1.TaskListPartitionMetadata t) { - if (t == null || t == com.uber.cadence.api.v1.TaskListPartitionMetadata.getDefaultInstance()) { - return null; - } - TaskListPartitionMetadata res = new TaskListPartitionMetadata(); - res.setKey(t.getKey()); - res.setOwnerHostName(t.getOwnerHostName()); - return res; - } - - static QueryRejected queryRejected(com.uber.cadence.api.v1.QueryRejected t) { - if (t == null || t == com.uber.cadence.api.v1.QueryRejected.getDefaultInstance()) { - return null; - } - QueryRejected res = new QueryRejected(); - res.setCloseStatus(workflowExecutionCloseStatus(t.getCloseStatus())); - return res; - } - - static List pollerInfoArray(List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.PollerInfo pollerInfo : t) { - v.add(pollerInfo(pollerInfo)); - } - return v; - } - - static List resetPointInfoArray(List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.ResetPointInfo resetPointInfo : t) { - v.add(resetPointInfo(resetPointInfo)); - } - return v; - } - - static List pendingActivityInfoArray( - List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.PendingActivityInfo pendingActivityInfo : t) { - v.add(pendingActivityInfo(pendingActivityInfo)); - } - return v; - } - - static List pendingChildExecutionInfoArray( - List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.PendingChildExecutionInfo pendingChildExecutionInfo : t) { - v.add(pendingChildExecutionInfo(pendingChildExecutionInfo)); - } - return v; - } - - static Map indexedValueTypeMap( - Map t) { - if (t == null) { - return null; - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, indexedValueType(t.get(key))); - } - return v; - } - - static List dataBlobArray(List t) { - if (t == null || t.size() == 0) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.DataBlob dataBlob : t) { - v.add(dataBlob(dataBlob)); - } - return v; - } - - static List workflowExecutionInfoArray( - List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.WorkflowExecutionInfo workflowExecutionInfo : t) { - v.add(workflowExecutionInfo(workflowExecutionInfo)); - } - return v; - } - - static List describeDomainResponseArray( - List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.Domain domain : t) { - v.add(describeDomainResponseDomain(domain)); - } - return v; - } - - static List taskListPartitionMetadataArray( - List t) { - if (t == null) { - return null; - } - List v = new ArrayList<>(); - for (com.uber.cadence.api.v1.TaskListPartitionMetadata taskListPartitionMetadata : t) { - v.add(taskListPartitionMetadata(taskListPartitionMetadata)); - } - return v; - } - - static Map workflowQueryMap( - Map t) { - if (t == null) { - return null; - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, workflowQuery(t.get(key))); - } - return v; - } - - static Map activityLocalDispatchInfoMap( - Map t) { - if (t == null) { - return null; - } - Map v = new HashMap<>(); - for (String key : t.keySet()) { - v.put(key, activityLocalDispatchInfo(t.get(key))); - } - return v; - } - - static AutoConfigHint autoConfigHint(com.uber.cadence.api.v1.AutoConfigHint t) { - if (t == null) { - return null; - } - AutoConfigHint autoConfigHint = new AutoConfigHint(); - autoConfigHint.setEnableAutoConfig(t.getEnableAutoConfig()); - autoConfigHint.setPollerWaitTimeInMs(t.getPollerWaitTimeInMs()); - return autoConfigHint; - } -} diff --git a/src/main/java/com/uber/cadence/internal/external/GenericWorkflowClientExternalImpl.java b/src/main/java/com/uber/cadence/internal/external/GenericWorkflowClientExternalImpl.java index ef96cacda..7f279c568 100644 --- a/src/main/java/com/uber/cadence/internal/external/GenericWorkflowClientExternalImpl.java +++ b/src/main/java/com/uber/cadence/internal/external/GenericWorkflowClientExternalImpl.java @@ -18,42 +18,22 @@ package com.uber.cadence.internal.external; import com.google.common.base.Strings; -import com.uber.cadence.Header; -import com.uber.cadence.Memo; -import com.uber.cadence.QueryWorkflowRequest; -import com.uber.cadence.QueryWorkflowResponse; -import com.uber.cadence.RequestCancelWorkflowExecutionRequest; -import com.uber.cadence.RetryPolicy; -import com.uber.cadence.SearchAttributes; -import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncRequest; -import com.uber.cadence.SignalWithStartWorkflowExecutionRequest; -import com.uber.cadence.SignalWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncResponse; -import com.uber.cadence.StartWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionResponse; -import com.uber.cadence.TaskList; -import com.uber.cadence.TerminateWorkflowExecutionRequest; -import com.uber.cadence.WorkflowExecution; -import com.uber.cadence.WorkflowExecutionAlreadyStartedError; -import com.uber.cadence.WorkflowQuery; +import com.uber.cadence.*; import com.uber.cadence.common.RetryOptions; import com.uber.cadence.internal.common.*; import com.uber.cadence.internal.metrics.MetricsTag; import com.uber.cadence.internal.metrics.MetricsType; import com.uber.cadence.internal.replay.QueryWorkflowParameters; import com.uber.cadence.internal.replay.SignalExternalWorkflowParameters; +import com.uber.cadence.serviceclient.AsyncMethodCallback; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.m3.tally.Scope; import com.uber.m3.util.ImmutableMap; -import java.nio.ByteBuffer; import java.time.Duration; import java.util.HashMap; import java.util.Map; import java.util.UUID; import java.util.concurrent.CompletableFuture; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; public final class GenericWorkflowClientExternalImpl implements GenericWorkflowClientExternal { @@ -126,7 +106,7 @@ private WorkflowExecution startWorkflowInternal(StartWorkflowExecutionParameters RpcRetryer.DEFAULT_RPC_RETRY_OPTIONS, () -> service.StartWorkflowExecution(request)); } catch (WorkflowExecutionAlreadyStartedError e) { throw e; - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } WorkflowExecution execution = new WorkflowExecution(); @@ -172,7 +152,7 @@ public void onError(Exception exception) { } }, timeoutInMillis); - } catch (TException e) { + } catch (CadenceError e) { result.completeExceptionally(e); } return result; @@ -205,7 +185,7 @@ private void enqueueWorkflowInternal(StartWorkflowExecutionParameters startParam RpcRetryer.DEFAULT_RPC_RETRY_OPTIONS, () -> service.StartWorkflowExecutionAsync(request)); } catch (WorkflowExecutionAlreadyStartedError e) { throw e; - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } } @@ -235,7 +215,7 @@ public void onError(Exception exception) { } }, timeoutInMillis); - } catch (TException e) { + } catch (CadenceError e) { result.completeExceptionally(e); } return result; @@ -290,9 +270,9 @@ private Memo toMemoThrift(Map memo) { return null; } - Map fields = new HashMap<>(); + Map fields = new HashMap<>(); for (Map.Entry item : memo.entrySet()) { - fields.put(item.getKey(), ByteBuffer.wrap(item.getValue())); + fields.put(item.getKey(), item.getValue()); } Memo memoThrift = new Memo(); memoThrift.setFields(fields); @@ -304,9 +284,9 @@ private SearchAttributes toSearchAttributesThrift(Map searchAttr return null; } - Map fields = new HashMap<>(); + Map fields = new HashMap<>(); for (Map.Entry item : searchAttributes.entrySet()) { - fields.put(item.getKey(), ByteBuffer.wrap(item.getValue())); + fields.put(item.getKey(), item.getValue()); } SearchAttributes searchAttrThrift = new SearchAttributes(); searchAttrThrift.setIndexedFields(fields); @@ -317,9 +297,9 @@ private Header toHeaderThrift(Map headers) { if (headers == null || headers.isEmpty()) { return null; } - Map fields = new HashMap<>(); + Map fields = new HashMap<>(); for (Map.Entry item : headers.entrySet()) { - fields.put(item.getKey(), ByteBuffer.wrap(item.getValue())); + fields.put(item.getKey(), item.getValue()); } Header headerThrift = new Header(); headerThrift.setFields(fields); @@ -342,7 +322,7 @@ public void signalWorkflowExecution(SignalExternalWorkflowParameters signalParam try { RpcRetryer.retry(() -> service.SignalWorkflowExecution(request)); - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } } @@ -375,7 +355,7 @@ public void onError(Exception exception) { result.completeExceptionally(exception); } }); - } catch (TException e) { + } catch (CadenceError e) { result.completeExceptionally(e); } return result; @@ -445,7 +425,7 @@ private WorkflowExecution enqueueSignalWithStartWorkflowInternal( RpcRetryer.DEFAULT_RPC_RETRY_OPTIONS, () -> service.SignalWithStartWorkflowExecutionAsync(request)); return new WorkflowExecution().setWorkflowId(request.getRequest().getWorkflowId()); - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } } @@ -461,7 +441,7 @@ private WorkflowExecution signalWithStartWorkflowInternal( return new WorkflowExecution() .setRunId(result.getRunId()) .setWorkflowId(request.getWorkflowId()); - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } } @@ -518,7 +498,7 @@ public void requestCancelWorkflowExecution(WorkflowExecution execution) { request.setWorkflowExecution(execution); try { RpcRetryer.retry(() -> service.RequestCancelWorkflowExecution(request)); - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } } @@ -541,7 +521,7 @@ public QueryWorkflowResponse queryWorkflow(QueryWorkflowParameters queryParamete RpcRetryer.retryWithResult( RpcRetryer.DEFAULT_RPC_RETRY_OPTIONS, () -> service.QueryWorkflow(request)); return response; - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } } @@ -561,7 +541,7 @@ public void terminateWorkflowExecution(TerminateWorkflowExecutionParameters term // request.setChildPolicy(terminateParameters.getChildPolicy()); try { RpcRetryer.retry(() -> service.TerminateWorkflowExecution(request)); - } catch (TException e) { + } catch (CadenceError e) { throw CheckedExceptionWrapper.wrap(e); } } diff --git a/src/main/java/com/uber/cadence/internal/external/ManualActivityCompletionClientImpl.java b/src/main/java/com/uber/cadence/internal/external/ManualActivityCompletionClientImpl.java index ac2acd2bc..33109e700 100644 --- a/src/main/java/com/uber/cadence/internal/external/ManualActivityCompletionClientImpl.java +++ b/src/main/java/com/uber/cadence/internal/external/ManualActivityCompletionClientImpl.java @@ -17,17 +17,7 @@ package com.uber.cadence.internal.external; -import com.uber.cadence.EntityNotExistsError; -import com.uber.cadence.RecordActivityTaskHeartbeatRequest; -import com.uber.cadence.RecordActivityTaskHeartbeatResponse; -import com.uber.cadence.RespondActivityTaskCanceledByIDRequest; -import com.uber.cadence.RespondActivityTaskCanceledRequest; -import com.uber.cadence.RespondActivityTaskCompletedByIDRequest; -import com.uber.cadence.RespondActivityTaskCompletedRequest; -import com.uber.cadence.RespondActivityTaskFailedByIDRequest; -import com.uber.cadence.RespondActivityTaskFailedRequest; -import com.uber.cadence.WorkflowExecution; -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; +import com.uber.cadence.*; import com.uber.cadence.client.ActivityCancelledException; import com.uber.cadence.client.ActivityCompletionFailureException; import com.uber.cadence.client.ActivityNotExistsException; @@ -37,7 +27,6 @@ import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.m3.tally.Scope; import java.util.concurrent.CancellationException; -import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -102,7 +91,7 @@ public void complete(Object result) { throw new ActivityNotExistsException(e); } catch (WorkflowExecutionAlreadyCompletedError e) { throw new ActivityNotExistsException(e); - } catch (TException e) { + } catch (CadenceError e) { throw new ActivityCompletionFailureException(e); } } else { @@ -124,7 +113,7 @@ public void complete(Object result) { throw new ActivityNotExistsException(e); } catch (WorkflowExecutionAlreadyCompletedError e) { throw new ActivityNotExistsException(e); - } catch (TException e) { + } catch (CadenceError e) { throw new ActivityCompletionFailureException(activityId, e); } } @@ -148,7 +137,7 @@ public void fail(Throwable failure) { throw new ActivityNotExistsException(e); } catch (WorkflowExecutionAlreadyCompletedError e) { throw new ActivityNotExistsException(e); - } catch (TException e) { + } catch (CadenceError e) { throw new ActivityCompletionFailureException(e); } } else { @@ -166,7 +155,7 @@ public void fail(Throwable failure) { throw new ActivityNotExistsException(e); } catch (WorkflowExecutionAlreadyCompletedError e) { throw new ActivityNotExistsException(e); - } catch (TException e) { + } catch (CadenceError e) { throw new ActivityCompletionFailureException(activityId, e); } } @@ -188,7 +177,7 @@ public void recordHeartbeat(Object details) throws CancellationException { throw new ActivityNotExistsException(e); } catch (WorkflowExecutionAlreadyCompletedError e) { throw new ActivityNotExistsException(e); - } catch (TException e) { + } catch (CadenceError e) { throw new ActivityCompletionFailureException(e); } } else { @@ -206,7 +195,7 @@ public void reportCancellation(Object details) { try { service.RespondActivityTaskCanceled(request); metricsScope.counter(MetricsType.ACTIVITY_TASK_CANCELED_COUNTER).inc(1); - } catch (TException e) { + } catch (CadenceError e) { // There is nothing that can be done at this point. // so let's just ignore. log.info("reportCancellation", e); @@ -221,7 +210,7 @@ public void reportCancellation(Object details) { try { service.RespondActivityTaskCanceledByID(request); metricsScope.counter(MetricsType.ACTIVITY_TASK_CANCELED_BY_ID_COUNTER).inc(1); - } catch (TException e) { + } catch (CadenceError e) { // There is nothing that can be done at this point. // so let's just ignore. log.info("reportCancellation", e); diff --git a/src/main/java/com/uber/cadence/internal/replay/ActivityDecisionContext.java b/src/main/java/com/uber/cadence/internal/replay/ActivityDecisionContext.java index 3f6040ac8..817f6abcb 100644 --- a/src/main/java/com/uber/cadence/internal/replay/ActivityDecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/replay/ActivityDecisionContext.java @@ -28,7 +28,6 @@ import com.uber.cadence.TaskList; import com.uber.cadence.TimeoutType; import com.uber.cadence.internal.common.RetryParameters; -import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.concurrent.CancellationException; @@ -205,9 +204,9 @@ private Header toHeaderThrift(Map headers) { if (headers == null || headers.isEmpty()) { return null; } - Map fields = new HashMap<>(); + Map fields = new HashMap<>(); for (Map.Entry item : headers.entrySet()) { - fields.put(item.getKey(), ByteBuffer.wrap(item.getValue())); + fields.put(item.getKey(), item.getValue()); } Header headerThrift = new Header(); headerThrift.setFields(fields); diff --git a/src/main/java/com/uber/cadence/internal/replay/DeciderCache.java b/src/main/java/com/uber/cadence/internal/replay/DeciderCache.java index 4cbf0ee03..2a5c4679d 100644 --- a/src/main/java/com/uber/cadence/internal/replay/DeciderCache.java +++ b/src/main/java/com/uber/cadence/internal/replay/DeciderCache.java @@ -140,6 +140,7 @@ public long size() { private boolean isFullHistory(PollForDecisionTaskResponse decisionTask) { return decisionTask.getHistory() != null + && decisionTask.getHistory().getEvents() != null && decisionTask.getHistory().getEvents().size() > 0 && decisionTask.getHistory().getEvents().get(0).getEventId() == 1; } diff --git a/src/main/java/com/uber/cadence/internal/replay/HistoryHelper.java b/src/main/java/com/uber/cadence/internal/replay/HistoryHelper.java index 6c43f5f87..e9c657735 100644 --- a/src/main/java/com/uber/cadence/internal/replay/HistoryHelper.java +++ b/src/main/java/com/uber/cadence/internal/replay/HistoryHelper.java @@ -24,6 +24,7 @@ import com.uber.cadence.internal.common.WorkflowExecutionUtils; import com.uber.cadence.internal.worker.DecisionTaskWithHistoryIterator; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; @@ -255,7 +256,9 @@ public PollForDecisionTaskResponse getDecisionTask() { @Override public String toString() { return WorkflowExecutionUtils.prettyPrintHistory( - decisionTaskWithHistoryIterator.getDecisionTask().getHistory().getEvents().iterator(), + decisionTaskWithHistoryIterator.getDecisionTask().getHistory().getEvents() != null + ? decisionTaskWithHistoryIterator.getDecisionTask().getHistory().getEvents().iterator() + : Collections.emptyIterator(), true); } diff --git a/src/main/java/com/uber/cadence/internal/replay/MarkerHandler.java b/src/main/java/com/uber/cadence/internal/replay/MarkerHandler.java index 31821014f..6e522238b 100644 --- a/src/main/java/com/uber/cadence/internal/replay/MarkerHandler.java +++ b/src/main/java/com/uber/cadence/internal/replay/MarkerHandler.java @@ -25,7 +25,6 @@ import com.uber.cadence.internal.sync.WorkflowInternal; import com.uber.cadence.workflow.Functions.Func1; import com.uber.m3.util.ImmutableMap; -import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -73,8 +72,7 @@ static MarkerInterface fromEventAttributes( if (attributes.getHeader() != null && attributes.getHeader().getFields() != null && attributes.getHeader().getFields().containsKey(MUTABLE_MARKER_HEADER_KEY)) { - ByteBuffer byteBuffer = attributes.getHeader().getFields().get(MUTABLE_MARKER_HEADER_KEY); - byte[] bytes = org.apache.thrift.TBaseHelper.byteBufferToByteArray(byteBuffer); + byte[] bytes = attributes.getHeader().getFields().get(MUTABLE_MARKER_HEADER_KEY); MarkerData.MarkerHeader header = converter.fromData(bytes, MarkerData.MarkerHeader.class, MarkerData.MarkerHeader.class); return new MarkerData(header, attributes.getDetails()); @@ -135,7 +133,7 @@ public int getAccessCount() { Header getHeader(DataConverter converter) { byte[] headerData = converter.toData(header); Header header = new Header(); - header.setFields(ImmutableMap.of(MUTABLE_MARKER_HEADER_KEY, ByteBuffer.wrap(headerData))); + header.setFields(ImmutableMap.of(MUTABLE_MARKER_HEADER_KEY, headerData)); return header; } } diff --git a/src/main/java/com/uber/cadence/internal/replay/ReplayDecider.java b/src/main/java/com/uber/cadence/internal/replay/ReplayDecider.java index 574d012c1..debb1c780 100644 --- a/src/main/java/com/uber/cadence/internal/replay/ReplayDecider.java +++ b/src/main/java/com/uber/cadence/internal/replay/ReplayDecider.java @@ -20,19 +20,7 @@ import static com.uber.cadence.worker.NonDeterministicWorkflowPolicy.FailWorkflow; import com.google.common.annotations.VisibleForTesting; -import com.uber.cadence.EventType; -import com.uber.cadence.GetWorkflowExecutionHistoryRequest; -import com.uber.cadence.GetWorkflowExecutionHistoryResponse; -import com.uber.cadence.History; -import com.uber.cadence.HistoryEvent; -import com.uber.cadence.PollForDecisionTaskResponse; -import com.uber.cadence.QueryResultType; -import com.uber.cadence.TimerFiredEventAttributes; -import com.uber.cadence.WorkflowExecutionSignaledEventAttributes; -import com.uber.cadence.WorkflowExecutionStartedEventAttributes; -import com.uber.cadence.WorkflowQuery; -import com.uber.cadence.WorkflowQueryResult; -import com.uber.cadence.WorkflowType; +import com.uber.cadence.*; import com.uber.cadence.common.RetryOptions; import com.uber.cadence.internal.common.OptionsUtils; import com.uber.cadence.internal.common.RpcRetryer; @@ -64,7 +52,6 @@ import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.stream.Collectors; -import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -436,7 +423,8 @@ private boolean decideImpl(PollForDecisionTaskResponse decisionTask, Functions.P + 2) // getNextDecisionEventId() skips over completed. && (decisionsHelper.getNextDecisionEventId() != 0 && historyHelper.getPreviousStartedEventId() != 0) - && (decisionTask.getHistory().getEventsSize() > 0)) { + && (decisionTask.getHistory().getEvents() != null + && decisionTask.getHistory().getEvents().size() > 0)) { throw new IllegalStateException( String.format( "ReplayDecider expects next event id at %d. History's previous started event id is %d", @@ -643,7 +631,7 @@ private Duration decisionTaskRemainingTime() { Objects.requireNonNull(decisionTaskStartToCloseTimeout); History history = task.getHistory(); - current = history.getEventsIterator(); + current = history.getEvents().iterator(); nextPageToken = task.getNextPageToken(); } @@ -698,20 +686,20 @@ public HistoryEvent next() { GetWorkflowExecutionHistoryResponse r = RpcRetryer.retryWithResult( retryOptions, () -> service.GetWorkflowExecutionHistory(request)); - current = r.getHistory().getEventsIterator(); + current = r.getHistory().getEvents().iterator(); nextPageToken = r.getNextPageToken(); metricsScope.counter(MetricsType.WORKFLOW_GET_HISTORY_SUCCEED_COUNTER).inc(1); sw.stop(); - } catch (TException e) { + } catch (CadenceError e) { metricsScope.counter(MetricsType.WORKFLOW_GET_HISTORY_FAILED_COUNTER).inc(1); throw new Error(e); } if (!current.hasNext()) { log.error( "GetWorkflowExecutionHistory returns an empty history, maybe a bug in server, workflowID:{}, runID:{}, domain:{} token:{}", - request.execution.workflowId, - request.execution.runId, - request.domain, + request.getExecution().getWorkflowId(), + request.getExecution().getRunId(), + request.getDomain(), Arrays.toString(request.getNextPageToken())); throw new Error( "GetWorkflowExecutionHistory return empty history, maybe a bug in server"); diff --git a/src/main/java/com/uber/cadence/internal/replay/ReplayDecisionTaskHandler.java b/src/main/java/com/uber/cadence/internal/replay/ReplayDecisionTaskHandler.java index 2ffaaab41..784c8360a 100644 --- a/src/main/java/com/uber/cadence/internal/replay/ReplayDecisionTaskHandler.java +++ b/src/main/java/com/uber/cadence/internal/replay/ReplayDecisionTaskHandler.java @@ -119,7 +119,7 @@ public DecisionTaskHandler.Result handleDecisionTask(PollForDecisionTaskResponse private Result handleDecisionTaskImpl(PollForDecisionTaskResponse decisionTask) throws Throwable { - if (decisionTask.isSetQuery()) { + if (decisionTask.getQuery() != null) { return processQuery(decisionTask); } else { return processDecision(decisionTask); diff --git a/src/main/java/com/uber/cadence/internal/replay/WorkflowContext.java b/src/main/java/com/uber/cadence/internal/replay/WorkflowContext.java index ca7633986..7e9b0ed01 100644 --- a/src/main/java/com/uber/cadence/internal/replay/WorkflowContext.java +++ b/src/main/java/com/uber/cadence/internal/replay/WorkflowContext.java @@ -19,7 +19,6 @@ import com.uber.cadence.*; import com.uber.cadence.context.ContextPropagator; -import java.nio.ByteBuffer; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -156,7 +155,7 @@ Map getPropagatedContexts() { return new HashMap<>(); } - Map fields = headers.getFields(); + Map fields = headers.getFields(); if (fields == null) { return new HashMap<>(); } @@ -164,7 +163,7 @@ Map getPropagatedContexts() { Map headerData = new HashMap<>(); fields.forEach( (k, v) -> { - headerData.put(k, org.apache.thrift.TBaseHelper.byteBufferToByteArray(v)); + headerData.put(k, v); }); Map contextData = new HashMap<>(); @@ -182,7 +181,7 @@ void mergeSearchAttributes(SearchAttributes searchAttributes) { if (this.searchAttributes == null) { this.searchAttributes = newSearchAttributes(); } - Map current = this.searchAttributes.getIndexedFields(); + Map current = this.searchAttributes.getIndexedFields(); searchAttributes .getIndexedFields() .forEach( @@ -193,7 +192,7 @@ void mergeSearchAttributes(SearchAttributes searchAttributes) { private SearchAttributes newSearchAttributes() { SearchAttributes result = new SearchAttributes(); - result.setIndexedFields(new HashMap()); + result.setIndexedFields(new HashMap()); return result; } } diff --git a/src/main/java/com/uber/cadence/internal/replay/WorkflowDecisionContext.java b/src/main/java/com/uber/cadence/internal/replay/WorkflowDecisionContext.java index 99684822f..8cbd061c5 100644 --- a/src/main/java/com/uber/cadence/internal/replay/WorkflowDecisionContext.java +++ b/src/main/java/com/uber/cadence/internal/replay/WorkflowDecisionContext.java @@ -43,7 +43,6 @@ import com.uber.cadence.workflow.ChildWorkflowTimedOutException; import com.uber.cadence.workflow.SignalExternalWorkflowException; import com.uber.cadence.workflow.StartChildWorkflowFailedException; -import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -177,9 +176,9 @@ private Header toHeaderThrift(Map headers) { if (headers == null || headers.isEmpty()) { return null; } - Map fields = new HashMap<>(); + Map fields = new HashMap<>(); for (Map.Entry item : headers.entrySet()) { - fields.put(item.getKey(), ByteBuffer.wrap(item.getValue())); + fields.put(item.getKey(), item.getValue()); } Header headerThrift = new Header(); headerThrift.setFields(fields); @@ -230,7 +229,7 @@ void requestCancelWorkflowExecution(WorkflowExecution execution) { new RequestCancelExternalWorkflowExecutionDecisionAttributes(); String workflowId = execution.getWorkflowId(); attributes.setWorkflowId(workflowId); - if (execution.isSetRunId()) { + if (execution.getRunId() != null) { attributes.setRunId(execution.getRunId()); } decisions.requestCancelExternalWorkflowExecution(attributes); diff --git a/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivity.java b/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivity.java index b669eba66..c2642bae9 100644 --- a/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivity.java +++ b/src/main/java/com/uber/cadence/internal/shadowing/ReplayWorkflowActivity.java @@ -16,12 +16,12 @@ package com.uber.cadence.internal.shadowing; import com.uber.cadence.activity.ActivityMethod; -import com.uber.cadence.shadower.shadowerConstants; +import com.uber.cadence.shadower.Constants; import com.uber.cadence.worker.WorkflowImplementationOptions; import com.uber.cadence.workflow.Functions; public interface ReplayWorkflowActivity { - @ActivityMethod(name = shadowerConstants.ReplayWorkflowActivityName) + @ActivityMethod(name = Constants.ReplayWorkflowActivityName) ReplayWorkflowActivityResult replay(ReplayWorkflowActivityParams params) throws Exception; ReplayWorkflowActivityResult replayOneExecution(String domain, WorkflowExecution execution); diff --git a/src/main/java/com/uber/cadence/internal/shadowing/ScanWorkflowActivity.java b/src/main/java/com/uber/cadence/internal/shadowing/ScanWorkflowActivity.java index 6ded607c0..245b562c6 100644 --- a/src/main/java/com/uber/cadence/internal/shadowing/ScanWorkflowActivity.java +++ b/src/main/java/com/uber/cadence/internal/shadowing/ScanWorkflowActivity.java @@ -15,7 +15,7 @@ */ package com.uber.cadence.internal.shadowing; -import static com.uber.cadence.shadower.shadowerConstants.ScanWorkflowActivityName; +import static com.uber.cadence.shadower.Constants.ScanWorkflowActivityName; import com.uber.cadence.activity.ActivityMethod; diff --git a/src/main/java/com/uber/cadence/internal/sync/ActivityExecutionContextImpl.java b/src/main/java/com/uber/cadence/internal/sync/ActivityExecutionContextImpl.java index f71f05f0c..d223d6a29 100644 --- a/src/main/java/com/uber/cadence/internal/sync/ActivityExecutionContextImpl.java +++ b/src/main/java/com/uber/cadence/internal/sync/ActivityExecutionContextImpl.java @@ -17,12 +17,7 @@ package com.uber.cadence.internal.sync; -import com.uber.cadence.BadRequestError; -import com.uber.cadence.EntityNotExistsError; -import com.uber.cadence.RecordActivityTaskHeartbeatRequest; -import com.uber.cadence.RecordActivityTaskHeartbeatResponse; -import com.uber.cadence.WorkflowExecution; -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; +import com.uber.cadence.*; import com.uber.cadence.activity.ActivityTask; import com.uber.cadence.client.ActivityCancelledException; import com.uber.cadence.client.ActivityCompletionException; @@ -38,7 +33,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -132,7 +126,7 @@ private void doHeartBeat(Object details) { sendHeartbeatRequest(details); hasOutstandingHeartbeat = false; nextHeartbeatDelay = heartbeatIntervalMillis; - } catch (TException e) { + } catch (CadenceError e) { // Not rethrowing to not fail activity implementation on intermittent connection or Cadence // errors. log.warn("Heartbeat failed.", e); @@ -162,7 +156,7 @@ private void scheduleNextHeartbeat(long delay) { TimeUnit.MILLISECONDS); } - private void sendHeartbeatRequest(Object details) throws TException { + private void sendHeartbeatRequest(Object details) throws CadenceError { RecordActivityTaskHeartbeatRequest r = new RecordActivityTaskHeartbeatRequest(); r.setTaskToken(task.getTaskToken()); byte[] serialized = dataConverter.toData(details); diff --git a/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java b/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java index 21683403d..4e20e04a4 100644 --- a/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java +++ b/src/main/java/com/uber/cadence/internal/sync/TestActivityEnvironmentInternal.java @@ -26,6 +26,7 @@ import com.uber.cadence.internal.metrics.NoopScope; import com.uber.cadence.internal.worker.ActivityTaskHandler; import com.uber.cadence.internal.worker.ActivityTaskHandler.Result; +import com.uber.cadence.serviceclient.AsyncMethodCallback; import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.cadence.testing.TestActivityEnvironment; @@ -51,8 +52,6 @@ import java.util.function.BiPredicate; import java.util.function.Consumer; import java.util.function.Supplier; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; public final class TestActivityEnvironmentInternal implements TestActivityEnvironment { @@ -361,7 +360,7 @@ private WorkflowServiceWrapper(IWorkflowService impl) { public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest heartbeatRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { if (activityHeartbetListener != null) { Object details = testEnvironmentOptions @@ -381,14 +380,14 @@ public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, WorkflowExecutionAlreadyCompletedError, DomainNotActiveError, LimitExceededError, - ServiceBusyError, TException { + ServiceBusyError, CadenceError { return impl.RecordActivityTaskHeartbeatByID(heartbeatRequest); } @Override public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondActivityTaskCompleted(completeRequest); } @@ -396,28 +395,28 @@ public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest com public void RespondActivityTaskCompletedByID( RespondActivityTaskCompletedByIDRequest completeRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondActivityTaskCompletedByID(completeRequest); } @Override public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondActivityTaskFailed(failRequest); } @Override public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondActivityTaskFailedByID(failRequest); } @Override public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondActivityTaskCanceled(canceledRequest); } @@ -425,7 +424,7 @@ public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest cance public void RespondActivityTaskCanceledByID( RespondActivityTaskCanceledByIDRequest canceledRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondActivityTaskCanceledByID(canceledRequest); } @@ -433,14 +432,14 @@ public void RespondActivityTaskCanceledByID( public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, CancellationAlreadyRequestedError, ServiceBusyError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RequestCancelWorkflowExecution(cancelRequest); } @Override public void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, ServiceBusyError, TException { + WorkflowExecutionAlreadyCompletedError, ServiceBusyError, CadenceError { impl.SignalWorkflowExecution(signalRequest); } @@ -449,7 +448,7 @@ public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( SignalWithStartWorkflowExecutionRequest signalWithStartRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, LimitExceededError, WorkflowExecutionAlreadyStartedError, - TException { + CadenceError { return impl.SignalWithStartWorkflowExecution(signalWithStartRequest); } @@ -458,7 +457,7 @@ public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExec SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.SignalWithStartWorkflowExecutionAsync(signalWithStartRequest); } @@ -466,14 +465,14 @@ public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExec public ResetWorkflowExecutionResponse ResetWorkflowExecution( ResetWorkflowExecutionRequest resetRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - DomainNotActiveError, LimitExceededError, ClientVersionNotSupportedError, TException { + DomainNotActiveError, LimitExceededError, ClientVersionNotSupportedError, CadenceError { return impl.ResetWorkflowExecution(resetRequest); } @Override public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, ServiceBusyError, TException { + WorkflowExecutionAlreadyCompletedError, ServiceBusyError, CadenceError { impl.TerminateWorkflowExecution(terminateRequest); } @@ -481,7 +480,7 @@ public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest termina public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.ListOpenWorkflowExecutions(listRequest); } @@ -489,7 +488,7 @@ public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.ListClosedWorkflowExecutions(listRequest); } @@ -497,7 +496,7 @@ public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( public ListWorkflowExecutionsResponse ListWorkflowExecutions( ListWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.ListWorkflowExecutions(listRequest); } @@ -505,7 +504,7 @@ public ListWorkflowExecutionsResponse ListWorkflowExecutions( public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( ListArchivedWorkflowExecutionsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.ListArchivedWorkflowExecutions(listRequest); } @@ -513,7 +512,7 @@ public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( public ListWorkflowExecutionsResponse ScanWorkflowExecutions( ListWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.ScanWorkflowExecutions(listRequest); } @@ -521,52 +520,54 @@ public ListWorkflowExecutionsResponse ScanWorkflowExecutions( public CountWorkflowExecutionsResponse CountWorkflowExecutions( CountWorkflowExecutionsRequest countRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.CountWorkflowExecutions(countRequest); } @Override public GetSearchAttributesResponse GetSearchAttributes() - throws InternalServiceError, ServiceBusyError, ClientVersionNotSupportedError, TException { + throws InternalServiceError, ServiceBusyError, ClientVersionNotSupportedError, + CadenceError { return impl.GetSearchAttributes(); } @Override public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondQueryTaskCompleted(completeRequest); } @Override public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, LimitExceededError, - ServiceBusyError, DomainNotActiveError, TException { + ServiceBusyError, DomainNotActiveError, CadenceError { return impl.ResetStickyTaskList(resetRequest); } @Override public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, QueryFailedError, - TException { + CadenceError { return impl.QueryWorkflow(queryRequest); } @Override public DescribeWorkflowExecutionResponse DescribeWorkflowExecution( DescribeWorkflowExecutionRequest describeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { return impl.DescribeWorkflowExecution(describeRequest); } @Override public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { return impl.DescribeTaskList(request); } @Override - public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, TException { + public ClusterInfo GetClusterInfo() + throws InternalServiceError, ServiceBusyError, CadenceError { return impl.GetClusterInfo(); } @@ -574,81 +575,82 @@ public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyErro public ListTaskListPartitionsResponse ListTaskListPartitions( ListTaskListPartitionsRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - TException { + CadenceError { return impl.ListTaskListPartitions(request); } @Override public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request) throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - TException { + CadenceError { impl.RefreshWorkflowTasks(request); } @Override public void RegisterDomain( RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RegisterDomain(registerRequest, resultHandler); } @Override public void DescribeDomain( DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DescribeDomain(describeRequest, resultHandler); } @Override public void DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DiagnoseWorkflowExecution(diagnoseRequest, resultHandler); } @Override public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListDomains(listRequest, resultHandler); } @Override public void UpdateDomain(UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.UpdateDomain(updateRequest, resultHandler); } @Override public void DeprecateDomain( DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DeprecateDomain(deprecateRequest, resultHandler); } @Override public void RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RestartWorkflowExecution(restartRequest, resultHandler); } @Override public void GetTaskListsByDomain( - GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) throws TException { + GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) + throws CadenceError { impl.GetTaskListsByDomain(request, resultHandler); } @Override public void StartWorkflowExecution( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.StartWorkflowExecution(startRequest, resultHandler); } @Override public void StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.StartWorkflowExecutionAsync(startRequest, resultHandler); } @@ -657,7 +659,7 @@ public void StartWorkflowExecutionWithTimeout( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.StartWorkflowExecutionWithTimeout(startRequest, resultHandler, timeoutInMillis); } @@ -666,7 +668,7 @@ public void StartWorkflowExecutionAsyncWithTimeout( StartWorkflowExecutionAsyncRequest startAsyncRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.StartWorkflowExecutionAsyncWithTimeout( startAsyncRequest, resultHandler, timeoutInMillis); } @@ -674,7 +676,7 @@ public void StartWorkflowExecutionAsyncWithTimeout( @Override public void GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.GetWorkflowExecutionHistory(getRequest, resultHandler); } @@ -683,105 +685,105 @@ public void GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.GetWorkflowExecutionHistoryWithTimeout(getRequest, resultHandler, timeoutInMillis); } @Override public void PollForDecisionTask( PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.PollForDecisionTask(pollRequest, resultHandler); } @Override public void RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondDecisionTaskCompleted(completeRequest, resultHandler); } @Override public void RespondDecisionTaskFailed( RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondDecisionTaskFailed(failedRequest, resultHandler); } @Override public void PollForActivityTask( PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.PollForActivityTask(pollRequest, resultHandler); } @Override public void RecordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RecordActivityTaskHeartbeat(heartbeatRequest, resultHandler); } @Override public void RecordActivityTaskHeartbeatByID( RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RecordActivityTaskHeartbeatByID(heartbeatRequest, resultHandler); } @Override public void RespondActivityTaskCompleted( RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCompleted(completeRequest, resultHandler); } @Override public void RespondActivityTaskCompletedByID( RespondActivityTaskCompletedByIDRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCompletedByID(completeRequest, resultHandler); } @Override public void RespondActivityTaskFailed( RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskFailed(failRequest, resultHandler); } @Override public void RespondActivityTaskFailedByID( RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskFailedByID(failRequest, resultHandler); } @Override public void RespondActivityTaskCanceled( RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCanceled(canceledRequest, resultHandler); } @Override public void RespondActivityTaskCanceledByID( RespondActivityTaskCanceledByIDRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCanceledByID(canceledRequest, resultHandler); } @Override public void RequestCancelWorkflowExecution( RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RequestCancelWorkflowExecution(cancelRequest, resultHandler); } @Override public void SignalWorkflowExecution( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.SignalWorkflowExecution(signalRequest, resultHandler); } @@ -790,7 +792,7 @@ public void SignalWorkflowExecutionWithTimeout( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.SignalWorkflowExecutionWithTimeout(signalRequest, resultHandler, timeoutInMillis); } @@ -798,7 +800,7 @@ public void SignalWorkflowExecutionWithTimeout( public void SignalWithStartWorkflowExecution( SignalWithStartWorkflowExecutionRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.SignalWithStartWorkflowExecution(signalWithStartRequest, resultHandler); } @@ -806,131 +808,132 @@ public void SignalWithStartWorkflowExecution( public void SignalWithStartWorkflowExecutionAsync( SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.SignalWithStartWorkflowExecutionAsync(signalWithStartRequest, resultHandler); } @Override public void ResetWorkflowExecution( ResetWorkflowExecutionRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ResetWorkflowExecution(resetRequest, resultHandler); } @Override public void TerminateWorkflowExecution( TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.TerminateWorkflowExecution(terminateRequest, resultHandler); } @Override public void ListOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListOpenWorkflowExecutions(listRequest, resultHandler); } @Override public void ListClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListClosedWorkflowExecutions(listRequest, resultHandler); } @Override public void ListWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListWorkflowExecutions(listRequest, resultHandler); } @Override public void ListArchivedWorkflowExecutions( ListArchivedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListArchivedWorkflowExecutions(listRequest, resultHandler); } @Override public void ScanWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ScanWorkflowExecutions(listRequest, resultHandler); } @Override public void CountWorkflowExecutions( CountWorkflowExecutionsRequest countRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.CountWorkflowExecutions(countRequest, resultHandler); } @Override - public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws TException { + public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws CadenceError { impl.GetSearchAttributes(resultHandler); } @Override public void RespondQueryTaskCompleted( RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondQueryTaskCompleted(completeRequest, resultHandler); } @Override public void ResetStickyTaskList( ResetStickyTaskListRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ResetStickyTaskList(resetRequest, resultHandler); } @Override public void QueryWorkflow(QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.QueryWorkflow(queryRequest, resultHandler); } @Override public void DescribeWorkflowExecution( DescribeWorkflowExecutionRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DescribeWorkflowExecution(describeRequest, resultHandler); } @Override public void DescribeTaskList(DescribeTaskListRequest request, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DescribeTaskList(request, resultHandler); } @Override - public void GetClusterInfo(AsyncMethodCallback resultHandler) throws TException { + public void GetClusterInfo(AsyncMethodCallback resultHandler) throws CadenceError { impl.GetClusterInfo(resultHandler); } @Override public void ListTaskListPartitions( ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListTaskListPartitions(request, resultHandler); } @Override public void RefreshWorkflowTasks( - RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws TException { + RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) + throws CadenceError { impl.RefreshWorkflowTasks(request, resultHandler); } @Override public void RegisterDomain(RegisterDomainRequest registerRequest) - throws BadRequestError, InternalServiceError, DomainAlreadyExistsError, TException { + throws BadRequestError, InternalServiceError, DomainAlreadyExistsError, CadenceError { impl.RegisterDomain(registerRequest); } @Override public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { return impl.DescribeDomain(describeRequest); } @@ -938,27 +941,27 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest) throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.DiagnoseWorkflowExecution(diagnoseRequest); } @Override public ListDomainsResponse ListDomains(ListDomainsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.ListDomains(listRequest); } @Override public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { return impl.UpdateDomain(updateRequest); } @Override public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { impl.DeprecateDomain(deprecateRequest); } @@ -966,14 +969,14 @@ public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) public RestartWorkflowExecutionResponse RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest) throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, - EntityNotExistsError, ClientVersionNotSupportedError, TException { + EntityNotExistsError, ClientVersionNotSupportedError, CadenceError { return impl.RestartWorkflowExecution(restartRequest); } @Override public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.GetTaskListsByDomain(request); } @@ -981,7 +984,7 @@ public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainReq public StartWorkflowExecutionResponse StartWorkflowExecution( StartWorkflowExecutionRequest startRequest) throws BadRequestError, InternalServiceError, WorkflowExecutionAlreadyStartedError, - ServiceBusyError, TException { + ServiceBusyError, CadenceError { return impl.StartWorkflowExecution(startRequest); } @@ -990,7 +993,7 @@ public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.StartWorkflowExecutionAsync(startRequest); } @@ -998,7 +1001,7 @@ public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.GetWorkflowExecutionHistory(getRequest); } @@ -1006,13 +1009,13 @@ public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.GetWorkflowExecutionHistoryWithTimeout(getRequest, timeoutInMillis); } @Override public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest) - throws BadRequestError, InternalServiceError, ServiceBusyError, TException { + throws BadRequestError, InternalServiceError, ServiceBusyError, CadenceError { return impl.PollForDecisionTask(pollRequest); } @@ -1020,20 +1023,20 @@ public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskReques public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest completeRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { return impl.RespondDecisionTaskCompleted(completeRequest); } @Override public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondDecisionTaskFailed(failedRequest); } @Override public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest) - throws BadRequestError, InternalServiceError, ServiceBusyError, TException { + throws BadRequestError, InternalServiceError, ServiceBusyError, CadenceError { return impl.PollForActivityTask(pollRequest); } diff --git a/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java b/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java index aa810762e..d546f3ff6 100644 --- a/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java +++ b/src/main/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternal.java @@ -18,6 +18,7 @@ package com.uber.cadence.internal.sync; import com.uber.cadence.BadRequestError; +import com.uber.cadence.CadenceError; import com.uber.cadence.ClientVersionNotSupportedError; import com.uber.cadence.ClusterInfo; import com.uber.cadence.CountWorkflowExecutionsRequest; @@ -106,6 +107,7 @@ import com.uber.cadence.client.WorkflowOptions; import com.uber.cadence.client.WorkflowStub; import com.uber.cadence.internal.testservice.TestWorkflowService; +import com.uber.cadence.serviceclient.AsyncMethodCallback; import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.cadence.testing.TestEnvironmentOptions; @@ -121,8 +123,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.function.Function; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; public final class TestWorkflowEnvironmentInternal implements TestWorkflowEnvironment { @@ -288,67 +288,67 @@ public ClientOptions getOptions() { @Override public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( - RecordActivityTaskHeartbeatRequest heartbeatRequest) throws TException { + RecordActivityTaskHeartbeatRequest heartbeatRequest) throws CadenceError { return impl.RecordActivityTaskHeartbeat(heartbeatRequest); } @Override public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( - RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) throws TException { + RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) throws CadenceError { return impl.RecordActivityTaskHeartbeatByID(heartbeatRequest); } @Override public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) - throws TException { + throws CadenceError { impl.RespondActivityTaskCompleted(completeRequest); } @Override public void RespondActivityTaskCompletedByID( - RespondActivityTaskCompletedByIDRequest completeRequest) throws TException { + RespondActivityTaskCompletedByIDRequest completeRequest) throws CadenceError { impl.RespondActivityTaskCompletedByID(completeRequest); } @Override public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) - throws TException { + throws CadenceError { impl.RespondActivityTaskFailed(failRequest); } @Override public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) - throws TException { + throws CadenceError { impl.RespondActivityTaskFailedByID(failRequest); } @Override public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) - throws TException { + throws CadenceError { impl.RespondActivityTaskCanceled(canceledRequest); } @Override public void RespondActivityTaskCanceledByID( - RespondActivityTaskCanceledByIDRequest canceledRequest) throws TException { + RespondActivityTaskCanceledByIDRequest canceledRequest) throws CadenceError { impl.RespondActivityTaskCanceledByID(canceledRequest); } @Override public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) - throws TException { + throws CadenceError { impl.RequestCancelWorkflowExecution(cancelRequest); } @Override public void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) - throws TException { + throws CadenceError { impl.SignalWorkflowExecution(signalRequest); } @Override public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( - SignalWithStartWorkflowExecutionRequest signalWithStartRequest) throws TException { + SignalWithStartWorkflowExecutionRequest signalWithStartRequest) throws CadenceError { return impl.SignalWithStartWorkflowExecution(signalWithStartRequest); } @@ -357,177 +357,178 @@ public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExec SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.SignalWithStartWorkflowExecutionAsync(signalWithStartRequest); } @Override public ResetWorkflowExecutionResponse ResetWorkflowExecution( - ResetWorkflowExecutionRequest resetRequest) throws TException { + ResetWorkflowExecutionRequest resetRequest) throws CadenceError { return impl.ResetWorkflowExecution(resetRequest); } @Override public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) - throws TException { + throws CadenceError { impl.TerminateWorkflowExecution(terminateRequest); } @Override public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( - ListOpenWorkflowExecutionsRequest listRequest) throws TException { + ListOpenWorkflowExecutionsRequest listRequest) throws CadenceError { return impl.ListOpenWorkflowExecutions(listRequest); } @Override public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( - ListClosedWorkflowExecutionsRequest listRequest) throws TException { + ListClosedWorkflowExecutionsRequest listRequest) throws CadenceError { return impl.ListClosedWorkflowExecutions(listRequest); } @Override public ListWorkflowExecutionsResponse ListWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest) throws TException { + ListWorkflowExecutionsRequest listRequest) throws CadenceError { return impl.ListWorkflowExecutions(listRequest); } @Override public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( - ListArchivedWorkflowExecutionsRequest listRequest) throws TException { + ListArchivedWorkflowExecutionsRequest listRequest) throws CadenceError { return impl.ListArchivedWorkflowExecutions(listRequest); } @Override public ListWorkflowExecutionsResponse ScanWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest) throws TException { + ListWorkflowExecutionsRequest listRequest) throws CadenceError { return impl.ScanWorkflowExecutions(listRequest); } @Override public CountWorkflowExecutionsResponse CountWorkflowExecutions( - CountWorkflowExecutionsRequest countRequest) throws TException { + CountWorkflowExecutionsRequest countRequest) throws CadenceError { return impl.CountWorkflowExecutions(countRequest); } @Override - public GetSearchAttributesResponse GetSearchAttributes() throws TException { + public GetSearchAttributesResponse GetSearchAttributes() throws CadenceError { return impl.GetSearchAttributes(); } @Override public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) - throws TException { + throws CadenceError { impl.RespondQueryTaskCompleted(completeRequest); } @Override public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) - throws TException { + throws CadenceError { return impl.ResetStickyTaskList(resetRequest); } @Override public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, QueryFailedError, - TException { + CadenceError { return impl.QueryWorkflow(queryRequest); } @Override public DescribeWorkflowExecutionResponse DescribeWorkflowExecution( - DescribeWorkflowExecutionRequest describeRequest) throws TException { + DescribeWorkflowExecutionRequest describeRequest) throws CadenceError { return impl.DescribeWorkflowExecution(describeRequest); } @Override public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) - throws TException { + throws CadenceError { return impl.DescribeTaskList(request); } @Override - public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, TException { + public ClusterInfo GetClusterInfo() + throws InternalServiceError, ServiceBusyError, CadenceError { return impl.GetClusterInfo(); } @Override public ListTaskListPartitionsResponse ListTaskListPartitions( - ListTaskListPartitionsRequest request) throws TException { + ListTaskListPartitionsRequest request) throws CadenceError { return impl.ListTaskListPartitions(request); } @Override public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request) throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - TException { + CadenceError { impl.RefreshWorkflowTasks(request); } @Override public void RegisterDomain( RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RegisterDomain(registerRequest, resultHandler); } @Override public void DescribeDomain( DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DescribeDomain(describeRequest, resultHandler); } @Override public void DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); } @Override public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListDomains(listRequest, resultHandler); } @Override public void UpdateDomain(UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.UpdateDomain(updateRequest, resultHandler); } @Override public void DeprecateDomain( DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DeprecateDomain(deprecateRequest, resultHandler); } @Override public void RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RestartWorkflowExecution(restartRequest, resultHandler); } @Override public void GetTaskListsByDomain( GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { + throws CadenceError { impl.GetTaskListsByDomain(request, resultHandler); } @Override public void StartWorkflowExecution( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.StartWorkflowExecution(startRequest, resultHandler); } @Override public void StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.StartWorkflowExecutionAsync(startRequest, resultHandler); } @@ -536,7 +537,7 @@ public void StartWorkflowExecutionWithTimeout( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.StartWorkflowExecutionWithTimeout(startRequest, resultHandler, timeoutInMillis); } @@ -545,7 +546,7 @@ public void StartWorkflowExecutionAsyncWithTimeout( StartWorkflowExecutionAsyncRequest startAsyncRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.StartWorkflowExecutionAsyncWithTimeout( startAsyncRequest, resultHandler, timeoutInMillis); } @@ -553,7 +554,7 @@ public void StartWorkflowExecutionAsyncWithTimeout( @Override public void GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.GetWorkflowExecutionHistory(getRequest, resultHandler); } @@ -562,7 +563,7 @@ public void GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.GetWorkflowExecutionHistoryWithTimeout(getRequest, resultHandler, timeoutInMillis); } @@ -574,98 +575,98 @@ public CompletableFuture isHealthy() { @Override public void PollForDecisionTask( PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.PollForDecisionTask(pollRequest, resultHandler); } @Override public void RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondDecisionTaskCompleted(completeRequest, resultHandler); } @Override public void RespondDecisionTaskFailed( RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondDecisionTaskFailed(failedRequest, resultHandler); } @Override public void PollForActivityTask( PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.PollForActivityTask(pollRequest, resultHandler); } @Override public void RecordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RecordActivityTaskHeartbeat(heartbeatRequest, resultHandler); } @Override public void RecordActivityTaskHeartbeatByID( RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RecordActivityTaskHeartbeatByID(heartbeatRequest, resultHandler); } @Override public void RespondActivityTaskCompleted( RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCompleted(completeRequest, resultHandler); } @Override public void RespondActivityTaskCompletedByID( RespondActivityTaskCompletedByIDRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCompletedByID(completeRequest, resultHandler); } @Override public void RespondActivityTaskFailed( RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskFailed(failRequest, resultHandler); } @Override public void RespondActivityTaskFailedByID( RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskFailedByID(failRequest, resultHandler); } @Override public void RespondActivityTaskCanceled( RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCanceled(canceledRequest, resultHandler); } @Override public void RespondActivityTaskCanceledByID( RespondActivityTaskCanceledByIDRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondActivityTaskCanceledByID(canceledRequest, resultHandler); } @Override public void RequestCancelWorkflowExecution( RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RequestCancelWorkflowExecution(cancelRequest, resultHandler); } @Override public void SignalWorkflowExecution( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.SignalWorkflowExecution(signalRequest, resultHandler); } @@ -674,7 +675,7 @@ public void SignalWorkflowExecutionWithTimeout( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { impl.SignalWorkflowExecutionWithTimeout(signalRequest, resultHandler, timeoutInMillis); } @@ -682,7 +683,7 @@ public void SignalWorkflowExecutionWithTimeout( public void SignalWithStartWorkflowExecution( SignalWithStartWorkflowExecutionRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.SignalWithStartWorkflowExecution(signalWithStartRequest, resultHandler); } @@ -690,131 +691,132 @@ public void SignalWithStartWorkflowExecution( public void SignalWithStartWorkflowExecutionAsync( SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.SignalWithStartWorkflowExecutionAsync(signalWithStartRequest, resultHandler); } @Override public void ResetWorkflowExecution( ResetWorkflowExecutionRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ResetWorkflowExecution(resetRequest, resultHandler); } @Override public void TerminateWorkflowExecution( TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.TerminateWorkflowExecution(terminateRequest, resultHandler); } @Override public void ListOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListOpenWorkflowExecutions(listRequest, resultHandler); } @Override public void ListClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListClosedWorkflowExecutions(listRequest, resultHandler); } @Override public void ListWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListWorkflowExecutions(listRequest, resultHandler); } @Override public void ListArchivedWorkflowExecutions( ListArchivedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListArchivedWorkflowExecutions(listRequest, resultHandler); } @Override public void ScanWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ScanWorkflowExecutions(listRequest, resultHandler); } @Override public void CountWorkflowExecutions( CountWorkflowExecutionsRequest countRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.CountWorkflowExecutions(countRequest, resultHandler); } @Override - public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws TException { + public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws CadenceError { impl.GetSearchAttributes(resultHandler); } @Override public void RespondQueryTaskCompleted( RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.RespondQueryTaskCompleted(completeRequest, resultHandler); } @Override public void ResetStickyTaskList( ResetStickyTaskListRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ResetStickyTaskList(resetRequest, resultHandler); } @Override public void QueryWorkflow(QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.QueryWorkflow(queryRequest, resultHandler); } @Override public void DescribeWorkflowExecution( DescribeWorkflowExecutionRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DescribeWorkflowExecution(describeRequest, resultHandler); } @Override public void DescribeTaskList(DescribeTaskListRequest request, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.DescribeTaskList(request, resultHandler); } @Override - public void GetClusterInfo(AsyncMethodCallback resultHandler) throws TException { + public void GetClusterInfo(AsyncMethodCallback resultHandler) throws CadenceError { impl.GetClusterInfo(resultHandler); } @Override public void ListTaskListPartitions( ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { impl.ListTaskListPartitions(request, resultHandler); } @Override public void RefreshWorkflowTasks( - RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws TException { + RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) + throws CadenceError { impl.RefreshWorkflowTasks(request, resultHandler); } @Override public void RegisterDomain(RegisterDomainRequest registerRequest) - throws BadRequestError, InternalServiceError, DomainAlreadyExistsError, TException { + throws BadRequestError, InternalServiceError, DomainAlreadyExistsError, CadenceError { impl.RegisterDomain(registerRequest); } @Override public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { return impl.DescribeDomain(describeRequest); } @@ -822,26 +824,26 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest) throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); } @Override public ListDomainsResponse ListDomains(ListDomainsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.ListDomains(listRequest); } @Override public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { return impl.UpdateDomain(updateRequest); } @Override public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { impl.DeprecateDomain(deprecateRequest); } @@ -849,14 +851,14 @@ public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) public RestartWorkflowExecutionResponse RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest) throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, - EntityNotExistsError, ClientVersionNotSupportedError, TException { + EntityNotExistsError, ClientVersionNotSupportedError, CadenceError { return impl.RestartWorkflowExecution(restartRequest); } @Override public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.GetTaskListsByDomain(request); } @@ -864,7 +866,7 @@ public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainReq public StartWorkflowExecutionResponse StartWorkflowExecution( StartWorkflowExecutionRequest startRequest) throws BadRequestError, InternalServiceError, WorkflowExecutionAlreadyStartedError, - ServiceBusyError, TException { + ServiceBusyError, CadenceError { return impl.StartWorkflowExecution(startRequest); } @@ -873,7 +875,7 @@ public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { return impl.StartWorkflowExecutionAsync(startRequest); } @@ -881,7 +883,7 @@ public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.GetWorkflowExecutionHistory(getRequest); } @@ -889,13 +891,13 @@ public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return impl.GetWorkflowExecutionHistoryWithTimeout(getRequest, timeoutInMillis); } @Override public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest) - throws BadRequestError, InternalServiceError, ServiceBusyError, TException { + throws BadRequestError, InternalServiceError, ServiceBusyError, CadenceError { return impl.PollForDecisionTask(pollRequest); } @@ -903,20 +905,20 @@ public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskReques public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest completeRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { return impl.RespondDecisionTaskCompleted(completeRequest); } @Override public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { impl.RespondDecisionTaskFailed(failedRequest); } @Override public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest) - throws BadRequestError, InternalServiceError, ServiceBusyError, TException { + throws BadRequestError, InternalServiceError, ServiceBusyError, CadenceError { return impl.PollForActivityTask(pollRequest); } diff --git a/src/main/java/com/uber/cadence/internal/sync/WorkflowClientInternal.java b/src/main/java/com/uber/cadence/internal/sync/WorkflowClientInternal.java index 4ae73d944..435b6f703 100644 --- a/src/main/java/com/uber/cadence/internal/sync/WorkflowClientInternal.java +++ b/src/main/java/com/uber/cadence/internal/sync/WorkflowClientInternal.java @@ -19,6 +19,7 @@ import com.google.common.base.Strings; import com.google.common.reflect.TypeToken; +import com.uber.cadence.CadenceError; import com.uber.cadence.RefreshWorkflowTasksRequest; import com.uber.cadence.WorkflowExecution; import com.uber.cadence.client.ActivityCompletionClient; @@ -46,7 +47,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import org.apache.thrift.TException; public final class WorkflowClientInternal implements WorkflowClient { @@ -220,7 +220,7 @@ public WorkflowExecution enqueueSignalWithStart(BatchRequest signalWithStartBatc @Override public void refreshWorkflowTasks(RefreshWorkflowTasksRequest refreshWorkflowTasksRequest) - throws TException { + throws CadenceError { workflowService.RefreshWorkflowTasks(refreshWorkflowTasksRequest); } diff --git a/src/main/java/com/uber/cadence/internal/sync/WorkflowStubImpl.java b/src/main/java/com/uber/cadence/internal/sync/WorkflowStubImpl.java index 23d270615..ede342105 100644 --- a/src/main/java/com/uber/cadence/internal/sync/WorkflowStubImpl.java +++ b/src/main/java/com/uber/cadence/internal/sync/WorkflowStubImpl.java @@ -555,7 +555,7 @@ public R queryWithOptions( throw e; } - if (result.queryRejected == null) { + if (result.getQueryRejected() == null) { return dataConverter.fromData(result.getQueryResult(), resultClass, resultType); } else { throw new WorkflowQueryRejectedException( diff --git a/src/main/java/com/uber/cadence/internal/testservice/StateMachines.java b/src/main/java/com/uber/cadence/internal/testservice/StateMachines.java index d0667112d..df3847448 100644 --- a/src/main/java/com/uber/cadence/internal/testservice/StateMachines.java +++ b/src/main/java/com/uber/cadence/internal/testservice/StateMachines.java @@ -360,7 +360,7 @@ private static void startChildWorkflowFailed( a.setInitiatedEventId(data.initiatedEventId); a.setWorkflowType(data.initiatedEvent.getWorkflowType()); a.setWorkflowId(data.initiatedEvent.getWorkflowId()); - if (data.initiatedEvent.isSetDomain()) { + if (data.initiatedEvent.getDomain() != null) { a.setDomain(data.initiatedEvent.getDomain()); } HistoryEvent event = @@ -410,8 +410,8 @@ private static void childWorkflowFailed( a.setStartedEventId(data.startedEventId); a.setWorkflowExecution(data.execution); a.setWorkflowType(data.initiatedEvent.getWorkflowType()); - if (data.initiatedEvent.domain != null) { - a.setDomain(data.initiatedEvent.domain); + if (data.initiatedEvent.getDomain() != null) { + a.setDomain(data.initiatedEvent.getDomain()); } HistoryEvent event = new HistoryEvent() @@ -477,7 +477,7 @@ private static void initiateChildWorkflow( .setRetryPolicy(d.getRetryPolicy()) .setCronSchedule(d.getCronSchedule()) .setHeader(d.getHeader()); - if (d.isSetInput()) { + if (d.getInput() != null) { startChild.setInput(d.getInput()); } addStartChildTask(ctx, data, initiatedEventId, startChild); @@ -520,26 +520,26 @@ private static void startWorkflow( RequestContext ctx, WorkflowData data, StartWorkflowExecutionRequest request, long notUsed) throws BadRequestError { WorkflowExecutionStartedEventAttributes a = new WorkflowExecutionStartedEventAttributes(); - if (request.isSetIdentity()) { + if (request.getIdentity() != null) { a.setIdentity(request.getIdentity()); } - if (!request.isSetTaskStartToCloseTimeoutSeconds()) { + if (request.getTaskStartToCloseTimeoutSeconds() == 0) { throw new BadRequestError("missing taskStartToCloseTimeoutSeconds"); } a.setTaskStartToCloseTimeoutSeconds(request.getTaskStartToCloseTimeoutSeconds()); - if (!request.isSetWorkflowType()) { + if (request.getWorkflowType() == null) { throw new BadRequestError("missing workflowType"); } a.setWorkflowType(request.getWorkflowType()); - if (!request.isSetTaskList()) { + if (request.getTaskList() == null) { throw new BadRequestError("missing taskList"); } a.setTaskList(request.getTaskList()); - if (!request.isSetExecutionStartToCloseTimeoutSeconds()) { + if (request.getExecutionStartToCloseTimeoutSeconds() == 0) { throw new BadRequestError("missing executionStartToCloseTimeoutSeconds"); } a.setExecutionStartToCloseTimeoutSeconds(request.getExecutionStartToCloseTimeoutSeconds()); - if (request.isSetInput()) { + if (request.getInput() != null) { a.setInput(request.getInput()); } if (data.retryState.isPresent()) { @@ -592,22 +592,22 @@ private static void continueAsNewWorkflow( WorkflowExecutionContinuedAsNewEventAttributes a = new WorkflowExecutionContinuedAsNewEventAttributes(); a.setInput(d.getInput()); - if (d.isSetExecutionStartToCloseTimeoutSeconds()) { + if (d.getExecutionStartToCloseTimeoutSeconds() > 0) { a.setExecutionStartToCloseTimeoutSeconds(d.getExecutionStartToCloseTimeoutSeconds()); } else { a.setExecutionStartToCloseTimeoutSeconds(sr.getExecutionStartToCloseTimeoutSeconds()); } - if (d.isSetTaskList()) { + if (d.getTaskList() != null) { a.setTaskList(d.getTaskList()); } else { a.setTaskList(sr.getTaskList()); } - if (d.isSetWorkflowType()) { + if (d.getWorkflowType() != null) { a.setWorkflowType(d.getWorkflowType()); } else { a.setWorkflowType(sr.getWorkflowType()); } - if (d.isSetTaskStartToCloseTimeoutSeconds()) { + if (d.getTaskStartToCloseTimeoutSeconds() > 0) { a.setTaskStartToCloseTimeoutSeconds(d.getTaskStartToCloseTimeoutSeconds()); } else { a.setTaskStartToCloseTimeoutSeconds(sr.getTaskStartToCloseTimeoutSeconds()); @@ -735,7 +735,7 @@ private static void scheduleActivityTask( PollForActivityTaskResponse taskResponse = new PollForActivityTaskResponse() .setWorkflowDomain(ctx.getDomain()) - .setWorkflowType(data.startWorkflowExecutionRequest.workflowType) + .setWorkflowType(data.startWorkflowExecutionRequest.getWorkflowType()) .setActivityType(d.getActivityType()) .setWorkflowExecution(ctx.getExecution()) .setActivityId(d.getActivityId()) @@ -1155,16 +1155,16 @@ private static void initiateExternalSignal( SignalExternalWorkflowExecutionInitiatedEventAttributes a = new SignalExternalWorkflowExecutionInitiatedEventAttributes(); a.setDecisionTaskCompletedEventId(decisionTaskCompletedEventId); - if (d.isSetControl()) { + if (d.getControl() != null) { a.setControl(d.getControl()); } - if (d.isSetInput()) { + if (d.getInput() != null) { a.setInput(d.getInput()); } - if (d.isSetDomain()) { + if (d.getDomain() != null) { a.setDomain(d.getDomain()); } - if (d.isSetChildWorkflowOnly()) { + if (d.isChildWorkflowOnly()) { a.setChildWorkflowOnly(d.isChildWorkflowOnly()); } a.setSignalName(d.getSignalName()); @@ -1205,7 +1205,9 @@ private static void completeExternalSignal( RequestContext ctx, SignalExternalData data, String runId, long notUsed) { SignalExternalWorkflowExecutionInitiatedEventAttributes initiatedEvent = data.initiatedEvent; WorkflowExecution signaledExecution = - initiatedEvent.getWorkflowExecution().deepCopy().setRunId(runId); + new WorkflowExecution() + .setWorkflowId(initiatedEvent.getWorkflowExecution().getWorkflowId()) + .setRunId(runId); ExternalWorkflowExecutionSignaledEventAttributes a = new ExternalWorkflowExecutionSignaledEventAttributes() .setInitiatedEventId(data.initiatedEventId) diff --git a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableState.java b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableState.java index f662ebedd..04798d412 100644 --- a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableState.java +++ b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableState.java @@ -17,42 +17,9 @@ package com.uber.cadence.internal.testservice; -import com.uber.cadence.BadRequestError; -import com.uber.cadence.ChildWorkflowExecutionCanceledEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionCompletedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionStartedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionTimedOutEventAttributes; -import com.uber.cadence.EntityNotExistsError; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.PollForActivityTaskRequest; -import com.uber.cadence.PollForActivityTaskResponse; -import com.uber.cadence.PollForDecisionTaskRequest; -import com.uber.cadence.PollForDecisionTaskResponse; -import com.uber.cadence.QueryWorkflowRequest; -import com.uber.cadence.QueryWorkflowResponse; -import com.uber.cadence.RecordActivityTaskHeartbeatResponse; -import com.uber.cadence.RequestCancelWorkflowExecutionRequest; -import com.uber.cadence.RespondActivityTaskCanceledByIDRequest; -import com.uber.cadence.RespondActivityTaskCanceledRequest; -import com.uber.cadence.RespondActivityTaskCompletedByIDRequest; -import com.uber.cadence.RespondActivityTaskCompletedRequest; -import com.uber.cadence.RespondActivityTaskFailedByIDRequest; -import com.uber.cadence.RespondActivityTaskFailedRequest; -import com.uber.cadence.RespondDecisionTaskCompletedRequest; -import com.uber.cadence.RespondDecisionTaskFailedRequest; -import com.uber.cadence.RespondQueryTaskCompletedRequest; -import com.uber.cadence.SignalExternalWorkflowExecutionDecisionAttributes; -import com.uber.cadence.SignalExternalWorkflowExecutionFailedCause; -import com.uber.cadence.SignalWorkflowExecutionRequest; -import com.uber.cadence.StartChildWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.StartWorkflowExecutionRequest; -import com.uber.cadence.StickyExecutionAttributes; -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; -import com.uber.cadence.WorkflowExecutionCloseStatus; +import com.uber.cadence.*; import com.uber.cadence.internal.testservice.TestWorkflowMutableStateImpl.QueryId; import java.util.Optional; -import org.apache.thrift.TException; interface TestWorkflowMutableState { @@ -156,7 +123,7 @@ void cancelActivityTaskById(String id, RespondActivityTaskCanceledByIDRequest ca throws EntityNotExistsError, InternalServiceError, WorkflowExecutionAlreadyCompletedError, BadRequestError; - QueryWorkflowResponse query(QueryWorkflowRequest queryRequest) throws TException; + QueryWorkflowResponse query(QueryWorkflowRequest queryRequest) throws CadenceError; void completeQuery(QueryId queryId, RespondQueryTaskCompletedRequest completeRequest) throws EntityNotExistsError; diff --git a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableStateImpl.java b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableStateImpl.java index 79ac3dd26..1a3f3239e 100644 --- a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableStateImpl.java +++ b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowMutableStateImpl.java @@ -27,72 +27,7 @@ import com.cronutils.parser.CronParser; import com.google.common.base.Strings; import com.google.common.base.Throwables; -import com.uber.cadence.ActivityTaskScheduledEventAttributes; -import com.uber.cadence.BadRequestError; -import com.uber.cadence.CancelTimerDecisionAttributes; -import com.uber.cadence.CancelTimerFailedEventAttributes; -import com.uber.cadence.CancelWorkflowExecutionDecisionAttributes; -import com.uber.cadence.ChildWorkflowExecutionCanceledEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionCompletedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionStartedEventAttributes; -import com.uber.cadence.ChildWorkflowExecutionTimedOutEventAttributes; -import com.uber.cadence.CompleteWorkflowExecutionDecisionAttributes; -import com.uber.cadence.ContinueAsNewWorkflowExecutionDecisionAttributes; -import com.uber.cadence.Decision; -import com.uber.cadence.DecisionTaskFailedCause; -import com.uber.cadence.EntityNotExistsError; -import com.uber.cadence.EventType; -import com.uber.cadence.FailWorkflowExecutionDecisionAttributes; -import com.uber.cadence.HistoryEvent; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.MarkerRecordedEventAttributes; -import com.uber.cadence.PollForActivityTaskRequest; -import com.uber.cadence.PollForActivityTaskResponse; -import com.uber.cadence.PollForDecisionTaskRequest; -import com.uber.cadence.PollForDecisionTaskResponse; -import com.uber.cadence.QueryConsistencyLevel; -import com.uber.cadence.QueryFailedError; -import com.uber.cadence.QueryRejectCondition; -import com.uber.cadence.QueryRejected; -import com.uber.cadence.QueryResultType; -import com.uber.cadence.QueryTaskCompletedType; -import com.uber.cadence.QueryWorkflowRequest; -import com.uber.cadence.QueryWorkflowResponse; -import com.uber.cadence.RecordActivityTaskHeartbeatResponse; -import com.uber.cadence.RecordMarkerDecisionAttributes; -import com.uber.cadence.RequestCancelActivityTaskDecisionAttributes; -import com.uber.cadence.RequestCancelActivityTaskFailedEventAttributes; -import com.uber.cadence.RequestCancelExternalWorkflowExecutionDecisionAttributes; -import com.uber.cadence.RequestCancelWorkflowExecutionRequest; -import com.uber.cadence.RespondActivityTaskCanceledByIDRequest; -import com.uber.cadence.RespondActivityTaskCanceledRequest; -import com.uber.cadence.RespondActivityTaskCompletedByIDRequest; -import com.uber.cadence.RespondActivityTaskCompletedRequest; -import com.uber.cadence.RespondActivityTaskFailedByIDRequest; -import com.uber.cadence.RespondActivityTaskFailedRequest; -import com.uber.cadence.RespondDecisionTaskCompletedRequest; -import com.uber.cadence.RespondDecisionTaskFailedRequest; -import com.uber.cadence.RespondQueryTaskCompletedRequest; -import com.uber.cadence.ScheduleActivityTaskDecisionAttributes; -import com.uber.cadence.SignalExternalWorkflowExecutionDecisionAttributes; -import com.uber.cadence.SignalExternalWorkflowExecutionFailedCause; -import com.uber.cadence.SignalWorkflowExecutionRequest; -import com.uber.cadence.StartChildWorkflowExecutionDecisionAttributes; -import com.uber.cadence.StartChildWorkflowExecutionFailedEventAttributes; -import com.uber.cadence.StartTimerDecisionAttributes; -import com.uber.cadence.StartWorkflowExecutionRequest; -import com.uber.cadence.StickyExecutionAttributes; -import com.uber.cadence.TimeoutType; -import com.uber.cadence.UpsertWorkflowSearchAttributesDecisionAttributes; -import com.uber.cadence.UpsertWorkflowSearchAttributesEventAttributes; -import com.uber.cadence.WorkflowExecution; -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; -import com.uber.cadence.WorkflowExecutionCloseStatus; -import com.uber.cadence.WorkflowExecutionContinuedAsNewEventAttributes; -import com.uber.cadence.WorkflowExecutionSignaledEventAttributes; -import com.uber.cadence.WorkflowQuery; -import com.uber.cadence.WorkflowQueryResult; +import com.uber.cadence.*; import com.uber.cadence.internal.common.WorkflowExecutionUtils; import com.uber.cadence.internal.testservice.StateMachines.Action; import com.uber.cadence.internal.testservice.StateMachines.ActivityTaskData; @@ -128,7 +63,6 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.function.LongSupplier; -import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -331,7 +265,7 @@ public void completeDecisionTask(int historySize, RespondDecisionTaskCompletedRe List decisions = request.getDecisions(); completeDecisionUpdate( ctx -> { - if (request.getQueryResultsSize() > 0) { + if (request.getQueryResults() != null && request.getQueryResults().size() > 0) { request .getQueryResults() .forEach( @@ -403,8 +337,7 @@ private void completeQuery(String queryId, WorkflowQueryResult queryResult) { if (queryResult.getResultType() == QueryResultType.ANSWERED) { future.complete(new QueryWorkflowResponse().setQueryResult(queryResult.getAnswer())); } else { - future.completeExceptionally( - new QueryFailedError().setMessage(queryResult.getErrorMessage())); + future.completeExceptionally(new QueryFailedError(queryResult.getErrorMessage())); } } @@ -487,7 +420,7 @@ private void processRequestCancelExternalWorkflowExecution( RequestCancelWorkflowExecutionRequest request = new RequestCancelWorkflowExecutionRequest(); WorkflowExecution workflowExecution = new WorkflowExecution(); - workflowExecution.setWorkflowId(attr.workflowId); + workflowExecution.setWorkflowId(attr.getWorkflowId()); request.setWorkflowExecution(workflowExecution); request.setDomain(ctx.getDomain()); try { @@ -501,7 +434,7 @@ private void processRequestCancelExternalWorkflowExecution( private void processRecordMarker( RequestContext ctx, RecordMarkerDecisionAttributes attr, long decisionTaskCompletedId) throws BadRequestError { - if (!attr.isSetMarkerName()) { + if (attr.getMarkerName() == null) { throw new BadRequestError("marker name is required"); } @@ -1484,7 +1417,7 @@ public void requestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest } @Override - public QueryWorkflowResponse query(QueryWorkflowRequest queryRequest) throws TException { + public QueryWorkflowResponse query(QueryWorkflowRequest queryRequest) throws CadenceError { QueryId queryId = new QueryId(executionId); Optional optCloseStatus = getCloseStatus(); @@ -1530,8 +1463,8 @@ public QueryWorkflowResponse query(QueryWorkflowRequest queryRequest) throws TEx return new QueryWorkflowResponse(); } catch (ExecutionException e) { Throwable cause = e.getCause(); - if (cause instanceof TException) { - throw (TException) cause; + if (cause instanceof CadenceError) { + throw (CadenceError) cause; } throw new InternalServiceError(Throwables.getStackTraceAsString(cause)); } @@ -1556,7 +1489,7 @@ public void completeQuery(QueryId queryId, RespondQueryTaskCompletedRequest comp new TaskListId(startRequest.getDomain(), startRequest.getTaskList().getName()); store.sendQueryTask(executionId, taskListId, task); } else { - QueryFailedError error = new QueryFailedError().setMessage(completeRequest.getErrorMessage()); + QueryFailedError error = new QueryFailedError(completeRequest.getErrorMessage()); result.completeExceptionally(error); } } diff --git a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java index d0a87ef40..7b0b94eac 100644 --- a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java +++ b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowService.java @@ -18,6 +18,7 @@ package com.uber.cadence.internal.testservice; import com.uber.cadence.BadRequestError; +import com.uber.cadence.CadenceError; import com.uber.cadence.ClientVersionNotSupportedError; import com.uber.cadence.ClusterInfo; import com.uber.cadence.CountWorkflowExecutionsRequest; @@ -107,6 +108,7 @@ import com.uber.cadence.WorkflowIdReusePolicy; import com.uber.cadence.internal.testservice.TestWorkflowMutableStateImpl.QueryId; import com.uber.cadence.internal.testservice.TestWorkflowStore.WorkflowState; +import com.uber.cadence.serviceclient.AsyncMethodCallback; import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; import java.time.Duration; @@ -121,8 +123,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -198,13 +198,13 @@ private TestWorkflowMutableState getMutableState(WorkflowId workflowId, boolean @Override public void RegisterDomain(RegisterDomainRequest registerRequest) - throws BadRequestError, InternalServiceError, DomainAlreadyExistsError, TException { + throws BadRequestError, InternalServiceError, DomainAlreadyExistsError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -212,26 +212,26 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest) throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); } @Override public ListDomainsResponse ListDomains(ListDomainsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -239,20 +239,20 @@ public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) public RestartWorkflowExecutionResponse RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest) throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, - EntityNotExistsError, ClientVersionNotSupportedError, TException { + EntityNotExistsError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public StartWorkflowExecutionResponse StartWorkflowExecution( - StartWorkflowExecutionRequest startRequest) throws TException { + StartWorkflowExecutionRequest startRequest) throws CadenceError { return startWorkflowExecutionImpl( startRequest, 0, Optional.empty(), OptionalLong.empty(), Optional.empty()); } @@ -262,7 +262,7 @@ public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { // Just run it StartWorkflowExecution(startRequest.getRequest()); return new StartWorkflowExecutionAsyncResponse(); @@ -285,7 +285,7 @@ StartWorkflowExecutionResponse startWorkflowExecutionImpl( if (existing != null) { Optional statusOptional = existing.getCloseStatus(); WorkflowIdReusePolicy policy = - startRequest.isSetWorkflowIdReusePolicy() + startRequest.getWorkflowIdReusePolicy() != null ? startRequest.getWorkflowIdReusePolicy() : WorkflowIdReusePolicy.AllowDuplicateFailedOnly; if (!statusOptional.isPresent() || policy == WorkflowIdReusePolicy.RejectDuplicate) { @@ -328,11 +328,11 @@ private Optional newRetryStateLocked(RetryPolicy retryPolicy) throws private StartWorkflowExecutionResponse throwDuplicatedWorkflow( StartWorkflowExecutionRequest startRequest, TestWorkflowMutableState existing) throws WorkflowExecutionAlreadyStartedError { - WorkflowExecutionAlreadyStartedError error = new WorkflowExecutionAlreadyStartedError(); WorkflowExecution execution = existing.getExecutionId().getExecution(); - error.setMessage( - String.format( - "WorkflowId: %s, " + "RunId: %s", execution.getWorkflowId(), execution.getRunId())); + WorkflowExecutionAlreadyStartedError error = + new WorkflowExecutionAlreadyStartedError( + String.format( + "WorkflowId: %s, " + "RunId: %s", execution.getWorkflowId(), execution.getRunId())); error.setRunId(execution.getRunId()); error.setStartRequestId(startRequest.getRequestId()); throw error; @@ -373,7 +373,7 @@ private StartWorkflowExecutionResponse startWorkflowExecutionNoRunningCheckLocke public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { ExecutionId executionId = new ExecutionId(getRequest.getDomain(), getRequest.getExecution()); TestWorkflowMutableState mutableState = getMutableState(executionId); @@ -384,14 +384,14 @@ public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { return GetWorkflowExecutionHistory(getRequest); } @Override public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest) - throws BadRequestError, InternalServiceError, ServiceBusyError, TException { + throws BadRequestError, InternalServiceError, ServiceBusyError, CadenceError { PollForDecisionTaskResponse task; try { task = store.pollForDecisionTask(pollRequest); @@ -405,7 +405,7 @@ public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskReques // The task always has the original tasklist is was created on as part of the response. This // may different // then the task list it was scheduled on as in the case of sticky execution. - task.setWorkflowExecutionTaskList(mutableState.getStartRequest().taskList); + task.setWorkflowExecutionTaskList(mutableState.getStartRequest().getTaskList()); return task; } catch (EntityNotExistsError e) { if (log.isDebugEnabled()) { @@ -413,14 +413,14 @@ public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskReques } // skip the task } - task.setWorkflowExecutionTaskList(mutableState.getStartRequest().taskList); + task.setWorkflowExecutionTaskList(mutableState.getStartRequest().getTaskList()); return task; } @Override public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest request) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { DecisionTaskToken taskToken = DecisionTaskToken.fromBytes(request.getTaskToken()); TestWorkflowMutableState mutableState = getMutableState(taskToken.getExecutionId()); mutableState.completeDecisionTask(taskToken.getHistorySize(), request); @@ -429,7 +429,7 @@ public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( @Override public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { DecisionTaskToken taskToken = DecisionTaskToken.fromBytes(failedRequest.getTaskToken()); TestWorkflowMutableState mutableState = getMutableState(taskToken.getExecutionId()); mutableState.failDecisionTask(failedRequest); @@ -437,7 +437,7 @@ public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedReq @Override public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest) - throws BadRequestError, InternalServiceError, ServiceBusyError, TException { + throws BadRequestError, InternalServiceError, ServiceBusyError, CadenceError { PollForActivityTaskResponse task; while (true) { try { @@ -462,7 +462,7 @@ public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskReques @Override public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest heartbeatRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { ActivityId activityId = ActivityId.fromBytes(heartbeatRequest.getTaskToken()); TestWorkflowMutableState mutableState = getMutableState(activityId.getExecutionId()); return mutableState.heartbeatActivityTask(activityId.getId(), heartbeatRequest.getDetails()); @@ -472,7 +472,7 @@ public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, DomainNotActiveError, - LimitExceededError, ServiceBusyError, TException { + LimitExceededError, ServiceBusyError, CadenceError { ExecutionId execution = new ExecutionId( heartbeatRequest.getDomain(), @@ -485,7 +485,7 @@ public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( @Override public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { ActivityId activityId = ActivityId.fromBytes(completeRequest.getTaskToken()); TestWorkflowMutableState mutableState = getMutableState(activityId.getExecutionId()); mutableState.completeActivityTask(activityId.getId(), completeRequest); @@ -494,7 +494,7 @@ public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest com @Override public void RespondActivityTaskCompletedByID( RespondActivityTaskCompletedByIDRequest completeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { ActivityId activityId = new ActivityId( completeRequest.getDomain(), @@ -507,7 +507,7 @@ public void RespondActivityTaskCompletedByID( @Override public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { ActivityId activityId = ActivityId.fromBytes(failRequest.getTaskToken()); TestWorkflowMutableState mutableState = getMutableState(activityId.getExecutionId()); mutableState.failActivityTask(activityId.getId(), failRequest); @@ -515,7 +515,7 @@ public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failReque @Override public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { ActivityId activityId = new ActivityId( failRequest.getDomain(), @@ -528,7 +528,7 @@ public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest f @Override public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { ActivityId activityId = ActivityId.fromBytes(canceledRequest.getTaskToken()); TestWorkflowMutableState mutableState = getMutableState(activityId.getExecutionId()); mutableState.cancelActivityTask(activityId.getId(), canceledRequest); @@ -537,7 +537,7 @@ public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest cance @Override public void RespondActivityTaskCanceledByID( RespondActivityTaskCanceledByIDRequest canceledRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { ActivityId activityId = new ActivityId( canceledRequest.getDomain(), @@ -550,7 +550,7 @@ public void RespondActivityTaskCanceledByID( @Override public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) - throws TException { + throws CadenceError { ExecutionId executionId = new ExecutionId(cancelRequest.getDomain(), cancelRequest.getWorkflowExecution()); TestWorkflowMutableState mutableState = getMutableState(executionId); @@ -559,7 +559,7 @@ public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest @Override public void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) - throws TException { + throws CadenceError { ExecutionId executionId = new ExecutionId(signalRequest.getDomain(), signalRequest.getWorkflowExecution()); TestWorkflowMutableState mutableState = getMutableState(executionId); @@ -571,7 +571,7 @@ public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( SignalWithStartWorkflowExecutionRequest r) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, LimitExceededError, WorkflowExecutionAlreadyStartedError, - TException { + CadenceError { ExecutionId executionId = new ExecutionId(r.getDomain(), r.getWorkflowId(), null); TestWorkflowMutableState mutableState = getMutableState(executionId, false); SignalWorkflowExecutionRequest signalRequest = @@ -611,7 +611,7 @@ public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExec SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { SignalWithStartWorkflowExecution(signalWithStartRequest.getRequest()); return new SignalWithStartWorkflowExecutionAsyncResponse(); } @@ -621,7 +621,7 @@ public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExec public ResetWorkflowExecutionResponse ResetWorkflowExecution( ResetWorkflowExecutionRequest resetRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - DomainNotActiveError, LimitExceededError, ClientVersionNotSupportedError, TException { + DomainNotActiveError, LimitExceededError, ClientVersionNotSupportedError, CadenceError { return null; } @@ -647,7 +647,7 @@ public void signalExternalWorkflowExecution( @Override public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -677,7 +677,7 @@ public String continueAsNew( .setIdentity(identity) .setRetryPolicy(previousRunStartRequest.getRetryPolicy()) .setCronSchedule(previousRunStartRequest.getCronSchedule()); - if (a.isSetInput()) { + if (a.getInput() != null) { startRequest.setInput(a.getInput()); } lock.lock(); @@ -703,11 +703,11 @@ public String continueAsNew( public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { Optional workflowIdFilter; WorkflowExecutionFilter executionFilter = listRequest.getExecutionFilter(); if (executionFilter != null - && executionFilter.isSetWorkflowId() + && executionFilter.getWorkflowId() != null && !executionFilter.getWorkflowId().isEmpty()) { workflowIdFilter = Optional.of(executionFilter.getWorkflowId()); } else { @@ -721,11 +721,11 @@ public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { + CadenceError { Optional workflowIdFilter; WorkflowExecutionFilter executionFilter = listRequest.getExecutionFilter(); if (executionFilter != null - && executionFilter.isSetWorkflowId() + && executionFilter.getWorkflowId() != null && !executionFilter.getWorkflowId().isEmpty()) { workflowIdFilter = Optional.of(executionFilter.getWorkflowId()); } else { @@ -740,7 +740,7 @@ public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( public ListWorkflowExecutionsResponse ListWorkflowExecutions( ListWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -748,7 +748,7 @@ public ListWorkflowExecutionsResponse ListWorkflowExecutions( public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( ListArchivedWorkflowExecutionsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -756,7 +756,7 @@ public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( public ListWorkflowExecutionsResponse ScanWorkflowExecutions( ListWorkflowExecutionsRequest listRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -764,19 +764,19 @@ public ListWorkflowExecutionsResponse ScanWorkflowExecutions( public CountWorkflowExecutionsResponse CountWorkflowExecutions( CountWorkflowExecutionsRequest countRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public GetSearchAttributesResponse GetSearchAttributes() - throws InternalServiceError, ServiceBusyError, ClientVersionNotSupportedError, TException { + throws InternalServiceError, ServiceBusyError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { QueryId queryId = QueryId.fromBytes(completeRequest.getTaskToken()); TestWorkflowMutableState mutableState = getMutableState(queryId.getExecutionId()); mutableState.completeQuery(queryId, completeRequest); @@ -785,14 +785,14 @@ public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeR @Override public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, LimitExceededError, - ServiceBusyError, DomainNotActiveError, TException { + ServiceBusyError, DomainNotActiveError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) throws BadRequestError, InternalServiceError, EntityNotExistsError, QueryFailedError, - TException { + CadenceError { ExecutionId executionId = new ExecutionId(queryRequest.getDomain(), queryRequest.getExecution()); TestWorkflowMutableState mutableState = getMutableState(executionId); @@ -802,18 +802,18 @@ public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) @Override public DescribeWorkflowExecutionResponse DescribeWorkflowExecution( DescribeWorkflowExecutionRequest describeRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) - throws BadRequestError, InternalServiceError, EntityNotExistsError, TException { + throws BadRequestError, InternalServiceError, EntityNotExistsError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override - public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, TException { + public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -821,73 +821,74 @@ public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyErro public ListTaskListPartitionsResponse ListTaskListPartitions( ListTaskListPartitionsRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - TException { + CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request) throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - TException { + CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RegisterDomain( - RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) throws TException { + RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void DescribeDomain( - DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) throws TException { + DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); } @Override public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void UpdateDomain(UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void DeprecateDomain( DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void GetTaskListsByDomain( - GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { + GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void StartWorkflowExecution( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { StartWorkflowExecutionWithTimeout(startRequest, resultHandler, null); } @@ -896,13 +897,13 @@ public void StartWorkflowExecutionWithTimeout( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { forkJoinPool.execute( () -> { try { StartWorkflowExecutionResponse result = StartWorkflowExecution(startRequest); resultHandler.onComplete(result); - } catch (TException e) { + } catch (CadenceError e) { resultHandler.onError(e); } }); @@ -911,7 +912,7 @@ public void StartWorkflowExecutionWithTimeout( @Override public void StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { StartWorkflowExecutionAsyncWithTimeout(startRequest, resultHandler, null); } @@ -920,7 +921,7 @@ public void StartWorkflowExecutionAsyncWithTimeout( StartWorkflowExecutionAsyncRequest startAsyncRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { // Treat it like a synchronous call but ignore the result StartWorkflowExecutionWithTimeout( startAsyncRequest.getRequest(), @@ -943,13 +944,13 @@ public void onError(Exception exception) { @Override public void GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { forkJoinPool.execute( () -> { try { GetWorkflowExecutionHistoryResponse result = GetWorkflowExecutionHistory(getRequest); resultHandler.onComplete(result); - } catch (TException e) { + } catch (CadenceError e) { resultHandler.onError(e); } }); @@ -961,7 +962,7 @@ public void GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { GetWorkflowExecutionHistory(getRequest, resultHandler); } @@ -974,97 +975,99 @@ public CompletableFuture isHealthy() { @Override public void PollForDecisionTask( - PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { + PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondDecisionTaskFailed( RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void PollForActivityTask( - PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { + PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RecordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RecordActivityTaskHeartbeatByID( RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondActivityTaskCompleted( RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondActivityTaskCompletedByID( RespondActivityTaskCompletedByIDRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondActivityTaskFailed( RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondActivityTaskFailedByID( RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondActivityTaskCanceled( RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondActivityTaskCanceledByID( RespondActivityTaskCanceledByIDRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RequestCancelWorkflowExecution( RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void SignalWorkflowExecution( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { SignalWorkflowExecutionWithTimeout(signalRequest, resultHandler, null); } @@ -1073,13 +1076,13 @@ public void SignalWorkflowExecutionWithTimeout( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { forkJoinPool.execute( () -> { try { SignalWorkflowExecution(signalRequest); resultHandler.onComplete(null); - } catch (TException e) { + } catch (CadenceError e) { resultHandler.onError(e); } }); @@ -1089,7 +1092,7 @@ public void SignalWorkflowExecutionWithTimeout( public void SignalWithStartWorkflowExecution( SignalWithStartWorkflowExecutionRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @@ -1097,116 +1100,117 @@ public void SignalWithStartWorkflowExecution( public void SignalWithStartWorkflowExecutionAsync( SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ResetWorkflowExecution( ResetWorkflowExecutionRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException {} + throws CadenceError {} @Override public void TerminateWorkflowExecution( TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ListOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ListClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ListWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ListArchivedWorkflowExecutions( ListArchivedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ScanWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void CountWorkflowExecutions( CountWorkflowExecutionsRequest countRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override - public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws TException { + public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RespondQueryTaskCompleted( RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ResetStickyTaskList( ResetStickyTaskListRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void QueryWorkflow(QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void DescribeWorkflowExecution( DescribeWorkflowExecutionRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void DescribeTaskList(DescribeTaskListRequest request, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override - public void GetClusterInfo(AsyncMethodCallback resultHandler) throws TException { + public void GetClusterInfo(AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void ListTaskListPartitions( - ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) throws TException { + ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("not implemented"); } @Override public void RefreshWorkflowTasks( - RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws TException { + RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("not implemented"); } diff --git a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java index 06f18eab2..5ebfaa976 100644 --- a/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java +++ b/src/main/java/com/uber/cadence/internal/testservice/TestWorkflowStoreImpl.java @@ -88,7 +88,7 @@ void addAllLocked(List events, long timeInNanos) throws EntityNotE } event.setEventId(history.size() + 1L); // It can be set in StateMachines.startActivityTask - if (!event.isSetTimestamp()) { + if (event.getTimestamp() == 0) { event.setTimestamp(timeInNanos); } history.add(event); @@ -421,11 +421,14 @@ public List listWorkflows( .setExecution(executionId.getExecution()) .setHistoryLength(history.size()) .setStartTime(history.get(0).getTimestamp()) - .setIsCron( - history - .get(0) - .getWorkflowExecutionStartedEventAttributes() - .isSetCronSchedule()) + .setCron( + history.get(0).getWorkflowExecutionStartedEventAttributes().getCronSchedule() + != null + && !history + .get(0) + .getWorkflowExecutionStartedEventAttributes() + .getCronSchedule() + .isEmpty()) .setType( history .get(0) @@ -447,11 +450,14 @@ public List listWorkflows( .setExecution(executionId.getExecution()) .setHistoryLength(history.size()) .setStartTime(history.get(0).getTimestamp()) - .setIsCron( - history - .get(0) - .getWorkflowExecutionStartedEventAttributes() - .isSetCronSchedule()) + .setCron( + history.get(0).getWorkflowExecutionStartedEventAttributes().getCronSchedule() + != null + && !history + .get(0) + .getWorkflowExecutionStartedEventAttributes() + .getCronSchedule() + .isEmpty()) .setType( history.get(0).getWorkflowExecutionStartedEventAttributes().getWorkflowType()) .setCloseStatus( diff --git a/src/main/java/com/uber/cadence/internal/tracing/TracingPropagator.java b/src/main/java/com/uber/cadence/internal/tracing/TracingPropagator.java index e13e65f41..d3800f995 100644 --- a/src/main/java/com/uber/cadence/internal/tracing/TracingPropagator.java +++ b/src/main/java/com/uber/cadence/internal/tracing/TracingPropagator.java @@ -30,7 +30,6 @@ import io.opentracing.noop.NoopSpan; import io.opentracing.propagation.*; import io.opentracing.propagation.Format; -import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; @@ -83,15 +82,19 @@ public Span spanForExecuteActivity(PollForActivityTaskResponse task) { .addReference( References.FOLLOWS_FROM, parent != NoopSpan.INSTANCE.context() ? parent : null) .withTag( - TAG_WORKFLOW_TYPE, task.isSetWorkflowType() ? task.getWorkflowType().getName() : "null") + TAG_WORKFLOW_TYPE, + task.getWorkflowType() != null ? task.getWorkflowType().getName() : "null") .withTag( TAG_WORKFLOW_ID, - task.isSetWorkflowExecution() ? task.getWorkflowExecution().getWorkflowId() : "null") + task.getWorkflowExecution() != null + ? task.getWorkflowExecution().getWorkflowId() + : "null") .withTag( TAG_WORKFLOW_RUN_ID, - task.isSetWorkflowExecution() ? task.getWorkflowExecution().getRunId() : "null") + task.getWorkflowExecution() != null ? task.getWorkflowExecution().getRunId() : "null") .withTag( - TAG_ACTIVITY_TYPE, task.isSetActivityType() ? task.getActivityType().getName() : "null") + TAG_ACTIVITY_TYPE, + task.getActivityType() != null ? task.getActivityType().getName() : "null") .start(); } @@ -123,7 +126,7 @@ public void inject(Header header) { Map context = getCurrentContext(); context.forEach( (k, v) -> { - header.putToFields(k, ByteBuffer.wrap(v.getBytes())); + header.getFields().put(k, v.getBytes()); }); } @@ -160,9 +163,7 @@ private SpanContext extract(Header header) { Collectors.toMap( Map.Entry::getKey, e -> { - byte[] bytes = new byte[e.getValue().remaining()]; - e.getValue().duplicate().get(bytes); - return new String(bytes); + return new String(e.getValue()); })))); } } diff --git a/src/main/java/com/uber/cadence/internal/worker/ActivityPollTask.java b/src/main/java/com/uber/cadence/internal/worker/ActivityPollTask.java index 533ec9607..594f62138 100644 --- a/src/main/java/com/uber/cadence/internal/worker/ActivityPollTask.java +++ b/src/main/java/com/uber/cadence/internal/worker/ActivityPollTask.java @@ -21,17 +21,11 @@ import static com.uber.cadence.internal.metrics.MetricsTagValue.SERVICE_BUSY; import com.google.common.collect.ImmutableMap; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.PollForActivityTaskRequest; -import com.uber.cadence.PollForActivityTaskResponse; -import com.uber.cadence.ServiceBusyError; -import com.uber.cadence.TaskList; -import com.uber.cadence.TaskListMetadata; +import com.uber.cadence.*; import com.uber.cadence.internal.metrics.MetricsTag; import com.uber.cadence.internal.metrics.MetricsType; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.m3.tally.Stopwatch; -import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,7 +45,7 @@ public ActivityPollTask( } @Override - protected PollForActivityTaskResponse pollTask() throws TException { + protected PollForActivityTaskResponse pollTask() throws CadenceError { options.getMetricsScope().counter(MetricsType.ACTIVITY_POLL_COUNTER).inc(1); Stopwatch sw = options.getMetricsScope().timer(MetricsType.ACTIVITY_POLL_LATENCY).start(); PollForActivityTaskRequest pollRequest = new PollForActivityTaskRequest(); @@ -85,7 +79,7 @@ protected PollForActivityTaskResponse pollTask() throws TException { .counter(MetricsType.ACTIVITY_POLL_TRANSIENT_FAILED_COUNTER) .inc(1); throw e; - } catch (TException e) { + } catch (CadenceError e) { options.getMetricsScope().counter(MetricsType.ACTIVITY_POLL_FAILED_COUNTER).inc(1); throw e; } diff --git a/src/main/java/com/uber/cadence/internal/worker/ActivityPollTaskBase.java b/src/main/java/com/uber/cadence/internal/worker/ActivityPollTaskBase.java index 78b3d2817..bded97746 100644 --- a/src/main/java/com/uber/cadence/internal/worker/ActivityPollTaskBase.java +++ b/src/main/java/com/uber/cadence/internal/worker/ActivityPollTaskBase.java @@ -17,13 +17,13 @@ package com.uber.cadence.internal.worker; +import com.uber.cadence.CadenceError; import com.uber.cadence.PollForActivityTaskResponse; import com.uber.cadence.internal.metrics.MetricsTag; import com.uber.cadence.internal.metrics.MetricsType; import com.uber.m3.tally.Scope; import com.uber.m3.util.Duration; import com.uber.m3.util.ImmutableMap; -import org.apache.thrift.TException; abstract class ActivityPollTaskBase implements Poller.PollTask { @@ -33,7 +33,7 @@ public ActivityPollTaskBase(SingleWorkerOptions options) { this.options = options; } - public PollForActivityTaskResponse poll() throws TException { + public PollForActivityTaskResponse poll() throws CadenceError { PollForActivityTaskResponse result = pollTask(); if (result == null || result.getTaskToken() == null) { @@ -58,5 +58,5 @@ public PollForActivityTaskResponse poll() throws TException { return result; } - protected abstract PollForActivityTaskResponse pollTask() throws TException; + protected abstract PollForActivityTaskResponse pollTask() throws CadenceError; } diff --git a/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java b/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java index 767f63ea1..ecd6287c8 100644 --- a/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java +++ b/src/main/java/com/uber/cadence/internal/worker/ActivityWorker.java @@ -17,12 +17,7 @@ package com.uber.cadence.internal.worker; -import com.uber.cadence.Header; -import com.uber.cadence.PollForActivityTaskResponse; -import com.uber.cadence.RespondActivityTaskCanceledRequest; -import com.uber.cadence.RespondActivityTaskCompletedRequest; -import com.uber.cadence.RespondActivityTaskFailedRequest; -import com.uber.cadence.WorkflowExecution; +import com.uber.cadence.*; import com.uber.cadence.context.ContextPropagator; import com.uber.cadence.internal.common.RpcRetryer; import com.uber.cadence.internal.logging.LoggerTag; @@ -44,7 +39,6 @@ import java.util.Objects; import java.util.concurrent.CancellationException; import java.util.concurrent.TimeUnit; -import org.apache.thrift.TException; import org.slf4j.MDC; public class ActivityWorker extends SuspendableWorkerBase { @@ -196,7 +190,7 @@ void propagateContext(PollForActivityTaskResponse response) { .getFields() .forEach( (k, v) -> { - headerData.put(k, org.apache.thrift.TBaseHelper.byteBufferToByteArray(v)); + headerData.put(k, v); }); for (ContextPropagator propagator : options.getContextPropagators()) { @@ -227,7 +221,7 @@ public Throwable wrapFailure(PollForActivityTaskResponse task, Throwable failure private void sendReply( PollForActivityTaskResponse task, ActivityTaskHandler.Result response, Scope metricsScope) - throws TException { + throws CadenceError { RespondActivityTaskCompletedRequest taskCompleted = response.getTaskCompleted(); if (taskCompleted != null) { taskCompleted.setTaskToken(task.getTaskToken()); diff --git a/src/main/java/com/uber/cadence/internal/worker/LocalActivityPollTask.java b/src/main/java/com/uber/cadence/internal/worker/LocalActivityPollTask.java index 144bff29a..018e86c70 100644 --- a/src/main/java/com/uber/cadence/internal/worker/LocalActivityPollTask.java +++ b/src/main/java/com/uber/cadence/internal/worker/LocalActivityPollTask.java @@ -17,12 +17,12 @@ package com.uber.cadence.internal.worker; +import com.uber.cadence.CadenceError; import java.time.Duration; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit; import java.util.function.BiFunction; -import org.apache.thrift.TException; final class LocalActivityPollTask implements Poller.PollTask, @@ -32,7 +32,7 @@ final class LocalActivityPollTask new ArrayBlockingQueue<>(QUEUE_SIZE); @Override - public LocalActivityWorker.Task poll() throws TException { + public LocalActivityWorker.Task poll() throws CadenceError { try { return pendingTasks.take(); } catch (InterruptedException e) { diff --git a/src/main/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTask.java b/src/main/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTask.java index cc57f3f19..bd9657cc7 100644 --- a/src/main/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTask.java +++ b/src/main/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTask.java @@ -17,12 +17,12 @@ package com.uber.cadence.internal.worker; +import com.uber.cadence.CadenceError; import com.uber.cadence.PollForActivityTaskResponse; import com.uber.cadence.internal.metrics.MetricsType; import com.uber.cadence.internal.worker.LocallyDispatchedActivityWorker.Task; import java.util.concurrent.SynchronousQueue; import java.util.function.Function; -import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +38,7 @@ public LocallyDispatchedActivityPollTask(SingleWorkerOptions options) { } @Override - protected PollForActivityTaskResponse pollTask() throws TException { + protected PollForActivityTaskResponse pollTask() throws CadenceError { Task task; try { task = pendingTasks.take(); @@ -61,22 +61,23 @@ protected PollForActivityTaskResponse pollTask() throws TException { .getMetricsScope() .counter(MetricsType.LOCALLY_DISPATCHED_ACTIVITY_POLL_SUCCEED_COUNTER) .inc(1); - PollForActivityTaskResponse result = new PollForActivityTaskResponse(); - result.activityId = task.activityId; - result.activityType = task.activityType; - result.header = task.header; - result.input = task.input; - result.workflowExecution = task.workflowExecution; - result.scheduledTimestampOfThisAttempt = task.scheduledTimestampOfThisAttempt; - result.scheduledTimestamp = task.scheduledTimestamp; - result.scheduleToCloseTimeoutSeconds = task.scheduleToCloseTimeoutSeconds; - result.startedTimestamp = task.startedTimestamp; - result.startToCloseTimeoutSeconds = task.startToCloseTimeoutSeconds; - result.heartbeatTimeoutSeconds = task.heartbeatTimeoutSeconds; - result.taskToken = task.taskToken; - result.workflowType = task.workflowType; - result.workflowDomain = task.workflowDomain; - result.attempt = 0; + PollForActivityTaskResponse result = + new PollForActivityTaskResponse() + .setActivityId(task.activityId) + .setActivityType(task.activityType) + .setHeader(task.header) + .setInput(task.input.array()) + .setWorkflowExecution(task.workflowExecution) + .setScheduledTimestampOfThisAttempt(task.scheduledTimestampOfThisAttempt) + .setScheduledTimestamp(task.scheduledTimestamp) + .setScheduleToCloseTimeoutSeconds(task.scheduleToCloseTimeoutSeconds) + .setStartedTimestamp(task.startedTimestamp) + .setStartToCloseTimeoutSeconds(task.startToCloseTimeoutSeconds) + .setHeartbeatTimeoutSeconds(task.heartbeatTimeoutSeconds) + .setTaskToken(task.taskToken.array()) + .setWorkflowType(task.workflowType) + .setWorkflowDomain(task.workflowDomain) + .setAttempt(0); return result; } diff --git a/src/main/java/com/uber/cadence/internal/worker/PollDecisionTaskDispatcher.java b/src/main/java/com/uber/cadence/internal/worker/PollDecisionTaskDispatcher.java index 38c94e225..258385876 100644 --- a/src/main/java/com/uber/cadence/internal/worker/PollDecisionTaskDispatcher.java +++ b/src/main/java/com/uber/cadence/internal/worker/PollDecisionTaskDispatcher.java @@ -65,7 +65,7 @@ public void process(PollForDecisionTaskResponse t) { subscribers.get(taskListName).accept(t); } else { RespondDecisionTaskFailedRequest request = new RespondDecisionTaskFailedRequest(); - request.setTaskToken(t.taskToken); + request.setTaskToken(t.getTaskToken()); request.setCause(DecisionTaskFailedCause.RESET_STICKY_TASKLIST); String message = String.format( diff --git a/src/main/java/com/uber/cadence/internal/worker/Poller.java b/src/main/java/com/uber/cadence/internal/worker/Poller.java index 5a81abcb5..3ef91f31c 100644 --- a/src/main/java/com/uber/cadence/internal/worker/Poller.java +++ b/src/main/java/com/uber/cadence/internal/worker/Poller.java @@ -17,6 +17,8 @@ package com.uber.cadence.internal.worker; +import com.uber.cadence.CadenceError; +import com.uber.cadence.TimeoutError; import com.uber.cadence.internal.common.BackoffThrottler; import com.uber.cadence.internal.common.InternalUtils; import com.uber.cadence.internal.metrics.MetricsType; @@ -30,15 +32,13 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; -import org.apache.thrift.TException; -import org.apache.thrift.transport.TTransportException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class Poller implements SuspendableWorker { public interface PollTask { - TT poll() throws TException; + TT poll() throws CadenceError; } interface ThrowingRunnable { @@ -60,12 +60,9 @@ interface ThrowingRunnable { private Thread.UncaughtExceptionHandler uncaughtExceptionHandler = (t, e) -> { - if (e instanceof TTransportException) { - TTransportException te = (TTransportException) e; - if (te.getType() == TTransportException.TIMED_OUT) { - log.warn("Failure in thread " + t.getName(), e); - return; - } + if (e instanceof TimeoutError) { + log.warn("Failure in thread " + t.getName(), e); + return; } log.error("Failure in thread " + t.getName(), e); diff --git a/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java b/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java index 0b98bd6ba..40cec1bed 100644 --- a/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java +++ b/src/main/java/com/uber/cadence/internal/worker/WorkflowPollTask.java @@ -20,12 +20,7 @@ import static com.uber.cadence.internal.metrics.MetricsTagValue.INTERNAL_SERVICE_ERROR; import static com.uber.cadence.internal.metrics.MetricsTagValue.SERVICE_BUSY; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.PollForDecisionTaskRequest; -import com.uber.cadence.PollForDecisionTaskResponse; -import com.uber.cadence.ServiceBusyError; -import com.uber.cadence.TaskList; -import com.uber.cadence.TaskListKind; +import com.uber.cadence.*; import com.uber.cadence.common.BinaryChecksum; import com.uber.cadence.internal.metrics.MetricsTag; import com.uber.cadence.internal.metrics.MetricsType; @@ -35,7 +30,6 @@ import com.uber.m3.util.Duration; import com.uber.m3.util.ImmutableMap; import java.util.Objects; -import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,7 +59,7 @@ final class WorkflowPollTask implements Poller.PollTask respNew != null // execution already in new || respOld == null // execution not exist in new and not exist in old - || (respOld.isSetWorkflowExecutionInfo() - && respOld - .getWorkflowExecutionInfo() - .isSetCloseStatus()) // execution not exist in new and execution is + || (respOld.getWorkflowExecutionInfo() != null + && respOld.getWorkflowExecutionInfo().getCloseStatus() + != null) // execution not exist in new and execution is // closed in old ) .get(); } catch (CompletionException e) { - throw e.getCause() instanceof TException - ? (TException) e.getCause() - : new TException("unknown error: " + e.getMessage()); + throw e.getCause() instanceof CadenceError + ? (CadenceError) e.getCause() + : new CadenceError("unknown error: " + e.getMessage()); } catch (Exception e) { - throw new TException("Unknown error: " + e.getMessage()); + throw new CadenceError("Unknown error: " + e.getMessage()); } } diff --git a/src/main/java/com/uber/cadence/migration/MigrationInterceptor.java b/src/main/java/com/uber/cadence/migration/MigrationInterceptor.java index fc0c0f922..abb94093c 100644 --- a/src/main/java/com/uber/cadence/migration/MigrationInterceptor.java +++ b/src/main/java/com/uber/cadence/migration/MigrationInterceptor.java @@ -101,7 +101,8 @@ public byte[] executeWorkflow( new StartWorkflowExecutionRequest() .setDomain(domainNew) .setWorkflowId(workflowInfo.getWorkflowId()) - .setTaskList(new TaskList().setName(startedEventAttributes.taskList.getName())) + .setTaskList( + new TaskList().setName(startedEventAttributes.getTaskList().getName())) .setInput(input.getInput()) .setWorkflowType(new WorkflowType().setName(input.getWorkflowType().getName())) .setWorkflowIdReusePolicy(WorkflowIdReusePolicy.TerminateIfRunning) @@ -174,7 +175,8 @@ public void continueAsNew( new StartWorkflowExecutionRequest() .setDomain(domainNew) .setWorkflowId(workflowInfo.getWorkflowId()) - .setTaskList(new TaskList().setName(startedEventAttributes.taskList.getName())) + .setTaskList( + new TaskList().setName(startedEventAttributes.getTaskList().getName())) .setInput(workflowInfo.getDataConverter().toData(args)) .setWorkflowType( new WorkflowType() @@ -203,12 +205,12 @@ public void continueAsNew( } private boolean isChildWorkflow(WorkflowExecutionStartedEventAttributes startedEventAttributes) { - return startedEventAttributes.isSetParentWorkflowExecution() - && !startedEventAttributes.getParentWorkflowExecution().isSetWorkflowId(); + return startedEventAttributes.getParentWorkflowExecution() != null + && startedEventAttributes.getParentWorkflowExecution().getWorkflowId() != null; } private boolean isCronSchedule(WorkflowExecutionStartedEventAttributes startedEventAttributes) { - return !Strings.isNullOrEmpty(startedEventAttributes.cronSchedule); + return !Strings.isNullOrEmpty(startedEventAttributes.getCronSchedule()); } private void cancelCurrentWorkflow() { diff --git a/src/main/java/com/uber/cadence/serviceclient/AsyncMethodCallback.java b/src/main/java/com/uber/cadence/serviceclient/AsyncMethodCallback.java new file mode 100644 index 000000000..11f4842eb --- /dev/null +++ b/src/main/java/com/uber/cadence/serviceclient/AsyncMethodCallback.java @@ -0,0 +1,33 @@ +/** + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + *

    Modifications copyright (C) 2017 Uber Technologies, Inc. + * + *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file + * except in compliance with the License. A copy of the License is located at + * + *

    http://aws.amazon.com/apache2.0 + * + *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package com.uber.cadence.serviceclient; + +public interface AsyncMethodCallback { + /** + * Called when the remote service has completed processing the request and the response has been + * fully received. + * + * @param response + */ + public void onComplete(T response); + + /** + * Called when there is an unexpected expection. Exception is wrapped in {@link + * com.uber.cadence.CadenceError}. + * + * @param exception + */ + public void onError(Exception exception); +} diff --git a/src/main/java/com/uber/cadence/serviceclient/IWorkflowService.java b/src/main/java/com/uber/cadence/serviceclient/IWorkflowService.java index ae3a54e26..fb0e24882 100644 --- a/src/main/java/com/uber/cadence/serviceclient/IWorkflowService.java +++ b/src/main/java/com/uber/cadence/serviceclient/IWorkflowService.java @@ -17,18 +17,10 @@ package com.uber.cadence.serviceclient; -import com.uber.cadence.GetWorkflowExecutionHistoryRequest; -import com.uber.cadence.GetWorkflowExecutionHistoryResponse; -import com.uber.cadence.SignalWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncRequest; -import com.uber.cadence.StartWorkflowExecutionRequest; -import com.uber.cadence.WorkflowService.AsyncIface; -import com.uber.cadence.WorkflowService.Iface; +import com.uber.cadence.*; import java.util.concurrent.CompletableFuture; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -public interface IWorkflowService extends Iface, AsyncIface { +public interface IWorkflowService { void close(); ClientOptions getOptions(); @@ -40,13 +32,13 @@ public interface IWorkflowService extends Iface, AsyncIface { * @param startRequest * @param resultHandler * @param timeoutInMillis - * @throws TException + * @throws CadenceError */ void StartWorkflowExecutionWithTimeout( StartWorkflowExecutionRequest startRequest, - AsyncMethodCallback resultHandler, + AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException; + throws CadenceError; /** * StartWorkflowExecutionAsyncWithTimeout start workflow same as StartWorkflowExecutionAsync but @@ -55,13 +47,13 @@ void StartWorkflowExecutionWithTimeout( * @param startAsyncRequest * @param resultHandler * @param timeoutInMillis - * @throws TException + * @throws CadenceError */ void StartWorkflowExecutionAsyncWithTimeout( StartWorkflowExecutionAsyncRequest startAsyncRequest, - AsyncMethodCallback resultHandler, + AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException; + throws CadenceError; /** * GetWorkflowExecutionHistoryWithTimeout get workflow history same as GetWorkflowExecutionHistory @@ -70,10 +62,10 @@ void StartWorkflowExecutionAsyncWithTimeout( * @param getRequest * @param timeoutInMillis * @return GetWorkflowExecutionHistoryResponse - * @throws TException + * @throws CadenceError */ GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( - GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws TException; + GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws CadenceError; /** * GetWorkflowExecutionHistoryWithTimeout get workflow history asynchronously same as @@ -82,13 +74,13 @@ GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( * @param getRequest * @param resultHandler * @param timeoutInMillis - * @throws org.apache.thrift.TException + * @throws CadenceError */ void GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, - AsyncMethodCallback resultHandler, + AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException; + throws CadenceError; /** * SignalWorkflowExecutionWithTimeout signal workflow same as SignalWorkflowExecution but with @@ -97,17 +89,731 @@ void GetWorkflowExecutionHistoryWithTimeout( * @param signalRequest * @param resultHandler * @param timeoutInMillis - * @throws TException + * @throws CadenceError */ void SignalWorkflowExecutionWithTimeout( SignalWorkflowExecutionRequest signalRequest, - AsyncMethodCallback resultHandler, + AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException; + throws CadenceError; /** * Checks if we have a valid connection to the Cadence cluster, and potentially resets the peer * list */ CompletableFuture isHealthy(); + + // sync methods + + /** + * RegisterDomain creates a new domain which can be used as a container for all resources. Domain + * is a top level entity within Cadence, used as a container for all resources like workflow + * executions, tasklists, etc. Domain acts as a sandbox and provides isolation for all resources + * within the domain. All resources belongs to exactly one domain. + * + * @param registerRequest + */ + void RegisterDomain(RegisterDomainRequest registerRequest) + throws BadRequestError, DomainAlreadyExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * DescribeDomain returns the information and configuration for a registered domain. + * + * @param describeRequest + */ + DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( + DiagnoseWorkflowExecutionRequest diagnoseRequest) + throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError; + + /** + * ListDomains returns the information and configuration for all domains. + * + * @param listRequest + */ + ListDomainsResponse ListDomains(ListDomainsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * UpdateDomain is used to update the information and configuration for a registered domain. + * + * @param updateRequest + */ + UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + ClientVersionNotSupportedError, CadenceError; + + /** + * DeprecateDomain us used to update status of a registered domain to DEPRECATED. Once the domain + * is deprecated it cannot be used to start new workflow executions. Existing workflow executions + * will continue to run on deprecated domains. + * + * @param deprecateRequest + */ + void DeprecateDomain(DeprecateDomainRequest deprecateRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + ClientVersionNotSupportedError, CadenceError; + + /** + * RestartWorkflowExecution restarts a previous workflow If the workflow is currently running it + * will terminate and restart + * + * @param restartRequest + */ + RestartWorkflowExecutionResponse RestartWorkflowExecution( + RestartWorkflowExecutionRequest restartRequest) + throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, + EntityNotExistsError, ClientVersionNotSupportedError, CadenceError; + + /** + * StartWorkflowExecution starts a new long running workflow instance. It will create the instance + * with 'WorkflowExecutionStarted' event in history and also schedule the first DecisionTask for + * the worker to make the first decision for this instance. It will return + * 'WorkflowExecutionAlreadyStartedError', if an instance already exists with same workflowId. + * + * @param startRequest + */ + StartWorkflowExecutionResponse StartWorkflowExecution(StartWorkflowExecutionRequest startRequest) + throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, + DomainNotActiveError, LimitExceededError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError; + + /** + * StartWorkflowExecutionAsync starts a new long running workflow instance asynchronously. It will + * push a StartWorkflowExecutionRequest to a queue and immediately return a response. The request + * will be processed by a separate consumer eventually. + * + * @param startRequest + */ + StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( + StartWorkflowExecutionAsyncRequest startRequest) + throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, + DomainNotActiveError, LimitExceededError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError; + + /** + * Returns the history of specified workflow execution. It fails with 'EntityNotExistError' if + * speficied workflow execution in unknown to the service. + * + * @param getRequest + */ + GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( + GetWorkflowExecutionHistoryRequest getRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * PollForDecisionTask is called by application worker to process DecisionTask from a specific + * taskList. A DecisionTask is dispatched to callers for active workflow executions, with pending + * decisions. Application is then expected to call 'RespondDecisionTaskCompleted' API when it is + * done processing the DecisionTask. It will also create a 'DecisionTaskStarted' event in the + * history for that session before handing off DecisionTask to application worker. + * + * @param pollRequest + */ + PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest) + throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError; + + /** + * RespondDecisionTaskCompleted is called by application worker to complete a DecisionTask handed + * as a result of 'PollForDecisionTask' API call. Completing a DecisionTask will result in new + * events for the workflow execution and potentially new ActivityTask being created for + * corresponding decisions. It will also create a DecisionTaskCompleted event in the history for + * that session. Use the 'taskToken' provided as response of PollForDecisionTask API call for + * completing the DecisionTask. The response could contain a new decision task if there is one or + * if the request asking for one. + * + * @param completeRequest + */ + RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( + RespondDecisionTaskCompletedRequest completeRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RespondDecisionTaskFailed is called by application worker to indicate failure. This results in + * DecisionTaskFailedEvent written to the history and a new DecisionTask created. This API can be + * used by client to either clear sticky tasklist or report any panics during DecisionTask + * processing. Cadence will only append first DecisionTaskFailed event to the history of workflow + * execution for consecutive failures. + * + * @param failedRequest + */ + void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * PollForActivityTask is called by application worker to process ActivityTask from a specific + * taskList. ActivityTask is dispatched to callers whenever a ScheduleTask decision is made for a + * workflow execution. Application is expected to call 'RespondActivityTaskCompleted' or + * 'RespondActivityTaskFailed' once it is done processing the task. Application also needs to call + * 'RecordActivityTaskHeartbeat' API within 'heartbeatTimeoutSeconds' interval to prevent the task + * from getting timed out. An event 'ActivityTaskStarted' event is also written to workflow + * execution history before the ActivityTask is dispatched to application worker. + * + * @param pollRequest + */ + PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest) + throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError; + + /** + * RecordActivityTaskHeartbeat is called by application worker while it is processing an + * ActivityTask. If worker fails to heartbeat within 'heartbeatTimeoutSeconds' interval for the + * ActivityTask, then it will be marked as timedout and 'ActivityTaskTimedOut' event will be + * written to the workflow history. Calling 'RecordActivityTaskHeartbeat' will fail with + * 'EntityNotExistsError' in such situations. Use the 'taskToken' provided as response of + * PollForActivityTask API call for heartbeating. + * + * @param heartbeatRequest + */ + RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( + RecordActivityTaskHeartbeatRequest heartbeatRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RecordActivityTaskHeartbeatByID is called by application worker while it is processing an + * ActivityTask. If worker fails to heartbeat within 'heartbeatTimeoutSeconds' interval for the + * ActivityTask, then it will be marked as timedout and 'ActivityTaskTimedOut' event will be + * written to the workflow history. Calling 'RecordActivityTaskHeartbeatByID' will fail with + * 'EntityNotExistsError' in such situations. Instead of using 'taskToken' like in + * RecordActivityTaskHeartbeat, use Domain, WorkflowID and ActivityID + * + * @param heartbeatRequest + */ + RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( + RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RespondActivityTaskCompleted is called by application worker when it is done processing an + * ActivityTask. It will result in a new 'ActivityTaskCompleted' event being written to the + * workflow history and a new DecisionTask created for the workflow so new decisions could be + * made. Use the 'taskToken' provided as response of PollForActivityTask API call for completion. + * It fails with 'EntityNotExistsError' if the taskToken is not valid anymore due to activity + * timeout. + * + * @param completeRequest + */ + void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RespondActivityTaskCompletedByID is called by application worker when it is done processing an + * ActivityTask. It will result in a new 'ActivityTaskCompleted' event being written to the + * workflow history and a new DecisionTask created for the workflow so new decisions could be + * made. Similar to RespondActivityTaskCompleted but use Domain, WorkflowID and ActivityID instead + * of 'taskToken' for completion. It fails with 'EntityNotExistsError' if the these IDs are not + * valid anymore due to activity timeout. + * + * @param completeRequest + */ + void RespondActivityTaskCompletedByID(RespondActivityTaskCompletedByIDRequest completeRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RespondActivityTaskFailed is called by application worker when it is done processing an + * ActivityTask. It will result in a new 'ActivityTaskFailed' event being written to the workflow + * history and a new DecisionTask created for the workflow instance so new decisions could be + * made. Use the 'taskToken' provided as response of PollForActivityTask API call for completion. + * It fails with 'EntityNotExistsError' if the taskToken is not valid anymore due to activity + * timeout. + * + * @param failRequest + */ + void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RespondActivityTaskFailedByID is called by application worker when it is done processing an + * ActivityTask. It will result in a new 'ActivityTaskFailed' event being written to the workflow + * history and a new DecisionTask created for the workflow instance so new decisions could be + * made. Similar to RespondActivityTaskFailed but use Domain, WorkflowID and ActivityID instead of + * 'taskToken' for completion. It fails with 'EntityNotExistsError' if the these IDs are not valid + * anymore due to activity timeout. + * + * @param failRequest + */ + void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RespondActivityTaskCanceled is called by application worker when it is successfully canceled an + * ActivityTask. It will result in a new 'ActivityTaskCanceled' event being written to the + * workflow history and a new DecisionTask created for the workflow instance so new decisions + * could be made. Use the 'taskToken' provided as response of PollForActivityTask API call for + * completion. It fails with 'EntityNotExistsError' if the taskToken is not valid anymore due to + * activity timeout. + * + * @param canceledRequest + */ + void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RespondActivityTaskCanceledByID is called by application worker when it is successfully + * canceled an ActivityTask. It will result in a new 'ActivityTaskCanceled' event being written to + * the workflow history and a new DecisionTask created for the workflow instance so new decisions + * could be made. Similar to RespondActivityTaskCanceled but use Domain, WorkflowID and ActivityID + * instead of 'taskToken' for completion. It fails with 'EntityNotExistsError' if the these IDs + * are not valid anymore due to activity timeout. + * + * @param canceledRequest + */ + void RespondActivityTaskCanceledByID(RespondActivityTaskCanceledByIDRequest canceledRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError; + + /** + * RequestCancelWorkflowExecution is called by application worker when it wants to request + * cancellation of a workflow instance. It will result in a new 'WorkflowExecutionCancelRequested' + * event being written to the workflow history and a new DecisionTask created for the workflow + * instance so new decisions could be made. It fails with 'EntityNotExistsError' if the workflow + * is not valid anymore due to completion or doesn't exist. + * + * @param cancelRequest + */ + void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) + throws BadRequestError, EntityNotExistsError, CancellationAlreadyRequestedError, + ServiceBusyError, DomainNotActiveError, LimitExceededError, + ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, CadenceError; + + /** + * SignalWorkflowExecution is used to send a signal event to running workflow execution. This + * results in WorkflowExecutionSignaled event recorded in the history and a decision task being + * created for the execution. + * + * @param signalRequest + */ + void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, ClientVersionNotSupportedError, + WorkflowExecutionAlreadyCompletedError, CadenceError; + + /** + * SignalWithStartWorkflowExecution is used to ensure sending signal to a workflow. If the + * workflow is running, this results in WorkflowExecutionSignaled event being recorded in the + * history and a decision task being created for the execution. If the workflow is not running or + * not found, this results in WorkflowExecutionStarted and WorkflowExecutionSignaled events being + * recorded in history, and a decision task being created for the execution + * + * @param signalWithStartRequest + */ + StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( + SignalWithStartWorkflowExecutionRequest signalWithStartRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, WorkflowExecutionAlreadyStartedError, ClientVersionNotSupportedError, + CadenceError; + + /** + * SignalWithStartWorkflowExecutionAsync is used to ensure sending signal to a workflow + * asynchronously. It will push a SignalWithStartWorkflowExecutionRequest to a queue and + * immediately return a response. The request will be processed by a separate consumer eventually. + * + * @param signalWithStartRequest + */ + SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExecutionAsync( + SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) + throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, + DomainNotActiveError, LimitExceededError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError; + + /** + * ResetWorkflowExecution reset an existing workflow execution to DecisionTaskCompleted + * event(exclusive). And it will immediately terminating the current execution instance. + * + * @param resetRequest + */ + ResetWorkflowExecutionResponse ResetWorkflowExecution(ResetWorkflowExecutionRequest resetRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, ClientVersionNotSupportedError, CadenceError; + + /** + * TerminateWorkflowExecution terminates an existing workflow execution by recording + * WorkflowExecutionTerminated event in the history and immediately terminating the execution + * instance. + * + * @param terminateRequest + */ + void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, ClientVersionNotSupportedError, + WorkflowExecutionAlreadyCompletedError, CadenceError; + + /** + * ListOpenWorkflowExecutions is a visibility API to list the open executions in a specific + * domain. + * + * @param listRequest + */ + ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( + ListOpenWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, LimitExceededError, + ClientVersionNotSupportedError, CadenceError; + + /** + * ListClosedWorkflowExecutions is a visibility API to list the closed executions in a specific + * domain. + * + * @param listRequest + */ + ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( + ListClosedWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * ListWorkflowExecutions is a visibility API to list workflow executions in a specific domain. + * + * @param listRequest + */ + ListWorkflowExecutionsResponse ListWorkflowExecutions(ListWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * ListArchivedWorkflowExecutions is a visibility API to list archived workflow executions in a + * specific domain. + * + * @param listRequest + */ + ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( + ListArchivedWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * ScanWorkflowExecutions is a visibility API to list large amount of workflow executions in a + * specific domain without order. + * + * @param listRequest + */ + ListWorkflowExecutionsResponse ScanWorkflowExecutions(ListWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * CountWorkflowExecutions is a visibility API to count of workflow executions in a specific + * domain. + * + * @param countRequest + */ + CountWorkflowExecutionsResponse CountWorkflowExecutions( + CountWorkflowExecutionsRequest countRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * GetSearchAttributes is a visibility API to get all legal keys that could be used in list APIs + */ + GetSearchAttributesResponse GetSearchAttributes() + throws ServiceBusyError, ClientVersionNotSupportedError, CadenceError; + + /** + * RespondQueryTaskCompleted is called by application worker to complete a QueryTask (which is a + * DecisionTask for query) as a result of 'PollForDecisionTask' API call. Completing a QueryTask + * will unblock the client call to 'QueryWorkflow' API and return the query result to client as a + * response to 'QueryWorkflow' API call. + * + * @param completeRequest + */ + void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError; + + /** + * Reset the sticky tasklist related information in mutable state of a given workflow. Things + * cleared are: 1. StickyTaskList 2. StickyScheduleToStartTimeout 3. ClientLibraryVersion 4. + * ClientFeatureVersion 5. ClientImpl + * + * @param resetRequest + */ + ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + DomainNotActiveError, ClientVersionNotSupportedError, + WorkflowExecutionAlreadyCompletedError, CadenceError; + + /** + * QueryWorkflow returns query result for a specified workflow execution + * + * @param queryRequest + */ + QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) + throws BadRequestError, EntityNotExistsError, QueryFailedError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, CadenceError; + + /** + * DescribeWorkflowExecution returns information about the specified workflow execution. + * + * @param describeRequest + */ + DescribeWorkflowExecutionResponse DescribeWorkflowExecution( + DescribeWorkflowExecutionRequest describeRequest) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * DescribeTaskList returns information about the target tasklist, right now this API returns the + * pollers which polled this tasklist in last few minutes. + * + * @param request + */ + DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** GetClusterInfo returns information about cadence cluster */ + ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, CadenceError; + + /** + * GetTaskListsByDomain returns the list of all the task lists for a domainName. + * + * @param request + */ + GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError; + + /** + * ReapplyEvents applies stale events to the current workflow and current run + * + * @param request + */ + ListTaskListPartitionsResponse ListTaskListPartitions(ListTaskListPartitionsRequest request) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + CadenceError; + + /** + * RefreshWorkflowTasks refreshes all tasks of a workflow + * + * @param request + */ + void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request) + throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, + CadenceError; + + // Async methods + + void RegisterDomain( + RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void DescribeDomain( + DescribeDomainRequest describeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void DiagnoseWorkflowExecution( + DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void ListDomains( + ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void UpdateDomain( + UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void DeprecateDomain( + DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void RestartWorkflowExecution( + RestartWorkflowExecutionRequest restartRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void StartWorkflowExecution( + StartWorkflowExecutionRequest startRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void StartWorkflowExecutionAsync( + StartWorkflowExecutionAsyncRequest startRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void GetWorkflowExecutionHistory( + GetWorkflowExecutionHistoryRequest getRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void PollForDecisionTask( + PollForDecisionTaskRequest pollRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondDecisionTaskCompleted( + RespondDecisionTaskCompletedRequest completeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondDecisionTaskFailed( + RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void PollForActivityTask( + PollForActivityTaskRequest pollRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RecordActivityTaskHeartbeat( + RecordActivityTaskHeartbeatRequest heartbeatRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RecordActivityTaskHeartbeatByID( + RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondActivityTaskCompleted( + RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondActivityTaskCompletedByID( + RespondActivityTaskCompletedByIDRequest completeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondActivityTaskFailed( + RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondActivityTaskFailedByID( + RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondActivityTaskCanceled( + RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondActivityTaskCanceledByID( + RespondActivityTaskCanceledByIDRequest canceledRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RequestCancelWorkflowExecution( + RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void SignalWorkflowExecution( + SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void SignalWithStartWorkflowExecution( + SignalWithStartWorkflowExecutionRequest signalWithStartRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void SignalWithStartWorkflowExecutionAsync( + SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void ResetWorkflowExecution( + ResetWorkflowExecutionRequest resetRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void TerminateWorkflowExecution( + TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void ListOpenWorkflowExecutions( + ListOpenWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void ListClosedWorkflowExecutions( + ListClosedWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void ListWorkflowExecutions( + ListWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void ListArchivedWorkflowExecutions( + ListArchivedWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void ScanWorkflowExecutions( + ListWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void CountWorkflowExecutions( + CountWorkflowExecutionsRequest countRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void GetSearchAttributes(AsyncMethodCallback resultHandler) + throws CadenceError; + + void RespondQueryTaskCompleted( + RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void ResetStickyTaskList( + ResetStickyTaskListRequest resetRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void QueryWorkflow( + QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) + throws CadenceError; + + void DescribeWorkflowExecution( + DescribeWorkflowExecutionRequest describeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void DescribeTaskList( + DescribeTaskListRequest request, AsyncMethodCallback resultHandler) + throws CadenceError; + + void GetClusterInfo(AsyncMethodCallback resultHandler) throws CadenceError; + + void GetTaskListsByDomain( + GetTaskListsByDomainRequest request, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void ListTaskListPartitions( + ListTaskListPartitionsRequest request, + AsyncMethodCallback resultHandler) + throws CadenceError; + + void RefreshWorkflowTasks( + RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) + throws CadenceError; } diff --git a/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java b/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java index 7b1ce458d..d5b9fe770 100644 --- a/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java +++ b/src/main/java/com/uber/cadence/serviceclient/IWorkflowServiceBase.java @@ -19,8 +19,6 @@ import com.uber.cadence.*; import java.util.concurrent.CompletableFuture; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; public class IWorkflowServiceBase implements IWorkflowService { @@ -32,14 +30,14 @@ public ClientOptions getOptions() { @Override public void RegisterDomain(RegisterDomainRequest registerRequest) throws BadRequestError, DomainAlreadyExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -47,28 +45,28 @@ public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeReque public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest) throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); } @Override public ListDomainsResponse ListDomains(ListDomainsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -76,7 +74,7 @@ public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) public RestartWorkflowExecutionResponse RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest) throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, - EntityNotExistsError, ClientVersionNotSupportedError, TException { + EntityNotExistsError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -85,7 +83,7 @@ public StartWorkflowExecutionResponse StartWorkflowExecution( StartWorkflowExecutionRequest startRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -94,7 +92,7 @@ public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -102,14 +100,14 @@ public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest) throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, - DomainNotActiveError, ClientVersionNotSupportedError, TException { + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -118,7 +116,7 @@ public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest completeRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -126,14 +124,14 @@ public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest) throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, - DomainNotActiveError, ClientVersionNotSupportedError, TException { + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -142,7 +140,7 @@ public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest heartbeatRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -151,7 +149,7 @@ public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -159,7 +157,7 @@ public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -168,7 +166,7 @@ public void RespondActivityTaskCompletedByID( RespondActivityTaskCompletedByIDRequest completeRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -176,7 +174,7 @@ public void RespondActivityTaskCompletedByID( public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -184,7 +182,7 @@ public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failReque public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -192,7 +190,7 @@ public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest f public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -201,7 +199,7 @@ public void RespondActivityTaskCanceledByID( RespondActivityTaskCanceledByIDRequest canceledRequest) throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -209,7 +207,7 @@ public void RespondActivityTaskCanceledByID( public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) throws BadRequestError, EntityNotExistsError, CancellationAlreadyRequestedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, - ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, TException { + ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -217,7 +215,7 @@ public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest public void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, LimitExceededError, ClientVersionNotSupportedError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -226,7 +224,7 @@ public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( SignalWithStartWorkflowExecutionRequest signalWithStartRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, LimitExceededError, WorkflowExecutionAlreadyStartedError, ClientVersionNotSupportedError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -235,7 +233,7 @@ public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExec SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, DomainNotActiveError, LimitExceededError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -243,7 +241,7 @@ public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExec public ResetWorkflowExecutionResponse ResetWorkflowExecution( ResetWorkflowExecutionRequest resetRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, - LimitExceededError, ClientVersionNotSupportedError, TException { + LimitExceededError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -251,7 +249,7 @@ public ResetWorkflowExecutionResponse ResetWorkflowExecution( public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, LimitExceededError, ClientVersionNotSupportedError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -259,7 +257,7 @@ public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest termina public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, LimitExceededError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -267,7 +265,7 @@ public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -275,7 +273,7 @@ public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( public ListWorkflowExecutionsResponse ListWorkflowExecutions( ListWorkflowExecutionsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -283,7 +281,7 @@ public ListWorkflowExecutionsResponse ListWorkflowExecutions( public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( ListArchivedWorkflowExecutionsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -291,7 +289,7 @@ public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( public ListWorkflowExecutionsResponse ScanWorkflowExecutions( ListWorkflowExecutionsRequest listRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -299,20 +297,20 @@ public ListWorkflowExecutionsResponse ScanWorkflowExecutions( public CountWorkflowExecutionsResponse CountWorkflowExecutions( CountWorkflowExecutionsRequest countRequest) throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public GetSearchAttributesResponse GetSearchAttributes() - throws ServiceBusyError, ClientVersionNotSupportedError, TException { + throws ServiceBusyError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - DomainNotActiveError, ClientVersionNotSupportedError, TException { + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -320,14 +318,14 @@ public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeR public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, DomainNotActiveError, ClientVersionNotSupportedError, - WorkflowExecutionAlreadyCompletedError, TException { + WorkflowExecutionAlreadyCompletedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) throws BadRequestError, EntityNotExistsError, QueryFailedError, LimitExceededError, - ServiceBusyError, ClientVersionNotSupportedError, TException { + ServiceBusyError, ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -335,26 +333,26 @@ public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) public DescribeWorkflowExecutionResponse DescribeWorkflowExecution( DescribeWorkflowExecutionRequest describeRequest) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override - public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, TException { + public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - ClientVersionNotSupportedError, TException { + ClientVersionNotSupportedError, CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -362,176 +360,180 @@ public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainReq public ListTaskListPartitionsResponse ListTaskListPartitions( ListTaskListPartitionsRequest request) throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request) throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - TException { + CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RegisterDomain( - RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) throws TException { + RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void DescribeDomain( - DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) throws TException { + DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void DiagnoseWorkflowExecution( DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); } @Override public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void UpdateDomain(UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void DeprecateDomain( DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RestartWorkflowExecution( RestartWorkflowExecutionRequest restartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void StartWorkflowExecution( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void StartWorkflowExecutionAsync( StartWorkflowExecutionAsyncRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void GetWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void PollForDecisionTask( - PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { + PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondDecisionTaskFailed( RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void PollForActivityTask( - PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { + PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RecordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RecordActivityTaskHeartbeatByID( RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondActivityTaskCompleted( RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondActivityTaskCompletedByID( RespondActivityTaskCompletedByIDRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondActivityTaskFailed( RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondActivityTaskFailedByID( RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondActivityTaskCanceled( RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondActivityTaskCanceledByID( RespondActivityTaskCanceledByIDRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RequestCancelWorkflowExecution( RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void SignalWorkflowExecution( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -539,7 +541,7 @@ public void SignalWorkflowExecution( public void SignalWithStartWorkflowExecution( SignalWithStartWorkflowExecutionRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -547,124 +549,125 @@ public void SignalWithStartWorkflowExecution( public void SignalWithStartWorkflowExecutionAsync( SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ResetWorkflowExecution( ResetWorkflowExecutionRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void TerminateWorkflowExecution( TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ListOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ListClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ListWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ListArchivedWorkflowExecutions( ListArchivedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ScanWorkflowExecutions( ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void CountWorkflowExecutions( CountWorkflowExecutionsRequest countRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override - public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws TException { + public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RespondQueryTaskCompleted( RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ResetStickyTaskList( ResetStickyTaskListRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void QueryWorkflow(QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void DescribeWorkflowExecution( DescribeWorkflowExecutionRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void DescribeTaskList(DescribeTaskListRequest request, AsyncMethodCallback resultHandler) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override - public void GetClusterInfo(AsyncMethodCallback resultHandler) throws TException { + public void GetClusterInfo(AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void GetTaskListsByDomain( - GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) throws TException { + GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void ListTaskListPartitions( - ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) throws TException { + ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public void RefreshWorkflowTasks( - RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws TException { + RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -678,7 +681,7 @@ public void StartWorkflowExecutionWithTimeout( StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -687,13 +690,13 @@ public void StartWorkflowExecutionAsyncWithTimeout( StartWorkflowExecutionAsyncRequest startAsyncRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @Override public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( - GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws TException { + GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -702,7 +705,7 @@ public void GetWorkflowExecutionHistoryWithTimeout( GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } @@ -711,7 +714,7 @@ public void SignalWorkflowExecutionWithTimeout( SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler, Long timeoutInMillis) - throws TException { + throws CadenceError { throw new UnsupportedOperationException("unimplemented"); } diff --git a/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceGrpc.java b/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceGrpc.java new file mode 100644 index 000000000..66c5f6d22 --- /dev/null +++ b/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceGrpc.java @@ -0,0 +1,1395 @@ +/* + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Modifications copyright (C) 2017 Uber Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.uber.cadence.serviceclient; + +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; +import com.uber.cadence.*; +import com.uber.cadence.internal.compatibility.proto.mappers.*; +import com.uber.cadence.internal.compatibility.proto.serviceclient.IGrpcServiceStubs; +import io.grpc.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; + +public class WorkflowServiceGrpc implements IWorkflowService { + + private final IGrpcServiceStubs grpcServiceStubs; + private final Executor executor = MoreExecutors.directExecutor(); + + public WorkflowServiceGrpc(ClientOptions options) { + this.grpcServiceStubs = IGrpcServiceStubs.newInstance(options); + } + + @Override + public void close() { + grpcServiceStubs.shutdown(); + } + + @Override + public ClientOptions getOptions() { + return grpcServiceStubs.getOptions(); + } + + @Override + public CompletableFuture isHealthy() { + CompletableFuture completableFuture = new CompletableFuture<>(); + Futures.addCallback( + grpcServiceStubs + .metaFutureStub() + .health(com.uber.cadence.api.v1.HealthRequest.getDefaultInstance()), + new FutureCallback() { + @Override + public void onSuccess(com.uber.cadence.api.v1.HealthResponse response) { + completableFuture.complete(response.getOk()); + } + + @Override + public void onFailure(Throwable throwable) { + completableFuture.completeExceptionally(toServiceClientException(throwable)); + } + }, + executor); + return completableFuture; + } + + @Override + public void StartWorkflowExecutionWithTimeout( + StartWorkflowExecutionRequest startRequest, + AsyncMethodCallback resultHandler, + Long timeoutInMillis) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .withDeadlineAfter(timeoutInMillis, TimeUnit.MILLISECONDS) + .startWorkflowExecution(RequestMapper.startWorkflowExecutionRequest(startRequest)), + toFutureCallback(resultHandler, ResponseMapper::startWorkflowExecutionResponse), + executor); + } + + @Override + public void StartWorkflowExecutionAsyncWithTimeout( + StartWorkflowExecutionAsyncRequest startAsyncRequest, + AsyncMethodCallback resultHandler, + Long timeoutInMillis) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .withDeadlineAfter(timeoutInMillis, TimeUnit.MILLISECONDS) + .startWorkflowExecutionAsync( + RequestMapper.startWorkflowExecutionAsyncRequest(startAsyncRequest)), + toFutureCallback(resultHandler, ResponseMapper::startWorkflowExecutionAsyncResponse), + executor); + } + + @Override + public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( + GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws CadenceError { + try { + return ResponseMapper.getWorkflowExecutionHistoryResponse( + grpcServiceStubs + .workflowBlockingStub() + .withDeadlineAfter(timeoutInMillis, TimeUnit.MILLISECONDS) + .getWorkflowExecutionHistory( + RequestMapper.getWorkflowExecutionHistoryRequest(getRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void GetWorkflowExecutionHistoryWithTimeout( + GetWorkflowExecutionHistoryRequest getRequest, + AsyncMethodCallback resultHandler, + Long timeoutInMillis) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .withDeadlineAfter(timeoutInMillis, TimeUnit.MILLISECONDS) + .getWorkflowExecutionHistory( + RequestMapper.getWorkflowExecutionHistoryRequest(getRequest)), + toFutureCallback(resultHandler, ResponseMapper::getWorkflowExecutionHistoryResponse), + executor); + } + + @Override + public void SignalWorkflowExecutionWithTimeout( + SignalWorkflowExecutionRequest signalRequest, + AsyncMethodCallback resultHandler, + Long timeoutInMillis) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .withDeadlineAfter(timeoutInMillis, TimeUnit.MILLISECONDS) + .signalWorkflowExecution(RequestMapper.signalWorkflowExecutionRequest(signalRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RegisterDomain(RegisterDomainRequest registerRequest) + throws BadRequestError, DomainAlreadyExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + grpcServiceStubs + .domainBlockingStub() + .registerDomain(RequestMapper.registerDomainRequest(registerRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.describeDomainResponse( + grpcServiceStubs + .domainBlockingStub() + .describeDomain(RequestMapper.describeDomainRequest(describeRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( + DiagnoseWorkflowExecutionRequest diagnoseRequest) + throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError { + throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); + } + + @Override + public ListDomainsResponse ListDomains(ListDomainsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.listDomainsResponse( + grpcServiceStubs + .domainBlockingStub() + .listDomains(RequestMapper.listDomainsRequest(listRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.updateDomainResponse( + grpcServiceStubs + .domainBlockingStub() + .updateDomain(RequestMapper.updateDomainRequest(updateRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + ClientVersionNotSupportedError, CadenceError { + try { + grpcServiceStubs + .domainBlockingStub() + .deprecateDomain(RequestMapper.deprecateDomainRequest(deprecateRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public RestartWorkflowExecutionResponse RestartWorkflowExecution( + RestartWorkflowExecutionRequest restartRequest) + throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, + EntityNotExistsError, ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.restartWorkflowExecutionResponse( + grpcServiceStubs + .workflowBlockingStub() + .restartWorkflowExecution( + RequestMapper.restartWorkflowExecutionRequest(restartRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public StartWorkflowExecutionResponse StartWorkflowExecution( + StartWorkflowExecutionRequest startRequest) + throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, + DomainNotActiveError, LimitExceededError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.startWorkflowExecutionResponse( + grpcServiceStubs + .workflowBlockingStub() + .startWorkflowExecution(RequestMapper.startWorkflowExecutionRequest(startRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( + StartWorkflowExecutionAsyncRequest startRequest) + throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, + DomainNotActiveError, LimitExceededError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.startWorkflowExecutionAsyncResponse( + grpcServiceStubs + .workflowBlockingStub() + .startWorkflowExecutionAsync( + RequestMapper.startWorkflowExecutionAsyncRequest(startRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( + GetWorkflowExecutionHistoryRequest getRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.getWorkflowExecutionHistoryResponse( + grpcServiceStubs + .workflowBlockingStub() + .getWorkflowExecutionHistory( + RequestMapper.getWorkflowExecutionHistoryRequest(getRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest pollRequest) + throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.pollForDecisionTaskResponse( + grpcServiceStubs + .workerBlockingStub() + .pollForDecisionTask(RequestMapper.pollForDecisionTaskRequest(pollRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( + RespondDecisionTaskCompletedRequest completeRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + return ResponseMapper.respondDecisionTaskCompletedResponse( + grpcServiceStubs + .workerBlockingStub() + .respondDecisionTaskCompleted( + RequestMapper.respondDecisionTaskCompletedRequest(completeRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondDecisionTaskFailed(RequestMapper.respondDecisionTaskFailedRequest(failedRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest pollRequest) + throws BadRequestError, ServiceBusyError, LimitExceededError, EntityNotExistsError, + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.pollForActivityTaskResponse( + grpcServiceStubs + .workerBlockingStub() + .pollForActivityTask(RequestMapper.pollForActivityTaskRequest(pollRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( + RecordActivityTaskHeartbeatRequest heartbeatRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + return ResponseMapper.recordActivityTaskHeartbeatResponse( + grpcServiceStubs + .workerBlockingStub() + .recordActivityTaskHeartbeat( + RequestMapper.recordActivityTaskHeartbeatRequest(heartbeatRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( + RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + return ResponseMapper.recordActivityTaskHeartbeatResponse( + grpcServiceStubs + .workerBlockingStub() + .recordActivityTaskHeartbeatByID( + RequestMapper.recordActivityTaskHeartbeatByIDRequest(heartbeatRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondActivityTaskCompleted( + RequestMapper.respondActivityTaskCompletedRequest(completeRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondActivityTaskCompletedByID( + RespondActivityTaskCompletedByIDRequest completeRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondActivityTaskCompletedByID( + RequestMapper.respondActivityTaskCompletedByIDRequest(completeRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondActivityTaskFailed(RequestMapper.respondActivityTaskFailedRequest(failRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondActivityTaskFailedByID( + RequestMapper.respondActivityTaskFailedByIDRequest(failRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondActivityTaskCanceled( + RequestMapper.respondActivityTaskCanceledRequest(canceledRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondActivityTaskCanceledByID( + RespondActivityTaskCanceledByIDRequest canceledRequest) + throws BadRequestError, EntityNotExistsError, DomainNotActiveError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, + CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondActivityTaskCanceledByID( + RequestMapper.respondActivityTaskCanceledByIDRequest(canceledRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) + throws BadRequestError, EntityNotExistsError, CancellationAlreadyRequestedError, + ServiceBusyError, DomainNotActiveError, LimitExceededError, + ClientVersionNotSupportedError, WorkflowExecutionAlreadyCompletedError, CadenceError { + try { + grpcServiceStubs + .workflowBlockingStub() + .requestCancelWorkflowExecution( + RequestMapper.requestCancelWorkflowExecutionRequest(cancelRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void SignalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, ClientVersionNotSupportedError, + WorkflowExecutionAlreadyCompletedError, CadenceError { + try { + grpcServiceStubs + .workflowBlockingStub() + .signalWorkflowExecution(RequestMapper.signalWorkflowExecutionRequest(signalRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( + SignalWithStartWorkflowExecutionRequest signalWithStartRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, WorkflowExecutionAlreadyStartedError, ClientVersionNotSupportedError, + CadenceError { + try { + return ResponseMapper.signalWithStartWorkflowExecutionResponse( + grpcServiceStubs + .workflowBlockingStub() + .signalWithStartWorkflowExecution( + RequestMapper.signalWithStartWorkflowExecutionRequest(signalWithStartRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExecutionAsync( + SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) + throws BadRequestError, WorkflowExecutionAlreadyStartedError, ServiceBusyError, + DomainNotActiveError, LimitExceededError, EntityNotExistsError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.signalWithStartWorkflowExecutionAsyncResponse( + grpcServiceStubs + .workflowBlockingStub() + .signalWithStartWorkflowExecutionAsync( + RequestMapper.signalWithStartWorkflowExecutionAsyncRequest( + signalWithStartRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ResetWorkflowExecutionResponse ResetWorkflowExecution( + ResetWorkflowExecutionRequest resetRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.resetWorkflowExecutionResponse( + grpcServiceStubs + .workflowBlockingStub() + .resetWorkflowExecution(RequestMapper.resetWorkflowExecutionRequest(resetRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, DomainNotActiveError, + LimitExceededError, ClientVersionNotSupportedError, + WorkflowExecutionAlreadyCompletedError, CadenceError { + try { + grpcServiceStubs + .workflowBlockingStub() + .terminateWorkflowExecution( + RequestMapper.terminateWorkflowExecutionRequest(terminateRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( + ListOpenWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, LimitExceededError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.listOpenWorkflowExecutionsResponse( + grpcServiceStubs + .visibilityBlockingStub() + .listOpenWorkflowExecutions( + RequestMapper.listOpenWorkflowExecutionsRequest(listRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( + ListClosedWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.listClosedWorkflowExecutionsResponse( + grpcServiceStubs + .visibilityBlockingStub() + .listClosedWorkflowExecutions( + RequestMapper.listClosedWorkflowExecutionsRequest(listRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ListWorkflowExecutionsResponse ListWorkflowExecutions( + ListWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.listWorkflowExecutionsResponse( + grpcServiceStubs + .visibilityBlockingStub() + .listWorkflowExecutions(RequestMapper.listWorkflowExecutionsRequest(listRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( + ListArchivedWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.listArchivedWorkflowExecutionsResponse( + grpcServiceStubs + .visibilityBlockingStub() + .listArchivedWorkflowExecutions( + RequestMapper.listArchivedWorkflowExecutionsRequest(listRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ListWorkflowExecutionsResponse ScanWorkflowExecutions( + ListWorkflowExecutionsRequest listRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.scanWorkflowExecutionsResponse( + grpcServiceStubs + .visibilityBlockingStub() + .scanWorkflowExecutions(RequestMapper.scanWorkflowExecutionsRequest(listRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public CountWorkflowExecutionsResponse CountWorkflowExecutions( + CountWorkflowExecutionsRequest countRequest) + throws BadRequestError, EntityNotExistsError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.countWorkflowExecutionsResponse( + grpcServiceStubs + .visibilityBlockingStub() + .countWorkflowExecutions(RequestMapper.countWorkflowExecutionsRequest(countRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public GetSearchAttributesResponse GetSearchAttributes() + throws ServiceBusyError, ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.getSearchAttributesResponse( + grpcServiceStubs + .visibilityBlockingStub() + .getSearchAttributes( + com.uber.cadence.api.v1.GetSearchAttributesRequest.newBuilder().build())); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + DomainNotActiveError, ClientVersionNotSupportedError, CadenceError { + try { + grpcServiceStubs + .workerBlockingStub() + .respondQueryTaskCompleted( + RequestMapper.respondQueryTaskCompletedRequest(completeRequest)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + DomainNotActiveError, ClientVersionNotSupportedError, + WorkflowExecutionAlreadyCompletedError, CadenceError { + try { + return ResponseMapper.resetStickyTaskListResponse( + grpcServiceStubs + .workerBlockingStub() + .resetStickyTaskList(RequestMapper.resetStickyTaskListRequest(resetRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest queryRequest) + throws BadRequestError, EntityNotExistsError, QueryFailedError, LimitExceededError, + ServiceBusyError, ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.queryWorkflowResponse( + grpcServiceStubs + .workflowBlockingStub() + .queryWorkflow(RequestMapper.queryWorkflowRequest(queryRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public DescribeWorkflowExecutionResponse DescribeWorkflowExecution( + DescribeWorkflowExecutionRequest describeRequest) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.describeWorkflowExecutionResponse( + grpcServiceStubs + .workflowBlockingStub() + .describeWorkflowExecution( + RequestMapper.describeWorkflowExecutionRequest(describeRequest))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.describeTaskListResponse( + grpcServiceStubs + .workflowBlockingStub() + .describeTaskList(RequestMapper.describeTaskListRequest(request))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, CadenceError { + try { + return ResponseMapper.clusterInfoResponse( + grpcServiceStubs + .workflowBlockingStub() + .getClusterInfo(com.uber.cadence.api.v1.GetClusterInfoRequest.getDefaultInstance())); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public GetTaskListsByDomainResponse GetTaskListsByDomain(GetTaskListsByDomainRequest request) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + ClientVersionNotSupportedError, CadenceError { + try { + return ResponseMapper.getTaskListsByDomainResponse( + grpcServiceStubs + .workflowBlockingStub() + .getTaskListsByDomain(RequestMapper.getTaskListsByDomainRequest(request))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public ListTaskListPartitionsResponse ListTaskListPartitions( + ListTaskListPartitionsRequest request) + throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, + CadenceError { + try { + return ResponseMapper.listTaskListPartitionsResponse( + grpcServiceStubs + .workflowBlockingStub() + .listTaskListPartitions(RequestMapper.listTaskListPartitionsRequest(request))); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest request) + throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, + CadenceError { + try { + grpcServiceStubs + .workflowBlockingStub() + .refreshWorkflowTasks(RequestMapper.refreshWorkflowTasksRequest(request)); + } catch (Exception e) { + throw toServiceClientException(e); + } + } + + @Override + public void RegisterDomain( + RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .domainFutureStub() + .registerDomain(RequestMapper.registerDomainRequest(registerRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void DescribeDomain( + DescribeDomainRequest describeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .domainFutureStub() + .describeDomain(RequestMapper.describeDomainRequest(describeRequest)), + toFutureCallback(resultHandler, ResponseMapper::describeDomainResponse), + executor); + } + + @Override + public void ListDomains( + ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .domainFutureStub() + .listDomains(RequestMapper.listDomainsRequest(listRequest)), + toFutureCallback(resultHandler, ResponseMapper::listDomainsResponse), + executor); + } + + @Override + public void UpdateDomain( + UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .domainFutureStub() + .updateDomain(RequestMapper.updateDomainRequest(updateRequest)), + toFutureCallback(resultHandler, ResponseMapper::updateDomainResponse), + executor); + } + + @Override + public void DeprecateDomain( + DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .domainFutureStub() + .deprecateDomain(RequestMapper.deprecateDomainRequest(deprecateRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RestartWorkflowExecution( + RestartWorkflowExecutionRequest restartRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .restartWorkflowExecution( + RequestMapper.restartWorkflowExecutionRequest(restartRequest)), + toFutureCallback(resultHandler, ResponseMapper::restartWorkflowExecutionResponse), + executor); + } + + @Override + public void StartWorkflowExecution( + StartWorkflowExecutionRequest startRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .startWorkflowExecution(RequestMapper.startWorkflowExecutionRequest(startRequest)), + toFutureCallback(resultHandler, ResponseMapper::startWorkflowExecutionResponse), + executor); + } + + @Override + public void StartWorkflowExecutionAsync( + StartWorkflowExecutionAsyncRequest startRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .startWorkflowExecutionAsync( + RequestMapper.startWorkflowExecutionAsyncRequest(startRequest)), + toFutureCallback(resultHandler, ResponseMapper::startWorkflowExecutionAsyncResponse), + executor); + } + + @Override + public void GetWorkflowExecutionHistory( + GetWorkflowExecutionHistoryRequest getRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .getWorkflowExecutionHistory( + RequestMapper.getWorkflowExecutionHistoryRequest(getRequest)), + toFutureCallback(resultHandler, ResponseMapper::getWorkflowExecutionHistoryResponse), + executor); + } + + @Override + public void PollForDecisionTask( + PollForDecisionTaskRequest pollRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .pollForDecisionTask(RequestMapper.pollForDecisionTaskRequest(pollRequest)), + toFutureCallback(resultHandler, ResponseMapper::pollForDecisionTaskResponse), + executor); + } + + @Override + public void RespondDecisionTaskCompleted( + RespondDecisionTaskCompletedRequest completeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondDecisionTaskCompleted( + RequestMapper.respondDecisionTaskCompletedRequest(completeRequest)), + toFutureCallback(resultHandler, ResponseMapper::respondDecisionTaskCompletedResponse), + executor); + } + + @Override + public void RespondDecisionTaskFailed( + RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondDecisionTaskFailed( + RequestMapper.respondDecisionTaskFailedRequest(failedRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void PollForActivityTask( + PollForActivityTaskRequest pollRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .pollForActivityTask(RequestMapper.pollForActivityTaskRequest(pollRequest)), + toFutureCallback(resultHandler, ResponseMapper::pollForActivityTaskResponse), + executor); + } + + @Override + public void RecordActivityTaskHeartbeat( + RecordActivityTaskHeartbeatRequest heartbeatRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .recordActivityTaskHeartbeat( + RequestMapper.recordActivityTaskHeartbeatRequest(heartbeatRequest)), + toFutureCallback(resultHandler, ResponseMapper::recordActivityTaskHeartbeatResponse), + executor); + } + + @Override + public void RecordActivityTaskHeartbeatByID( + RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .recordActivityTaskHeartbeatByID( + RequestMapper.recordActivityTaskHeartbeatByIDRequest(heartbeatRequest)), + toFutureCallback(resultHandler, ResponseMapper::recordActivityTaskHeartbeatResponse), + executor); + } + + @Override + public void RespondActivityTaskCompleted( + RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondActivityTaskCompleted( + RequestMapper.respondActivityTaskCompletedRequest(completeRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RespondActivityTaskCompletedByID( + RespondActivityTaskCompletedByIDRequest completeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondActivityTaskCompletedByID( + RequestMapper.respondActivityTaskCompletedByIDRequest(completeRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RespondActivityTaskFailed( + RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondActivityTaskFailed(RequestMapper.respondActivityTaskFailedRequest(failRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RespondActivityTaskFailedByID( + RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondActivityTaskFailedByID( + RequestMapper.respondActivityTaskFailedByIDRequest(failRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RespondActivityTaskCanceled( + RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondActivityTaskCanceled( + RequestMapper.respondActivityTaskCanceledRequest(canceledRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RespondActivityTaskCanceledByID( + RespondActivityTaskCanceledByIDRequest canceledRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondActivityTaskCanceledByID( + RequestMapper.respondActivityTaskCanceledByIDRequest(canceledRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void RequestCancelWorkflowExecution( + RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .requestCancelWorkflowExecution( + RequestMapper.requestCancelWorkflowExecutionRequest(cancelRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void SignalWorkflowExecution( + SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .signalWorkflowExecution(RequestMapper.signalWorkflowExecutionRequest(signalRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void SignalWithStartWorkflowExecution( + SignalWithStartWorkflowExecutionRequest signalWithStartRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .signalWithStartWorkflowExecution( + RequestMapper.signalWithStartWorkflowExecutionRequest(signalWithStartRequest)), + toFutureCallback(resultHandler, ResponseMapper::signalWithStartWorkflowExecutionResponse), + executor); + } + + @Override + public void SignalWithStartWorkflowExecutionAsync( + SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .signalWithStartWorkflowExecutionAsync( + RequestMapper.signalWithStartWorkflowExecutionAsyncRequest(signalWithStartRequest)), + toFutureCallback( + resultHandler, ResponseMapper::signalWithStartWorkflowExecutionAsyncResponse), + executor); + } + + @Override + public void ResetWorkflowExecution( + ResetWorkflowExecutionRequest resetRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .resetWorkflowExecution(RequestMapper.resetWorkflowExecutionRequest(resetRequest)), + toFutureCallback(resultHandler, ResponseMapper::resetWorkflowExecutionResponse), + executor); + } + + @Override + public void TerminateWorkflowExecution( + TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .terminateWorkflowExecution( + RequestMapper.terminateWorkflowExecutionRequest(terminateRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void ListOpenWorkflowExecutions( + ListOpenWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .visibilityFutureStub() + .listOpenWorkflowExecutions( + RequestMapper.listOpenWorkflowExecutionsRequest(listRequest)), + toFutureCallback(resultHandler, ResponseMapper::listOpenWorkflowExecutionsResponse), + executor); + } + + @Override + public void ListClosedWorkflowExecutions( + ListClosedWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .visibilityFutureStub() + .listClosedWorkflowExecutions( + RequestMapper.listClosedWorkflowExecutionsRequest(listRequest)), + toFutureCallback(resultHandler, ResponseMapper::listClosedWorkflowExecutionsResponse), + executor); + } + + @Override + public void ListWorkflowExecutions( + ListWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .visibilityFutureStub() + .listWorkflowExecutions(RequestMapper.listWorkflowExecutionsRequest(listRequest)), + toFutureCallback(resultHandler, ResponseMapper::listWorkflowExecutionsResponse), + executor); + } + + @Override + public void ListArchivedWorkflowExecutions( + ListArchivedWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .visibilityFutureStub() + .listArchivedWorkflowExecutions( + RequestMapper.listArchivedWorkflowExecutionsRequest(listRequest)), + toFutureCallback(resultHandler, ResponseMapper::listArchivedWorkflowExecutionsResponse), + executor); + } + + @Override + public void ScanWorkflowExecutions( + ListWorkflowExecutionsRequest listRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .visibilityFutureStub() + .scanWorkflowExecutions(RequestMapper.scanWorkflowExecutionsRequest(listRequest)), + toFutureCallback(resultHandler, ResponseMapper::scanWorkflowExecutionsResponse), + executor); + } + + @Override + public void CountWorkflowExecutions( + CountWorkflowExecutionsRequest countRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .visibilityFutureStub() + .countWorkflowExecutions(RequestMapper.countWorkflowExecutionsRequest(countRequest)), + toFutureCallback(resultHandler, ResponseMapper::countWorkflowExecutionsResponse), + executor); + } + + @Override + public void GetSearchAttributes(AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .visibilityFutureStub() + .getSearchAttributes( + com.uber.cadence.api.v1.GetSearchAttributesRequest.getDefaultInstance()), + toFutureCallback(resultHandler, ResponseMapper::getSearchAttributesResponse), + executor); + } + + @Override + public void RespondQueryTaskCompleted( + RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .respondQueryTaskCompleted( + RequestMapper.respondQueryTaskCompletedRequest(completeRequest)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + @Override + public void ResetStickyTaskList( + ResetStickyTaskListRequest resetRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workerFutureStub() + .resetStickyTaskList(RequestMapper.resetStickyTaskListRequest(resetRequest)), + toFutureCallback(resultHandler, ResponseMapper::resetStickyTaskListResponse), + executor); + } + + @Override + public void QueryWorkflow( + QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .queryWorkflow(RequestMapper.queryWorkflowRequest(queryRequest)), + toFutureCallback(resultHandler, ResponseMapper::queryWorkflowResponse), + executor); + } + + @Override + public void DescribeWorkflowExecution( + DescribeWorkflowExecutionRequest describeRequest, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .describeWorkflowExecution( + RequestMapper.describeWorkflowExecutionRequest(describeRequest)), + toFutureCallback(resultHandler, ResponseMapper::describeWorkflowExecutionResponse), + executor); + } + + @Override + public void DescribeTaskList( + DescribeTaskListRequest request, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .describeTaskList(RequestMapper.describeTaskListRequest(request)), + toFutureCallback(resultHandler, ResponseMapper::describeTaskListResponse), + executor); + } + + @Override + public void GetClusterInfo(AsyncMethodCallback resultHandler) throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .getClusterInfo(com.uber.cadence.api.v1.GetClusterInfoRequest.getDefaultInstance()), + toFutureCallback(resultHandler, ResponseMapper::getClusterInfoResponse), + executor); + } + + @Override + public void GetTaskListsByDomain( + GetTaskListsByDomainRequest request, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .getTaskListsByDomain(RequestMapper.getTaskListsByDomainRequest(request)), + toFutureCallback(resultHandler, ResponseMapper::getTaskListsByDomainResponse), + executor); + } + + @Override + public void ListTaskListPartitions( + ListTaskListPartitionsRequest request, + AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .listTaskListPartitions(RequestMapper.listTaskListPartitionsRequest(request)), + toFutureCallback(resultHandler, ResponseMapper::listTaskListPartitionsResponse), + executor); + } + + @Override + public void RefreshWorkflowTasks( + RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) + throws CadenceError { + Futures.addCallback( + grpcServiceStubs + .workflowFutureStub() + .refreshWorkflowTasks(RequestMapper.refreshWorkflowTasksRequest(request)), + toFutureCallback(resultHandler, r -> null), + executor); + } + + private CadenceError toServiceClientException(Throwable t) { + if (t instanceof CadenceError) { + return (CadenceError) t; + } else if (t instanceof StatusRuntimeException) { + return ErrorMapper.Error((StatusRuntimeException) t); + } else { + return new CadenceError(t); + } + } + + private FutureCallback toFutureCallback( + AsyncMethodCallback resultHandler, Function mapper) { + return new FutureCallback() { + @Override + public void onSuccess(R t) { + resultHandler.onComplete(mapper.apply(t)); + } + + @Override + public void onFailure(Throwable throwable) { + resultHandler.onError(toServiceClientException(throwable)); + } + }; + } + + @Override + public void DiagnoseWorkflowExecution( + DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) + throws CadenceError { + throw new UnsupportedOperationException("Unimplemented method 'DiagnoseWorkflowExecution'"); + } +} diff --git a/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java b/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java deleted file mode 100644 index ba4b520ca..000000000 --- a/src/main/java/com/uber/cadence/serviceclient/WorkflowServiceTChannel.java +++ /dev/null @@ -1,2982 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.serviceclient; - -import static com.uber.cadence.internal.metrics.MetricsTagValue.REQUEST_TYPE_LONG_POLL; -import static com.uber.cadence.internal.metrics.MetricsTagValue.REQUEST_TYPE_NORMAL; - -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.uber.cadence.*; -import com.uber.cadence.WorkflowService.GetWorkflowExecutionHistory_result; -import com.uber.cadence.internal.Version; -import com.uber.cadence.internal.common.CheckedExceptionWrapper; -import com.uber.cadence.internal.metrics.MetricsTag; -import com.uber.cadence.internal.metrics.MetricsType; -import com.uber.cadence.internal.metrics.ServiceMethod; -import com.uber.cadence.internal.tracing.TracingPropagator; -import com.uber.m3.tally.Scope; -import com.uber.m3.tally.Stopwatch; -import com.uber.tchannel.api.ResponseCode; -import com.uber.tchannel.api.SubChannel; -import com.uber.tchannel.api.TChannel; -import com.uber.tchannel.api.TFuture; -import com.uber.tchannel.api.errors.TChannelError; -import com.uber.tchannel.errors.ErrorType; -import com.uber.tchannel.messages.ThriftRequest; -import com.uber.tchannel.messages.ThriftResponse; -import com.uber.tchannel.messages.generated.Meta; -import io.opentelemetry.api.GlobalOpenTelemetry; -import io.opentelemetry.context.Context; -import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.context.propagation.TextMapSetter; -import io.opentracing.Span; -import io.opentracing.Tracer; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.UnknownHostException; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.transport.TTransportException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class WorkflowServiceTChannel implements IWorkflowService { - private static final Logger log = LoggerFactory.getLogger(WorkflowServiceTChannel.class); - - private static final String INTERFACE_NAME = "WorkflowService"; - - private final ClientOptions options; - private final Map thriftHeaders; - private final TChannel tChannel; - private final TracingPropagator tracingPropagator; - private final Tracer tracer; - private final SubChannel subChannel; - - /** - * Creates Cadence client that connects to the specified host and port using specified options. - * - * @param options configuration options like rpc timeouts. - */ - public WorkflowServiceTChannel(ClientOptions options) { - this.options = options; - this.thriftHeaders = getThriftHeaders(options); - this.tChannel = new TChannel.Builder(options.getClientAppName()).build(); - this.tracingPropagator = new TracingPropagator(options.getTracer()); - this.tracer = options.getTracer(); - - InetAddress address; - try { - address = InetAddress.getByName(options.getHost()); - } catch (UnknownHostException e) { - tChannel.shutdown(); - throw new RuntimeException("Unable to get name of host " + options.getHost(), e); - } - - ArrayList peers = new ArrayList<>(); - peers.add(new InetSocketAddress(address, options.getPort())); - this.subChannel = tChannel.makeSubChannel(options.getServiceName()).setPeers(peers); - log.info( - "Initialized TChannel for service " - + this.subChannel.getServiceName() - + ", LibraryVersion: " - + Version.LIBRARY_VERSION - + ", FeatureVersion: " - + Version.FEATURE_VERSION); - } - - public void resetSubchannelPeers() throws UnknownHostException { - InetAddress address = InetAddress.getByName(options.getHost()); - ArrayList peers = new ArrayList<>(); - peers.add(new InetSocketAddress(address, options.getPort())); - this.subChannel.setPeers(peers); - } - - /** - * Creates Cadence client with specified sub channel and options. - * - * @param subChannel sub channel for communicating with cadence frontend service. - * @param options configuration options like rpc timeouts. - */ - public WorkflowServiceTChannel(SubChannel subChannel, ClientOptions options) { - this.options = options; - this.thriftHeaders = getThriftHeaders(options); - this.tChannel = null; - this.subChannel = subChannel; - this.tracingPropagator = new TracingPropagator(options.getTracer()); - this.tracer = options.getTracer(); - } - - private static Map getThriftHeaders(ClientOptions options) { - String envUserName = System.getProperty("user.name"); - String envHostname; - try { - envHostname = InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - envHostname = "localhost"; - } - - ImmutableMap.Builder builder = - ImmutableMap.builder() - .put("user-name", envUserName) - .put("host-name", envHostname) - .put("cadence-client-library-version", Version.LIBRARY_VERSION) - .put("cadence-client-feature-version", Version.FEATURE_VERSION) - .put("cadence-client-name", "uber-java"); - - if (options.getHeaders() != null) { - for (Map.Entry entry : options.getHeaders().entrySet()) { - builder.put(entry.getKey(), entry.getValue()); - } - } - - if (options.getFeatureFlags() != null) { - GsonBuilder gsonBuilder = new GsonBuilder(); - Gson gson = gsonBuilder.create(); - String serialized = gson.toJson(options.getFeatureFlags()); - builder.put("cadence-client-feature-flags", serialized); - } - - if (!Strings.isNullOrEmpty(options.getIsolationGroup())) { - builder.put("cadence-client-isolation-group", options.getIsolationGroup()); - } - - return builder.build(); - } - - /** Returns the endpoint in the format service::method" */ - private static String getEndpoint(String service, String method) { - return String.format("%s::%s", service, method); - } - - private ThriftRequest buildThriftRequest(String apiName, T body) { - return buildThriftRequest(apiName, body, null); - } - - @Override - public ClientOptions getOptions() { - return options; - } - - /** - * Checks if we have a valid connection to the Cadence cluster, and potentially resets the peer - * list - */ - @Override - public CompletableFuture isHealthy() { - final ThriftRequest req = - new ThriftRequest.Builder(options.getServiceName(), "Meta::health") - .setBody(new Meta.health_args()) - .build(); - final CompletableFuture result = new CompletableFuture<>(); - try { - - final TFuture> future = this.subChannel.send(req); - future.addCallback( - response -> { - req.releaseQuietly(); - if (response.isError()) { - try { - this.resetSubchannelPeers(); - } catch (final Exception inner_e) { - } - result.completeExceptionally(new TException("Rpc error:" + response.getError())); - } else { - result.complete(response.getBody(Meta.health_result.class).getSuccess().isOk()); - } - try { - response.release(); - } catch (final Exception e) { - // ignore - } - }); - } catch (final TChannelError e) { - req.releaseQuietly(); - try { - this.resetSubchannelPeers(); - } catch (final Exception inner_e) { - } - result.complete(Boolean.FALSE); - } - return result; - } - - protected ThriftRequest buildThriftRequest( - String apiName, T body, Long rpcTimeoutOverride) { - String endpoint = getEndpoint(INTERFACE_NAME, apiName); - ThriftRequest.Builder builder = - new ThriftRequest.Builder<>(options.getServiceName(), endpoint); - // Create a mutable hashmap for headers, as tchannel.tracing.PrefixedHeadersCarrier assumes - // that it can call put directly to add new stuffs (e.g. traces). - final HashMap headers = new HashMap<>(thriftHeaders); - TextMapPropagator textMapPropagator = - GlobalOpenTelemetry.getPropagators().getTextMapPropagator(); - - String tracingHeadersPrefix = "$tracing$"; - TextMapSetter> setter = - (carrier, key, value) -> { - if (carrier != null) { - carrier.put(tracingHeadersPrefix + key, value); - } - }; - - textMapPropagator.inject(Context.current(), headers, setter); - - if (this.options.getAuthProvider() != null) { - headers.put( - "cadence-authorization", - new String(options.getAuthProvider().getAuthToken(), StandardCharsets.UTF_8)); - } - builder.setHeaders(headers); - - if (rpcTimeoutOverride != null) { - builder.setTimeout(rpcTimeoutOverride); - } else { - builder.setTimeout(this.options.getRpcTimeoutMillis()); - } - for (Map.Entry header : this.options.getTransportHeaders().entrySet()) { - builder.setTransportHeader(header.getKey(), header.getValue()); - } - builder.setBody(body); - return builder.build(); - } - - private ThriftResponse doRemoteCall(ThriftRequest request) throws TException { - ThriftResponse response = null; - try { - TFuture> future = subChannel.send(request); - response = future.get(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new TException(e); - } catch (ExecutionException e) { - throw new TException(e); - } catch (TChannelError e) { - throw new TException("Rpc error", e); - } - this.throwOnRpcError(response); - return response; - } - - private CompletableFuture> doRemoteCallAsync(ThriftRequest request) { - final CompletableFuture> result = new CompletableFuture<>(); - TFuture> future = null; - try { - future = subChannel.send(request); - } catch (TChannelError tChannelError) { - result.completeExceptionally(new TException(tChannelError)); - } - future.addCallback( - response -> { - if (response.isError()) { - result.completeExceptionally(new TException("Rpc error:" + response.getError())); - } else { - result.complete(response); - } - }); - return result; - } - - private void throwOnRpcError(ThriftResponse response) throws TException { - if (response.isError()) { - if (response.getError().getErrorType() == ErrorType.Timeout) { - throw new TTransportException( - TTransportException.TIMED_OUT, response.getError().getMessage()); - } else { - throw new TException("Rpc error:" + response.getError()); - } - } - } - - @Override - public void close() { - if (tChannel != null) { - tChannel.shutdown(); - } - } - - interface RemoteCall { - T apply() throws TException; - } - - private T measureRemoteCall(String scopeName, RemoteCall call) throws TException { - return measureRemoteCallWithTags(scopeName, call, null); - } - - private T measureRemoteCallWithTags( - String scopeName, RemoteCall call, Map tags) throws TException { - Scope scope = options.getMetricsScope().subScope(scopeName); - if (tags != null) { - scope = scope.tagged(tags); - } - scope.counter(MetricsType.CADENCE_REQUEST).inc(1); - Stopwatch sw = scope.timer(MetricsType.CADENCE_LATENCY).start(); - - Span span = tracingPropagator.spanByServiceMethod(scopeName); - try (io.opentracing.Scope tracingScope = tracer.activateSpan(span)) { - T resp = call.apply(); - sw.stop(); - return resp; - } catch (EntityNotExistsError - | WorkflowExecutionAlreadyCompletedError - | BadRequestError - | DomainAlreadyExistsError - | WorkflowExecutionAlreadyStartedError - | QueryFailedError e) { - sw.stop(); - scope.counter(MetricsType.CADENCE_INVALID_REQUEST).inc(1); - throw e; - } catch (TException e) { - sw.stop(); - scope.counter(MetricsType.CADENCE_ERROR).inc(1); - throw e; - } finally { - span.finish(); - } - } - - interface RemoteProc { - void apply() throws TException; - } - - private void measureRemoteProc(String scopeName, RemoteProc proc) throws TException { - measureRemoteCall( - scopeName, - () -> { - proc.apply(); - return null; - }); - } - - @Override - public void RegisterDomain(RegisterDomainRequest request) throws TException { - measureRemoteProc(ServiceMethod.REGISTER_DOMAIN, () -> registerDomain(request)); - } - - private void registerDomain(RegisterDomainRequest registerRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RegisterDomain", new WorkflowService.RegisterDomain_args(registerRequest)); - response = doRemoteCall(request); - WorkflowService.RegisterDomain_result result = - response.getBody(WorkflowService.RegisterDomain_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetDomainExistsError()) { - throw result.getDomainExistsError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - throw new TException("RegisterDomain failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public DescribeDomainResponse DescribeDomain(DescribeDomainRequest describeRequest) - throws TException { - return measureRemoteCall(ServiceMethod.DESCRIBE_DOMAIN, () -> describeDomain(describeRequest)); - } - - private DescribeDomainResponse describeDomain(DescribeDomainRequest describeRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "DescribeDomain", new WorkflowService.DescribeDomain_args(describeRequest)); - response = doRemoteCall(request); - WorkflowService.DescribeDomain_result result = - response.getBody(WorkflowService.DescribeDomain_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - throw new TException("DescribeDomain failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public DiagnoseWorkflowExecutionResponse DiagnoseWorkflowExecution( - DiagnoseWorkflowExecutionRequest diagnoseRequest) - throws DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - ClientVersionNotSupportedError, TException { - throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); - } - - @Override - public ListDomainsResponse ListDomains(ListDomainsRequest listRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - TException { - return measureRemoteCall(ServiceMethod.LIST_DOMAINS, () -> listDomains(listRequest)); - } - - private ListDomainsResponse listDomains(ListDomainsRequest describeRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest("ListDomains", new WorkflowService.ListDomains_args(describeRequest)); - response = doRemoteCall(request); - WorkflowService.ListDomains_result result = - response.getBody(WorkflowService.ListDomains_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - throw new TException("ListDomains failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public UpdateDomainResponse UpdateDomain(UpdateDomainRequest updateRequest) throws TException { - return measureRemoteCall(ServiceMethod.UPDATE_DOMAIN, () -> updateDomain(updateRequest)); - } - - private UpdateDomainResponse updateDomain(UpdateDomainRequest updateRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest("UpdateDomain", new WorkflowService.UpdateDomain_args(updateRequest)); - response = doRemoteCall(request); - WorkflowService.UpdateDomain_result result = - response.getBody(WorkflowService.UpdateDomain_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("UpdateDomain failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void DeprecateDomain(DeprecateDomainRequest deprecateRequest) throws TException { - measureRemoteProc(ServiceMethod.DEPRECATE_DOMAIN, () -> deprecateDomain(deprecateRequest)); - } - - @Override - public RestartWorkflowExecutionResponse RestartWorkflowExecution( - RestartWorkflowExecutionRequest restartRequest) - throws BadRequestError, ServiceBusyError, DomainNotActiveError, LimitExceededError, - EntityNotExistsError, ClientVersionNotSupportedError, TException { - throw new UnsupportedOperationException("unimplemented"); - } - - private void deprecateDomain(DeprecateDomainRequest deprecateRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "DeprecateDomain", new WorkflowService.DeprecateDomain_args(deprecateRequest)); - response = doRemoteCall(request); - WorkflowService.DeprecateDomain_result result = - response.getBody(WorkflowService.DeprecateDomain_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("DeprecateDomain failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public GetTaskListsByDomainResponse GetTaskListsByDomain( - GetTaskListsByDomainRequest getTaskListsByDomainRequest) throws TException { - return measureRemoteCall( - ServiceMethod.GET_TASK_LISTS_BY_DOMAIN, - () -> getTaskListsByDomain(getTaskListsByDomainRequest)); - } - - private GetTaskListsByDomainResponse getTaskListsByDomain( - GetTaskListsByDomainRequest getTaskListsByDomainRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "GetTaskListsByDomain", - new WorkflowService.GetTaskListsByDomain_args(getTaskListsByDomainRequest)); - response = doRemoteCall(request); - WorkflowService.GetTaskListsByDomain_result result = - response.getBody(WorkflowService.GetTaskListsByDomain_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("GetTaskListsByDomain failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public StartWorkflowExecutionResponse StartWorkflowExecution( - StartWorkflowExecutionRequest request) throws TException { - return measureRemoteCall( - ServiceMethod.START_WORKFLOW_EXECUTION, () -> startWorkflowExecution(request)); - } - - private StartWorkflowExecutionResponse startWorkflowExecution( - StartWorkflowExecutionRequest startRequest) throws TException { - ThriftResponse response = null; - try { - initializeStartWorkflowRequest(startRequest); - - ThriftRequest request = - buildThriftRequest( - "StartWorkflowExecution", - new WorkflowService.StartWorkflowExecution_args(startRequest)); - - response = doRemoteCall(request); - WorkflowService.StartWorkflowExecution_result result = - response.getBody(WorkflowService.StartWorkflowExecution_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetSessionAlreadyExistError()) { - throw result.getSessionAlreadyExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("StartWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public StartWorkflowExecutionAsyncResponse StartWorkflowExecutionAsync( - StartWorkflowExecutionAsyncRequest startAsyncRequest) throws TException { - return measureRemoteCall( - ServiceMethod.START_WORKFLOW_EXECUTION_ASYNC, - () -> startWorkflowExecutionAsync(startAsyncRequest)); - } - - private StartWorkflowExecutionAsyncResponse startWorkflowExecutionAsync( - StartWorkflowExecutionAsyncRequest startAsyncRequest) throws TException { - ThriftResponse response = null; - try { - initializeStartWorkflowRequest(startAsyncRequest.getRequest()); - - ThriftRequest request = - buildThriftRequest( - "StartWorkflowExecutionAsync", - new WorkflowService.StartWorkflowExecutionAsync_args(startAsyncRequest)); - - response = doRemoteCall(request); - WorkflowService.StartWorkflowExecutionAsync_result result = - response.getBody(WorkflowService.StartWorkflowExecutionAsync_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetSessionAlreadyExistError()) { - throw result.getSessionAlreadyExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("StartWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - private void initializeStartWorkflowRequest(StartWorkflowExecutionRequest startRequest) { - if (!startRequest.isSetRequestId()) { - startRequest.setRequestId(UUID.randomUUID().toString()); - } - // Write span context to header - if (!startRequest.isSetHeader()) { - startRequest.setHeader(new Header()); - } - tracingPropagator.inject(startRequest.getHeader()); - } - - @Override - public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistoryWithTimeout( - GetWorkflowExecutionHistoryRequest request, Long timeoutInMillis) throws TException { - Map tags = - ImmutableMap.of( - MetricsTag.REQUEST_TYPE, - request.isWaitForNewEvent() ? REQUEST_TYPE_LONG_POLL : REQUEST_TYPE_NORMAL); - return measureRemoteCallWithTags( - ServiceMethod.GET_WORKFLOW_EXECUTION_HISTORY, - () -> getWorkflowExecutionHistory(request, timeoutInMillis), - tags); - } - - @Override - public GetWorkflowExecutionHistoryResponse GetWorkflowExecutionHistory( - GetWorkflowExecutionHistoryRequest request) throws TException { - Map tags = - ImmutableMap.of( - MetricsTag.REQUEST_TYPE, - request.isWaitForNewEvent() ? REQUEST_TYPE_LONG_POLL : REQUEST_TYPE_NORMAL); - return measureRemoteCallWithTags( - ServiceMethod.GET_WORKFLOW_EXECUTION_HISTORY, - () -> getWorkflowExecutionHistory(request, null), - tags); - } - - private GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistory( - GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildGetWorkflowExecutionHistoryThriftRequest(getRequest, timeoutInMillis); - response = doRemoteCall(request); - WorkflowService.GetWorkflowExecutionHistory_result result = - response.getBody(WorkflowService.GetWorkflowExecutionHistory_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - GetWorkflowExecutionHistoryResponse res = result.getSuccess(); - if (res.getRawHistory() != null) { - throw new TException( - "Raw history is not supported. Please turn off frontend.sendRawWorkflowHistory feature flag in frontend service to recover"); - } - return res; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("GetWorkflowExecutionHistory failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - private ThriftRequest - buildGetWorkflowExecutionHistoryThriftRequest( - GetWorkflowExecutionHistoryRequest getRequest, Long timeoutInMillis) { - - if (getRequest.isWaitForNewEvent()) { - timeoutInMillis = - validateAndUpdateTimeout(timeoutInMillis, options.getRpcLongPollTimeoutMillis()); - } else { - timeoutInMillis = validateAndUpdateTimeout(timeoutInMillis, options.getRpcTimeoutMillis()); - } - - return buildThriftRequest( - "GetWorkflowExecutionHistory", - new WorkflowService.GetWorkflowExecutionHistory_args(getRequest), - timeoutInMillis); - } - - @Override - public PollForDecisionTaskResponse PollForDecisionTask(PollForDecisionTaskRequest request) - throws TException { - return measureRemoteCall( - ServiceMethod.POLL_FOR_DECISION_TASK, () -> pollForDecisionTask(request)); - } - - private PollForDecisionTaskResponse pollForDecisionTask(PollForDecisionTaskRequest pollRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "PollForDecisionTask", - new WorkflowService.PollForDecisionTask_args(pollRequest), - options.getRpcLongPollTimeoutMillis()); - response = doRemoteCall(request); - WorkflowService.PollForDecisionTask_result result = - response.getBody(WorkflowService.PollForDecisionTask_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("PollForDecisionTask failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public RespondDecisionTaskCompletedResponse RespondDecisionTaskCompleted( - RespondDecisionTaskCompletedRequest completedRequest) throws TException { - return measureRemoteCall( - ServiceMethod.RESPOND_DECISION_TASK_COMPLETED, - () -> respondDecisionTaskCompleted(completedRequest)); - } - - private RespondDecisionTaskCompletedResponse respondDecisionTaskCompleted( - RespondDecisionTaskCompletedRequest completedRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondDecisionTaskCompleted", - new WorkflowService.RespondDecisionTaskCompleted_args(completedRequest)); - response = doRemoteCall(request); - WorkflowService.RespondDecisionTaskCompleted_result result = - response.getBody(WorkflowService.RespondDecisionTaskCompleted_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondDecisionTaskCompleted failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondDecisionTaskFailed(RespondDecisionTaskFailedRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_DECISION_TASK_FAILED, () -> respondDecisionTaskFailed(request)); - } - - private void respondDecisionTaskFailed(RespondDecisionTaskFailedRequest failedRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondDecisionTaskFailed", - new WorkflowService.RespondDecisionTaskFailed_args(failedRequest)); - response = doRemoteCall(request); - WorkflowService.RespondDecisionTaskFailed_result result = - response.getBody(WorkflowService.RespondDecisionTaskFailed_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondDecisionTaskFailed failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public PollForActivityTaskResponse PollForActivityTask(PollForActivityTaskRequest request) - throws TException { - return measureRemoteCall( - ServiceMethod.POLL_FOR_ACTIVITY_TASK, () -> pollForActivityTask(request)); - } - - private PollForActivityTaskResponse pollForActivityTask(PollForActivityTaskRequest pollRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "PollForActivityTask", - new WorkflowService.PollForActivityTask_args(pollRequest), - options.getRpcLongPollTimeoutMillis()); - response = doRemoteCall(request); - WorkflowService.PollForActivityTask_result result = - response.getBody(WorkflowService.PollForActivityTask_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("PollForActivityTask failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeat( - RecordActivityTaskHeartbeatRequest request) throws TException { - return measureRemoteCall( - ServiceMethod.RECORD_ACTIVITY_TASK_HEARTBEAT, () -> recordActivityTaskHeartbeat(request)); - } - - private RecordActivityTaskHeartbeatResponse recordActivityTaskHeartbeat( - RecordActivityTaskHeartbeatRequest heartbeatRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RecordActivityTaskHeartbeat", - new WorkflowService.RecordActivityTaskHeartbeat_args(heartbeatRequest)); - response = doRemoteCall(request); - WorkflowService.RecordActivityTaskHeartbeat_result result = - response.getBody(WorkflowService.RecordActivityTaskHeartbeat_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RecordActivityTaskHeartbeat failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public RecordActivityTaskHeartbeatResponse RecordActivityTaskHeartbeatByID( - RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, DomainNotActiveError, - WorkflowExecutionAlreadyCompletedError, LimitExceededError, ServiceBusyError, TException { - return measureRemoteCall( - ServiceMethod.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID, - () -> recordActivityTaskHeartbeatByID(heartbeatRequest)); - } - - private RecordActivityTaskHeartbeatResponse recordActivityTaskHeartbeatByID( - RecordActivityTaskHeartbeatByIDRequest heartbeatRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RecordActivityTaskHeartbeatByID", - new WorkflowService.RecordActivityTaskHeartbeatByID_args(heartbeatRequest)); - response = doRemoteCall(request); - WorkflowService.RecordActivityTaskHeartbeatByID_result result = - response.getBody(WorkflowService.RecordActivityTaskHeartbeatByID_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RecordActivityTaskHeartbeatByID failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondActivityTaskCompleted(RespondActivityTaskCompletedRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_ACTIVITY_TASK_COMPLETED, () -> respondActivityTaskCompleted(request)); - } - - private void respondActivityTaskCompleted(RespondActivityTaskCompletedRequest completeRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondActivityTaskCompleted", - new WorkflowService.RespondActivityTaskCompleted_args(completeRequest)); - response = doRemoteCall(request); - WorkflowService.RespondActivityTaskCompleted_result result = - response.getBody(WorkflowService.RespondActivityTaskCompleted_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondActivityTaskCompleted failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondActivityTaskCompletedByID(RespondActivityTaskCompletedByIDRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_ACTIVITY_TASK_COMPLETED_BY_ID, - () -> respondActivityTaskCompletedByID(request)); - } - - private void respondActivityTaskCompletedByID( - RespondActivityTaskCompletedByIDRequest completeRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondActivityTaskCompletedByID", - new WorkflowService.RespondActivityTaskCompletedByID_args(completeRequest)); - response = doRemoteCall(request); - WorkflowService.RespondActivityTaskCompletedByID_result result = - response.getBody(WorkflowService.RespondActivityTaskCompletedByID_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondActivityTaskCompletedByID failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondActivityTaskFailed(RespondActivityTaskFailedRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_ACTIVITY_TASK_FAILED, () -> respondActivityTaskFailed(request)); - } - - private void respondActivityTaskFailed(RespondActivityTaskFailedRequest failRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondActivityTaskFailed", - new WorkflowService.RespondActivityTaskFailed_args(failRequest)); - response = doRemoteCall(request); - WorkflowService.RespondActivityTaskFailed_result result = - response.getBody(WorkflowService.RespondActivityTaskFailed_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondActivityTaskFailed failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_ACTIVITY_TASK_FAILED_BY_ID, - () -> respondActivityTaskFailedByID(request)); - } - - private void respondActivityTaskFailedByID(RespondActivityTaskFailedByIDRequest failRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondActivityTaskFailedByID", - new WorkflowService.RespondActivityTaskFailedByID_args(failRequest)); - response = doRemoteCall(request); - WorkflowService.RespondActivityTaskFailedByID_result result = - response.getBody(WorkflowService.RespondActivityTaskFailedByID_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondActivityTaskFailedByID failedByID with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondActivityTaskCanceled(RespondActivityTaskCanceledRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_ACTIVITY_TASK_CANCELED, () -> respondActivityTaskCanceled(request)); - } - - private void respondActivityTaskCanceled(RespondActivityTaskCanceledRequest canceledRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondActivityTaskCanceled", - new WorkflowService.RespondActivityTaskCanceled_args(canceledRequest)); - response = doRemoteCall(request); - WorkflowService.RespondActivityTaskCanceled_result result = - response.getBody(WorkflowService.RespondActivityTaskCanceled_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondActivityTaskCanceled failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondActivityTaskCanceledByID(RespondActivityTaskCanceledByIDRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_ACTIVITY_TASK_CANCELED_BY_ID, - () -> respondActivityTaskCanceledByID(request)); - } - - private void respondActivityTaskCanceledByID( - RespondActivityTaskCanceledByIDRequest canceledByIDRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondActivityTaskCanceledByID", - new WorkflowService.RespondActivityTaskCanceledByID_args(canceledByIDRequest)); - response = doRemoteCall(request); - WorkflowService.RespondActivityTaskCanceledByID_result result = - response.getBody(WorkflowService.RespondActivityTaskCanceledByID_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondActivityTaskCanceledByID failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RequestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.REQUEST_CANCEL_WORKFLOW_EXECUTION, - () -> requestCancelWorkflowExecution(request)); - } - - private void requestCancelWorkflowExecution(RequestCancelWorkflowExecutionRequest cancelRequest) - throws TException { - if (!cancelRequest.isSetRequestId()) { - cancelRequest.setRequestId(UUID.randomUUID().toString()); - } - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RequestCancelWorkflowExecution", - new WorkflowService.RequestCancelWorkflowExecution_args(cancelRequest)); - response = doRemoteCall(request); - WorkflowService.RequestCancelWorkflowExecution_result result = - response.getBody(WorkflowService.RequestCancelWorkflowExecution_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetCancellationAlreadyRequestedError()) { - throw result.getCancellationAlreadyRequestedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RequestCancelWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void SignalWorkflowExecution(SignalWorkflowExecutionRequest request) throws TException { - measureRemoteProc( - ServiceMethod.SIGNAL_WORKFLOW_EXECUTION, () -> signalWorkflowExecution(request)); - } - - private void signalWorkflowExecution(SignalWorkflowExecutionRequest signalRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "SignalWorkflowExecution", - new WorkflowService.SignalWorkflowExecution_args(signalRequest)); - response = doRemoteCall(request); - WorkflowService.SignalWorkflowExecution_result result = - response.getBody(WorkflowService.SignalWorkflowExecution_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("SignalWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public StartWorkflowExecutionResponse SignalWithStartWorkflowExecution( - SignalWithStartWorkflowExecutionRequest signalWithStartRequest) throws TException { - return measureRemoteCall( - ServiceMethod.SIGNAL_WITH_START_WORKFLOW_EXECUTION, - () -> signalWithStartWorkflowExecution(signalWithStartRequest)); - } - - @Override - public SignalWithStartWorkflowExecutionAsyncResponse SignalWithStartWorkflowExecutionAsync( - SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) throws TException { - return measureRemoteCall( - ServiceMethod.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC, - () -> signalWithStartWorkflowExecutionAsync(signalWithStartRequest)); - } - - private SignalWithStartWorkflowExecutionAsyncResponse signalWithStartWorkflowExecutionAsync( - SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest) throws TException { - ThriftResponse response = null; - try { - initializeSignalWithStartWorkflowRequest(signalWithStartRequest.getRequest()); - - ThriftRequest request = - buildThriftRequest( - "SignalWithStartWorkflowExecutionAsync", - new WorkflowService.SignalWithStartWorkflowExecutionAsync_args( - signalWithStartRequest)); - - response = doRemoteCall(request); - WorkflowService.SignalWithStartWorkflowExecutionAsync_result result = - response.getBody(WorkflowService.SignalWithStartWorkflowExecutionAsync_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException( - "SignalWithStartWorkflowExecutionAsync failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ResetWorkflowExecutionResponse ResetWorkflowExecution( - ResetWorkflowExecutionRequest resetRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - DomainNotActiveError, LimitExceededError, ClientVersionNotSupportedError, TException { - return measureRemoteCall( - ServiceMethod.RESET_WORKFLOW_EXECUTION, () -> resetWorkflowExecution(resetRequest)); - } - - private ResetWorkflowExecutionResponse resetWorkflowExecution( - ResetWorkflowExecutionRequest resetRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ResetWorkflowExecution", - new WorkflowService.ResetWorkflowExecution_args(resetRequest)); - response = doRemoteCall(request); - WorkflowService.ResetWorkflowExecution_result result = - response.getBody(WorkflowService.ResetWorkflowExecution_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("ResetWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - private StartWorkflowExecutionResponse signalWithStartWorkflowExecution( - SignalWithStartWorkflowExecutionRequest signalWithStartRequest) throws TException { - ThriftResponse response = null; - try { - initializeSignalWithStartWorkflowRequest(signalWithStartRequest); - - ThriftRequest request = - buildThriftRequest( - "SignalWithStartWorkflowExecution", - new WorkflowService.SignalWithStartWorkflowExecution_args(signalWithStartRequest)); - - response = doRemoteCall(request); - WorkflowService.SignalWithStartWorkflowExecution_result result = - response.getBody(WorkflowService.SignalWithStartWorkflowExecution_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("SignalWithStartWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - private void initializeSignalWithStartWorkflowRequest( - SignalWithStartWorkflowExecutionRequest request) { - if (!request.isSetRequestId()) { - request.setRequestId(UUID.randomUUID().toString()); - } - // Write span context to header - if (!request.isSetHeader()) { - request.setHeader(new Header()); - } - tracingPropagator.inject(request.getHeader()); - } - - @Override - public void TerminateWorkflowExecution(TerminateWorkflowExecutionRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.TERMINATE_WORKFLOW_EXECUTION, () -> terminateWorkflowExecution(request)); - } - - private void terminateWorkflowExecution(TerminateWorkflowExecutionRequest terminateRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "TerminateWorkflowExecution", - new WorkflowService.TerminateWorkflowExecution_args(terminateRequest)); - response = doRemoteCall(request); - WorkflowService.TerminateWorkflowExecution_result result = - response.getBody(WorkflowService.TerminateWorkflowExecution_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("TerminateWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ListOpenWorkflowExecutionsResponse ListOpenWorkflowExecutions( - ListOpenWorkflowExecutionsRequest request) throws TException { - return measureRemoteCall( - ServiceMethod.LIST_OPEN_WORKFLOW_EXECUTIONS, () -> listOpenWorkflowExecutions(request)); - } - - private ListOpenWorkflowExecutionsResponse listOpenWorkflowExecutions( - ListOpenWorkflowExecutionsRequest listRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ListOpenWorkflowExecutions", - new WorkflowService.ListOpenWorkflowExecutions_args(listRequest)); - response = doRemoteCall(request); - WorkflowService.ListOpenWorkflowExecutions_result result = - response.getBody(WorkflowService.ListOpenWorkflowExecutions_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("ListOpenWorkflowExecutions failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ListClosedWorkflowExecutionsResponse ListClosedWorkflowExecutions( - ListClosedWorkflowExecutionsRequest request) throws TException { - return measureRemoteCall( - ServiceMethod.LIST_CLOSED_WORKFLOW_EXECUTIONS, () -> listClosedWorkflowExecutions(request)); - } - - private ListClosedWorkflowExecutionsResponse listClosedWorkflowExecutions( - ListClosedWorkflowExecutionsRequest listRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ListClosedWorkflowExecutions", - new WorkflowService.ListClosedWorkflowExecutions_args(listRequest)); - response = doRemoteCall(request); - WorkflowService.ListClosedWorkflowExecutions_result result = - response.getBody(WorkflowService.ListClosedWorkflowExecutions_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("ListClosedWorkflowExecutions failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ListWorkflowExecutionsResponse ListWorkflowExecutions( - ListWorkflowExecutionsRequest request) - throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - return measureRemoteCall( - ServiceMethod.LIST_WORKFLOW_EXECUTIONS, () -> listWorkflowExecutions(request)); - } - - private ListWorkflowExecutionsResponse listWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ListWorkflowExecutions", - new WorkflowService.ListWorkflowExecutions_args(listRequest)); - response = doRemoteCall(request); - WorkflowService.ListWorkflowExecutions_result result = - response.getBody(WorkflowService.ListWorkflowExecutions_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("ListWorkflowExecutions failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ListArchivedWorkflowExecutionsResponse ListArchivedWorkflowExecutions( - ListArchivedWorkflowExecutionsRequest listRequest) - throws BadRequestError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - return measureRemoteCall( - ServiceMethod.LIST_ARCHIVED_WORKFLOW_EXECUTIONS, - () -> listArchivedWorkflowExecutions(listRequest)); - } - - private ListArchivedWorkflowExecutionsResponse listArchivedWorkflowExecutions( - ListArchivedWorkflowExecutionsRequest listRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ListArchivedWorkflowExecutions", - new WorkflowService.ListArchivedWorkflowExecutions_args(listRequest), - options.getRpcListArchivedWorkflowTimeoutMillis()); - response = doRemoteCall(request); - WorkflowService.ListArchivedWorkflowExecutions_result result = - response.getBody(WorkflowService.ListArchivedWorkflowExecutions_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("ListArchivedWorkflowExecutions failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ListWorkflowExecutionsResponse ScanWorkflowExecutions( - ListWorkflowExecutionsRequest request) - throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - return measureRemoteCall( - ServiceMethod.SCAN_WORKFLOW_EXECUTIONS, () -> scanWorkflowExecutions(request)); - } - - private ListWorkflowExecutionsResponse scanWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ScanWorkflowExecutions", - new WorkflowService.ScanWorkflowExecutions_args(listRequest)); - response = doRemoteCall(request); - WorkflowService.ScanWorkflowExecutions_result result = - response.getBody(WorkflowService.ScanWorkflowExecutions_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("ScanWorkflowExecutions failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public CountWorkflowExecutionsResponse CountWorkflowExecutions( - CountWorkflowExecutionsRequest countRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, ServiceBusyError, - ClientVersionNotSupportedError, TException { - return measureRemoteCall( - ServiceMethod.COUNT_WORKFLOW_EXECUTIONS, () -> countWorkflowExecutions(countRequest)); - } - - private CountWorkflowExecutionsResponse countWorkflowExecutions( - CountWorkflowExecutionsRequest countRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "CountWorkflowExecutions", - new WorkflowService.CountWorkflowExecutions_args(countRequest)); - response = doRemoteCall(request); - WorkflowService.CountWorkflowExecutions_result result = - response.getBody(WorkflowService.CountWorkflowExecutions_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("CountWorkflowExecutions failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public GetSearchAttributesResponse GetSearchAttributes() - throws InternalServiceError, ServiceBusyError, ClientVersionNotSupportedError, TException { - return measureRemoteCall(ServiceMethod.GET_SEARCH_ATTRIBUTES, () -> getSearchAttributes()); - } - - private GetSearchAttributesResponse getSearchAttributes() throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest("GetSearchAttributes", new WorkflowService.GetSearchAttributes_args()); - response = doRemoteCall(request); - WorkflowService.GetSearchAttributes_result result = - response.getBody(WorkflowService.GetSearchAttributes_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("GetSearchAttributes failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void RespondQueryTaskCompleted(RespondQueryTaskCompletedRequest request) - throws TException { - measureRemoteProc( - ServiceMethod.RESPOND_QUERY_TASK_COMPLETED, () -> respondQueryTaskCompleted(request)); - } - - private void respondQueryTaskCompleted(RespondQueryTaskCompletedRequest completeRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RespondQueryTaskCompleted", - new WorkflowService.RespondQueryTaskCompleted_args(completeRequest)); - response = doRemoteCall(request); - WorkflowService.RespondQueryTaskCompleted_result result = - response.getBody(WorkflowService.RespondQueryTaskCompleted_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("RespondQueryTaskCompleted failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public QueryWorkflowResponse QueryWorkflow(QueryWorkflowRequest request) throws TException { - return measureRemoteCall(ServiceMethod.QUERY_WORKFLOW, () -> queryWorkflow(request)); - } - - private QueryWorkflowResponse queryWorkflow(QueryWorkflowRequest queryRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "QueryWorkflow", - new WorkflowService.QueryWorkflow_args(queryRequest), - options.getRpcQueryTimeoutMillis()); - response = doRemoteCall(request); - WorkflowService.QueryWorkflow_result result = - response.getBody(WorkflowService.QueryWorkflow_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetQueryFailedError()) { - throw result.getQueryFailedError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("QueryWorkflow failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ResetStickyTaskListResponse ResetStickyTaskList(ResetStickyTaskListRequest resetRequest) - throws BadRequestError, InternalServiceError, EntityNotExistsError, LimitExceededError, - WorkflowExecutionAlreadyCompletedError, ServiceBusyError, DomainNotActiveError, - TException { - return measureRemoteCall( - ServiceMethod.RESET_STICKY_TASK_LIST, () -> resetStickyTaskList(resetRequest)); - } - - private ResetStickyTaskListResponse resetStickyTaskList(ResetStickyTaskListRequest queryRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ResetStickyTaskList", - new WorkflowService.ResetStickyTaskList_args(queryRequest), - options.getRpcQueryTimeoutMillis()); - response = doRemoteCall(request); - WorkflowService.ResetStickyTaskList_result result = - response.getBody(WorkflowService.ResetStickyTaskList_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - throw result.getWorkflowExecutionAlreadyCompletedError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("ResetStickyTaskList failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public DescribeWorkflowExecutionResponse DescribeWorkflowExecution( - DescribeWorkflowExecutionRequest request) throws TException { - return measureRemoteCall( - ServiceMethod.DESCRIBE_WORKFLOW_EXECUTION, () -> describeWorkflowExecution(request)); - } - - private DescribeWorkflowExecutionResponse describeWorkflowExecution( - DescribeWorkflowExecutionRequest describeRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "DescribeWorkflowExecution", - new WorkflowService.DescribeWorkflowExecution_args(describeRequest)); - response = doRemoteCall(request); - WorkflowService.DescribeWorkflowExecution_result result = - response.getBody(WorkflowService.DescribeWorkflowExecution_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("DescribeWorkflowExecution failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public DescribeTaskListResponse DescribeTaskList(DescribeTaskListRequest request) - throws TException { - return measureRemoteCall(ServiceMethod.DESCRIBE_TASK_LIST, () -> describeTaskList(request)); - } - - private DescribeTaskListResponse describeTaskList(DescribeTaskListRequest describeRequest) - throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "DescribeTaskList", new WorkflowService.DescribeTaskList_args(describeRequest)); - response = doRemoteCall(request); - WorkflowService.DescribeTaskList_result result = - response.getBody(WorkflowService.DescribeTaskList_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - if (result.isSetClientVersionNotSupportedError()) { - throw result.getClientVersionNotSupportedError(); - } - throw new TException("DescribeTaskList failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ClusterInfo GetClusterInfo() throws InternalServiceError, ServiceBusyError, TException { - return measureRemoteCall(ServiceMethod.GET_CLUSTER_INFO, () -> getClusterInfo()); - } - - private ClusterInfo getClusterInfo() throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest("GetClusterInfo", new WorkflowService.GetClusterInfo_args()); - response = doRemoteCall(request); - WorkflowService.GetClusterInfo_result result = - response.getBody(WorkflowService.GetClusterInfo_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetInternalServiceError()) { - throw result.getInternalServiceError(); - } - throw new TException("GetClusterInfo failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public ListTaskListPartitionsResponse ListTaskListPartitions( - ListTaskListPartitionsRequest request) - throws BadRequestError, EntityNotExistsError, LimitExceededError, ServiceBusyError, - TException { - return measureRemoteCall( - ServiceMethod.LIST_TASK_LIST_PARTITIONS, () -> listTaskListPartitions(request)); - } - - @Override - public void RefreshWorkflowTasks(RefreshWorkflowTasksRequest refreshWorkflowTasks) - throws BadRequestError, DomainNotActiveError, ServiceBusyError, EntityNotExistsError, - TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "RefreshWorkflowTasks", - new WorkflowService.RefreshWorkflowTasks_args(refreshWorkflowTasks)); - response = doRemoteCall(request); - WorkflowService.RefreshWorkflowTasks_result result = - response.getBody(WorkflowService.RefreshWorkflowTasks_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return; - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetDomainNotActiveError()) { - throw result.getDomainNotActiveError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - throw new TException("RefreshWorkflowTasks failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - private ListTaskListPartitionsResponse listTaskListPartitions( - ListTaskListPartitionsRequest listRequest) throws TException { - ThriftResponse response = null; - try { - ThriftRequest request = - buildThriftRequest( - "ListTaskListPartitions", - new WorkflowService.ListTaskListPartitions_args(listRequest)); - response = doRemoteCall(request); - WorkflowService.ListTaskListPartitions_result result = - response.getBody(WorkflowService.ListTaskListPartitions_result.class); - if (response.getResponseCode() == ResponseCode.OK) { - return result.getSuccess(); - } - if (result.isSetBadRequestError()) { - throw result.getBadRequestError(); - } - if (result.isSetEntityNotExistError()) { - throw result.getEntityNotExistError(); - } - if (result.isSetServiceBusyError()) { - throw result.getServiceBusyError(); - } - if (result.isSetLimitExceededError()) { - throw result.getLimitExceededError(); - } - throw new TException("ListTaskListPartitions failed with unknown error:" + result); - } finally { - if (response != null) { - response.release(); - } - } - } - - @Override - public void StartWorkflowExecution( - StartWorkflowExecutionRequest startRequest, AsyncMethodCallback resultHandler) { - startWorkflowExecution(startRequest, resultHandler, null); - } - - @Override - public void StartWorkflowExecutionWithTimeout( - StartWorkflowExecutionRequest startRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) { - startWorkflowExecution(startRequest, resultHandler, timeoutInMillis); - } - - private void startWorkflowExecution( - StartWorkflowExecutionRequest startRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) { - initializeStartWorkflowRequest(startRequest); - timeoutInMillis = validateAndUpdateTimeout(timeoutInMillis, options.getRpcTimeoutMillis()); - ThriftRequest request = - buildThriftRequest( - "StartWorkflowExecution", - new WorkflowService.StartWorkflowExecution_args(startRequest), - timeoutInMillis); - - CompletableFuture> response = - doRemoteCallAsync(request); - response - .whenComplete( - (r, e) -> { - try { - if (e != null) { - resultHandler.onError(CheckedExceptionWrapper.wrap(e)); - return; - } - WorkflowService.StartWorkflowExecution_result result = - r.getBody(WorkflowService.StartWorkflowExecution_result.class); - if (r.getResponseCode() == ResponseCode.OK) { - resultHandler.onComplete(result.getSuccess()); - return; - } - if (result.isSetBadRequestError()) { - resultHandler.onError(result.getBadRequestError()); - return; - } - if (result.isSetSessionAlreadyExistError()) { - resultHandler.onError(result.getSessionAlreadyExistError()); - return; - } - if (result.isSetServiceBusyError()) { - resultHandler.onError(result.getServiceBusyError()); - return; - } - if (result.isSetDomainNotActiveError()) { - resultHandler.onError(result.getDomainNotActiveError()); - return; - } - if (result.isSetLimitExceededError()) { - resultHandler.onError(result.getLimitExceededError()); - return; - } - if (result.isSetEntityNotExistError()) { - resultHandler.onError(result.getEntityNotExistError()); - return; - } - if (result.isSetClientVersionNotSupportedError()) { - resultHandler.onError(result.getClientVersionNotSupportedError()); - } - resultHandler.onError( - new TException("StartWorkflowExecution failed with unknown error:" + result)); - } finally { - if (r != null) { - r.release(); - } - } - }) - .exceptionally( - (e) -> { - log.error("Unexpected error in StartWorkflowExecution", e); - return null; - }); - } - - @Override - public void StartWorkflowExecutionAsync( - StartWorkflowExecutionAsyncRequest startRequest, AsyncMethodCallback resultHandler) - throws TException { - startWorkflowExecutionAsync(startRequest, resultHandler, null); - } - - @Override - public void StartWorkflowExecutionAsyncWithTimeout( - StartWorkflowExecutionAsyncRequest startAsyncRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) - throws TException { - startWorkflowExecutionAsync(startAsyncRequest, resultHandler, timeoutInMillis); - } - - private void startWorkflowExecutionAsync( - StartWorkflowExecutionAsyncRequest startAsyncRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) - throws TException { - initializeStartWorkflowRequest(startAsyncRequest.getRequest()); - timeoutInMillis = validateAndUpdateTimeout(timeoutInMillis, options.getRpcTimeoutMillis()); - ThriftRequest request = - buildThriftRequest( - "StartWorkflowExecutionAsync", - new WorkflowService.StartWorkflowExecutionAsync_args(startAsyncRequest), - timeoutInMillis); - - CompletableFuture> response = - doRemoteCallAsync(request); - response - .whenComplete( - (r, e) -> { - try { - if (e != null) { - resultHandler.onError(CheckedExceptionWrapper.wrap(e)); - return; - } - WorkflowService.StartWorkflowExecutionAsync_result result = - r.getBody(WorkflowService.StartWorkflowExecutionAsync_result.class); - if (r.getResponseCode() == ResponseCode.OK) { - resultHandler.onComplete(result.getSuccess()); - return; - } - if (result.isSetBadRequestError()) { - resultHandler.onError(result.getBadRequestError()); - return; - } - if (result.isSetSessionAlreadyExistError()) { - resultHandler.onError(result.getSessionAlreadyExistError()); - return; - } - if (result.isSetServiceBusyError()) { - resultHandler.onError(result.getServiceBusyError()); - return; - } - if (result.isSetDomainNotActiveError()) { - resultHandler.onError(result.getDomainNotActiveError()); - return; - } - if (result.isSetLimitExceededError()) { - resultHandler.onError(result.getLimitExceededError()); - return; - } - if (result.isSetEntityNotExistError()) { - resultHandler.onError(result.getEntityNotExistError()); - return; - } - if (result.isSetClientVersionNotSupportedError()) { - resultHandler.onError(result.getClientVersionNotSupportedError()); - } - resultHandler.onError( - new TException( - "StartWorkflowExecutionAsync failed with unknown error:" + result)); - } finally { - if (r != null) { - r.release(); - } - } - }) - .exceptionally( - (e) -> { - log.error("Unexpected error in StartWorkflowExecutionAsync", e); - return null; - }); - } - - private Long validateAndUpdateTimeout(Long timeoutInMillis, Long defaultTimeoutInMillis) { - if (timeoutInMillis == null || timeoutInMillis <= 0 || timeoutInMillis == Long.MAX_VALUE) { - timeoutInMillis = defaultTimeoutInMillis; - } else { - timeoutInMillis = Math.min(timeoutInMillis, defaultTimeoutInMillis); - } - return timeoutInMillis; - } - - @SuppressWarnings({"unchecked", "FutureReturnValueIgnored"}) - @Override - public void GetWorkflowExecutionHistoryWithTimeout( - GetWorkflowExecutionHistoryRequest getRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) { - - getWorkflowExecutionHistory(getRequest, resultHandler, timeoutInMillis); - } - - @SuppressWarnings({"unchecked", "FutureReturnValueIgnored"}) - @Override - public void GetWorkflowExecutionHistory( - GetWorkflowExecutionHistoryRequest getRequest, AsyncMethodCallback resultHandler) { - - getWorkflowExecutionHistory(getRequest, resultHandler, null); - } - - private void getWorkflowExecutionHistory( - GetWorkflowExecutionHistoryRequest getRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) { - - ThriftRequest request = - buildGetWorkflowExecutionHistoryThriftRequest(getRequest, timeoutInMillis); - - CompletableFuture> response = - doRemoteCallAsync(request); - response - .whenComplete( - (r, e) -> { - try { - if (e != null) { - resultHandler.onError(CheckedExceptionWrapper.wrap(e)); - return; - } - WorkflowService.GetWorkflowExecutionHistory_result result = - r.getBody(WorkflowService.GetWorkflowExecutionHistory_result.class); - - if (r.getResponseCode() == ResponseCode.OK) { - GetWorkflowExecutionHistoryResponse res = result.getSuccess(); - if (res.getRawHistory() != null) { - throw new TException( - "Raw history is not supported. Please turn off frontend.sendRawWorkflowHistory feature flag in frontend service to recover"); - } - resultHandler.onComplete(res); - return; - } - if (result.isSetBadRequestError()) { - resultHandler.onError(result.getBadRequestError()); - return; - } - if (result.isSetEntityNotExistError()) { - resultHandler.onError(result.getEntityNotExistError()); - return; - } - if (result.isSetServiceBusyError()) { - resultHandler.onError(result.getServiceBusyError()); - return; - } - resultHandler.onError( - new TException( - "GetWorkflowExecutionHistory failed with unknown " + "error:" + result)); - } catch (TException tException) { - resultHandler.onError(tException); - } finally { - if (r != null) { - r.release(); - } - } - }) - .exceptionally( - (e) -> { - log.error("Unexpected error in GetWorkflowExecutionHistory", e); - return null; - }); - } - - @Override - public void PollForDecisionTask( - PollForDecisionTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondDecisionTaskCompleted( - RespondDecisionTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondDecisionTaskFailed( - RespondDecisionTaskFailedRequest failedRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void PollForActivityTask( - PollForActivityTaskRequest pollRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RecordActivityTaskHeartbeat( - RecordActivityTaskHeartbeatRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RecordActivityTaskHeartbeatByID( - RecordActivityTaskHeartbeatByIDRequest heartbeatRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCompleted( - RespondActivityTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCompletedByID( - RespondActivityTaskCompletedByIDRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskFailed( - RespondActivityTaskFailedRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskFailedByID( - RespondActivityTaskFailedByIDRequest failRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCanceled( - RespondActivityTaskCanceledRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondActivityTaskCanceledByID( - RespondActivityTaskCanceledByIDRequest canceledRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RequestCancelWorkflowExecution( - RequestCancelWorkflowExecutionRequest cancelRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void SignalWorkflowExecution( - SignalWorkflowExecutionRequest signalRequest, AsyncMethodCallback resultHandler) { - signalWorkflowExecution(signalRequest, resultHandler, null); - } - - @Override - public void SignalWorkflowExecutionWithTimeout( - SignalWorkflowExecutionRequest signalRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) { - signalWorkflowExecution(signalRequest, resultHandler, timeoutInMillis); - } - - private void signalWorkflowExecution( - SignalWorkflowExecutionRequest signalRequest, - AsyncMethodCallback resultHandler, - Long timeoutInMillis) { - - timeoutInMillis = validateAndUpdateTimeout(timeoutInMillis, options.getRpcTimeoutMillis()); - ThriftRequest request = - buildThriftRequest( - "SignalWorkflowExecution", - new WorkflowService.SignalWorkflowExecution_args(signalRequest), - timeoutInMillis); - CompletableFuture> response = - doRemoteCallAsync(request); - response - .whenComplete( - (r, e) -> { - try { - if (e != null) { - resultHandler.onError(CheckedExceptionWrapper.wrap(e)); - return; - } - WorkflowService.SignalWorkflowExecution_result result = - r.getBody(WorkflowService.SignalWorkflowExecution_result.class); - if (r.getResponseCode() == ResponseCode.OK) { - resultHandler.onComplete(null); - return; - } - if (result.isSetBadRequestError()) { - resultHandler.onError(result.getBadRequestError()); - return; - } - if (result.isSetEntityNotExistError()) { - resultHandler.onError(result.getEntityNotExistError()); - return; - } - if (result.isSetWorkflowExecutionAlreadyCompletedError()) { - resultHandler.onError(result.getWorkflowExecutionAlreadyCompletedError()); - return; - } - if (result.isSetServiceBusyError()) { - resultHandler.onError(result.getServiceBusyError()); - return; - } - if (result.isSetDomainNotActiveError()) { - resultHandler.onError(result.getDomainNotActiveError()); - return; - } - if (result.isSetLimitExceededError()) { - resultHandler.onError(result.getLimitExceededError()); - return; - } - if (result.isSetClientVersionNotSupportedError()) { - resultHandler.onError(result.getClientVersionNotSupportedError()); - return; - } - resultHandler.onError( - new TException("SignalWorkflowExecution failed with unknown error:" + result)); - } finally { - if (r != null) { - r.release(); - } - } - }) - .exceptionally( - (e) -> { - log.error("Unexpected error in SignalWorkflowExecution", e); - return null; - }); - } - - @Override - public void SignalWithStartWorkflowExecution( - SignalWithStartWorkflowExecutionRequest signalWithStartRequest, - AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void SignalWithStartWorkflowExecutionAsync( - SignalWithStartWorkflowExecutionAsyncRequest signalWithStartRequest, - AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("unimplemented"); - } - - @Override - public void ResetWorkflowExecution( - ResetWorkflowExecutionRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void TerminateWorkflowExecution( - TerminateWorkflowExecutionRequest terminateRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListOpenWorkflowExecutions( - ListOpenWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListClosedWorkflowExecutions( - ListClosedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ListArchivedWorkflowExecutions( - ListArchivedWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ScanWorkflowExecutions( - ListWorkflowExecutionsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void CountWorkflowExecutions( - CountWorkflowExecutionsRequest countRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void GetSearchAttributes(AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RespondQueryTaskCompleted( - RespondQueryTaskCompletedRequest completeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void ResetStickyTaskList( - ResetStickyTaskListRequest resetRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void QueryWorkflow(QueryWorkflowRequest queryRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DescribeWorkflowExecution( - DescribeWorkflowExecutionRequest describeRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DescribeTaskList(DescribeTaskListRequest request, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void GetClusterInfo(AsyncMethodCallback resultHandler) throws TException {} - - @Override - public void ListTaskListPartitions( - ListTaskListPartitionsRequest request, AsyncMethodCallback resultHandler) throws TException {} - - @Override - public void RefreshWorkflowTasks( - RefreshWorkflowTasksRequest request, AsyncMethodCallback resultHandler) throws TException {} - - @Override - public void RegisterDomain( - RegisterDomainRequest registerRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DescribeDomain( - DescribeDomainRequest describeRequest, AsyncMethodCallback resultHandler) throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DiagnoseWorkflowExecution( - DiagnoseWorkflowExecutionRequest diagnoseRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("DiagnoseWorkflowExecution is not implemented"); - } - - @Override - public void ListDomains(ListDomainsRequest listRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void UpdateDomain(UpdateDomainRequest updateRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void DeprecateDomain( - DeprecateDomainRequest deprecateRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("not implemented"); - } - - @Override - public void RestartWorkflowExecution( - RestartWorkflowExecutionRequest restartRequest, AsyncMethodCallback resultHandler) - throws TException { - throw new UnsupportedOperationException("unimplemented"); - } - - @Override - public void GetTaskListsByDomain( - GetTaskListsByDomainRequest request, AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { - throw new UnsupportedOperationException("not implemented"); - } -} diff --git a/src/main/java/com/uber/cadence/worker/ShadowingWorker.java b/src/main/java/com/uber/cadence/worker/ShadowingWorker.java index 892128d70..8ad31815e 100644 --- a/src/main/java/com/uber/cadence/worker/ShadowingWorker.java +++ b/src/main/java/com/uber/cadence/worker/ShadowingWorker.java @@ -23,6 +23,8 @@ import com.uber.cadence.WorkflowIdReusePolicy; import com.uber.cadence.WorkflowType; import com.uber.cadence.client.WorkflowClient; +import com.uber.cadence.converter.DataConverter; +import com.uber.cadence.converter.JsonDataConverter; import com.uber.cadence.internal.common.InternalUtils; import com.uber.cadence.internal.common.RpcRetryer; import com.uber.cadence.internal.metrics.MetricsTag; @@ -34,8 +36,8 @@ import com.uber.cadence.internal.worker.SingleWorkerOptions; import com.uber.cadence.internal.worker.Suspendable; import com.uber.cadence.serviceclient.IWorkflowService; +import com.uber.cadence.shadower.Constants; import com.uber.cadence.shadower.WorkflowParams; -import com.uber.cadence.shadower.shadowerConstants; import com.uber.cadence.testing.TestEnvironmentOptions; import com.uber.cadence.workflow.Functions; import com.uber.m3.tally.Scope; @@ -44,8 +46,6 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; -import org.apache.thrift.TSerializer; -import org.apache.thrift.protocol.TSimpleJSONProtocol; public final class ShadowingWorker implements Suspendable { @@ -117,7 +117,7 @@ public ShadowingWorker( .build(); activityWorker = new SyncActivityWorker( - client.getService(), shadowerConstants.LocalDomainName, this.taskList, activityOptions); + client.getService(), Constants.LocalDomainName, this.taskList, activityOptions); activityWorker.setActivitiesImplementation(scanActivity, replayActivity); } @@ -183,7 +183,7 @@ public void addWorkflowImplementationFactory( } protected void startShadowingWorkflow() throws Exception { - TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); + DataConverter dataConverter = JsonDataConverter.getInstance(); WorkflowParams params = new WorkflowParams() .setDomain(shadowingOptions.getDomain()) @@ -195,11 +195,11 @@ protected void startShadowingWorkflow() throws Exception { .setWorkflowQuery(shadowingOptions.getWorkflowQuery()); StartWorkflowExecutionRequest request = new StartWorkflowExecutionRequest() - .setDomain(shadowerConstants.LocalDomainName) - .setWorkflowId(shadowingOptions.getDomain() + shadowerConstants.WorkflowIDSuffix) - .setTaskList(new TaskList().setName(shadowerConstants.TaskList)) - .setInput(serializer.serialize(params)) - .setWorkflowType(new WorkflowType().setName(shadowerConstants.WorkflowName)) + .setDomain(Constants.LocalDomainName) + .setWorkflowId(shadowingOptions.getDomain() + Constants.WorkflowIDSuffix) + .setTaskList(new TaskList().setName(Constants.TaskList)) + .setInput(dataConverter.toData(params)) + .setWorkflowType(new WorkflowType().setName(Constants.WorkflowName)) .setWorkflowIdReusePolicy(WorkflowIdReusePolicy.AllowDuplicate) .setRequestId(UUID.randomUUID().toString()) .setExecutionStartToCloseTimeoutSeconds(864000) diff --git a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java index 055a9d2c9..2897584a6 100644 --- a/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java +++ b/src/main/java/com/uber/cadence/workflow/WorkflowInterceptor.java @@ -41,7 +41,7 @@ public final class WorkflowExecuteInput { public WorkflowExecuteInput(WorkflowExecutionStartedEventAttributes workflowEventStart) { this.workflowEventStart = workflowEventStart; - this.workflowType = workflowEventStart.workflowType; + this.workflowType = workflowEventStart.getWorkflowType(); this.input = workflowEventStart.getInput(); } diff --git a/src/main/java/com/uber/cadence/workflow/WorkflowUtils.java b/src/main/java/com/uber/cadence/workflow/WorkflowUtils.java index e723eb3ab..705881ed9 100644 --- a/src/main/java/com/uber/cadence/workflow/WorkflowUtils.java +++ b/src/main/java/com/uber/cadence/workflow/WorkflowUtils.java @@ -21,7 +21,7 @@ import com.uber.cadence.SearchAttributes; import com.uber.cadence.converter.DataConverter; import com.uber.cadence.converter.JsonDataConverter; -import java.nio.ByteBuffer; +import java.util.Arrays; public class WorkflowUtils { private static final DataConverter jsonConverter = JsonDataConverter.getInstance(); @@ -35,9 +35,7 @@ public static T getValueFromSearchAttributes( } private static byte[] getValueBytes(SearchAttributes searchAttributes, String key) { - ByteBuffer byteBuffer = searchAttributes.getIndexedFields().get(key).duplicate(); - final byte[] valueBytes = new byte[byteBuffer.remaining()]; - byteBuffer.get(valueBytes); - return valueBytes; + byte[] original = searchAttributes.getIndexedFields().get(key); + return Arrays.copyOf(original, original.length); } } diff --git a/src/test/java/com/uber/cadence/FakeWorkflowServiceRule.java b/src/test/java/com/uber/cadence/FakeWorkflowServiceRule.java deleted file mode 100644 index d9d74ba4c..000000000 --- a/src/test/java/com/uber/cadence/FakeWorkflowServiceRule.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.uber.cadence; - -import com.uber.cadence.serviceclient.ClientOptions; -import com.uber.cadence.serviceclient.IWorkflowService; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; -import com.uber.tchannel.api.ResponseCode; -import com.uber.tchannel.api.TChannel; -import com.uber.tchannel.api.handlers.ThriftRequestHandler; -import com.uber.tchannel.messages.ThriftRequest; -import com.uber.tchannel.messages.ThriftResponse; -import io.opentracing.mock.MockTracer; -import java.util.Map; -import java.util.Queue; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedQueue; -import org.junit.rules.ExternalResource; - -/** - * FakeWorkflowServiceRule a local TChannel service which can be stubbed with fixed responses and - * captures the requests made to it. This allows testing throw the entire TChannel stack, - * particularly with TChannel being difficult to mock. - */ -public class FakeWorkflowServiceRule extends ExternalResource { - - private final Map stubbedEndpoints = new ConcurrentHashMap<>(); - private final MockTracer tracer = new MockTracer(); - private TChannel tChannel; - private IWorkflowService clientConn; - - @Override - protected void before() throws Throwable { - tChannel = new TChannel.Builder("cadence-frontend").build(); - tChannel.setDefaultUserHandler( - new ThriftRequestHandler() { - @Override - public ThriftResponse handleImpl(ThriftRequest request) { - StubbedEndpoint endpoint = stubbedEndpoints.get(request.getEndpoint()); - if (endpoint == null) { - throw new IllegalStateException( - "Endpoint " + request.getEndpoint() + " was not stubbed"); - } - @SuppressWarnings("rawtypes") - StubbedResponse stub = endpoint.getNext(); - if (stub == null) { - throw new IllegalStateException( - "Exhausted all invocations of " + request.getEndpoint()); - } - //noinspection unchecked - stub.future.complete(request.getBody(stub.requestType)); - return new ThriftResponse.Builder<>(request) - .setBody(stub.body) - .setResponseCode(stub.code) - .build(); - } - }); - tChannel.listen(); - clientConn = - new WorkflowServiceTChannel( - ClientOptions.newBuilder() - .setTracer(tracer) - .setHost(tChannel.getListeningHost()) - .setPort(tChannel.getListeningPort()) - .build()); - } - - @Override - protected void after() { - stubbedEndpoints.clear(); - if (clientConn != null) { - clientConn.close(); - } - if (tChannel != null) { - tChannel.shutdown(); - tChannel = null; - } - } - - public void resetStubs() { - tracer.reset(); - stubbedEndpoints.clear(); - } - - public IWorkflowService getClient() { - return clientConn; - } - - public MockTracer getTracer() { - return tracer; - } - - public CompletableFuture stubSuccess( - String endpoint, Class requestType, Object response) { - return stubEndpoint(endpoint, requestType, ResponseCode.OK, response); - } - - public CompletableFuture stubError( - String endpoint, Class requestType, Object response) { - return stubEndpoint(endpoint, requestType, ResponseCode.Error, response); - } - - public CompletableFuture stubEndpoint( - String endpoint, Class requestType, ResponseCode code, Object response) { - CompletableFuture future = new CompletableFuture<>(); - StubbedEndpoint endpointStub = - stubbedEndpoints.computeIfAbsent(endpoint, id -> new StubbedEndpoint()); - endpointStub.addStub(new StubbedResponse<>(response, code, future, requestType)); - return future; - } - - private static class StubbedEndpoint { - private final Queue> responses = new ConcurrentLinkedQueue<>(); - - public void addStub(StubbedResponse response) { - responses.add(response); - } - - public StubbedResponse getNext() { - return responses.poll(); - } - } - - private static class StubbedResponse { - private final Object body; - private final ResponseCode code; - private final CompletableFuture future; - private final Class requestType; - - private StubbedResponse( - Object body, ResponseCode code, CompletableFuture future, Class requestType) { - this.body = body; - this.code = code; - this.future = future; - this.requestType = requestType; - } - } -} diff --git a/src/test/java/com/uber/cadence/RegisterTestDomain.java b/src/test/java/com/uber/cadence/RegisterTestDomain.java index 44a38a195..dce205422 100644 --- a/src/test/java/com/uber/cadence/RegisterTestDomain.java +++ b/src/test/java/com/uber/cadence/RegisterTestDomain.java @@ -5,7 +5,6 @@ import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.cadence.testUtils.TestEnvironment; -import org.apache.thrift.TException; /** Waits for local service to become available and registers UnitTest domain. */ public class RegisterTestDomain { @@ -32,7 +31,7 @@ private static void registerDomain(IWorkflowService service, String domain) break; } catch (DomainAlreadyExistsError e) { break; - } catch (TException e) { + } catch (CadenceError e) { String message = e.getMessage(); if (message != null && !message.contains("Failed to connect to the host") diff --git a/src/test/java/com/uber/cadence/internal/common/StartWorkflowExecutionParametersTest.java b/src/test/java/com/uber/cadence/internal/common/StartWorkflowExecutionParametersTest.java index fd675f850..5952ec9ea 100644 --- a/src/test/java/com/uber/cadence/internal/common/StartWorkflowExecutionParametersTest.java +++ b/src/test/java/com/uber/cadence/internal/common/StartWorkflowExecutionParametersTest.java @@ -56,7 +56,7 @@ public void setUp() { public void testToString() { String expectedString = "StartWorkflowExecutionParameters{workflowId='workflow123', " - + "workflowType=WorkflowType(name:sampleWorkflow), taskList='taskList1', " + + "workflowType=WorkflowType(name=sampleWorkflow), taskList='taskList1', " + "input=[1, 2, 3], executionStartToCloseTimeoutSeconds=60, " + "taskStartToCloseTimeoutSeconds=30, workflowIdReusePolicy=null, " + "retryParameters=RetryParameters{initialIntervalInSeconds=0, " diff --git a/src/test/java/com/uber/cadence/internal/common/WorkflowExecutionUtilsTest.java b/src/test/java/com/uber/cadence/internal/common/WorkflowExecutionUtilsTest.java index 8d0e50969..2213b9419 100644 --- a/src/test/java/com/uber/cadence/internal/common/WorkflowExecutionUtilsTest.java +++ b/src/test/java/com/uber/cadence/internal/common/WorkflowExecutionUtilsTest.java @@ -21,13 +21,12 @@ import com.uber.cadence.*; import com.uber.cadence.client.WorkflowTerminatedException; import com.uber.cadence.client.WorkflowTimedOutException; -import com.uber.cadence.internal.compatibility.ThriftObjects; +import com.uber.cadence.internal.compatibility.ClientObjects; import com.uber.cadence.serviceclient.IWorkflowService; import java.util.*; import java.util.concurrent.CancellationException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.apache.thrift.TException; import org.junit.Before; import org.junit.Test; @@ -42,8 +41,7 @@ public class WorkflowExecutionUtilsTest { + " ActivityType = activityName;\n" + " Domain = domain;\n" + " Header = {\n" - + " Fields = { key1=value1, key2=value2 };\n" - + " FieldsSize = 2\n" + + " Fields = { key1=value1, key2=value2 }\n" + " };\n" + " HeartbeatTimeoutSeconds = 4;\n" + " Input = input;\n" @@ -408,7 +406,7 @@ public void testGetHistoryPage_HistoryIsNull() throws Exception { @Test public void testGetHistoryPage_ExceptionWhileRetrievingExecutionHistory() throws Exception { final String errMessage = "thrift comm exception"; - when(mockService.GetWorkflowExecutionHistory(any())).thenThrow(new TException(errMessage)); + when(mockService.GetWorkflowExecutionHistory(any())).thenThrow(new CadenceError(errMessage)); Error exception = assertThrows( @@ -433,8 +431,8 @@ public void testPrettyPrintDecisions() throws Exception { new Header() .setFields( ImmutableMap.of( - "key1", ThriftObjects.utf8("value1"), - "key2", ThriftObjects.utf8("value2"))); + "key1", ClientObjects.utf8("value1"), + "key2", ClientObjects.utf8("value2"))); final Decision decisionScheduleActivity = new Decision() @@ -444,7 +442,7 @@ public void testPrettyPrintDecisions() throws Exception { .setActivityId("activityId") .setActivityType(activityType) .setTaskList(taskList) - .setInput(ThriftObjects.utf8("input")) + .setInput(ClientObjects.utf8("input")) .setScheduleToCloseTimeoutSeconds(1) .setScheduleToStartTimeoutSeconds(2) .setStartToCloseTimeoutSeconds(3) @@ -460,7 +458,7 @@ public void testPrettyPrintDecisions() throws Exception { new FailWorkflowExecutionDecisionAttributes() .setReason("failure reason") .setDetails( - ThriftObjects.utf8( + ClientObjects.utf8( "{\"error\":\"panic\", \"stackTrace\":\"fn()\\nmain()\"}"))); ArrayList decisions = diff --git a/src/test/java/com/uber/cadence/internal/compatibility/ThriftObjects.java b/src/test/java/com/uber/cadence/internal/compatibility/ClientObjects.java similarity index 95% rename from src/test/java/com/uber/cadence/internal/compatibility/ThriftObjects.java rename to src/test/java/com/uber/cadence/internal/compatibility/ClientObjects.java index 4d6db21e7..94a5e5f68 100644 --- a/src/test/java/com/uber/cadence/internal/compatibility/ThriftObjects.java +++ b/src/test/java/com/uber/cadence/internal/compatibility/ClientObjects.java @@ -17,25 +17,22 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.uber.cadence.*; -import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Collections; import java.util.Map; import java.util.stream.Collectors; -public final class ThriftObjects { - public static final WorkflowType WORKFLOW_TYPE = - new com.uber.cadence.WorkflowType().setName("workflowType"); +public class ClientObjects { + + public static final WorkflowType WORKFLOW_TYPE = new WorkflowType().setName("workflowType"); public static final ActivityType ACTIVITY_TYPE = new ActivityType().setName("activityName"); public static final TaskList TASK_LIST = - new com.uber.cadence.TaskList() - .setName("taskList") - .setKind(com.uber.cadence.TaskListKind.NORMAL); + new TaskList().setName("taskList").setKind(TaskListKind.NORMAL); public static final TaskListMetadata TASK_LIST_METADATA = new TaskListMetadata().setMaxTasksPerSecond(10); public static final RetryPolicy RETRY_POLICY = - new com.uber.cadence.RetryPolicy() + new RetryPolicy() .setInitialIntervalInSeconds(11) .setBackoffCoefficient(0.5) .setMaximumIntervalInSeconds(12) @@ -59,16 +56,16 @@ public final class ThriftObjects { .setWorkerTaskList(TASK_LIST) .setScheduleToStartTimeoutSeconds(1); public static final WorkflowQuery WORKFLOW_QUERY = - new WorkflowQuery().setQueryType("queryType").setQueryArgs(utf8("queryArgs")); + new WorkflowQuery() + .setQueryType("queryType") + .setQueryArgs("queryArgs".getBytes(StandardCharsets.UTF_8)); public static final WorkflowQueryResult WORKFLOW_QUERY_RESULT = new WorkflowQueryResult() .setResultType(QueryResultType.ANSWERED) - .setAnswer(utf8("answer")) + .setAnswer("answer".getBytes(StandardCharsets.UTF_8)) .setErrorMessage("error"); public static final Header HEADER = new Header().setFields(ImmutableMap.of("key", utf8("value"))); public static final Memo MEMO = new Memo().setFields(ImmutableMap.of("memo", utf8("memoValue"))); - public static final AutoConfigHint AUTO_CONFIG_HINT = - new AutoConfigHint().setEnableAutoConfig(true).setPollerWaitTimeInMs(100); public static final SearchAttributes SEARCH_ATTRIBUTES = new SearchAttributes().setIndexedFields(ImmutableMap.of("search", utf8("attributes"))); public static final Map DATA = ImmutableMap.of("dataKey", "dataValue"); @@ -115,7 +112,7 @@ public final class ThriftObjects { .setSearchAttributes(SEARCH_ATTRIBUTES) .setAutoResetPoints(RESET_POINTS) .setTaskList(TASK_LIST.getName()) - .setIsCron(true); + .setCron(true); public static final PendingActivityInfo PENDING_ACTIVITY_INFO = new PendingActivityInfo() .setActivityID("activityId") @@ -182,7 +179,16 @@ public final class ThriftObjects { .setHistoryArchivalURI("historyArchivalUri") .setVisibilityArchivalStatus(ArchivalStatus.DISABLED) .setVisibilityArchivalURI("visibilityArchivalUri") - .setEmitMetric(true); + .setEmitMetric(true) + .setAsyncWorkflowConfiguration(new AsyncWorkflowConfiguration().setEnabled(true)) + .setIsolationgroups( + new IsolationGroupConfiguration() + .setIsolationGroups( + ImmutableList.of( + new IsolationGroupPartition() + .setName("partitionName") + .setState(IsolationGroupState.HEALTHY)))); + public static final StartTimeFilter START_TIME_FILTER = new StartTimeFilter().setEarliestTime(2).setLatestTime(3); public static final WorkflowExecutionFilter WORKFLOW_EXECUTION_FILTER = @@ -427,7 +433,7 @@ public final class ThriftObjects { .setScheduleToStartTimeoutSeconds(2) .setStartToCloseTimeoutSeconds(3) .setHeartbeatTimeoutSeconds(4) - .setDecisionTaskCompletedEventId(5) + .setDecisionTaskCompletedEventId((5)) .setRetryPolicy(RETRY_POLICY) .setHeader(HEADER); @@ -541,9 +547,7 @@ public final class ThriftObjects { .setHeader(HEADER) .setMemo(MEMO) .setSearchAttributes(SEARCH_ATTRIBUTES) - .setDelayStartSeconds(4) - .setJitterStartSeconds(5) - .setFirstRunAtTimestamp(123456789L); + .setDelayStartSeconds(4); public static final StartChildWorkflowExecutionFailedEventAttributes START_CHILD_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES = @@ -779,7 +783,7 @@ public final class ThriftObjects { .setDetails(utf8("details")) .setIdentity("identity"); public static final RespondActivityTaskCanceledRequest RESPOND_ACTIVITY_TASK_CANCELED_REQUEST = - new com.uber.cadence.RespondActivityTaskCanceledRequest() + new RespondActivityTaskCanceledRequest() .setTaskToken(utf8("taskToken")) .setDetails(utf8("details")) .setIdentity("identity"); @@ -863,8 +867,8 @@ public final class ThriftObjects { .setNextPageToken(utf8("nextPageToken")) .setQueryConsistencyLevel(QueryConsistencyLevel.STRONG); - public static final com.uber.cadence.StartWorkflowExecutionRequest START_WORKFLOW_EXECUTION = - new com.uber.cadence.StartWorkflowExecutionRequest() + public static final StartWorkflowExecutionRequest START_WORKFLOW_EXECUTION = + new StartWorkflowExecutionRequest() .setDomain("domain") .setWorkflowId(WORKFLOW_ID) .setWorkflowType(WORKFLOW_TYPE) @@ -874,7 +878,7 @@ public final class ThriftObjects { .setTaskStartToCloseTimeoutSeconds(2) .setIdentity("identity") .setRequestId("requestId") - .setWorkflowIdReusePolicy(com.uber.cadence.WorkflowIdReusePolicy.AllowDuplicate) + .setWorkflowIdReusePolicy(WorkflowIdReusePolicy.AllowDuplicate) .setRetryPolicy(RETRY_POLICY) .setCronSchedule("cronSchedule") .setMemo(MEMO) @@ -882,31 +886,30 @@ public final class ThriftObjects { .setHeader(HEADER) .setJitterStartSeconds(0) .setDelayStartSeconds(3) - .setFirstRunAtTimestamp(123456789L); - public static final com.uber.cadence.SignalWithStartWorkflowExecutionRequest - SIGNAL_WITH_START_WORKFLOW_EXECUTION = - new SignalWithStartWorkflowExecutionRequest() - .setDomain("domain") - .setWorkflowId(WORKFLOW_ID) - .setWorkflowType(WORKFLOW_TYPE) - .setTaskList(TASK_LIST) - .setInput("input".getBytes(StandardCharsets.UTF_8)) - .setExecutionStartToCloseTimeoutSeconds(1) - .setTaskStartToCloseTimeoutSeconds(2) - .setIdentity("identity") - .setRequestId("requestId") - .setWorkflowIdReusePolicy(com.uber.cadence.WorkflowIdReusePolicy.AllowDuplicate) - .setSignalName("signalName") - .setSignalInput("signalInput".getBytes(StandardCharsets.UTF_8)) - .setControl("control".getBytes(StandardCharsets.UTF_8)) - .setRetryPolicy(RETRY_POLICY) - .setCronSchedule("cronSchedule") - .setMemo(MEMO) - .setSearchAttributes(SEARCH_ATTRIBUTES) - .setHeader(HEADER) - .setDelayStartSeconds(3) - .setJitterStartSeconds(0) - .setFirstRunAtTimestamp(123456789L); + .setFirstRunAtTimestamp(123456789); + public static final SignalWithStartWorkflowExecutionRequest SIGNAL_WITH_START_WORKFLOW_EXECUTION = + new SignalWithStartWorkflowExecutionRequest() + .setDomain("domain") + .setWorkflowId(WORKFLOW_ID) + .setWorkflowType(WORKFLOW_TYPE) + .setTaskList(TASK_LIST) + .setInput("input".getBytes(StandardCharsets.UTF_8)) + .setExecutionStartToCloseTimeoutSeconds(1) + .setTaskStartToCloseTimeoutSeconds(2) + .setIdentity("identity") + .setRequestId("requestId") + .setWorkflowIdReusePolicy(WorkflowIdReusePolicy.AllowDuplicate) + .setSignalName("signalName") + .setSignalInput("signalInput".getBytes(StandardCharsets.UTF_8)) + .setControl("control".getBytes(StandardCharsets.UTF_8)) + .setRetryPolicy(RETRY_POLICY) + .setCronSchedule("cronSchedule") + .setMemo(MEMO) + .setSearchAttributes(SEARCH_ATTRIBUTES) + .setHeader(HEADER) + .setDelayStartSeconds(3) + .setJitterStartSeconds(0) + .setFirstRunAtTimestamp(123456789); public static final StartWorkflowExecutionAsyncRequest START_WORKFLOW_EXECUTION_ASYNC_REQUEST = new StartWorkflowExecutionAsyncRequest().setRequest(START_WORKFLOW_EXECUTION); @@ -1004,7 +1007,7 @@ public final class ThriftObjects { .setActiveClusterName("activeCluster") .setData(DATA) .setSecurityToken("securityToken") - .setIsGlobalDomain(true) + .setGlobalDomain(true) .setHistoryArchivalStatus(ArchivalStatus.ENABLED) .setHistoryArchivalURI("historyArchivalUri") .setVisibilityArchivalStatus(ArchivalStatus.DISABLED) @@ -1113,8 +1116,7 @@ public final class ThriftObjects { .setHeartbeatDetails(utf8("heartbeatDetails")) .setWorkflowType(WORKFLOW_TYPE) .setWorkflowDomain("domain") - .setHeader(HEADER) - .setAutoConfigHint(AUTO_CONFIG_HINT); + .setHeader(HEADER); public static final PollForDecisionTaskResponse POLL_FOR_DECISION_TASK_RESPONSE = new PollForDecisionTaskResponse() .setTaskToken(utf8("taskToken")) @@ -1131,8 +1133,7 @@ public final class ThriftObjects { .setScheduledTimestamp(5) .setStartedTimestamp(6) .setQueries(ImmutableMap.of("query", WORKFLOW_QUERY)) - .setNextEventId(7) - .setAutoConfigHint(AUTO_CONFIG_HINT); + .setNextEventId(7); public static final QueryWorkflowResponse QUERY_WORKFLOW_RESPONSE = new QueryWorkflowResponse() @@ -1158,7 +1159,7 @@ public final class ThriftObjects { .setConfiguration(DOMAIN_CONFIGURATION) .setReplicationConfiguration(DOMAIN_REPLICATION_CONFIGURATION) .setFailoverVersion(1) - .setIsGlobalDomain(true); + .setGlobalDomain(true); public static final ListDomainsResponse LIST_DOMAINS_RESPONSE = new ListDomainsResponse() .setDomains(ImmutableList.of(DESCRIBE_DOMAIN_RESPONSE)) @@ -1172,12 +1173,12 @@ public final class ThriftObjects { .setConfiguration(DOMAIN_CONFIGURATION) .setReplicationConfiguration(DOMAIN_REPLICATION_CONFIGURATION) .setFailoverVersion(1) - .setIsGlobalDomain(true); + .setGlobalDomain(true); - private ThriftObjects() {} + private ClientObjects() {} - public static ByteBuffer utf8(String value) { - return ByteBuffer.wrap(utf8Bytes(value)); + public static byte[] utf8(String value) { + return utf8Bytes(value); } public static byte[] utf8Bytes(String value) { diff --git a/src/test/java/com/uber/cadence/internal/compatibility/EnumMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/EnumMapperTest.java deleted file mode 100644 index 18040bee2..000000000 --- a/src/test/java/com/uber/cadence/internal/compatibility/EnumMapperTest.java +++ /dev/null @@ -1,379 +0,0 @@ -/** - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - *

    Modifications copyright (C) 2017 Uber Technologies, Inc. - * - *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file - * except in compliance with the License. A copy of the License is located at - * - *

    http://aws.amazon.com/apache2.0 - * - *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; - -import com.google.common.base.CaseFormat; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.uber.cadence.*; -import com.uber.cadence.api.v1.EventFilterType; -import com.uber.cadence.internal.compatibility.proto.EnumMapper; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.function.Function; -import org.apache.thrift.TEnum; -import org.junit.Test; - -public class EnumMapperTest { - - @Test - public void testTaskListKind() { - assertAllValuesRoundTrip( - TaskListKind.class, - com.uber.cadence.api.v1.TaskListKind.TASK_LIST_KIND_INVALID, - EnumMapper::taskListKind, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::taskListKind); - } - - @Test - public void testQueryRejectionCondition() { - assertAllValuesRoundTrip( - QueryRejectCondition.class, - com.uber.cadence.api.v1.QueryRejectCondition.QUERY_REJECT_CONDITION_INVALID, - EnumMapper::queryRejectCondition, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::queryRejectCondition); - } - - @Test - public void testContinueAsNewInitiator() { - assertAllValuesRoundTrip( - ContinueAsNewInitiator.class, - com.uber.cadence.api.v1.ContinueAsNewInitiator.CONTINUE_AS_NEW_INITIATOR_INVALID, - EnumMapper::continueAsNewInitiator, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::continueAsNewInitiator); - } - - @Test - public void testWorkflowIdReusePolicy() { - assertAllValuesRoundTrip( - WorkflowIdReusePolicy.class, - com.uber.cadence.api.v1.WorkflowIdReusePolicy.WORKFLOW_ID_REUSE_POLICY_INVALID, - EnumMapper::workflowIdReusePolicy, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::workflowIdReusePolicy); - } - - @Test - public void testArchivalStatus() { - assertAllValuesRoundTrip( - ArchivalStatus.class, - com.uber.cadence.api.v1.ArchivalStatus.ARCHIVAL_STATUS_INVALID, - EnumMapper::archivalStatus, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::archivalStatus); - } - - @Test - public void testParentClosePolicy() { - assertAllValuesRoundTrip( - ParentClosePolicy.class, - com.uber.cadence.api.v1.ParentClosePolicy.PARENT_CLOSE_POLICY_INVALID, - EnumMapper::parentClosePolicy, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::parentClosePolicy); - } - - @Test - public void testDecisionTaskFailedCause() { - assertAllValuesRoundTrip( - DecisionTaskFailedCause.class, - com.uber.cadence.api.v1.DecisionTaskFailedCause.DECISION_TASK_FAILED_CAUSE_INVALID, - EnumMapper::decisionTaskFailedCause, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::decisionTaskFailedCause); - } - - @Test - public void testWorkflowExecutionCloseStatus() { - assertAllValuesRoundTrip( - WorkflowExecutionCloseStatus.class, - com.uber.cadence.api.v1.WorkflowExecutionCloseStatus - .WORKFLOW_EXECUTION_CLOSE_STATUS_INVALID, - EnumMapper::workflowExecutionCloseStatus, - com.uber.cadence.internal.compatibility.thrift.EnumMapper::workflowExecutionCloseStatus); - } - - @Test - public void testTaskListType() { - assertMapping( - thriftToProtoIdentical( - TaskListType.class, - com.uber.cadence.api.v1.TaskListType.class, - com.uber.cadence.api.v1.TaskListType.TASK_LIST_TYPE_INVALID), - EnumMapper::taskListType); - } - - @Test - public void testEventFilterType() { - assertMapping( - thriftToProtoIdentical( - HistoryEventFilterType.class, - EventFilterType.class, - EventFilterType.EVENT_FILTER_TYPE_INVALID), - EnumMapper::eventFilterType); - } - - @Test - public void testQueryConsistencyLevel() { - assertMapping( - thriftToProtoIdentical( - QueryConsistencyLevel.class, - com.uber.cadence.api.v1.QueryConsistencyLevel.class, - com.uber.cadence.api.v1.QueryConsistencyLevel.QUERY_CONSISTENCY_LEVEL_INVALID), - EnumMapper::queryConsistencyLevel); - } - - @Test - public void testQueryResultType() { - assertMapping( - thriftToProtoIdentical( - QueryResultType.class, - com.uber.cadence.api.v1.QueryResultType.class, - com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_INVALID), - EnumMapper::queryResultType); - } - - @Test - public void testQueryTaskCompletedType() { - Map mapping = - ImmutableMap.of( - QueryTaskCompletedType.COMPLETED, - com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_ANSWERED, - QueryTaskCompletedType.FAILED, - com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_FAILED); - assertAllValuesPresent(QueryTaskCompletedType.class, mapping); - assertMapping(mapping, EnumMapper::queryTaskCompletedType); - // ImmutableMap doesn't accept null - assertEquals( - com.uber.cadence.api.v1.QueryResultType.QUERY_RESULT_TYPE_INVALID, - EnumMapper.queryTaskCompletedType(null)); - } - - @Test - public void testDomainStatus() { - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.DomainStatus.class, - DomainStatus.class, - com.uber.cadence.api.v1.DomainStatus.DOMAIN_STATUS_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper::domainStatus); - } - - @Test - public void testPendingActivityState() { - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.PendingActivityState.class, - PendingActivityState.class, - com.uber.cadence.api.v1.PendingActivityState.PENDING_ACTIVITY_STATE_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper::pendingActivityState); - } - - @Test - public void testPendingDecisionState() { - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.PendingDecisionState.class, - PendingDecisionState.class, - com.uber.cadence.api.v1.PendingDecisionState.PENDING_DECISION_STATE_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper::pendingDecisionState); - } - - @Test - public void testIndexedValueType() { - Map mapping = - protoToThriftIdentical( - com.uber.cadence.api.v1.IndexedValueType.class, - IndexedValueType.class, - com.uber.cadence.api.v1.IndexedValueType.INDEXED_VALUE_TYPE_INVALID); - // This mapper uniquely throws when encountering this value - mapping.remove(com.uber.cadence.api.v1.IndexedValueType.INDEXED_VALUE_TYPE_INVALID); - assertMapping( - mapping, com.uber.cadence.internal.compatibility.thrift.EnumMapper::indexedValueType); - assertThrows( - IllegalArgumentException.class, - () -> - com.uber.cadence.internal.compatibility.thrift.EnumMapper.indexedValueType( - com.uber.cadence.api.v1.IndexedValueType.INDEXED_VALUE_TYPE_INVALID)); - } - - @Test - public void testEncodingType() { - Map mapping = - ImmutableMap.of( - com.uber.cadence.api.v1.EncodingType.ENCODING_TYPE_THRIFTRW, - EncodingType.ThriftRW, - com.uber.cadence.api.v1.EncodingType.ENCODING_TYPE_JSON, - EncodingType.JSON); - - assertAllValuesPresent( - com.uber.cadence.api.v1.EncodingType.class, - mapping, - com.uber.cadence.api.v1.EncodingType.ENCODING_TYPE_INVALID, - com.uber.cadence.api.v1.EncodingType.ENCODING_TYPE_PROTO3, - com.uber.cadence.api.v1.EncodingType.UNRECOGNIZED); - - assertMapping(mapping, com.uber.cadence.internal.compatibility.thrift.EnumMapper::encodingType); - // ImmutableMap doesn't accept null - assertNull( - com.uber.cadence.internal.compatibility.thrift.EnumMapper.encodingType( - com.uber.cadence.api.v1.EncodingType.ENCODING_TYPE_INVALID)); - // No thrift equivalent - assertThrows( - UnsupportedOperationException.class, - () -> - com.uber.cadence.internal.compatibility.thrift.EnumMapper.encodingType( - com.uber.cadence.api.v1.EncodingType.ENCODING_TYPE_PROTO3)); - } - - @Test - public void testTimeoutType() { - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.TimeoutType.class, - TimeoutType.class, - com.uber.cadence.api.v1.TimeoutType.TIMEOUT_TYPE_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper::timeoutType); - } - - @Test - public void testDecisionTaskTimedOutCause() { - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.DecisionTaskTimedOutCause.class, - DecisionTaskTimedOutCause.class, - com.uber.cadence.api.v1.DecisionTaskTimedOutCause - .DECISION_TASK_TIMED_OUT_CAUSE_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper::decisionTaskTimedOutCause); - } - - @Test - public void testCancelExternalWorkflowExecutionFailedCause() { - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.CancelExternalWorkflowExecutionFailedCause.class, - CancelExternalWorkflowExecutionFailedCause.class, - com.uber.cadence.api.v1.CancelExternalWorkflowExecutionFailedCause - .CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper - ::cancelExternalWorkflowExecutionFailedCause); - } - - @Test - public void testSignalExternalWorkflowExecutionFailedCause() { - - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.SignalExternalWorkflowExecutionFailedCause.class, - SignalExternalWorkflowExecutionFailedCause.class, - com.uber.cadence.api.v1.SignalExternalWorkflowExecutionFailedCause - .SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper - ::signalExternalWorkflowExecutionFailedCause); - } - - @Test - public void testchildWorkflowExecutionFailedCause() { - assertMapping( - protoToThriftIdentical( - com.uber.cadence.api.v1.ChildWorkflowExecutionFailedCause.class, - ChildWorkflowExecutionFailedCause.class, - com.uber.cadence.api.v1.ChildWorkflowExecutionFailedCause - .CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID), - com.uber.cadence.internal.compatibility.thrift.EnumMapper - ::childWorkflowExecutionFailedCause); - } - - private static , T extends Enum> void assertAllValuesRoundTrip( - Class fromType, T invalidType, Function to, Function inverse) { - F[] values = fromType.getEnumConstants(); - for (F fromValue : values) { - F result = inverse.apply(to.apply(fromValue)); - assertEquals("Round tripping " + fromValue.toString(), fromValue, result); - } - assertEquals("null -> invalid", invalidType, to.apply(null)); - assertNull("invalid -> null", inverse.apply(invalidType)); - } - - private static > void assertAllValuesPresent( - Class type, Map mapping, E... except) { - Set exclusions = ImmutableSet.copyOf(except); - for (E value : type.getEnumConstants()) { - if (!exclusions.contains(value)) { - assertTrue("Missing mapping for " + value, mapping.containsKey(value)); - } - } - } - - private static , T extends Enum> void assertMapping( - Map mapping, Function mapper) { - for (Map.Entry entry : mapping.entrySet()) { - F from = entry.getKey(); - T actual = mapper.apply(from); - T expected = entry.getValue(); - assertEquals("Mapping " + from, expected, actual); - } - } - - private static , T extends Enum & TEnum> Map protoToThriftIdentical( - Class from, Class to, F invalid) { - // There are more clever and succinct ways to do this but most Map types don't accept null as a - // key - Map result = new HashMap<>(); - Map inverse = thriftToProtoIdentical(to, from, invalid); - for (Map.Entry entry : inverse.entrySet()) { - result.put(entry.getValue(), entry.getKey()); - } - return result; - } - - private static & TEnum, T extends Enum> Map thriftToProtoIdentical( - Class from, Class to, T invalid) { - Map toByName = - Arrays.stream(to.getEnumConstants()) - .collect(ImmutableMap.toImmutableMap(Enum::name, x -> x)); - Map cases = new HashMap<>(); - for (F fromValue : from.getEnumConstants()) { - String protoName = getProtoNameFor(to, fromValue); - T expected = toByName.get(protoName); - Preconditions.checkState( - expected != null, - "Failed to find an equivalent for %s in %s with name %s", - fromValue, - to, - protoName); - cases.put(fromValue, expected); - } - cases.put(null, invalid); - return cases; - } - - private static String getProtoNameFor(Class protoType, Enum value) { - // TaskListType.Decision -> TASK_LIST_TYPE_DECISION - // EventFilterType.ALL_EVENT -> EVENT_FILTER_TYPE_ALL_EVENT - String typePart = - CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, protoType.getSimpleName()); - String valuePart = value.name(); - // Some Thrift enums use UPPER_CAMEL, some use UPPER_UNDERSCORE - if (!value.name().toUpperCase().equals(value.name())) { - valuePart = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, valuePart); - } - return typePart + "_" + valuePart; - } -} diff --git a/src/test/java/com/uber/cadence/internal/compatibility/MapperTestUtil.java b/src/test/java/com/uber/cadence/internal/compatibility/MapperTestUtil.java index 96e3df2ad..8de471539 100644 --- a/src/test/java/com/uber/cadence/internal/compatibility/MapperTestUtil.java +++ b/src/test/java/com/uber/cadence/internal/compatibility/MapperTestUtil.java @@ -17,13 +17,9 @@ package com.uber.cadence.internal.compatibility; -import com.google.common.collect.ImmutableSet; -import java.util.Arrays; -import java.util.Collections; -import java.util.Set; -import java.util.stream.Collectors; -import org.apache.thrift.TBase; -import org.apache.thrift.TFieldIdEnum; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.junit.Assert; /** @@ -32,60 +28,26 @@ * the test or mapper is updated. */ public class MapperTestUtil { + public static void assertNoMissingFields(Object message) { + Set nullFields = getMissingFields(message.toString()); - public static & TFieldIdEnum, M extends TBase> - void assertNoMissingFields(M message) { - assertNoMissingFields(message, findFieldsEnum(message)); + Assert.assertEquals("All fields expected to be set in the text", new HashSet<>(), nullFields); } - public static & TFieldIdEnum, M extends TBase> - void assertNoMissingFields(M message, Class fields) { - Assert.assertEquals( - "All fields expected to be set in " + message.getClass().getSimpleName(), - Collections.emptySet(), - getUnsetFields(message, fields)); + public static void assertMissingFields(Object message, Set values) { + Set nullFields = getMissingFields(message.toString()); + Assert.assertEquals("Expected missing fields but get different", values, nullFields); } - public static & TFieldIdEnum, M extends TBase> void assertMissingFields( - M message, String... values) { - assertMissingFields(message, findFieldsEnum(message), ImmutableSet.copyOf(values)); - } - - public static & TFieldIdEnum, M extends TBase> void assertMissingFields( - M message, Set values) { - assertMissingFields(message, findFieldsEnum(message), values); - } - - public static & TFieldIdEnum, M extends TBase> void assertMissingFields( - M message, Class fields, String... values) { - assertMissingFields(message, fields, ImmutableSet.copyOf(values)); - } - - public static & TFieldIdEnum, M extends TBase> void assertMissingFields( - M message, Class fields, Set expected) { - Assert.assertEquals( - "Additional fields are unexpectedly not set in " + message.getClass().getSimpleName(), - expected, - getUnsetFields(message, fields)); - } - - private static & TFieldIdEnum, M extends TBase> - Set getUnsetFields(M message, Class fields) { - return Arrays.stream(fields.getEnumConstants()) - .filter(field -> !message.isSet(field)) - .map(TFieldIdEnum::getFieldName) - .collect(Collectors.toSet()); - } + private static Set getMissingFields(String text) { + Set nullFields = new HashSet<>(); + // Regex to find fieldName=null + Pattern pattern = Pattern.compile("(\\w+)=null"); + Matcher matcher = pattern.matcher(text); - @SuppressWarnings("unchecked") - private static & TFieldIdEnum, M extends TBase> Class findFieldsEnum( - M message) { - for (Class declaredClass : message.getClass().getDeclaredClasses()) { - if ("_Fields".equals(declaredClass.getSimpleName())) { - return (Class) declaredClass; - } + while (matcher.find()) { + nullFields.add(matcher.group(1)); // group(1) captures the field name } - throw new IllegalStateException( - "Failed to find _Fields enum for " + message.getClass().getCanonicalName()); + return nullFields; } } diff --git a/src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java b/src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java deleted file mode 100644 index d28b69804..000000000 --- a/src/test/java/com/uber/cadence/internal/compatibility/Thrift2ProtoAdapterTest.java +++ /dev/null @@ -1,1084 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.internal.compatibility; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import com.uber.cadence.AccessDeniedError; -import com.uber.cadence.RefreshWorkflowTasksRequest; -import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncRequest; -import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncResponse; -import com.uber.cadence.SignalWithStartWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncResponse; -import com.uber.cadence.StartWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionResponse; -import com.uber.cadence.WorkflowService; -import com.uber.cadence.api.v1.DomainAPIGrpc; -import com.uber.cadence.api.v1.Header; -import com.uber.cadence.api.v1.HealthResponse; -import com.uber.cadence.api.v1.MetaAPIGrpc; -import com.uber.cadence.api.v1.VisibilityAPIGrpc; -import com.uber.cadence.api.v1.WorkerAPIGrpc; -import com.uber.cadence.api.v1.WorkflowAPIGrpc; -import com.uber.cadence.internal.compatibility.proto.RequestMapper; -import com.uber.cadence.internal.compatibility.proto.serviceclient.IGrpcServiceStubs; -import com.uber.cadence.internal.compatibility.thrift.ResponseMapper; -import com.uber.cadence.serviceclient.ClientOptions; -import com.uber.cadence.serviceclient.IWorkflowService; -import io.grpc.ManagedChannel; -import io.grpc.Metadata; -import io.grpc.MethodDescriptor; -import io.grpc.Server; -import io.grpc.ServerCall; -import io.grpc.ServerCallHandler; -import io.grpc.ServerInterceptor; -import io.grpc.ServerInterceptors; -import io.grpc.ServerServiceDefinition; -import io.grpc.ServiceDescriptor; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; -import io.grpc.inprocess.InProcessChannelBuilder; -import io.grpc.inprocess.InProcessServerBuilder; -import io.grpc.stub.ServerCalls; -import io.grpc.stub.StreamObserver; -import io.grpc.testing.GrpcCleanupRule; -import io.opentracing.mock.MockSpan; -import io.opentracing.mock.MockTracer; -import java.io.IOException; -import java.util.Map; -import java.util.Queue; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionException; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedQueue; -import org.apache.commons.io.Charsets; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.slf4j.LoggerFactory; - -public class Thrift2ProtoAdapterTest { - private static final Metadata.Key AUTHORIZATION_HEADER_KEY = - Metadata.Key.of("cadence-authorization", Metadata.ASCII_STRING_MARSHALLER); - private static final StatusRuntimeException GRPC_ACCESS_DENIED = - new StatusRuntimeException(Status.PERMISSION_DENIED); - - @Rule public GrpcCleanupRule grpcCleanup = new GrpcCleanupRule(); - private final MockTracer tracer = new MockTracer(); - private final FakeGrpcServer stubs = new FakeGrpcServer(); - private IWorkflowService client; - private IWorkflowService tracingClient; - - @Before - public void setup() { - grpcCleanup.register( - stubs.createServer( - DomainAPIGrpc.getServiceDescriptor(), - VisibilityAPIGrpc.getServiceDescriptor(), - WorkflowAPIGrpc.getServiceDescriptor(), - WorkerAPIGrpc.getServiceDescriptor(), - MetaAPIGrpc.getServiceDescriptor())); - ManagedChannel clientChannel = grpcCleanup.register(stubs.createClient()); - Logger logger = - (Logger) - LoggerFactory.getLogger( - "com.uber.cadence.internal.compatibility.proto.serviceclient.GrpcServiceStubs"); - logger.setLevel(Level.TRACE); - client = - new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance( - ClientOptions.newBuilder() - .setAuthorizationProvider("foo"::getBytes) - .setGRPCChannel(clientChannel) - .build())); - tracingClient = - new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance( - ClientOptions.newBuilder() - .setAuthorizationProvider("foo"::getBytes) - .setTracer(tracer) - .setGRPCChannel(clientChannel) - .build())); - } - - @Test - public void testStartWorkflowExecution() throws Exception { - CompletableFuture protoRequest = - stub( - WorkflowAPIGrpc.getStartWorkflowExecutionMethod(), - ProtoObjects.START_WORKFLOW_EXECUTION_RESPONSE); - StartWorkflowExecutionRequest request = ThriftObjects.START_WORKFLOW_EXECUTION.deepCopy(); - // Test that a request ID will be set. - request.unsetRequestId(); - - StartWorkflowExecutionResponse response = client.StartWorkflowExecution(request); - - assertEquals( - ResponseMapper.startWorkflowExecutionResponse( - ProtoObjects.START_WORKFLOW_EXECUTION_RESPONSE), - response); - - assertNotNull(request.getRequestId()); - assertEquals(RequestMapper.startWorkflowExecutionRequest(request), protoRequest.join()); - } - - @Test - public void testStartWorkflowExecution_tracing() throws Exception { - CompletableFuture protoRequest = - stub( - WorkflowAPIGrpc.getStartWorkflowExecutionMethod(), - ProtoObjects.START_WORKFLOW_EXECUTION_RESPONSE); - StartWorkflowExecutionRequest request = ThriftObjects.START_WORKFLOW_EXECUTION.deepCopy(); - - tracingClient.StartWorkflowExecution(request); - - assertTracingHeaders(protoRequest.join().getHeader()); - } - - @Test - public void testStartWorkflowExecution_error() { - stubWithAccessDenied(WorkflowAPIGrpc.getStartWorkflowExecutionMethod()); - - assertThrows( - AccessDeniedError.class, - () -> client.StartWorkflowExecution(ThriftObjects.START_WORKFLOW_EXECUTION)); - } - - @Test - public void testStartWorkflowExecutionAsync() throws Exception { - CompletableFuture protoRequest = - stub( - WorkflowAPIGrpc.getStartWorkflowExecutionAsyncMethod(), - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE); - StartWorkflowExecutionAsyncRequest request = - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST.deepCopy(); - // Test that a request ID will be set. - request.getRequest().unsetRequestId(); - - StartWorkflowExecutionAsyncResponse response = client.StartWorkflowExecutionAsync(request); - - assertEquals( - ResponseMapper.startWorkflowExecutionAsyncResponse( - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE), - response); - - assertNotNull(request.getRequest().getRequestId()); - assertEquals(RequestMapper.startWorkflowExecutionAsyncRequest(request), protoRequest.join()); - } - - @Test - public void testStartWorkflowExecutionAsync_tracing() throws Exception { - CompletableFuture protoRequest = - stub( - WorkflowAPIGrpc.getStartWorkflowExecutionAsyncMethod(), - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE); - StartWorkflowExecutionAsyncRequest request = - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST.deepCopy(); - - tracingClient.StartWorkflowExecutionAsync(request); - - assertTracingHeaders(protoRequest.join().getRequest().getHeader()); - } - - @Test - public void testStartWorkflowExecutionAsync_error() { - stubWithAccessDenied(WorkflowAPIGrpc.getStartWorkflowExecutionAsyncMethod()); - - assertThrows( - AccessDeniedError.class, - () -> - client.StartWorkflowExecutionAsync( - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST)); - } - - @Test - public void testSignalWithStartWorkflowExecution() throws Exception { - CompletableFuture - protoRequest = - stub( - WorkflowAPIGrpc.getSignalWithStartWorkflowExecutionMethod(), - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_RESPONSE); - SignalWithStartWorkflowExecutionRequest request = - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION.deepCopy(); - // Test that a request ID will be set. - request.unsetRequestId(); - - StartWorkflowExecutionResponse response = client.SignalWithStartWorkflowExecution(request); - - assertEquals( - ResponseMapper.signalWithStartWorkflowExecutionResponse( - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_RESPONSE), - response); - - assertNotNull(request.getRequestId()); - assertEquals( - RequestMapper.signalWithStartWorkflowExecutionRequest(request), protoRequest.join()); - } - - @Test - public void testSignalWithStartWorkflowExecution_tracing() throws Exception { - CompletableFuture - protoRequest = - stub( - WorkflowAPIGrpc.getSignalWithStartWorkflowExecutionMethod(), - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_RESPONSE); - SignalWithStartWorkflowExecutionRequest request = - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION.deepCopy(); - - tracingClient.SignalWithStartWorkflowExecution(request); - - assertTracingHeaders(protoRequest.join().getStartRequest().getHeader()); - } - - @Test - public void testSignalWithStartWorkflowExecution_error() { - stubWithAccessDenied(WorkflowAPIGrpc.getSignalWithStartWorkflowExecutionMethod()); - - assertThrows( - AccessDeniedError.class, - () -> - client.SignalWithStartWorkflowExecution( - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION)); - } - - @Test - public void testSignalWithStartWorkflowAsyncExecution() throws Exception { - CompletableFuture - protoRequest = - stub( - WorkflowAPIGrpc.getSignalWithStartWorkflowExecutionAsyncMethod(), - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_RESPONSE); - SignalWithStartWorkflowExecutionAsyncRequest request = - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_REQUEST.deepCopy(); - // Test that a request ID will be set. - request.getRequest().unsetRequestId(); - - SignalWithStartWorkflowExecutionAsyncResponse response = - client.SignalWithStartWorkflowExecutionAsync(request); - - assertEquals( - ResponseMapper.signalWithStartWorkflowExecutionAsyncResponse( - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_RESPONSE), - response); - - assertNotNull(request.getRequest().getRequestId()); - assertEquals( - RequestMapper.signalWithStartWorkflowExecutionAsyncRequest(request), protoRequest.join()); - } - - @Test - public void testSignalWithStartWorkflowAsyncExecution_tracing() throws Exception { - CompletableFuture - protoRequest = - stub( - WorkflowAPIGrpc.getSignalWithStartWorkflowExecutionAsyncMethod(), - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_RESPONSE); - SignalWithStartWorkflowExecutionAsyncRequest request = - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_REQUEST.deepCopy(); - - tracingClient.SignalWithStartWorkflowExecutionAsync(request); - - assertTracingHeaders(protoRequest.join().getRequest().getStartRequest().getHeader()); - } - - @Test - public void testSignalWithStartWorkflowAsyncExecution_error() { - stubWithAccessDenied(WorkflowAPIGrpc.getSignalWithStartWorkflowExecutionAsyncMethod()); - - assertThrows( - AccessDeniedError.class, - () -> - client.SignalWithStartWorkflowExecutionAsync( - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_REQUEST)); - } - - @Test - public void testCountWorkflowExecutions() throws Exception { - testHelper( - VisibilityAPIGrpc.getCountWorkflowExecutionsMethod(), - ProtoObjects.COUNT_WORKFLOW_EXECUTIONS_REQUEST, - ProtoObjects.COUNT_WORKFLOW_EXECUTIONS_RESPONSE, - IWorkflowService::CountWorkflowExecutions, - ThriftObjects.COUNT_WORKFLOW_EXECUTIONS_REQUEST, - ThriftObjects.COUNT_WORKFLOW_EXECUTIONS_RESPONSE); - } - - @Test - public void testListWorkflowExecutions() throws Exception { - testHelper( - VisibilityAPIGrpc.getListWorkflowExecutionsMethod(), - ProtoObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, - ProtoObjects.LIST_WORKFLOW_EXECUTIONS_RESPONSE, - IWorkflowService::ListWorkflowExecutions, - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_RESPONSE); - } - - @Test - public void testListOpenWorkflowExecutions() throws Exception { - testHelper( - VisibilityAPIGrpc.getListOpenWorkflowExecutionsMethod(), - ProtoObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_REQUEST, - ProtoObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_RESPONSE, - IWorkflowService::ListOpenWorkflowExecutions, - ThriftObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_REQUEST, - ThriftObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_RESPONSE); - } - - @Test - public void testListClosedWorkflowExecutions() throws Exception { - testHelper( - VisibilityAPIGrpc.getListClosedWorkflowExecutionsMethod(), - ProtoObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_REQUEST, - ProtoObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_RESPONSE, - IWorkflowService::ListClosedWorkflowExecutions, - ThriftObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_REQUEST, - ThriftObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_RESPONSE); - } - - @Test - public void testListArchivedWorkflowExecutions() throws Exception { - testHelper( - VisibilityAPIGrpc.getListArchivedWorkflowExecutionsMethod(), - ProtoObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_REQUEST, - ProtoObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_RESPONSE, - IWorkflowService::ListArchivedWorkflowExecutions, - ThriftObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_REQUEST, - ThriftObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_RESPONSE); - } - - @Test - public void testScanWorkflowExecutions() throws Exception { - testHelper( - VisibilityAPIGrpc.getScanWorkflowExecutionsMethod(), - ProtoObjects.SCAN_WORKFLOW_EXECUTIONS_REQUEST, - ProtoObjects.SCAN_WORKFLOW_EXECUTIONS_RESPONSE, - IWorkflowService::ScanWorkflowExecutions, - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_RESPONSE); - } - - @Test - public void testGetSearchAttributes() throws Exception { - testHelper( - VisibilityAPIGrpc.getGetSearchAttributesMethod(), - ProtoObjects.GET_SEARCH_ATTRIBUTES_REQUEST, - ProtoObjects.GET_SEARCH_ATTRIBUTES_RESPONSE, - WorkflowService.Iface::GetSearchAttributes, - ThriftObjects.GET_SEARCH_ATTRIBUTES_RESPONSE); - } - - @Test - public void testRegisterDomain() throws Exception { - testHelper( - DomainAPIGrpc.getRegisterDomainMethod(), - ProtoObjects.REGISTER_DOMAIN_REQUEST, - ProtoObjects.REGISTER_DOMAIN_RESPONSE, - IWorkflowService::RegisterDomain, - ThriftObjects.REGISTER_DOMAIN_REQUEST); - } - - @Test - public void testDescribeDomain() throws Exception { - testHelper( - DomainAPIGrpc.getDescribeDomainMethod(), - ProtoObjects.DESCRIBE_DOMAIN_BY_ID_REQUEST, - ProtoObjects.DESCRIBE_DOMAIN_RESPONSE, - IWorkflowService::DescribeDomain, - ThriftObjects.DESCRIBE_DOMAIN_BY_ID_REQUEST, - ThriftObjects.DESCRIBE_DOMAIN_RESPONSE); - } - - @Test - public void testListDomains() throws Exception { - testHelper( - DomainAPIGrpc.getListDomainsMethod(), - ProtoObjects.LIST_DOMAINS_REQUEST, - ProtoObjects.LIST_DOMAINS_RESPONSE, - IWorkflowService::ListDomains, - ThriftObjects.LIST_DOMAINS_REQUEST, - ThriftObjects.LIST_DOMAINS_RESPONSE); - } - - @Test - public void testUpdateDomain() throws Exception { - testHelper( - DomainAPIGrpc.getUpdateDomainMethod(), - ProtoObjects.UPDATE_DOMAIN_REQUEST, - ProtoObjects.UPDATE_DOMAIN_RESPONSE, - IWorkflowService::UpdateDomain, - ThriftObjects.UPDATE_DOMAIN_REQUEST, - ThriftObjects.UPDATE_DOMAIN_RESPONSE); - } - - @Test - public void testDeprecateDomain() throws Exception { - testHelper( - DomainAPIGrpc.getDeprecateDomainMethod(), - ProtoObjects.DEPRECATE_DOMAIN_REQUEST, - ProtoObjects.DEPRECATE_DOMAIN_RESPONSE, - IWorkflowService::DeprecateDomain, - ThriftObjects.DEPRECATE_DOMAIN_REQUEST); - } - - @Test - public void testSignalWorkflowExecution() throws Exception { - testHelper( - WorkflowAPIGrpc.getSignalWorkflowExecutionMethod(), - ProtoObjects.SIGNAL_WORKFLOW_EXECUTION_REQUEST, - ProtoObjects.SIGNAL_WORKFLOW_EXECUTION_RESPONSE, - IWorkflowService::SignalWorkflowExecution, - ThriftObjects.SIGNAL_WORKFLOW_EXECUTION_REQUEST); - } - - @Test - public void testResetWorkflowExecution() throws Exception { - testHelper( - WorkflowAPIGrpc.getResetWorkflowExecutionMethod(), - ProtoObjects.RESET_WORKFLOW_EXECUTION_REQUEST, - ProtoObjects.RESET_WORKFLOW_EXECUTION_RESPONSE, - IWorkflowService::ResetWorkflowExecution, - ThriftObjects.RESET_WORKFLOW_EXECUTION_REQUEST, - ThriftObjects.RESET_WORKFLOW_EXECUTION_RESPONSE); - } - - @Test - public void testRequestCancelWorkflowExecution() throws Exception { - testHelper( - WorkflowAPIGrpc.getRequestCancelWorkflowExecutionMethod(), - ProtoObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST, - ProtoObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_RESPONSE, - IWorkflowService::RequestCancelWorkflowExecution, - ThriftObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST); - } - - @Test - public void testTerminateWorkflowExecution() throws Exception { - testHelper( - WorkflowAPIGrpc.getTerminateWorkflowExecutionMethod(), - ProtoObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST, - ProtoObjects.TERMINATE_WORKFLOW_EXECUTION_RESPONSE, - IWorkflowService::TerminateWorkflowExecution, - ThriftObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST); - } - - @Test - public void testDescribeWorkflowExecution() throws Exception { - testHelper( - WorkflowAPIGrpc.getDescribeWorkflowExecutionMethod(), - ProtoObjects.DESCRIBE_WORKFLOW_EXECUTION_REQUEST, - ProtoObjects.DESCRIBE_WORKFLOW_EXECUTION_RESPONSE, - IWorkflowService::DescribeWorkflowExecution, - ThriftObjects.DESCRIBE_WORKFLOW_EXECUTION_REQUEST, - ThriftObjects.DESCRIBE_WORKFLOW_EXECUTION_RESPONSE); - } - - @Test - public void testQueryWorkflow() throws Exception { - testHelper( - WorkflowAPIGrpc.getQueryWorkflowMethod(), - ProtoObjects.QUERY_WORKFLOW_REQUEST, - ProtoObjects.QUERY_WORKFLOW_RESPONSE, - IWorkflowService::QueryWorkflow, - ThriftObjects.QUERY_WORKFLOW_REQUEST, - ThriftObjects.QUERY_WORKFLOW_RESPONSE); - } - - @Test - public void testDescribeTaskList() throws Exception { - testHelper( - WorkflowAPIGrpc.getDescribeTaskListMethod(), - ProtoObjects.DESCRIBE_TASK_LIST_REQUEST, - ProtoObjects.DESCRIBE_TASK_LIST_RESPONSE, - IWorkflowService::DescribeTaskList, - ThriftObjects.DESCRIBE_TASK_LIST_REQUEST, - ThriftObjects.DESCRIBE_TASK_LIST_RESPONSE); - } - - @Test - public void testListTaskListPartitions() throws Exception { - testHelper( - WorkflowAPIGrpc.getListTaskListPartitionsMethod(), - ProtoObjects.LIST_TASK_LIST_PARTITIONS_REQUEST, - ProtoObjects.LIST_TASK_LIST_PARTITIONS_RESPONSE, - IWorkflowService::ListTaskListPartitions, - ThriftObjects.LIST_TASK_LIST_PARTITIONS_REQUEST, - ThriftObjects.LIST_TASK_LIST_PARTITIONS_RESPONSE); - } - - @Test - public void testGetClusterInfo() throws Exception { - testHelper( - WorkflowAPIGrpc.getGetClusterInfoMethod(), - ProtoObjects.GET_CLUSTER_INFO_REQUEST, - ProtoObjects.GET_CLUSTER_INFO_RESPONSE, - WorkflowService.Iface::GetClusterInfo, - ThriftObjects.CLUSTER_INFO); - } - - @Test - public void testGetWorkflowExecutionHistory() throws Exception { - testHelper( - WorkflowAPIGrpc.getGetWorkflowExecutionHistoryMethod(), - ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, - ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE, - IWorkflowService::GetWorkflowExecutionHistory, - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE); - } - - @Test - public void testRefreshWorkflowTasks() throws Exception { - testHelper( - WorkflowAPIGrpc.getRefreshWorkflowTasksMethod(), - ProtoObjects.REFRESH_WORKFLOW_TASKS_REQUEST, - ProtoObjects.REFRESH_WORKFLOW_TASKS_RESPONSE, - IWorkflowService::RefreshWorkflowTasks, - new RefreshWorkflowTasksRequest()); - } - - @Test - public void testPollForDecisionTask() throws Exception { - testHelper( - WorkerAPIGrpc.getPollForDecisionTaskMethod(), - ProtoObjects.POLL_FOR_DECISION_TASK_REQUEST, - ProtoObjects.POLL_FOR_DECISION_TASK_RESPONSE, - IWorkflowService::PollForDecisionTask, - ThriftObjects.POLL_FOR_DECISION_TASK_REQUEST, - ThriftObjects.POLL_FOR_DECISION_TASK_RESPONSE); - } - - @Test - public void testRespondDecisionTaskCompleted() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondDecisionTaskCompletedMethod(), - ProtoObjects.RESPOND_DECISION_TASK_COMPLETED_REQUEST, - ProtoObjects.RESPOND_DECISION_TASK_COMPLETED_RESPONSE, - IWorkflowService::RespondDecisionTaskCompleted, - ThriftObjects.RESPOND_DECISION_TASK_COMPLETED_REQUEST, - ThriftObjects.RESPOND_DECISION_TASK_COMPLETED_RESPONSE); - } - - @Test - public void testRespondDecisionTaskFailed() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondDecisionTaskFailedMethod(), - ProtoObjects.RESPOND_DECISION_TASK_FAILED_REQUEST, - ProtoObjects.RESPOND_DECISION_TASK_FAILED_RESPONSE, - IWorkflowService::RespondDecisionTaskFailed, - ThriftObjects.RESPOND_DECISION_TASK_FAILED_REQUEST); - } - - @Test - public void testPollForActivityTask() throws Exception { - testHelper( - WorkerAPIGrpc.getPollForActivityTaskMethod(), - ProtoObjects.POLL_FOR_ACTIVITY_TASK_REQUEST, - ProtoObjects.POLL_FOR_ACTIVITY_TASK_RESPONSE, - IWorkflowService::PollForActivityTask, - ThriftObjects.POLL_FOR_ACTIVITY_TASK_REQUEST, - ThriftObjects.POLL_FOR_ACTIVITY_TASK_RESPONSE); - } - - @Test - public void testRespondActivityTaskCompleted() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondActivityTaskCompletedMethod(), - ProtoObjects.RESPOND_ACTIVITY_TASK_COMPLETED_REQUEST, - ProtoObjects.RESPOND_ACTIVITY_TASK_COMPLETED_RESPONSE, - IWorkflowService::RespondActivityTaskCompleted, - ThriftObjects.RESPOND_ACTIVITY_TASK_COMPLETED_REQUEST); - } - - @Test - public void testRespondActivityTaskCompletedById() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondActivityTaskCompletedByIDMethod(), - ProtoObjects.RESPOND_ACTIVITY_TASK_COMPLETED_BY_ID_REQUEST, - ProtoObjects.RESPOND_ACTIVITY_TASK_COMPLETED_BY_ID_RESPONSE, - IWorkflowService::RespondActivityTaskCompletedByID, - ThriftObjects.RESPOND_ACTIVITY_TASK_COMPLETED_BY_ID_REQUEST); - } - - @Test - public void testRespondActivityTaskFailed() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondActivityTaskFailedMethod(), - ProtoObjects.RESPOND_ACTIVITY_TASK_FAILED_REQUEST, - ProtoObjects.RESPOND_ACTIVITY_TASK_FAILED_RESPONSE, - IWorkflowService::RespondActivityTaskFailed, - ThriftObjects.RESPOND_ACTIVITY_TASK_FAILED_REQUEST); - } - - @Test - public void testRespondActivityTaskFailedById() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondActivityTaskFailedByIDMethod(), - ProtoObjects.RESPOND_ACTIVITY_TASK_FAILED_BY_ID_REQUEST, - ProtoObjects.RESPOND_ACTIVITY_TASK_FAILED_BY_ID_RESPONSE, - IWorkflowService::RespondActivityTaskFailedByID, - ThriftObjects.RESPOND_ACTIVITY_TASK_FAILED_BY_ID_REQUEST); - } - - @Test - public void testRespondActivityTaskCanceled() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondActivityTaskCanceledMethod(), - ProtoObjects.RESPOND_ACTIVITY_TASK_CANCELED_REQUEST, - ProtoObjects.RESPOND_ACTIVITY_TASK_CANCELED_RESPONSE, - IWorkflowService::RespondActivityTaskCanceled, - ThriftObjects.RESPOND_ACTIVITY_TASK_CANCELED_REQUEST); - } - - @Test - public void testRespondActivityTaskCanceledById() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondActivityTaskCanceledByIDMethod(), - ProtoObjects.RESPOND_ACTIVITY_TASK_CANCELED_BY_ID_REQUEST, - ProtoObjects.RESPOND_ACTIVITY_TASK_CANCELED_BY_ID_RESPONSE, - IWorkflowService::RespondActivityTaskCanceledByID, - ThriftObjects.RESPOND_ACTIVITY_TASK_CANCELED_BY_ID_REQUEST); - } - - @Test - public void testRecordActivityTaskHeartbeat() throws Exception { - testHelper( - WorkerAPIGrpc.getRecordActivityTaskHeartbeatMethod(), - ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_REQUEST, - ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_RESPONSE, - IWorkflowService::RecordActivityTaskHeartbeat, - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_REQUEST, - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_RESPONSE); - } - - @Test - public void testRecordActivityTaskHeartbeatById() throws Exception { - testHelper( - WorkerAPIGrpc.getRecordActivityTaskHeartbeatByIDMethod(), - ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID_REQUEST, - ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID_RESPONSE, - IWorkflowService::RecordActivityTaskHeartbeatByID, - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID_REQUEST, - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_RESPONSE); - } - - @Test - public void testRespondQueryTaskCompleted() throws Exception { - testHelper( - WorkerAPIGrpc.getRespondQueryTaskCompletedMethod(), - ProtoObjects.RESPOND_QUERY_TASK_COMPLETED_REQUEST, - ProtoObjects.RESPOND_QUERY_TASK_COMPLETED_RESPONSE, - IWorkflowService::RespondQueryTaskCompleted, - ThriftObjects.RESPOND_QUERY_TASK_COMPLETED_REQUEST); - } - - @Test - public void testResetStickyTaskList() throws Exception { - testHelper( - WorkerAPIGrpc.getResetStickyTaskListMethod(), - ProtoObjects.RESET_STICKY_TASK_LIST_REQUEST, - ProtoObjects.RESET_STICKY_TASK_LIST_RESPONSE, - IWorkflowService::ResetStickyTaskList, - ThriftObjects.RESET_STICKY_TASK_LIST_REQUEST); - } - - @Test - public void testAsyncSignalWorkflowExecution() throws Exception { - testHelperAsync( - WorkflowAPIGrpc.getSignalWorkflowExecutionMethod(), - ProtoObjects.SIGNAL_WORKFLOW_EXECUTION_REQUEST, - ProtoObjects.SIGNAL_WORKFLOW_EXECUTION_RESPONSE, - IWorkflowService::SignalWorkflowExecution, - ThriftObjects.SIGNAL_WORKFLOW_EXECUTION_REQUEST, - null); - } - - @Test - public void testAsyncStartWorkflowExecutionAsync() throws Exception { - testHelperAsync( - WorkflowAPIGrpc.getStartWorkflowExecutionAsyncMethod(), - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST, - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE, - IWorkflowService::StartWorkflowExecutionAsync, - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST, - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE); - } - - @Test - public void testStartWorkflowExecutionWithTimeout() throws Exception { - testHelperAsync( - WorkflowAPIGrpc.getStartWorkflowExecutionMethod(), - ProtoObjects.START_WORKFLOW_EXECUTION, - ProtoObjects.START_WORKFLOW_EXECUTION_RESPONSE, - (service, request, handler) -> - service.StartWorkflowExecutionWithTimeout(request, handler, 1000L), - ThriftObjects.START_WORKFLOW_EXECUTION, - ThriftObjects.START_WORKFLOW_EXECUTION_RESPONSE); - } - - @Test - public void testStartWorkflowExecutionAsyncWithTimeout() throws Exception { - testHelperAsync( - WorkflowAPIGrpc.getStartWorkflowExecutionAsyncMethod(), - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST, - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE, - (service, request, handler) -> - service.StartWorkflowExecutionAsyncWithTimeout(request, handler, 1000L), - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST, - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE); - } - - @Test - public void testGetWorkflowExecutionHistoryWithTimeout() throws Exception { - testHelper( - WorkflowAPIGrpc.getGetWorkflowExecutionHistoryMethod(), - ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, - ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE, - (service, request) -> service.GetWorkflowExecutionHistoryWithTimeout(request, 1000L), - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE); - } - - @Test - public void testAsyncGetWorkflowExecutionHistoryWithTimeout() throws Exception { - testHelperAsync( - WorkflowAPIGrpc.getGetWorkflowExecutionHistoryMethod(), - ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, - ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE, - (service, request, handler) -> - service.GetWorkflowExecutionHistoryWithTimeout(request, handler, 1000L), - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE); - } - - @Test - public void testIsHealthy() throws Exception { - stubs.stubResponse( - MetaAPIGrpc.getHealthMethod(), HealthResponse.newBuilder().setOk(true).build()); - - assertTrue(client.isHealthy().join()); - } - - @Test - public void testAsyncUnsupported() { - assertUnsupported(WorkflowService.Iface::RestartWorkflowExecution); - assertUnsupported(WorkflowService.Iface::DiagnoseWorkflowExecution); - assertUnsupported(WorkflowService.Iface::GetTaskListsByDomain); - assertAsyncUnsupported(WorkflowService.AsyncIface::RegisterDomain); - assertAsyncUnsupported(WorkflowService.AsyncIface::DescribeDomain); - assertAsyncUnsupported(WorkflowService.AsyncIface::DiagnoseWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::ListDomains); - assertAsyncUnsupported(WorkflowService.AsyncIface::UpdateDomain); - assertAsyncUnsupported(WorkflowService.AsyncIface::DeprecateDomain); - assertAsyncUnsupported(WorkflowService.AsyncIface::RestartWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::StartWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::GetWorkflowExecutionHistory); - assertAsyncUnsupported(WorkflowService.AsyncIface::PollForDecisionTask); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondDecisionTaskCompleted); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondDecisionTaskFailed); - assertAsyncUnsupported(WorkflowService.AsyncIface::PollForActivityTask); - assertAsyncUnsupported(WorkflowService.AsyncIface::RecordActivityTaskHeartbeat); - assertAsyncUnsupported(WorkflowService.AsyncIface::RecordActivityTaskHeartbeatByID); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondActivityTaskCompleted); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondActivityTaskCompletedByID); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondActivityTaskFailed); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondActivityTaskFailedByID); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondActivityTaskCanceled); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondActivityTaskCanceledByID); - assertAsyncUnsupported(WorkflowService.AsyncIface::RequestCancelWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::SignalWithStartWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::SignalWithStartWorkflowExecutionAsync); - assertAsyncUnsupported(WorkflowService.AsyncIface::ResetWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::TerminateWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::ListOpenWorkflowExecutions); - assertAsyncUnsupported(WorkflowService.AsyncIface::ListClosedWorkflowExecutions); - assertAsyncUnsupported(WorkflowService.AsyncIface::ListWorkflowExecutions); - assertAsyncUnsupported(WorkflowService.AsyncIface::ListArchivedWorkflowExecutions); - assertAsyncUnsupported(WorkflowService.AsyncIface::ScanWorkflowExecutions); - assertAsyncUnsupported(WorkflowService.AsyncIface::CountWorkflowExecutions); - assertAsyncUnsupported(WorkflowService.AsyncIface::RespondQueryTaskCompleted); - assertAsyncUnsupported(WorkflowService.AsyncIface::ResetStickyTaskList); - assertAsyncUnsupported(WorkflowService.AsyncIface::QueryWorkflow); - assertAsyncUnsupported(WorkflowService.AsyncIface::DescribeWorkflowExecution); - assertAsyncUnsupported(WorkflowService.AsyncIface::DescribeTaskList); - assertAsyncUnsupported(WorkflowService.AsyncIface::GetTaskListsByDomain); - assertAsyncUnsupported(WorkflowService.AsyncIface::ListTaskListPartitions); - assertAsyncUnsupported(WorkflowService.AsyncIface::RefreshWorkflowTasks); - } - - private void assertUnsupported(ThriftFunc func) { - assertThrows(UnsupportedOperationException.class, () -> func.call(client, null)); - } - - private void assertAsyncUnsupported(ThriftAsyncFunc func) { - assertThrows(UnsupportedOperationException.class, () -> func.call(client, null, null)); - } - - private void testHelperAsync( - MethodDescriptor method, - PREQ protoRequest, - PRES protoResponse, - ThriftAsyncFunc clientMethod, - TREQ thriftRequest, - TRES thriftResponse) - throws Exception { - CompletableFuture protoRequestFuture = stub(method, protoResponse); - ThriftResponseCallback actualResponse = new ThriftResponseCallback<>(); - - clientMethod.call(client, thriftRequest, actualResponse); - - assertEquals( - "request for " + method.getFullMethodName(), protoRequest, protoRequestFuture.join()); - assertEquals( - "response from " + method.getFullMethodName(), thriftResponse, actualResponse.get()); - - stubWithAccessDenied(method); - ThriftResponseCallback errorResponse = new ThriftResponseCallback<>(); - clientMethod.call(client, thriftRequest, errorResponse); - try { - errorResponse.get(); - fail("expected exception"); - } catch (CompletionException ex) { - assertEquals(AccessDeniedError.class, ex.getCause().getClass()); - } - } - - private void testHelper( - MethodDescriptor method, - PREQ protoRequest, - PRES protoResponse, - ThriftFunc clientMethod, - TREQ thriftRequest, - TRES thriftResponse) - throws Exception { - CompletableFuture protoRequestFuture = stub(method, protoResponse); - - TRES actualResponse = clientMethod.call(client, thriftRequest); - - assertEquals( - "request for " + method.getFullMethodName(), protoRequest, protoRequestFuture.join()); - assertEquals("response from " + method.getFullMethodName(), thriftResponse, actualResponse); - - stubWithAccessDenied(method); - assertThrows(AccessDeniedError.class, () -> clientMethod.call(client, thriftRequest)); - } - - private void testHelper( - MethodDescriptor method, - PREQ protoRequest, - PRES protoResponse, - ThriftCallable clientMethod, - TREQ thriftRequest) - throws Exception { - CompletableFuture protoRequestFuture = stub(method, protoResponse); - - clientMethod.call(client, thriftRequest); - - assertEquals( - "request for " + method.getFullMethodName(), protoRequest, protoRequestFuture.join()); - - stubWithAccessDenied(method); - assertThrows(AccessDeniedError.class, () -> clientMethod.call(client, thriftRequest)); - } - - private void testHelper( - MethodDescriptor method, - PREQ protoRequest, - PRES protoResponse, - ThriftProvider clientMethod, - TRES thriftResponse) - throws Exception { - CompletableFuture protoRequestFuture = stub(method, protoResponse); - - TRES actualResponse = clientMethod.call(client); - - assertEquals( - "request for " + method.getFullMethodName(), protoRequest, protoRequestFuture.join()); - assertEquals("response from " + method.getFullMethodName(), thriftResponse, actualResponse); - - stubWithAccessDenied(method); - assertThrows(AccessDeniedError.class, () -> clientMethod.call(client)); - } - - private void assertTracingHeaders(Header header) { - assertEquals(1, tracer.finishedSpans().size()); - MockSpan mockSpan = tracer.finishedSpans().get(0); - assertEquals( - mockSpan.context().toTraceId(), - Charsets.UTF_8 - .decode(header.getFieldsMap().get("traceid").getData().asReadOnlyByteBuffer()) - .toString()); - assertEquals( - mockSpan.context().toSpanId(), - Charsets.UTF_8 - .decode(header.getFieldsMap().get("spanid").getData().asReadOnlyByteBuffer()) - .toString()); - } - - private CompletableFuture stub(MethodDescriptor method, RES result) { - return stubs.stubResponse(method, result); - } - - private CompletableFuture stubWithAccessDenied( - MethodDescriptor method) { - return stubs.stubError(method, GRPC_ACCESS_DENIED); - } - - private interface ThriftProvider { - RES call(IWorkflowService service) throws TException; - } - - private interface ThriftCallable { - void call(IWorkflowService service, REQ req) throws TException; - } - - private interface ThriftFunc { - RES call(IWorkflowService service, REQ req) throws TException; - } - - private interface ThriftAsyncFunc { - void call(IWorkflowService service, REQ req, AsyncMethodCallback callback) - throws TException; - } - - private interface StubbedBehavior { - void run(REQ request, StreamObserver response); - } - - private static class FakeGrpcServer { - private final Map>> stubs = new ConcurrentHashMap<>(); - - public CompletableFuture stubResponse( - MethodDescriptor method, RES response) { - CompletableFuture requestFuture = new CompletableFuture<>(); - stub( - method, - (req, stream) -> { - stream.onNext(response); - stream.onCompleted(); - requestFuture.complete(req); - }); - return requestFuture; - } - - public CompletableFuture stubError( - MethodDescriptor method, StatusRuntimeException exception) { - CompletableFuture requestFuture = new CompletableFuture<>(); - stub( - method, - (req, stream) -> { - stream.onError(exception); - requestFuture.complete(req); - }); - return requestFuture; - } - - public void stub( - MethodDescriptor method, StubbedBehavior handler) { - stubs - .computeIfAbsent(method.getFullMethodName(), (key) -> new ConcurrentLinkedQueue<>()) - .add(handler); - } - - public Server createServer(ServiceDescriptor... descriptors) { - try { - InProcessServerBuilder serverBuilder = - InProcessServerBuilder.forName("test").directExecutor(); - for (ServiceDescriptor descriptor : descriptors) { - ServerServiceDefinition.Builder serviceDefinition = - ServerServiceDefinition.builder(descriptor.getName()); - for (MethodDescriptor method : descriptor.getMethods()) { - serviceDefinition.addMethod( - method, - ServerCalls.asyncUnaryCall( - (request, responseObserver) -> - handleRequest(method, request, responseObserver))); - } - serverBuilder.addService( - ServerInterceptors.intercept( - serviceDefinition.build(), new AuthHeaderValidatingInterceptor())); - } - return serverBuilder.build().start(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public ManagedChannel createClient() { - return InProcessChannelBuilder.forName("test").directExecutor().build(); - } - - public void resetStubs() { - stubs.clear(); - } - - private void handleRequest( - MethodDescriptor method, Object request, StreamObserver response) { - Queue> queue = stubs.get(method.getFullMethodName()); - if (queue == null) { - throw new IllegalStateException("No behavior stubbed for " + method.getFullMethodName()); - } - StubbedBehavior behavior = queue.poll(); - if (behavior == null) { - throw new IllegalStateException( - "No remaining calls stubbed for " + method.getFullMethodName()); - } - //noinspection unchecked,rawtypes - ((StubbedBehavior) behavior).run(request, response); - } - } - - private static class AuthHeaderValidatingInterceptor implements ServerInterceptor { - - @Override - public ServerCall.Listener interceptCall( - ServerCall call, Metadata headers, ServerCallHandler next) { - if (!headers.containsKey(AUTHORIZATION_HEADER_KEY)) { - call.close(Status.INVALID_ARGUMENT, new Metadata()); - } - return next.startCall(call, headers); - } - } - - private static class ThriftResponseCallback implements AsyncMethodCallback { - private final CompletableFuture future = new CompletableFuture<>(); - - @Override - public void onComplete(T response) { - future.complete(response); - } - - @Override - public void onError(Exception exception) { - future.completeExceptionally(exception); - } - - public T get() { - return future.join(); - } - } -} diff --git a/src/test/java/com/uber/cadence/internal/compatibility/proto/DecisionMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapperTest.java similarity index 64% rename from src/test/java/com/uber/cadence/internal/compatibility/proto/DecisionMapperTest.java rename to src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapperTest.java index f12ad2d53..e8ab4806d 100644 --- a/src/test/java/com/uber/cadence/internal/compatibility/proto/DecisionMapperTest.java +++ b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapperTest.java @@ -12,17 +12,16 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ -package com.uber.cadence.internal.compatibility.proto; +package com.uber.cadence.internal.compatibility.proto.mappers; -import static com.uber.cadence.internal.compatibility.MapperTestUtil.assertMissingFields; import static com.uber.cadence.internal.compatibility.MapperTestUtil.assertNoMissingFields; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; import com.uber.cadence.Decision; import com.uber.cadence.DecisionType; +import com.uber.cadence.internal.compatibility.ClientObjects; import com.uber.cadence.internal.compatibility.ProtoObjects; -import com.uber.cadence.internal.compatibility.ThriftObjects; import java.util.Collections; import java.util.EnumSet; import java.util.Map; @@ -35,36 +34,36 @@ public class DecisionMapperTest { private static final Map DECISIONS = ImmutableMap.builder() .put( - ThriftObjects.DECISION_SCHEDULE_ACTIVITY_TASK, + ClientObjects.DECISION_SCHEDULE_ACTIVITY_TASK, ProtoObjects.DECISION_SCHEDULE_ACTIVITY_TASK) .put( - ThriftObjects.DECISION_REQUEST_CANCEL_ACTIVITY_TASK, + ClientObjects.DECISION_REQUEST_CANCEL_ACTIVITY_TASK, ProtoObjects.DECISION_REQUEST_CANCEL_ACTIVITY_TASK) - .put(ThriftObjects.DECISION_START_TIMER, ProtoObjects.DECISION_START_TIMER) + .put(ClientObjects.DECISION_START_TIMER, ProtoObjects.DECISION_START_TIMER) .put( - ThriftObjects.DECISION_COMPLETE_WORKFLOW_EXECUTION, + ClientObjects.DECISION_COMPLETE_WORKFLOW_EXECUTION, ProtoObjects.DECISION_COMPLETE_WORKFLOW_EXECUTION) .put( - ThriftObjects.DECISION_FAIL_WORKFLOW_EXECUTION, + ClientObjects.DECISION_FAIL_WORKFLOW_EXECUTION, ProtoObjects.DECISION_FAIL_WORKFLOW_EXECUTION) - .put(ThriftObjects.DECISION_CANCEL_TIMER, ProtoObjects.DECISION_CANCEL_TIMER) - .put(ThriftObjects.DECISION_CANCEL_WORKFLOW, ProtoObjects.DECISION_CANCEL_WORKFLOW) + .put(ClientObjects.DECISION_CANCEL_TIMER, ProtoObjects.DECISION_CANCEL_TIMER) + .put(ClientObjects.DECISION_CANCEL_WORKFLOW, ProtoObjects.DECISION_CANCEL_WORKFLOW) .put( - ThriftObjects.DECISION_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION, + ClientObjects.DECISION_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION, ProtoObjects.DECISION_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION) .put( - ThriftObjects.DECISION_CONTINUE_AS_NEW_WORKFLOW_EXECUTION, + ClientObjects.DECISION_CONTINUE_AS_NEW_WORKFLOW_EXECUTION, ProtoObjects.DECISION_CONTINUE_AS_NEW_WORKFLOW_EXECUTION) .put( - ThriftObjects.DECISION_START_CHILD_WORKFLOW_EXECUTION, + ClientObjects.DECISION_START_CHILD_WORKFLOW_EXECUTION, ProtoObjects.DECISION_START_CHILD_WORKFLOW_EXECUTION) .put( - ThriftObjects.DECISION_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION, + ClientObjects.DECISION_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION, ProtoObjects.DECISION_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION) .put( - ThriftObjects.DECISION_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES, + ClientObjects.DECISION_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES, ProtoObjects.DECISION_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES) - .put(ThriftObjects.DECISION_RECORD_MARKER, ProtoObjects.DECISION_RECORD_MARKER) + .put(ClientObjects.DECISION_RECORD_MARKER, ProtoObjects.DECISION_RECORD_MARKER) .build(); @Test @@ -95,46 +94,46 @@ public void testAllAttributesSet() { // If IDL changes add a new field to decision attributes, this should fail for (Map.Entry entry : DECISIONS.entrySet()) { Decision decision = entry.getKey(); - switch (decision.decisionType) { + switch (decision.getDecisionType()) { case ScheduleActivityTask: - assertNoMissingFields(decision.scheduleActivityTaskDecisionAttributes); + assertNoMissingFields(decision.getScheduleActivityTaskDecisionAttributes()); break; case RequestCancelActivityTask: - assertNoMissingFields(decision.requestCancelActivityTaskDecisionAttributes); + assertNoMissingFields(decision.getRequestCancelActivityTaskDecisionAttributes()); break; case StartTimer: - assertNoMissingFields(decision.startTimerDecisionAttributes); + assertNoMissingFields(decision.getStartTimerDecisionAttributes()); break; case CompleteWorkflowExecution: - assertNoMissingFields(decision.completeWorkflowExecutionDecisionAttributes); + assertNoMissingFields(decision.getCompleteWorkflowExecutionDecisionAttributes()); break; case FailWorkflowExecution: - assertNoMissingFields(decision.failWorkflowExecutionDecisionAttributes); + assertNoMissingFields(decision.getFailWorkflowExecutionDecisionAttributes()); break; case CancelTimer: - assertNoMissingFields(decision.cancelTimerDecisionAttributes); + assertNoMissingFields(decision.getCancelTimerDecisionAttributes()); break; case CancelWorkflowExecution: - assertNoMissingFields(decision.cancelWorkflowExecutionDecisionAttributes); + assertNoMissingFields(decision.getCancelWorkflowExecutionDecisionAttributes()); break; case RequestCancelExternalWorkflowExecution: - assertNoMissingFields(decision.requestCancelExternalWorkflowExecutionDecisionAttributes); + assertNoMissingFields( + decision.getRequestCancelExternalWorkflowExecutionDecisionAttributes()); break; case RecordMarker: - assertNoMissingFields(decision.recordMarkerDecisionAttributes); + assertNoMissingFields(decision.getRecordMarkerDecisionAttributes()); break; case ContinueAsNewWorkflowExecution: - assertMissingFields( - decision.continueAsNewWorkflowExecutionDecisionAttributes, "jitterStartSeconds"); + assertNoMissingFields(decision.getContinueAsNewWorkflowExecutionDecisionAttributes()); break; case StartChildWorkflowExecution: - assertNoMissingFields(decision.startChildWorkflowExecutionDecisionAttributes); + assertNoMissingFields(decision.getStartChildWorkflowExecutionDecisionAttributes()); break; case SignalExternalWorkflowExecution: - assertNoMissingFields(decision.signalExternalWorkflowExecutionDecisionAttributes); + assertNoMissingFields(decision.getSignalExternalWorkflowExecutionDecisionAttributes()); break; case UpsertWorkflowSearchAttributes: - assertNoMissingFields(decision.upsertWorkflowSearchAttributesDecisionAttributes); + assertNoMissingFields(decision.getUpsertWorkflowSearchAttributesDecisionAttributes()); break; } } diff --git a/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapperTest.java new file mode 100644 index 000000000..e9b46f34b --- /dev/null +++ b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/ErrorMapperTest.java @@ -0,0 +1,138 @@ +/* + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Modifications copyright (C) 2017 Uber Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. A copy of the License is + * located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package com.uber.cadence.internal.compatibility.proto.mappers; + +import static org.junit.Assert.assertEquals; + +import com.google.protobuf.Any; +import com.google.protobuf.Message; +import com.uber.cadence.api.v1.*; +import io.grpc.Status; +import io.grpc.StatusRuntimeException; +import io.grpc.protobuf.StatusProto; +import java.util.Arrays; +import java.util.Collection; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class ErrorMapperTest { + + @Parameterized.Parameter(0) + public Status status; + + @Parameterized.Parameter(1) + public Message detail; + + @Parameterized.Parameter(2) + public Class expectedException; + + @Parameterized.Parameters + public static Collection data() { + Object[][] data = + new Object[][] { + {Status.PERMISSION_DENIED, null, com.uber.cadence.AccessDeniedError.class}, + {Status.INTERNAL, null, com.uber.cadence.InternalServiceError.class}, + {Status.NOT_FOUND, null, com.uber.cadence.EntityNotExistsError.class}, + { + Status.ALREADY_EXISTS, + DomainAlreadyExistsError.getDefaultInstance(), + com.uber.cadence.DomainAlreadyExistsError.class + }, + { + Status.FAILED_PRECONDITION, + FeatureNotEnabledError.getDefaultInstance(), + com.uber.cadence.FeatureNotEnabledError.class + }, + { + Status.RESOURCE_EXHAUSTED, + LimitExceededError.getDefaultInstance(), + com.uber.cadence.LimitExceededError.class + }, + {Status.UNKNOWN, null, com.uber.cadence.CadenceError.class}, + { + Status.NOT_FOUND, + WorkflowExecutionAlreadyCompletedError.getDefaultInstance(), + com.uber.cadence.WorkflowExecutionAlreadyCompletedError.class + }, + { + Status.ALREADY_EXISTS, + WorkflowExecutionAlreadyStartedError.getDefaultInstance(), + com.uber.cadence.WorkflowExecutionAlreadyStartedError.class + }, + { + Status.FAILED_PRECONDITION, + DomainNotActiveError.getDefaultInstance(), + com.uber.cadence.DomainNotActiveError.class + }, + { + Status.FAILED_PRECONDITION, + ClientVersionNotSupportedError.getDefaultInstance(), + com.uber.cadence.ClientVersionNotSupportedError.class + }, + { + Status.FAILED_PRECONDITION, + FeatureNotEnabledError.getDefaultInstance(), + com.uber.cadence.FeatureNotEnabledError.class + }, + { + Status.FAILED_PRECONDITION, + DomainNotActiveError.getDefaultInstance(), + com.uber.cadence.DomainNotActiveError.class + }, + { + Status.FAILED_PRECONDITION, + ClientVersionNotSupportedError.getDefaultInstance(), + com.uber.cadence.ClientVersionNotSupportedError.class + }, + { + Status.FAILED_PRECONDITION, + FeatureNotEnabledError.getDefaultInstance(), + com.uber.cadence.FeatureNotEnabledError.class + }, + { + Status.RESOURCE_EXHAUSTED, + LimitExceededError.getDefaultInstance(), + com.uber.cadence.LimitExceededError.class + }, + {Status.DATA_LOSS, null, com.uber.cadence.InternalDataInconsistencyError.class}, + { + Status.RESOURCE_EXHAUSTED, + ServiceBusyError.getDefaultInstance(), + com.uber.cadence.ServiceBusyError.class + }, + {Status.INTERNAL, null, com.uber.cadence.InternalServiceError.class} + }; + return Arrays.asList(data); + } + + @Test + public void testErrorMapper() { + com.google.rpc.Status.Builder builder = + com.google.rpc.Status.newBuilder().setCode(status.getCode().value()); + + if (detail != null) { + builder.addDetails(Any.pack(detail)); + } + + StatusRuntimeException ex = StatusProto.toStatusRuntimeException(builder.build()); + com.uber.cadence.CadenceError result = ErrorMapper.Error(ex); + assertEquals(expectedException, result.getClass()); + } +} diff --git a/src/test/java/com/uber/cadence/internal/compatibility/proto/RequestMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapperTest.java similarity index 68% rename from src/test/java/com/uber/cadence/internal/compatibility/proto/RequestMapperTest.java rename to src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapperTest.java index ace637b69..fc85a5628 100644 --- a/src/test/java/com/uber/cadence/internal/compatibility/proto/RequestMapperTest.java +++ b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapperTest.java @@ -15,7 +15,7 @@ * permissions and limitations under the License. */ -package com.uber.cadence.internal.compatibility.proto; +package com.uber.cadence.internal.compatibility.proto.mappers; import static com.uber.cadence.internal.compatibility.MapperTestUtil.assertMissingFields; import static com.uber.cadence.internal.compatibility.MapperTestUtil.assertNoMissingFields; @@ -24,20 +24,17 @@ import com.google.common.collect.ImmutableSet; import com.google.protobuf.Message; +import com.uber.cadence.internal.compatibility.ClientObjects; import com.uber.cadence.internal.compatibility.ProtoObjects; -import com.uber.cadence.internal.compatibility.ThriftObjects; import java.util.Arrays; import java.util.Set; import java.util.function.Function; -import org.apache.thrift.TBase; -import org.apache.thrift.TFieldIdEnum; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @RunWith(Parameterized.class) -public class RequestMapperTest< - F extends Enum & TFieldIdEnum, T extends TBase, P extends Message> { +public class RequestMapperTest { @Parameterized.Parameter(0) public String testName; @@ -81,173 +78,189 @@ public void testHandlesNull() { public static Iterable cases() { return Arrays.asList( testCase( - ThriftObjects.COUNT_WORKFLOW_EXECUTIONS_REQUEST, + ClientObjects.COUNT_WORKFLOW_EXECUTIONS_REQUEST, ProtoObjects.COUNT_WORKFLOW_EXECUTIONS_REQUEST, RequestMapper::countWorkflowExecutionsRequest), testCase( - ThriftObjects.DESCRIBE_TASK_LIST_REQUEST, + ClientObjects.DESCRIBE_TASK_LIST_REQUEST, ProtoObjects.DESCRIBE_TASK_LIST_REQUEST, RequestMapper::describeTaskListRequest), testCase( - ThriftObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_REQUEST, + ClientObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_REQUEST, ProtoObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_REQUEST, RequestMapper::listArchivedWorkflowExecutionsRequest), testCase( - ThriftObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST, + ClientObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST, ProtoObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST, RequestMapper::requestCancelWorkflowExecutionRequest, "firstExecutionRunID", // optional field "cause"), // optional field testCase( - ThriftObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST_FULL, + ClientObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST_FULL, ProtoObjects.REQUEST_CANCEL_WORKFLOW_EXECUTION_REQUEST_FULL, RequestMapper::requestCancelWorkflowExecutionRequest), testCase( - ThriftObjects.RESET_STICKY_TASK_LIST_REQUEST, + ClientObjects.RESET_STICKY_TASK_LIST_REQUEST, ProtoObjects.RESET_STICKY_TASK_LIST_REQUEST, RequestMapper::resetStickyTaskListRequest), testCase( - ThriftObjects.RESET_WORKFLOW_EXECUTION_REQUEST, + ClientObjects.RESET_WORKFLOW_EXECUTION_REQUEST, ProtoObjects.RESET_WORKFLOW_EXECUTION_REQUEST, RequestMapper::resetWorkflowExecutionRequest), testCase( - ThriftObjects.RESPOND_ACTIVITY_TASK_CANCELED_BY_ID_REQUEST, + ClientObjects.RESPOND_ACTIVITY_TASK_CANCELED_BY_ID_REQUEST, ProtoObjects.RESPOND_ACTIVITY_TASK_CANCELED_BY_ID_REQUEST, RequestMapper::respondActivityTaskCanceledByIdRequest), testCase( - ThriftObjects.RESPOND_ACTIVITY_TASK_CANCELED_REQUEST, + ClientObjects.RESPOND_ACTIVITY_TASK_CANCELED_REQUEST, ProtoObjects.RESPOND_ACTIVITY_TASK_CANCELED_REQUEST, RequestMapper::respondActivityTaskCanceledRequest), testCase( - ThriftObjects.RESPOND_ACTIVITY_TASK_COMPLETED_BY_ID_REQUEST, + ClientObjects.RESPOND_ACTIVITY_TASK_COMPLETED_BY_ID_REQUEST, ProtoObjects.RESPOND_ACTIVITY_TASK_COMPLETED_BY_ID_REQUEST, RequestMapper::respondActivityTaskCompletedByIdRequest), testCase( - ThriftObjects.RESPOND_ACTIVITY_TASK_COMPLETED_REQUEST, + ClientObjects.RESPOND_ACTIVITY_TASK_COMPLETED_REQUEST, ProtoObjects.RESPOND_ACTIVITY_TASK_COMPLETED_REQUEST, RequestMapper::respondActivityTaskCompletedRequest), testCase( - ThriftObjects.RESPOND_ACTIVITY_TASK_FAILED_BY_ID_REQUEST, + ClientObjects.RESPOND_ACTIVITY_TASK_FAILED_BY_ID_REQUEST, ProtoObjects.RESPOND_ACTIVITY_TASK_FAILED_BY_ID_REQUEST, RequestMapper::respondActivityTaskFailedByIdRequest), testCase( - ThriftObjects.RESPOND_ACTIVITY_TASK_FAILED_REQUEST, + ClientObjects.RESPOND_ACTIVITY_TASK_FAILED_REQUEST, ProtoObjects.RESPOND_ACTIVITY_TASK_FAILED_REQUEST, RequestMapper::respondActivityTaskFailedRequest), testCase( - ThriftObjects.RESPOND_DECISION_TASK_COMPLETED_REQUEST, + ClientObjects.RESPOND_DECISION_TASK_COMPLETED_REQUEST, ProtoObjects.RESPOND_DECISION_TASK_COMPLETED_REQUEST, - RequestMapper::respondDecisionTaskCompletedRequest), - testCase( - ThriftObjects.RESPOND_DECISION_TASK_FAILED_REQUEST, + RequestMapper::respondDecisionTaskCompletedRequest, + "scheduleActivityTaskDecisionAttributes", // all other types are missing as expected + "requestCancelActivityTaskDecisionAttributes", + "startTimerDecisionAttributes", + "failWorkflowExecutionDecisionAttributes", + "cancelTimerDecisionAttributes", + "cancelWorkflowExecutionDecisionAttributes", + "requestCancelExternalWorkflowExecutionDecisionAttributes", + "recordMarkerDecisionAttributes", + "continueAsNewWorkflowExecutionDecisionAttributes", + "startChildWorkflowExecutionDecisionAttributes", + "signalExternalWorkflowExecutionDecisionAttributes", + "upsertWorkflowSearchAttributesDecisionAttributes"), + testCase( + ClientObjects.RESPOND_DECISION_TASK_FAILED_REQUEST, ProtoObjects.RESPOND_DECISION_TASK_FAILED_REQUEST, RequestMapper::respondDecisionTaskFailedRequest), testCase( - ThriftObjects.RESPOND_QUERY_TASK_COMPLETED_REQUEST, + ClientObjects.RESPOND_QUERY_TASK_COMPLETED_REQUEST, ProtoObjects.RESPOND_QUERY_TASK_COMPLETED_REQUEST, RequestMapper::respondQueryTaskCompletedRequest), testCase( - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, + ClientObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, ProtoObjects.SCAN_WORKFLOW_EXECUTIONS_REQUEST, RequestMapper::scanWorkflowExecutionsRequest), testCase( - ThriftObjects.DESCRIBE_WORKFLOW_EXECUTION_REQUEST, + ClientObjects.DESCRIBE_WORKFLOW_EXECUTION_REQUEST, ProtoObjects.DESCRIBE_WORKFLOW_EXECUTION_REQUEST, RequestMapper::describeWorkflowExecutionRequest), testCase( - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, + ClientObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_REQUEST, RequestMapper::getWorkflowExecutionHistoryRequest), testCase( - ThriftObjects.START_WORKFLOW_EXECUTION, + ClientObjects.START_WORKFLOW_EXECUTION, ProtoObjects.START_WORKFLOW_EXECUTION, RequestMapper::startWorkflowExecutionRequest), testCase( - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION, + ClientObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION, ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION, RequestMapper::signalWithStartWorkflowExecutionRequest), testCase( - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST, + ClientObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST, ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_REQUEST, RequestMapper::startWorkflowExecutionAsyncRequest), testCase( - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_REQUEST, + ClientObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_REQUEST, ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_REQUEST, RequestMapper::signalWithStartWorkflowExecutionAsyncRequest), testCase( - ThriftObjects.SIGNAL_WORKFLOW_EXECUTION_REQUEST, + ClientObjects.SIGNAL_WORKFLOW_EXECUTION_REQUEST, ProtoObjects.SIGNAL_WORKFLOW_EXECUTION_REQUEST, RequestMapper::signalWorkflowExecutionRequest), testCase( - ThriftObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST, + ClientObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST, ProtoObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST, RequestMapper::terminateWorkflowExecutionRequest, "firstExecutionRunID"), // optional field testCase( - ThriftObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST_FULL, + ClientObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST_FULL, ProtoObjects.TERMINATE_WORKFLOW_EXECUTION_REQUEST_FULL, RequestMapper::terminateWorkflowExecutionRequest), testCase( - ThriftObjects.DEPRECATE_DOMAIN_REQUEST, + ClientObjects.DEPRECATE_DOMAIN_REQUEST, ProtoObjects.DEPRECATE_DOMAIN_REQUEST, RequestMapper::deprecateDomainRequest), testCase( - ThriftObjects.DESCRIBE_DOMAIN_BY_ID_REQUEST, + ClientObjects.DESCRIBE_DOMAIN_BY_ID_REQUEST, ProtoObjects.DESCRIBE_DOMAIN_BY_ID_REQUEST, RequestMapper::describeDomainRequest, "name"), // Not needed for query by ID testCase( - ThriftObjects.DESCRIBE_DOMAIN_BY_NAME_REQUEST, + ClientObjects.DESCRIBE_DOMAIN_BY_NAME_REQUEST, ProtoObjects.DESCRIBE_DOMAIN_BY_NAME_REQUEST, RequestMapper::describeDomainRequest, "uuid"), // Not needed for query by name testCase( - ThriftObjects.LIST_DOMAINS_REQUEST, + ClientObjects.LIST_DOMAINS_REQUEST, ProtoObjects.LIST_DOMAINS_REQUEST, RequestMapper::listDomainsRequest), testCase( - ThriftObjects.LIST_TASK_LIST_PARTITIONS_REQUEST, + ClientObjects.LIST_TASK_LIST_PARTITIONS_REQUEST, ProtoObjects.LIST_TASK_LIST_PARTITIONS_REQUEST, RequestMapper::listTaskListPartitionsRequest), testCase( - ThriftObjects.POLL_FOR_ACTIVITY_TASK_REQUEST, + ClientObjects.POLL_FOR_ACTIVITY_TASK_REQUEST, ProtoObjects.POLL_FOR_ACTIVITY_TASK_REQUEST, RequestMapper::pollForActivityTaskRequest), testCase( - ThriftObjects.POLL_FOR_DECISION_TASK_REQUEST, + ClientObjects.POLL_FOR_DECISION_TASK_REQUEST, ProtoObjects.POLL_FOR_DECISION_TASK_REQUEST, RequestMapper::pollForDecisionTaskRequest), testCase( - ThriftObjects.QUERY_WORKFLOW_REQUEST, + ClientObjects.QUERY_WORKFLOW_REQUEST, ProtoObjects.QUERY_WORKFLOW_REQUEST, RequestMapper::queryWorkflowRequest), testCase( - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID_REQUEST, + ClientObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID_REQUEST, ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID_REQUEST, RequestMapper::recordActivityTaskHeartbeatByIdRequest), testCase( - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_REQUEST, + ClientObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_REQUEST, ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_REQUEST, RequestMapper::recordActivityTaskHeartbeatRequest), testCase( - ThriftObjects.REGISTER_DOMAIN_REQUEST, + ClientObjects.REGISTER_DOMAIN_REQUEST, ProtoObjects.REGISTER_DOMAIN_REQUEST, - RequestMapper::registerDomainRequest, - "emitMetric"), // Thrift has this field but proto doens't have it + RequestMapper::registerDomainRequest), testCase( - ThriftObjects.UPDATE_DOMAIN_REQUEST, + ClientObjects.UPDATE_DOMAIN_REQUEST, + // Data and replicationConfiguration are copied incorrectly due to a bug :( ProtoObjects.UPDATE_DOMAIN_REQUEST, - RequestMapper::updateDomainRequest), + RequestMapper::updateDomainRequest, + // TODO new fields that are not yet supported + "queueConfig", + "predefinedQueueName", + "queueType"), testCase( - ThriftObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_REQUEST, + ClientObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_REQUEST, ProtoObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_REQUEST, RequestMapper::listClosedWorkflowExecutionsRequest), testCase( - ThriftObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_REQUEST, + ClientObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_REQUEST, ProtoObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_REQUEST, RequestMapper::listOpenWorkflowExecutionsRequest), testCase( - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, + ClientObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, ProtoObjects.LIST_WORKFLOW_EXECUTIONS_REQUEST, RequestMapper::listWorkflowExecutionsRequest)); } diff --git a/src/test/java/com/uber/cadence/internal/compatibility/proto/TypeMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapperTest.java similarity index 74% rename from src/test/java/com/uber/cadence/internal/compatibility/proto/TypeMapperTest.java rename to src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapperTest.java index 9b0bc1440..010e996af 100644 --- a/src/test/java/com/uber/cadence/internal/compatibility/proto/TypeMapperTest.java +++ b/src/test/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapperTest.java @@ -14,18 +14,16 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -package com.uber.cadence.internal.compatibility.proto; +package com.uber.cadence.internal.compatibility.proto.mappers; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.protobuf.Message; import com.uber.cadence.WorkflowExecutionCloseStatus; +import com.uber.cadence.internal.compatibility.ClientObjects; import com.uber.cadence.internal.compatibility.ProtoObjects; -import com.uber.cadence.internal.compatibility.ThriftObjects; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -81,52 +79,52 @@ public void testHandlesNull() { public static Iterable cases() { return Arrays.asList( testCase( - ThriftObjects.BAD_BINARY_INFO, ProtoObjects.BAD_BINARY_INFO, TypeMapper::badBinaryInfo), + ClientObjects.BAD_BINARY_INFO, ProtoObjects.BAD_BINARY_INFO, TypeMapper::badBinaryInfo), testCase( - ThriftObjects.utf8Bytes("data"), ProtoObjects.payload("data"), TypeMapper::payload), - testCase(ThriftObjects.ACTIVITY_TYPE, ProtoObjects.ACTIVITY_TYPE, TypeMapper::activityType), - testCase(ThriftObjects.WORKFLOW_TYPE, ProtoObjects.WORKFLOW_TYPE, TypeMapper::workflowType), - testCase(ThriftObjects.TASK_LIST, ProtoObjects.TASK_LIST, TypeMapper::taskList), + ClientObjects.utf8Bytes("data"), ProtoObjects.payload("data"), TypeMapper::payload), + testCase(ClientObjects.ACTIVITY_TYPE, ProtoObjects.ACTIVITY_TYPE, TypeMapper::activityType), + testCase(ClientObjects.WORKFLOW_TYPE, ProtoObjects.WORKFLOW_TYPE, TypeMapper::workflowType), + testCase(ClientObjects.TASK_LIST, ProtoObjects.TASK_LIST, TypeMapper::taskList), testCase( - ThriftObjects.TASK_LIST_METADATA, + ClientObjects.TASK_LIST_METADATA, ProtoObjects.TASK_LIST_METADATA, TypeMapper::taskListMetadata), - testCase(ThriftObjects.RETRY_POLICY, ProtoObjects.RETRY_POLICY, TypeMapper::retryPolicy), - testCase(ThriftObjects.HEADER, ProtoObjects.HEADER, TypeMapper::header), - testCase(ThriftObjects.MEMO, ProtoObjects.MEMO, TypeMapper::memo), + testCase(ClientObjects.RETRY_POLICY, ProtoObjects.RETRY_POLICY, TypeMapper::retryPolicy), + testCase(ClientObjects.HEADER, ProtoObjects.HEADER, TypeMapper::header), + testCase(ClientObjects.MEMO, ProtoObjects.MEMO, TypeMapper::memo), testCase( - ThriftObjects.SEARCH_ATTRIBUTES, + ClientObjects.SEARCH_ATTRIBUTES, ProtoObjects.SEARCH_ATTRIBUTES, TypeMapper::searchAttributes), - testCase(ThriftObjects.BAD_BINARIES, ProtoObjects.BAD_BINARIES, TypeMapper::badBinaries), + testCase(ClientObjects.BAD_BINARIES, ProtoObjects.BAD_BINARIES, TypeMapper::badBinaries), testCase( - ThriftObjects.CLUSTER_REPLICATION_CONFIGURATION, + ClientObjects.CLUSTER_REPLICATION_CONFIGURATION, ProtoObjects.CLUSTER_REPLICATION_CONFIGURATION, TypeMapper::clusterReplicationConfiguration), testCase( - ThriftObjects.WORKFLOW_QUERY, ProtoObjects.WORKFLOW_QUERY, TypeMapper::workflowQuery), + ClientObjects.WORKFLOW_QUERY, ProtoObjects.WORKFLOW_QUERY, TypeMapper::workflowQuery), testCase( - ThriftObjects.WORKFLOW_QUERY_RESULT, + ClientObjects.WORKFLOW_QUERY_RESULT, ProtoObjects.WORKFLOW_QUERY_RESULT, TypeMapper::workflowQueryResult), testCase( - ThriftObjects.STICKY_EXECUTION_ATTRIBUTES, + ClientObjects.STICKY_EXECUTION_ATTRIBUTES, ProtoObjects.STICKY_EXECUTION_ATTRIBUTES, TypeMapper::stickyExecutionAttributes), testCase( - ThriftObjects.WORKER_VERSION_INFO, + ClientObjects.WORKER_VERSION_INFO, ProtoObjects.WORKER_VERSION_INFO, TypeMapper::workerVersionInfo), testCase( - ThriftObjects.START_TIME_FILTER, + ClientObjects.START_TIME_FILTER, ProtoObjects.START_TIME_FILTER, TypeMapper::startTimeFilter), testCase( - ThriftObjects.WORKFLOW_EXECUTION_FILTER, + ClientObjects.WORKFLOW_EXECUTION_FILTER, ProtoObjects.WORKFLOW_EXECUTION_FILTER, TypeMapper::workflowExecutionFilter), testCase( - ThriftObjects.WORKFLOW_TYPE_FILTER, + ClientObjects.WORKFLOW_TYPE_FILTER, ProtoObjects.WORKFLOW_TYPE_FILTER, TypeMapper::workflowTypeFilter), testCase( @@ -134,19 +132,19 @@ public static Iterable cases() { ProtoObjects.STATUS_FILTER, TypeMapper::statusFilter), testCase( - ImmutableMap.of("key", ThriftObjects.utf8("data")), + ImmutableMap.of("key", ClientObjects.utf8("data")), ImmutableMap.of("key", ProtoObjects.payload("data")), TypeMapper::payloadByteBufferMap), testCase( - ImmutableMap.of("key", ThriftObjects.BAD_BINARY_INFO), + ImmutableMap.of("key", ClientObjects.BAD_BINARY_INFO), ImmutableMap.of("key", ProtoObjects.BAD_BINARY_INFO), TypeMapper::badBinaryInfoMap), testCase( - ImmutableList.of(ThriftObjects.CLUSTER_REPLICATION_CONFIGURATION), + ImmutableList.of(ClientObjects.CLUSTER_REPLICATION_CONFIGURATION), ImmutableList.of(ProtoObjects.CLUSTER_REPLICATION_CONFIGURATION), TypeMapper::clusterReplicationConfigurationArray), testCase( - ImmutableMap.of("key", ThriftObjects.WORKFLOW_QUERY_RESULT), + ImmutableMap.of("key", ClientObjects.WORKFLOW_QUERY_RESULT), ImmutableMap.of("key", ProtoObjects.WORKFLOW_QUERY_RESULT), TypeMapper::workflowQueryResultMap)); } diff --git a/src/test/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapperTest.java deleted file mode 100644 index 810f1166c..000000000 --- a/src/test/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapperTest.java +++ /dev/null @@ -1,187 +0,0 @@ -/** - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - *

    Modifications copyright (C) 2017 Uber Technologies, Inc. - * - *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file - * except in compliance with the License. A copy of the License is located at - * - *

    http://aws.amazon.com/apache2.0 - * - *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import static org.junit.Assert.assertTrue; - -import com.uber.cadence.AccessDeniedError; -import com.uber.cadence.CancellationAlreadyRequestedError; -import com.uber.cadence.ClientVersionNotSupportedError; -import com.uber.cadence.DomainAlreadyExistsError; -import com.uber.cadence.DomainNotActiveError; -import com.uber.cadence.EntityNotExistsError; -import com.uber.cadence.FeatureNotEnabledError; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.LimitExceededError; -import com.uber.cadence.ServiceBusyError; -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; -import com.uber.cadence.WorkflowExecutionAlreadyStartedError; -import io.grpc.Metadata; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; -import org.apache.thrift.TException; -import org.junit.Test; - -public class ErrorMapperTest { - - @Test - public void testPermissionDeniedError() { - StatusRuntimeException ex = - new StatusRuntimeException(Status.PERMISSION_DENIED.withDescription("Access denied")); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof AccessDeniedError); - } - - @Test - public void testInternalServiceError() { - StatusRuntimeException ex = - new StatusRuntimeException(Status.INTERNAL.withDescription("Internal error")); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof InternalServiceError); - } - - @Test - public void testWorkflowExecutionAlreadyCompletedError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "EntityNotExistsError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.NOT_FOUND.withDescription("already completed."), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof WorkflowExecutionAlreadyCompletedError); - } - - @Test - public void testEntityNotExistsError() { - StatusRuntimeException ex = - new StatusRuntimeException(Status.NOT_FOUND.withDescription("Entity not found")); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof EntityNotExistsError); - } - - @Test - public void testCancellationAlreadyRequestedError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "CancellationAlreadyRequestedError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.ALREADY_EXISTS.withDescription("Cancellation already requested"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof CancellationAlreadyRequestedError); - } - - @Test - public void testDomainAlreadyExistsError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "DomainAlreadyExistsError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.ALREADY_EXISTS.withDescription("Domain already exists"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof DomainAlreadyExistsError); - } - - @Test - public void testWorkflowExecutionAlreadyStartedError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "WorkflowExecutionAlreadyStartedError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.ALREADY_EXISTS.withDescription("Workflow already started"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof WorkflowExecutionAlreadyStartedError); - } - - @Test - public void testClientVersionNotSupportedError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "ClientVersionNotSupportedError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.FAILED_PRECONDITION.withDescription("Client version not supported"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof ClientVersionNotSupportedError); - } - - @Test - public void testFeatureNotEnabledError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "FeatureNotEnabledError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.FAILED_PRECONDITION.withDescription("Feature not enabled"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof FeatureNotEnabledError); - } - - @Test - public void testDomainNotActiveError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "DomainNotActiveError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.FAILED_PRECONDITION.withDescription("Domain not active"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof DomainNotActiveError); - } - - @Test - public void testLimitExceededError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "LimitExceededError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.RESOURCE_EXHAUSTED.withDescription("Limit exceeded"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof LimitExceededError); - } - - @Test - public void testServiceBusyError() { - Metadata metadata = new Metadata(); - metadata.put( - Metadata.Key.of("rpc-application-error-name", Metadata.ASCII_STRING_MARSHALLER), - "ServiceBusyError"); - StatusRuntimeException ex = - new StatusRuntimeException( - Status.RESOURCE_EXHAUSTED.withDescription("Service busy"), metadata); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof ServiceBusyError); - } - - @Test - public void testUnknownError() { - StatusRuntimeException ex = - new StatusRuntimeException(Status.UNKNOWN.withDescription("Unknown error")); - TException result = ErrorMapper.Error(ex); - assertTrue(result instanceof TException); - } -} diff --git a/src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java b/src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java deleted file mode 100644 index a3072a2d1..000000000 --- a/src/test/java/com/uber/cadence/internal/compatibility/thrift/HistoryMapperEventTest.java +++ /dev/null @@ -1,338 +0,0 @@ -/** - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - *

    Modifications copyright (C) 2017 Uber Technologies, Inc. - * - *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file - * except in compliance with the License. A copy of the License is located at - * - *

    http://aws.amazon.com/apache2.0 - * - *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableSet; -import com.google.protobuf.Message; -import com.google.protobuf.Timestamp; -import com.uber.cadence.EventType; -import com.uber.cadence.HistoryEvent; -import com.uber.cadence.internal.compatibility.MapperTestUtil; -import com.uber.cadence.internal.compatibility.ProtoObjects; -import com.uber.cadence.internal.compatibility.ThriftObjects; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import org.apache.thrift.TBase; -import org.apache.thrift.TFieldIdEnum; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -@RunWith(Parameterized.class) -public class HistoryMapperEventTest< - F extends Message, E extends Enum & TFieldIdEnum, T extends TBase> { - private static final Map, Method> ATTRIBUTE_CONVERTERS = - indexSingleParameterMethods(HistoryMapper.class, Message.class); - private static final long EVENT_ID = 1; - private static final int TIMESTAMP_NANOS = 100; - private static final Timestamp TIMESTAMP = - Timestamp.newBuilder().setNanos(TIMESTAMP_NANOS).build(); - private static final long VERSION = 2; - private static final long TASK_ID = 3; - - @Parameterized.Parameter public EventType eventType; - - @Parameterized.Parameter(1) - public F from; - - @Parameterized.Parameter(2) - public T to; - - @Parameterized.Parameter(3) - public Set missingFields; - - @Test - public void testHistoryEvent() { - HistoryEvent thriftEvent = createThriftHistoryEvent(); - assertEquals(thriftEvent, HistoryMapper.historyEvent(createProtoHistoryEvent())); - } - - @Test - public void testConverter() { - assertEquals(to, convertToThrift(from)); - } - - @Test - public void testConverterWithNull() { - assertNull("Passing null should return null", convertToThrift(null)); - } - - @Test - public void testAllFieldsPresent() { - if (missingFields.isEmpty()) { - MapperTestUtil.assertNoMissingFields(to); - } else { - MapperTestUtil.assertMissingFields(to, missingFields); - } - } - - private com.uber.cadence.api.v1.HistoryEvent createProtoHistoryEvent() { - com.uber.cadence.api.v1.HistoryEvent.Builder eventBuilder = - com.uber.cadence.api.v1.HistoryEvent.newBuilder() - .setEventId(EVENT_ID) - .setEventTime(TIMESTAMP) - .setVersion(VERSION) - .setTaskId(TASK_ID); - // Apply the attributes - callSetter(eventBuilder, from); - return eventBuilder.build(); - } - - private HistoryEvent createThriftHistoryEvent() { - HistoryEvent event = - new HistoryEvent() - .setEventId(EVENT_ID) - .setEventType(eventType) - .setTimestamp(TIMESTAMP_NANOS) - .setVersion(VERSION) - .setTaskId(TASK_ID); - // Apply the attributes - callSetter(event, to); - return event; - } - - private Object convertToThrift(F proto) { - Method converter = ATTRIBUTE_CONVERTERS.get(from.getClass()); - Preconditions.checkState( - converter != null, "failed to find converter for %s", from.getClass().getSimpleName()); - try { - return converter.invoke(null, proto); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } - } - - private static void callSetter(Object target, Object toSet) { - for (Method method : target.getClass().getDeclaredMethods()) { - Class[] params = method.getParameterTypes(); - if (method.getName().startsWith("set") - && params.length == 1 - && toSet.getClass().isAssignableFrom(params[0])) { - try { - method.invoke(target, toSet); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } - } - } - } - - // Index all the functions in HistoryMapper by parameter type so we can find them dynamically - private static Map, Method> indexSingleParameterMethods( - Class target, Class parameterType) { - Map, Method> byParameterType = new HashMap<>(); - for (Method method : target.getDeclaredMethods()) { - Class[] params = method.getParameterTypes(); - if (params.length == 1 && parameterType.isAssignableFrom(params[0])) { - Class protoType = (Class) params[0]; - byParameterType.put(protoType, method); - } - } - return byParameterType; - } - - @Parameterized.Parameters(name = "{0}") - public static Object[][] cases() { - return new Object[][] { - testCase( - EventType.WorkflowExecutionStarted, - ProtoObjects.WORKFLOW_EXECUTION_STARTED_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_STARTED_EVENT_ATTRIBUTES, - "firstScheduledTimeNano", - "partitionConfig", - "requestId"), - testCase( - EventType.WorkflowExecutionCompleted, - ProtoObjects.WORKFLOW_EXECUTION_COMPLETED_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_COMPLETED_EVENT_ATTRIBUTES), - testCase( - EventType.WorkflowExecutionFailed, - ProtoObjects.WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.WorkflowExecutionTimedOut, - ProtoObjects.WORKFLOW_EXECUTION_TIMED_OUT_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_TIMED_OUT_EVENT_ATTRIBUTES), - testCase( - EventType.DecisionTaskScheduled, - ProtoObjects.DECISION_TASK_SCHEDULED_EVENT_ATTRIBUTES, - ThriftObjects.DECISION_TASK_SCHEDULED_EVENT_ATTRIBUTES), - testCase( - EventType.DecisionTaskStarted, - ProtoObjects.DECISION_TASK_STARTED_EVENT_ATTRIBUTES, - ThriftObjects.DECISION_TASK_STARTED_EVENT_ATTRIBUTES), - testCase( - EventType.DecisionTaskCompleted, - ProtoObjects.DECISION_TASK_COMPLETED_EVENT_ATTRIBUTES, - ThriftObjects.DECISION_TASK_COMPLETED_EVENT_ATTRIBUTES), - testCase( - EventType.DecisionTaskTimedOut, - ProtoObjects.DECISION_TASK_TIMED_OUT_EVENT_ATTRIBUTES, - ThriftObjects.DECISION_TASK_TIMED_OUT_EVENT_ATTRIBUTES, - "requestId"), - testCase( - EventType.DecisionTaskFailed, - ProtoObjects.DECISION_TASK_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.DECISION_TASK_FAILED_EVENT_ATTRIBUTES, - "requestId"), - testCase( - EventType.ActivityTaskScheduled, - ProtoObjects.ACTIVITY_TASK_SCHEDULED_EVENT_ATTRIBUTES, - ThriftObjects.ACTIVITY_TASK_SCHEDULED_EVENT_ATTRIBUTES), - testCase( - EventType.ActivityTaskStarted, - ProtoObjects.ACTIVITY_TASK_STARTED_EVENT_ATTRIBUTES, - ThriftObjects.ACTIVITY_TASK_STARTED_EVENT_ATTRIBUTES), - testCase( - EventType.ActivityTaskCompleted, - ProtoObjects.ACTIVITY_TASK_COMPLETED_EVENT_ATTRIBUTES, - ThriftObjects.ACTIVITY_TASK_COMPLETED_EVENT_ATTRIBUTES), - testCase( - EventType.ActivityTaskFailed, - ProtoObjects.ACTIVITY_TASK_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.ACTIVITY_TASK_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.ActivityTaskTimedOut, - ProtoObjects.ACTIVITY_TASK_TIMED_OUT_EVENT_ATTRIBUTES, - ThriftObjects.ACTIVITY_TASK_TIMED_OUT_EVENT_ATTRIBUTES), - testCase( - EventType.ActivityTaskCancelRequested, - ProtoObjects.ACTIVITY_TASK_CANCEL_REQUESTED_EVENT_ATTRIBUTES, - ThriftObjects.ACTIVITY_TASK_CANCEL_REQUESTED_EVENT_ATTRIBUTES), - testCase( - EventType.RequestCancelActivityTaskFailed, - ProtoObjects.REQUEST_CANCEL_ACTIVITY_TASK_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.REQUEST_CANCEL_ACTIVITY_TASK_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.ActivityTaskCanceled, - ProtoObjects.ACTIVITY_TASK_CANCELED_EVENT_ATTRIBUTES, - ThriftObjects.ACTIVITY_TASK_CANCELED_EVENT_ATTRIBUTES), - testCase( - EventType.TimerStarted, - ProtoObjects.TIMER_STARTED_EVENT_ATTRIBUTES, - ThriftObjects.TIMER_STARTED_EVENT_ATTRIBUTES), - testCase( - EventType.TimerFired, - ProtoObjects.TIMER_FIRED_EVENT_ATTRIBUTES, - ThriftObjects.TIMER_FIRED_EVENT_ATTRIBUTES), - testCase( - EventType.CancelTimerFailed, - ProtoObjects.CANCEL_TIMER_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.CANCEL_TIMER_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.TimerCanceled, - ProtoObjects.TIMER_CANCELED_EVENT_ATTRIBUTES, - ThriftObjects.TIMER_CANCELED_EVENT_ATTRIBUTES), - testCase( - EventType.WorkflowExecutionCancelRequested, - ProtoObjects.WORKFLOW_EXECUTION_CANCEL_REQUESTED_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_CANCEL_REQUESTED_EVENT_ATTRIBUTES, - "requestId"), - testCase( - EventType.WorkflowExecutionCanceled, - ProtoObjects.WORKFLOW_EXECUTION_CANCELED_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_CANCELED_EVENT_ATTRIBUTES), - testCase( - EventType.RequestCancelExternalWorkflowExecutionInitiated, - ProtoObjects.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES, - ThriftObjects.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES), - testCase( - EventType.RequestCancelExternalWorkflowExecutionFailed, - ProtoObjects.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.ExternalWorkflowExecutionCancelRequested, - ProtoObjects.EXTERNAL_WORKFLOW_EXECUTION_CANCEL_REQUESTED_EVENT_ATTRIBUTES, - ThriftObjects.EXTERNAL_WORKFLOW_EXECUTION_CANCEL_REQUESTED_EVENT_ATTRIBUTES), - testCase( - EventType.MarkerRecorded, - ProtoObjects.MARKER_RECORDED_EVENT_ATTRIBUTES, - ThriftObjects.MARKER_RECORDED_EVENT_ATTRIBUTES), - testCase( - EventType.WorkflowExecutionSignaled, - ProtoObjects.WORKFLOW_EXECUTION_SIGNALED_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_SIGNALED_EVENT_ATTRIBUTES, - "requestId"), - testCase( - EventType.WorkflowExecutionTerminated, - ProtoObjects.WORKFLOW_EXECUTION_TERMINATED_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_TERMINATED_EVENT_ATTRIBUTES), - testCase( - EventType.WorkflowExecutionContinuedAsNew, - ProtoObjects.WORKFLOW_EXECUTION_CONTINUED_AS_NEW_EVENT_ATTRIBUTES, - ThriftObjects.WORKFLOW_EXECUTION_CONTINUED_AS_NEW_EVENT_ATTRIBUTES), - testCase( - EventType.StartChildWorkflowExecutionInitiated, - ProtoObjects.START_CHILD_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES, - ThriftObjects.START_CHILD_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES), - testCase( - EventType.StartChildWorkflowExecutionFailed, - ProtoObjects.START_CHILD_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.START_CHILD_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.ChildWorkflowExecutionStarted, - ProtoObjects.CHILD_WORKFLOW_EXECUTION_STARTED_EVENT_ATTRIBUTES, - ThriftObjects.CHILD_WORKFLOW_EXECUTION_STARTED_EVENT_ATTRIBUTES), - testCase( - EventType.ChildWorkflowExecutionCompleted, - ProtoObjects.CHILD_WORKFLOW_EXECUTION_COMPLETED_EVENT_ATTRIBUTES, - ThriftObjects.CHILD_WORKFLOW_EXECUTION_COMPLETED_EVENT_ATTRIBUTES), - testCase( - EventType.ChildWorkflowExecutionFailed, - ProtoObjects.CHILD_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.CHILD_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.ChildWorkflowExecutionCanceled, - ProtoObjects.CHILD_WORKFLOW_EXECUTION_CANCELED_EVENT_ATTRIBUTES, - ThriftObjects.CHILD_WORKFLOW_EXECUTION_CANCELED_EVENT_ATTRIBUTES), - testCase( - EventType.ChildWorkflowExecutionTimedOut, - ProtoObjects.CHILD_WORKFLOW_EXECUTION_TIMED_OUT_EVENT_ATTRIBUTES, - ThriftObjects.CHILD_WORKFLOW_EXECUTION_TIMED_OUT_EVENT_ATTRIBUTES), - testCase( - EventType.ChildWorkflowExecutionTerminated, - ProtoObjects.CHILD_WORKFLOW_EXECUTION_TERMINATED_EVENT_ATTRIBUTES, - ThriftObjects.CHILD_WORKFLOW_EXECUTION_TERMINATED_EVENT_ATTRIBUTES), - testCase( - EventType.SignalExternalWorkflowExecutionInitiated, - ProtoObjects.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES, - ThriftObjects.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED_EVENT_ATTRIBUTES), - testCase( - EventType.SignalExternalWorkflowExecutionFailed, - ProtoObjects.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES, - ThriftObjects.SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED_EVENT_ATTRIBUTES), - testCase( - EventType.ExternalWorkflowExecutionSignaled, - ProtoObjects.EXTERNAL_WORKFLOW_EXECUTION_SIGNALED_EVENT_ATTRIBUTES, - ThriftObjects.EXTERNAL_WORKFLOW_EXECUTION_SIGNALED_EVENT_ATTRIBUTES), - testCase( - EventType.UpsertWorkflowSearchAttributes, - ProtoObjects.UPSERT_WORKFLOW_SEARCH_ATTRIBUTES_EVENT_ATTRIBUTES, - ThriftObjects.UPSERT_WORKFLOW_SEARCH_ATTRIBUTES_EVENT_ATTRIBUTES), - }; - } - - private static Object[] testCase( - EventType type, Message proto, TBase thrift, String... expectedMissingFields) { - return new Object[] {type, proto, thrift, ImmutableSet.copyOf(expectedMissingFields)}; - } -} diff --git a/src/test/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapperTest.java deleted file mode 100644 index cf2380b14..000000000 --- a/src/test/java/com/uber/cadence/internal/compatibility/thrift/ResponseMapperTest.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.internal.compatibility.thrift; - -import static com.uber.cadence.internal.compatibility.MapperTestUtil.assertMissingFields; -import static com.uber.cadence.internal.compatibility.MapperTestUtil.assertNoMissingFields; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import com.google.common.collect.ImmutableSet; -import com.google.protobuf.Message; -import com.uber.cadence.internal.compatibility.ProtoObjects; -import com.uber.cadence.internal.compatibility.ThriftObjects; -import java.util.Arrays; -import java.util.Set; -import java.util.function.Function; -import org.apache.thrift.TBase; -import org.apache.thrift.TFieldIdEnum; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -@RunWith(Parameterized.class) -public class ResponseMapperTest< - F extends Enum & TFieldIdEnum, T extends TBase, P extends Message> { - - @Parameterized.Parameter(0) - public String testName; - - @Parameterized.Parameter(1) - public P from; - - @Parameterized.Parameter(2) - public T to; - - @Parameterized.Parameter(3) - public Function via; - - @Parameterized.Parameter(4) - public Set missingFields; - - @Test - public void testFieldsPresent() { - // If IDL is updated, this will fail. Update the mapper or add it to the test - if (missingFields.isEmpty()) { - assertNoMissingFields(to); - } else { - assertMissingFields(to, missingFields); - } - } - - @Test - public void testMapper() { - T actual = via.apply(from); - assertEquals(to, actual); - } - - @Test - public void testHandlesNull() { - T actual = via.apply(null); - - assertNull("Mapper functions should accept null, returning null", actual); - } - - @Parameterized.Parameters(name = "{0}") - public static Iterable cases() { - return Arrays.asList( - testCase( - ProtoObjects.START_WORKFLOW_EXECUTION_RESPONSE, - ThriftObjects.START_WORKFLOW_EXECUTION_RESPONSE, - ResponseMapper::startWorkflowExecutionResponse), - testCase( - ProtoObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE, - ThriftObjects.START_WORKFLOW_EXECUTION_ASYNC_RESPONSE, - ResponseMapper::startWorkflowExecutionAsyncResponse), - testCase( - ProtoObjects.DESCRIBE_TASK_LIST_RESPONSE, - ThriftObjects.DESCRIBE_TASK_LIST_RESPONSE, - ResponseMapper::describeTaskListResponse), - testCase( - ProtoObjects.DESCRIBE_WORKFLOW_EXECUTION_RESPONSE, - ThriftObjects.DESCRIBE_WORKFLOW_EXECUTION_RESPONSE, - ResponseMapper::describeWorkflowExecutionResponse), - testCase( - ProtoObjects.GET_SEARCH_ATTRIBUTES_RESPONSE, - ThriftObjects.GET_SEARCH_ATTRIBUTES_RESPONSE, - ResponseMapper::getSearchAttributesResponse), - testCase( - ProtoObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE, - ThriftObjects.GET_WORKFLOW_EXECUTION_HISTORY_RESPONSE, - ResponseMapper::getWorkflowExecutionHistoryResponse), - testCase( - ProtoObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_RESPONSE, - ThriftObjects.LIST_ARCHIVED_WORKFLOW_EXECUTIONS_RESPONSE, - ResponseMapper::listArchivedWorkflowExecutionsResponse), - testCase( - ProtoObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_RESPONSE, - ThriftObjects.LIST_CLOSED_WORKFLOW_EXECUTIONS_RESPONSE, - ResponseMapper::listClosedWorkflowExecutionsResponse), - testCase( - ProtoObjects.LIST_TASK_LIST_PARTITIONS_RESPONSE, - ThriftObjects.LIST_TASK_LIST_PARTITIONS_RESPONSE, - ResponseMapper::listTaskListPartitionsResponse), - testCase( - ProtoObjects.LIST_WORKFLOW_EXECUTIONS_RESPONSE, - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_RESPONSE, - ResponseMapper::listWorkflowExecutionsResponse), - testCase( - ProtoObjects.POLL_FOR_ACTIVITY_TASK_RESPONSE, - ThriftObjects.POLL_FOR_ACTIVITY_TASK_RESPONSE, - ResponseMapper::pollForActivityTaskResponse), - testCase( - ProtoObjects.POLL_FOR_DECISION_TASK_RESPONSE, - ThriftObjects.POLL_FOR_DECISION_TASK_RESPONSE, - ResponseMapper::pollForDecisionTaskResponse, - "totalHistoryBytes"), - testCase( - ProtoObjects.QUERY_WORKFLOW_RESPONSE, - ThriftObjects.QUERY_WORKFLOW_RESPONSE, - ResponseMapper::queryWorkflowResponse), - testCase( - ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_RESPONSE, - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_RESPONSE, - ResponseMapper::recordActivityTaskHeartbeatResponse), - testCase( - ProtoObjects.RESET_WORKFLOW_EXECUTION_RESPONSE, - ThriftObjects.RESET_WORKFLOW_EXECUTION_RESPONSE, - ResponseMapper::resetWorkflowExecutionResponse), - testCase( - ProtoObjects.RESPOND_DECISION_TASK_COMPLETED_RESPONSE, - ThriftObjects.RESPOND_DECISION_TASK_COMPLETED_RESPONSE, - ResponseMapper::respondDecisionTaskCompletedResponse), - testCase( - ProtoObjects.COUNT_WORKFLOW_EXECUTIONS_RESPONSE, - ThriftObjects.COUNT_WORKFLOW_EXECUTIONS_RESPONSE, - ResponseMapper::countWorkflowExecutionsResponse), - testCase( - ProtoObjects.DESCRIBE_DOMAIN_RESPONSE, - ThriftObjects.DESCRIBE_DOMAIN_RESPONSE, - ResponseMapper::describeDomainResponse, - "failoverInfo"), - testCase( - ProtoObjects.LIST_DOMAINS_RESPONSE, - ThriftObjects.LIST_DOMAINS_RESPONSE, - ResponseMapper::listDomainsResponse), - testCase( - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_RESPONSE, - ThriftObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_ASYNC_RESPONSE, - ResponseMapper::signalWithStartWorkflowExecutionAsyncResponse), - testCase( - ProtoObjects.UPDATE_DOMAIN_RESPONSE, - ThriftObjects.UPDATE_DOMAIN_RESPONSE, - ResponseMapper::updateDomainResponse), - testCase( - ProtoObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_RESPONSE, - ThriftObjects.LIST_OPEN_WORKFLOW_EXECUTIONS_RESPONSE, - ResponseMapper::listOpenWorkflowExecutionsResponse), - // Proto has more types than thrift because it doesn't reuse response types across methods - testCase( - ProtoObjects.SCAN_WORKFLOW_EXECUTIONS_RESPONSE, - ThriftObjects.LIST_WORKFLOW_EXECUTIONS_RESPONSE, - ResponseMapper::scanWorkflowExecutionsResponse), - testCase( - ProtoObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_BY_ID_RESPONSE, - ThriftObjects.RECORD_ACTIVITY_TASK_HEARTBEAT_RESPONSE, - ResponseMapper::recordActivityTaskHeartbeatByIdResponse), - testCase( - ProtoObjects.GET_CLUSTER_INFO_RESPONSE, - ThriftObjects.CLUSTER_INFO, - ResponseMapper::getClusterInfoResponse), - testCase( - ProtoObjects.SIGNAL_WITH_START_WORKFLOW_EXECUTION_RESPONSE, - ThriftObjects.START_WORKFLOW_EXECUTION_RESPONSE, - ResponseMapper::signalWithStartWorkflowExecutionResponse)); - } - - private static Object[] testCase( - P from, T to, Function via, String... missingFields) { - return new Object[] { - from.getClass().getSimpleName(), from, to, via, ImmutableSet.copyOf(missingFields) - }; - } -} diff --git a/src/test/java/com/uber/cadence/internal/compatibility/thrift/TypeMapperTest.java b/src/test/java/com/uber/cadence/internal/compatibility/thrift/TypeMapperTest.java deleted file mode 100644 index 8b27ecda9..000000000 --- a/src/test/java/com/uber/cadence/internal/compatibility/thrift/TypeMapperTest.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -package com.uber.cadence.internal.compatibility.thrift; - -import static com.uber.cadence.internal.compatibility.thrift.Helpers.byteStringToArray; -import static org.junit.Assert.*; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.uber.cadence.internal.compatibility.ProtoObjects; -import com.uber.cadence.internal.compatibility.ThriftObjects; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -@RunWith(Parameterized.class) -public class TypeMapperTest { - - @Parameterized.Parameter(0) - public String testName; - - @Parameterized.Parameter(1) - public T from; - - @Parameterized.Parameter(2) - public P to; - - @Parameterized.Parameter(3) - public Function via; - - @Test - public void testMapper() { - P actual = via.apply(from); - if (actual instanceof byte[] && to instanceof byte[]) { - // Handle the byte[] comparison - assertArrayEquals((byte[]) to, (byte[]) actual); - } else { - // Handle all other types - assertEquals(to, actual); - } - } - - @Test - public void testHandlesNull() { - P actual = via.apply(null); - - if (actual instanceof List) { - assertTrue( - "Mapper functions returning a list should return an empty list", - ((List) actual).isEmpty()); - } else if (actual instanceof Map) { - assertTrue( - "Mapper functions returning a map should return an empty map", - ((Map) actual).isEmpty()); - } else if (actual instanceof Long) { - assertEquals("For long we expect -1", -1L, actual); - } else { - assertNull("Mapper functions should accept null, returning null", actual); - } - } - - @Parameterized.Parameters(name = "{0}") - public static Iterable cases() { - return Arrays.asList( - testCase( - ProtoObjects.BAD_BINARY_INFO, ThriftObjects.BAD_BINARY_INFO, TypeMapper::badBinaryInfo), - testCase(ProtoObjects.FAILURE, "reason", TypeMapper::failureReason), - testCase(ProtoObjects.DATA_BLOB, ThriftObjects.DATA_BLOB, TypeMapper::dataBlob), - testCase( - ProtoObjects.EXTERNAL_WORKFLOW_EXECUTION_INFO, - ThriftObjects.EXTERNAL_WORKFLOW_EXECUTION, - TypeMapper::externalWorkflowExecution), - testCase( - ProtoObjects.FAILURE, - byteStringToArray(ProtoObjects.FAILURE.getDetails()), - TypeMapper::failureDetails), - testCase(ProtoObjects.ACTIVITY_TYPE, ThriftObjects.ACTIVITY_TYPE, TypeMapper::activityType), - testCase(ProtoObjects.WORKFLOW_TYPE, ThriftObjects.WORKFLOW_TYPE, TypeMapper::workflowType), - testCase(ProtoObjects.RESET_POINTS, ThriftObjects.RESET_POINTS, TypeMapper::resetPoints), - testCase( - ProtoObjects.RESET_POINT_INFO, - ThriftObjects.RESET_POINT_INFO, - TypeMapper::resetPointInfo), - testCase(ProtoObjects.POLLER_INFO, ThriftObjects.POLLER_INFO, TypeMapper::pollerInfo), - testCase( - Collections.singletonList(ProtoObjects.POLLER_INFO), - Collections.singletonList(ThriftObjects.POLLER_INFO), - TypeMapper::pollerInfoArray), - testCase( - ProtoObjects.SUPPORTED_CLIENT_VERSIONS, - ThriftObjects.SUPPORTED_CLIENT_VERSIONS, - TypeMapper::supportedClientVersions), - testCase( - ProtoObjects.TASK_LIST_STATUS, - ThriftObjects.TASK_LIST_STATUS, - TypeMapper::taskListStatus), - testCase( - ProtoObjects.WORKFLOW_EXECUTION, - ThriftObjects.WORKFLOW_EXECUTION, - TypeMapper::workflowExecution), - testCase(ProtoObjects.WORKFLOW_EXECUTION, "workflowId", TypeMapper::workflowId), - testCase(ProtoObjects.WORKFLOW_EXECUTION, "runId", TypeMapper::runId), - testCase( - ProtoObjects.WORKFLOW_EXECUTION_INFO, - ThriftObjects.WORKFLOW_EXECUTION_INFO, - TypeMapper::workflowExecutionInfo), - testCase( - Collections.singletonList(ProtoObjects.WORKFLOW_EXECUTION_INFO), - Collections.singletonList(ThriftObjects.WORKFLOW_EXECUTION_INFO), - TypeMapper::workflowExecutionInfoArray), - testCase( - ProtoObjects.INDEXED_VALUES, - ThriftObjects.INDEXED_VALUES, - TypeMapper::indexedValueTypeMap), - testCase( - ProtoObjects.WORKFLOW_EXECUTION_INFO.getParentExecutionInfo(), - "parentDomainId", - TypeMapper::parentDomainId), - testCase( - ProtoObjects.WORKFLOW_EXECUTION_INFO.getParentExecutionInfo(), - "parentDomainName", - TypeMapper::parentDomainName), - testCase( - ProtoObjects.WORKFLOW_EXECUTION_INFO.getParentExecutionInfo(), - 1L, - TypeMapper::parentInitiatedId), - testCase( - ProtoObjects.WORKFLOW_EXECUTION_INFO.getParentExecutionInfo(), - ThriftObjects.PARENT_WORKFLOW_EXECUTION, - TypeMapper::parentWorkflowExecution), - testCase( - Collections.singletonList(ProtoObjects.PENDING_CHILD_EXECUTION_INFO), - Collections.singletonList(ThriftObjects.PENDING_CHILD_EXECUTION_INFO), - TypeMapper::pendingChildExecutionInfoArray), - testCase( - Collections.singletonList(ProtoObjects.PENDING_ACTIVITY_INFO), - Collections.singletonList(ThriftObjects.PENDING_ACTIVITY_INFO), - TypeMapper::pendingActivityInfoArray), - testCase( - Collections.singletonList(ProtoObjects.RESET_POINT_INFO), - Collections.singletonList(ThriftObjects.RESET_POINT_INFO), - TypeMapper::resetPointInfoArray), - testCase(ProtoObjects.TASK_LIST, ThriftObjects.TASK_LIST, TypeMapper::taskList), - testCase( - ProtoObjects.TASK_LIST_METADATA, - ThriftObjects.TASK_LIST_METADATA, - TypeMapper::taskListMetadata), - testCase(ProtoObjects.RETRY_POLICY, ThriftObjects.RETRY_POLICY, TypeMapper::retryPolicy), - testCase(ProtoObjects.HEADER, ThriftObjects.HEADER, TypeMapper::header), - testCase(ProtoObjects.MEMO, ThriftObjects.MEMO, TypeMapper::memo), - testCase( - ProtoObjects.SEARCH_ATTRIBUTES, - ThriftObjects.SEARCH_ATTRIBUTES, - TypeMapper::searchAttributes), - testCase(ProtoObjects.BAD_BINARIES, ThriftObjects.BAD_BINARIES, TypeMapper::badBinaries), - testCase( - ProtoObjects.CLUSTER_REPLICATION_CONFIGURATION, - ThriftObjects.CLUSTER_REPLICATION_CONFIGURATION, - TypeMapper::clusterReplicationConfiguration), - testCase( - ProtoObjects.WORKFLOW_QUERY, ThriftObjects.WORKFLOW_QUERY, TypeMapper::workflowQuery), - testCase( - ImmutableMap.of("key", ProtoObjects.BAD_BINARY_INFO), - ImmutableMap.of("key", ThriftObjects.BAD_BINARY_INFO), - TypeMapper::badBinaryInfoMap), - testCase( - ImmutableList.of(ProtoObjects.CLUSTER_REPLICATION_CONFIGURATION), - ImmutableList.of(ThriftObjects.CLUSTER_REPLICATION_CONFIGURATION), - TypeMapper::clusterReplicationConfigurationArray), - testCase( - ImmutableMap.of("key", ProtoObjects.WORKFLOW_QUERY), - ImmutableMap.of("key", ThriftObjects.WORKFLOW_QUERY), - TypeMapper::workflowQueryMap), - testCase( - ImmutableMap.of("key", ProtoObjects.ACTIVITY_LOCAL_DISPATCH_INFO), - ImmutableMap.of("key", ThriftObjects.ACTIVITY_LOCAL_DISPATCH_INFO), - TypeMapper::activityLocalDispatchInfoMap), - testCase( - Collections.singletonList(ProtoObjects.DATA_BLOB), - Collections.singletonList(ThriftObjects.DATA_BLOB), - TypeMapper::dataBlobArray), - testCase( - ProtoObjects.DOMAIN, - ThriftObjects.DESCRIBE_DOMAIN_RESPONSE, - TypeMapper::describeDomainResponseDomain), - testCase( - Collections.singletonList(ProtoObjects.DOMAIN), - Collections.singletonList(ThriftObjects.DESCRIBE_DOMAIN_RESPONSE), - TypeMapper::describeDomainResponseArray), - testCase( - Collections.singletonList(ProtoObjects.TASK_LIST_PARTITION_METADATA), - Collections.singletonList(ThriftObjects.TASK_LIST_PARTITION_METADATA), - TypeMapper::taskListPartitionMetadataArray)); - } - - private static Object[] testCase(T from, P to, Function via) { - return new Object[] {from.getClass().getSimpleName(), from, to, via}; - } -} diff --git a/src/test/java/com/uber/cadence/internal/replay/ExecuteActivityParametersTest.java b/src/test/java/com/uber/cadence/internal/replay/ExecuteActivityParametersTest.java index c273d14dd..2b3e9bcc6 100644 --- a/src/test/java/com/uber/cadence/internal/replay/ExecuteActivityParametersTest.java +++ b/src/test/java/com/uber/cadence/internal/replay/ExecuteActivityParametersTest.java @@ -158,7 +158,7 @@ public void testToString() { parameters.setActivityType(activityType); parameters.setInput(new byte[] {10, 20}); String expectedString = - "ExecuteActivityParameters{activityId='toStringTest', activityType=ActivityType(), heartbeatTimeoutSeconds=0, input=[10, 20], scheduleToCloseTimeoutSeconds=0, scheduleToStartTimeoutSeconds=0, startToCloseTimeoutSeconds=0, taskList='null', retryParameters=null, context='null}"; + "ExecuteActivityParameters{activityId='toStringTest', activityType=ActivityType(name=null), heartbeatTimeoutSeconds=0, input=[10, 20], scheduleToCloseTimeoutSeconds=0, scheduleToStartTimeoutSeconds=0, startToCloseTimeoutSeconds=0, taskList='null', retryParameters=null, context='null}"; assertEquals(expectedString, parameters.toString()); } diff --git a/src/test/java/com/uber/cadence/internal/replay/ReplaceDeciderDecisionTaskWithHistoryIteratorTest.java b/src/test/java/com/uber/cadence/internal/replay/ReplaceDeciderDecisionTaskWithHistoryIteratorTest.java index 133251be7..a1d9031d5 100644 --- a/src/test/java/com/uber/cadence/internal/replay/ReplaceDeciderDecisionTaskWithHistoryIteratorTest.java +++ b/src/test/java/com/uber/cadence/internal/replay/ReplaceDeciderDecisionTaskWithHistoryIteratorTest.java @@ -29,7 +29,6 @@ import java.lang.reflect.Method; import java.time.Duration; import java.util.*; -import org.apache.thrift.TException; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -114,7 +113,8 @@ public void setUp() { @Test public void testGetHistoryWithSinglePageOfEvents() - throws TException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { + throws CadenceError, NoSuchMethodException, InvocationTargetException, + IllegalAccessException { // Arrange List events = Arrays.asList(createMockHistoryEvent(2), createMockHistoryEvent(3)); History mockHistory = new History().setEvents(events); @@ -142,7 +142,8 @@ public void testGetHistoryWithSinglePageOfEvents() @Test public void testGetHistoryWithMultiplePages() - throws TException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { + throws CadenceError, NoSuchMethodException, InvocationTargetException, + IllegalAccessException { // First page events List firstPageEvents = Arrays.asList(createMockHistoryEvent(1), createMockHistoryEvent(2)); @@ -192,14 +193,15 @@ public void testGetHistoryWithMultiplePages() @Test(expected = Error.class) public void testGetHistoryFailure() - throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, TException { + throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, + CadenceError { when(mockService.GetWorkflowExecutionHistory( new GetWorkflowExecutionHistoryRequest() .setDomain(DOMAIN) .setNextPageToken(START_PAGE_TOKEN.getBytes()) .setExecution(WORKFLOW_EXECUTION) .setMaximumPageSize(MAXIMUM_PAGE_SIZE))) - .thenThrow(new TException()); + .thenThrow(new CadenceError()); // Act & Assert Method wrapperMethod = iterator.getClass().getMethod("getHistory"); @@ -213,7 +215,8 @@ public void testGetHistoryFailure() @Test(expected = Error.class) public void testEmptyHistory() - throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, TException { + throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, + CadenceError { when(mockService.GetWorkflowExecutionHistory( new GetWorkflowExecutionHistoryRequest() .setDomain(DOMAIN) diff --git a/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderCacheTests.java b/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderCacheTests.java index 564ad78ea..3e4ee3f4e 100644 --- a/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderCacheTests.java +++ b/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderCacheTests.java @@ -201,7 +201,7 @@ public void evictAnyWillInvalidateAnEntryRandomlyFromTheCache() throws Exception assertEquals(3, replayDeciderCache.size()); - replayDeciderCache.evictAnyNotInProcessing(decisionTask3.workflowExecution.runId); + replayDeciderCache.evictAnyNotInProcessing(decisionTask3.getWorkflowExecution().getRunId()); // Assert assertEquals(2, replayDeciderCache.size()); @@ -226,7 +226,7 @@ public void evictAnyWillNotInvalidateItself() throws Exception { assertEquals(1, replayDeciderCache.size()); - replayDeciderCache.evictAnyNotInProcessing(decisionTask1.workflowExecution.runId); + replayDeciderCache.evictAnyNotInProcessing(decisionTask1.getWorkflowExecution().getRunId()); // Assert assertEquals(1, replayDeciderCache.size()); diff --git a/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderTaskHandlerTests.java b/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderTaskHandlerTests.java index 186141c0a..b51838304 100644 --- a/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderTaskHandlerTests.java +++ b/src/test/java/com/uber/cadence/internal/replay/ReplayDeciderTaskHandlerTests.java @@ -87,7 +87,7 @@ public void ifStickyExecutionAttributesAreSetThenWorkflowsAreCached() throws Thr assertEquals(1, cache.size()); assertNotNull(result.getTaskCompleted()); StickyExecutionAttributes attributes = result.getTaskCompleted().getStickyAttributes(); - assertEquals("sticky", attributes.getWorkerTaskList().name); + assertEquals("sticky", attributes.getWorkerTaskList().getName()); assertEquals(5, attributes.getScheduleToStartTimeoutSeconds()); } diff --git a/src/test/java/com/uber/cadence/internal/replay/WorkflowContextTest.java b/src/test/java/com/uber/cadence/internal/replay/WorkflowContextTest.java index 4eb81b3ac..811ece727 100644 --- a/src/test/java/com/uber/cadence/internal/replay/WorkflowContextTest.java +++ b/src/test/java/com/uber/cadence/internal/replay/WorkflowContextTest.java @@ -24,7 +24,6 @@ import com.uber.cadence.converter.DataConverter; import com.uber.cadence.converter.JsonDataConverter; import com.uber.cadence.workflow.WorkflowUtils; -import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import org.junit.Test; @@ -38,8 +37,8 @@ public void TestMergeSearchAttributes() { WorkflowContext workflowContext = new WorkflowContext("domain", null, startAttr, null); DataConverter converter = JsonDataConverter.getInstance(); - Map indexedFields = new HashMap<>(); - indexedFields.put("CustomKeywordField", ByteBuffer.wrap(converter.toData("key"))); + Map indexedFields = new HashMap<>(); + indexedFields.put("CustomKeywordField", converter.toData("key")); SearchAttributes searchAttributes = new SearchAttributes(); searchAttributes.setIndexedFields(indexedFields); diff --git a/src/test/java/com/uber/cadence/internal/shadowing/NonRetryableExceptionTest.java b/src/test/java/com/uber/cadence/internal/shadowing/NonRetryableExceptionTest.java index 175774112..6148bea0f 100644 --- a/src/test/java/com/uber/cadence/internal/shadowing/NonRetryableExceptionTest.java +++ b/src/test/java/com/uber/cadence/internal/shadowing/NonRetryableExceptionTest.java @@ -15,7 +15,7 @@ */ package com.uber.cadence.internal.shadowing; -import static com.uber.cadence.shadower.shadowerConstants.ErrNonRetryableType; +import static com.uber.cadence.shadower.Constants.ErrNonRetryableType; import static org.junit.Assert.assertEquals; import org.junit.Test; diff --git a/src/test/java/com/uber/cadence/internal/sync/SyncDecisionContextTest.java b/src/test/java/com/uber/cadence/internal/sync/SyncDecisionContextTest.java index be41e13ab..cc1c48ebd 100644 --- a/src/test/java/com/uber/cadence/internal/sync/SyncDecisionContextTest.java +++ b/src/test/java/com/uber/cadence/internal/sync/SyncDecisionContextTest.java @@ -17,6 +17,7 @@ package com.uber.cadence.internal.sync; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -25,6 +26,7 @@ import com.uber.cadence.converter.JsonDataConverter; import com.uber.cadence.internal.common.InternalUtils; import com.uber.cadence.internal.replay.DecisionContext; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.junit.Before; @@ -48,7 +50,13 @@ public void testUpsertSearchAttributes() throws Throwable { SearchAttributes serializedAttr = InternalUtils.convertMapToSearchAttributes(attr); context.upsertSearchAttributes(attr); - verify(mockDecisionContext, times(1)).upsertSearchAttributes(serializedAttr); + verify(mockDecisionContext, times(1)) + .upsertSearchAttributes( + argThat( + s -> + Arrays.equals( + s.getIndexedFields().get("CustomKeywordField"), + serializedAttr.getIndexedFields().get("CustomKeywordField")))); } @Test(expected = IllegalArgumentException.class) diff --git a/src/test/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternalTest.java b/src/test/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternalTest.java index 5aab59220..78cad1f47 100644 --- a/src/test/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternalTest.java +++ b/src/test/java/com/uber/cadence/internal/sync/TestWorkflowEnvironmentInternalTest.java @@ -23,10 +23,10 @@ Modifications copyright (C) 2017 Uber Technologies, Inc. import com.uber.cadence.*; import com.uber.cadence.internal.testservice.TestWorkflowService; +import com.uber.cadence.serviceclient.AsyncMethodCallback; import java.lang.reflect.Field; import java.util.Arrays; import java.util.concurrent.CompletableFuture; -import org.apache.thrift.async.AsyncMethodCallback; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/com/uber/cadence/internal/sync/WorkflowClientInternalTest.java b/src/test/java/com/uber/cadence/internal/sync/WorkflowClientInternalTest.java deleted file mode 100644 index 84facee0c..000000000 --- a/src/test/java/com/uber/cadence/internal/sync/WorkflowClientInternalTest.java +++ /dev/null @@ -1,538 +0,0 @@ -/* - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Modifications copyright (C) 2017 Uber Technologies, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not - * use this file except in compliance with the License. A copy of the License is - * located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.uber.cadence.internal.sync; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import com.uber.cadence.FakeWorkflowServiceRule; -import com.uber.cadence.ServiceBusyError; -import com.uber.cadence.SignalWithStartWorkflowExecutionAsyncResponse; -import com.uber.cadence.SignalWithStartWorkflowExecutionRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncRequest; -import com.uber.cadence.StartWorkflowExecutionAsyncResponse; -import com.uber.cadence.StartWorkflowExecutionResponse; -import com.uber.cadence.WorkflowExecution; -import com.uber.cadence.WorkflowService; -import com.uber.cadence.WorkflowType; -import com.uber.cadence.client.BatchRequest; -import com.uber.cadence.client.WorkflowClient; -import com.uber.cadence.client.WorkflowClientOptions; -import com.uber.cadence.client.WorkflowOptions; -import com.uber.cadence.client.WorkflowStub; -import com.uber.cadence.workflow.SignalMethod; -import com.uber.cadence.workflow.WorkflowMethod; -import io.opentracing.mock.MockSpan; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; -import org.apache.commons.io.Charsets; -import org.junit.Before; -import org.junit.ClassRule; -import org.junit.Test; - -public class WorkflowClientInternalTest { - - @ClassRule public static FakeWorkflowServiceRule fakeService = new FakeWorkflowServiceRule(); - - private WorkflowClient client; - - @Before - public void setup() throws Exception { - fakeService.resetStubs(); - client = - WorkflowClient.newInstance( - fakeService.getClient(), - WorkflowClientOptions.newBuilder().setDomain("domain").build()); - } - - @Test - public void testEnqueueStart() throws Exception { - CompletableFuture requestFuture = - fakeService.stubSuccess( - "WorkflowService::StartWorkflowExecutionAsync", - WorkflowService.StartWorkflowExecutionAsync_args.class, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setSuccess(new StartWorkflowExecutionAsyncResponse())); - - WorkflowStub stub = - client.newUntypedWorkflowStub( - "type", - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - stub.enqueueStart("input"); - - StartWorkflowExecutionAsyncRequest request = requestFuture.getNow(null).getStartRequest(); - assertEquals(new WorkflowType().setName("type"), request.getRequest().getWorkflowType()); - assertEquals("workflowId", request.getRequest().getWorkflowId()); - assertEquals(1, request.getRequest().getExecutionStartToCloseTimeoutSeconds()); - assertEquals(2, request.getRequest().getTaskStartToCloseTimeoutSeconds()); - assertEquals("domain", request.getRequest().getDomain()); - assertEquals("taskList", request.getRequest().getTaskList().getName()); - assertEquals("\"input\"", StandardCharsets.UTF_8.decode(request.request.input).toString()); - assertNotNull(request.getRequest().getRequestId()); - } - - @Test - public void testEnqueueStart_includesTracing() { - CompletableFuture requestFuture = - fakeService.stubSuccess( - "WorkflowService::StartWorkflowExecutionAsync", - WorkflowService.StartWorkflowExecutionAsync_args.class, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setSuccess(new StartWorkflowExecutionAsyncResponse())); - - WorkflowStub stub = - client.newUntypedWorkflowStub( - "type", - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - stub.enqueueStart("input"); - - StartWorkflowExecutionAsyncRequest request = requestFuture.getNow(null).getStartRequest(); - assertEquals(1, fakeService.getTracer().finishedSpans().size()); - MockSpan mockSpan = fakeService.getTracer().finishedSpans().get(0); - assertEquals( - mockSpan.context().toTraceId(), - Charsets.UTF_8 - .decode(request.getRequest().getHeader().getFields().get("traceid")) - .toString()); - assertEquals( - mockSpan.context().toSpanId(), - Charsets.UTF_8 - .decode(request.getRequest().getHeader().getFields().get("spanid")) - .toString()); - } - - interface TestWorkflow { - @WorkflowMethod( - taskList = "taskList", - executionStartToCloseTimeoutSeconds = 1, - taskStartToCloseTimeoutSeconds = 2 - ) - void test(String input); - } - - @Test - public void testEnqueueStart_stronglyTyped() throws Exception { - CompletableFuture requestFuture = - fakeService.stubSuccess( - "WorkflowService::StartWorkflowExecutionAsync", - WorkflowService.StartWorkflowExecutionAsync_args.class, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setSuccess(new StartWorkflowExecutionAsyncResponse())); - - TestWorkflow stub = - client.newWorkflowStub( - TestWorkflow.class, - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - - WorkflowExecution execution = WorkflowClient.enqueueStart(stub::test, "input"); - - assertEquals(new WorkflowExecution().setWorkflowId("workflowId"), execution); - StartWorkflowExecutionAsyncRequest request = requestFuture.getNow(null).getStartRequest(); - assertEquals( - new WorkflowType().setName("TestWorkflow::test"), request.getRequest().getWorkflowType()); - assertEquals("workflowId", request.getRequest().getWorkflowId()); - assertEquals(1, request.getRequest().getExecutionStartToCloseTimeoutSeconds()); - assertEquals(2, request.getRequest().getTaskStartToCloseTimeoutSeconds()); - assertEquals("domain", request.getRequest().getDomain()); - assertEquals("taskList", request.getRequest().getTaskList().getName()); - assertEquals("\"input\"", StandardCharsets.UTF_8.decode(request.request.input).toString()); - assertNotNull(request.getRequest().getRequestId()); - } - - @Test - public void testEnqueueStartAsync() { - CompletableFuture requestFuture = - fakeService.stubSuccess( - "WorkflowService::StartWorkflowExecutionAsync", - WorkflowService.StartWorkflowExecutionAsync_args.class, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setSuccess(new StartWorkflowExecutionAsyncResponse())); - - WorkflowStub stub = - client.newUntypedWorkflowStub( - "type", - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - stub.enqueueStartAsync("input").join(); - - StartWorkflowExecutionAsyncRequest request = requestFuture.getNow(null).getStartRequest(); - assertEquals(new WorkflowType().setName("type"), request.getRequest().getWorkflowType()); - assertEquals("workflowId", request.getRequest().getWorkflowId()); - assertEquals(1, request.getRequest().getExecutionStartToCloseTimeoutSeconds()); - assertEquals(2, request.getRequest().getTaskStartToCloseTimeoutSeconds()); - assertEquals("domain", request.getRequest().getDomain()); - assertEquals("taskList", request.getRequest().getTaskList().getName()); - assertEquals("\"input\"", StandardCharsets.UTF_8.decode(request.request.input).toString()); - assertNotNull(request.getRequest().getRequestId()); - } - - @Test - public void testEnqueueSignalWithStart() { - CompletableFuture requestFuture = - fakeService.stubSuccess( - "WorkflowService::SignalWithStartWorkflowExecutionAsync", - WorkflowService.SignalWithStartWorkflowExecutionAsync_args.class, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setSuccess(new SignalWithStartWorkflowExecutionAsyncResponse())); - - WorkflowStub stub = - client.newUntypedWorkflowStub( - "type", - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - WorkflowExecution execution = - stub.enqueueSignalWithStart( - "signalName", new Object[] {"signalValue"}, new Object[] {"startValue"}); - - assertEquals(new WorkflowExecution().setWorkflowId("workflowId"), execution); - - SignalWithStartWorkflowExecutionRequest request = - requestFuture.getNow(null).getSignalWithStartRequest().getRequest(); - assertEquals(new WorkflowType().setName("type"), request.getWorkflowType()); - assertEquals("workflowId", request.getWorkflowId()); - assertEquals(1, request.getExecutionStartToCloseTimeoutSeconds()); - assertEquals(2, request.getTaskStartToCloseTimeoutSeconds()); - assertEquals("domain", request.getDomain()); - assertEquals("taskList", request.getTaskList().getName()); - assertEquals( - "\"startValue\"", - StandardCharsets.UTF_8.decode(ByteBuffer.wrap(request.getInput())).toString()); - assertEquals("signalName", request.getSignalName()); - assertEquals( - "\"signalValue\"", - StandardCharsets.UTF_8.decode(ByteBuffer.wrap(request.getSignalInput())).toString()); - assertNotNull(request.getRequestId()); - } - - @Test - public void testEnqueueSignalWithStart_includesTracing() { - CompletableFuture requestFuture = - fakeService.stubSuccess( - "WorkflowService::SignalWithStartWorkflowExecutionAsync", - WorkflowService.SignalWithStartWorkflowExecutionAsync_args.class, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setSuccess(new SignalWithStartWorkflowExecutionAsyncResponse())); - - WorkflowStub stub = - client.newUntypedWorkflowStub( - "type", - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - stub.enqueueSignalWithStart( - "signalName", new Object[] {"signalValue"}, new Object[] {"startValue"}); - - SignalWithStartWorkflowExecutionRequest request = - requestFuture.getNow(null).getSignalWithStartRequest().getRequest(); - assertEquals(1, fakeService.getTracer().finishedSpans().size()); - MockSpan mockSpan = fakeService.getTracer().finishedSpans().get(0); - assertEquals( - mockSpan.context().toTraceId(), - Charsets.UTF_8.decode(request.getHeader().getFields().get("traceid")).toString()); - assertEquals( - mockSpan.context().toSpanId(), - Charsets.UTF_8.decode(request.getHeader().getFields().get("spanid")).toString()); - } - - interface TestSignalWorkflow { - @WorkflowMethod( - taskList = "taskList", - executionStartToCloseTimeoutSeconds = 1, - taskStartToCloseTimeoutSeconds = 2 - ) - void test(String input); - - @SignalMethod - void signal(String input); - } - - @Test - public void testEnqueueSignalWithStart_stronglyTyped() { - CompletableFuture requestFuture = - fakeService.stubSuccess( - "WorkflowService::SignalWithStartWorkflowExecutionAsync", - WorkflowService.SignalWithStartWorkflowExecutionAsync_args.class, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setSuccess(new SignalWithStartWorkflowExecutionAsyncResponse())); - - TestSignalWorkflow stub = - client.newWorkflowStub( - TestSignalWorkflow.class, - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - - BatchRequest batch = client.newSignalWithStartRequest(); - batch.add(stub::test, "startValue"); - batch.add(stub::signal, "signalValue"); - WorkflowExecution execution = client.enqueueSignalWithStart(batch); - - assertEquals(new WorkflowExecution().setWorkflowId("workflowId"), execution); - - SignalWithStartWorkflowExecutionRequest request = - requestFuture.getNow(null).getSignalWithStartRequest().getRequest(); - assertEquals(new WorkflowType().setName("TestSignalWorkflow::test"), request.getWorkflowType()); - assertEquals("workflowId", request.getWorkflowId()); - assertEquals(1, request.getExecutionStartToCloseTimeoutSeconds()); - assertEquals(2, request.getTaskStartToCloseTimeoutSeconds()); - assertEquals("domain", request.getDomain()); - assertEquals("taskList", request.getTaskList().getName()); - assertEquals( - "\"startValue\"", - StandardCharsets.UTF_8.decode(ByteBuffer.wrap(request.getInput())).toString()); - assertEquals("TestSignalWorkflow::signal", request.getSignalName()); - assertEquals( - "\"signalValue\"", - StandardCharsets.UTF_8.decode(ByteBuffer.wrap(request.getSignalInput())).toString()); - assertNotNull(request.getRequestId()); - } - - @Test - public void testEnqueueSignalWithStart_usesConsistentRequestId() { - CompletableFuture firstAttempt = - fakeService.stubError( - "WorkflowService::SignalWithStartWorkflowExecutionAsync", - WorkflowService.SignalWithStartWorkflowExecutionAsync_args.class, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setServiceBusyError(new ServiceBusyError("try again later"))); - CompletableFuture secondAttempt = - fakeService.stubSuccess( - "WorkflowService::SignalWithStartWorkflowExecutionAsync", - WorkflowService.SignalWithStartWorkflowExecutionAsync_args.class, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setSuccess(new SignalWithStartWorkflowExecutionAsyncResponse())); - - TestSignalWorkflow stub = - client.newWorkflowStub( - TestSignalWorkflow.class, - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - - BatchRequest batch = client.newSignalWithStartRequest(); - batch.add(stub::test, "startValue"); - batch.add(stub::signal, "signalValue"); - client.enqueueSignalWithStart(batch); - - assertTrue("first request was not made", firstAttempt.isDone()); - assertTrue("second request was not made", secondAttempt.isDone()); - String firstRequestId = - firstAttempt.getNow(null).getSignalWithStartRequest().getRequest().getRequestId(); - String secondRequestId = - secondAttempt.getNow(null).getSignalWithStartRequest().getRequest().getRequestId(); - assertNotNull("first request must have a request id", firstRequestId); - assertEquals(firstRequestId, secondRequestId); - } - - @Test - public void testEnqueueStart_usesConsistentRequestId() { - CompletableFuture firstAttempt = - fakeService.stubError( - "WorkflowService::StartWorkflowExecutionAsync", - WorkflowService.StartWorkflowExecutionAsync_args.class, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setServiceBusyError(new ServiceBusyError("try again later"))); - CompletableFuture secondAttempt = - fakeService.stubSuccess( - "WorkflowService::StartWorkflowExecutionAsync", - WorkflowService.StartWorkflowExecutionAsync_args.class, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setSuccess(new StartWorkflowExecutionAsyncResponse())); - - TestWorkflow stub = - client.newWorkflowStub( - TestWorkflow.class, - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - - WorkflowClient.enqueueStart(stub::test, "input"); - - assertTrue("first request was not made", firstAttempt.isDone()); - assertTrue("second request was not made", secondAttempt.isDone()); - String firstRequestId = firstAttempt.getNow(null).getStartRequest().getRequest().getRequestId(); - String secondRequestId = - secondAttempt.getNow(null).getStartRequest().getRequest().getRequestId(); - assertNotNull("first request must have a request id", firstRequestId); - assertEquals(firstRequestId, secondRequestId); - } - - @Test - public void testStartWorkflow_usesConsistentRequestId() { - CompletableFuture firstAttempt = - fakeService.stubError( - "WorkflowService::StartWorkflowExecution", - WorkflowService.StartWorkflowExecution_args.class, - new WorkflowService.StartWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("try again later"))); - CompletableFuture secondAttempt = - fakeService.stubSuccess( - "WorkflowService::StartWorkflowExecution", - WorkflowService.StartWorkflowExecution_args.class, - new WorkflowService.StartWorkflowExecution_result() - .setSuccess(new StartWorkflowExecutionResponse().setRunId("foo"))); - - TestWorkflow stub = - client.newWorkflowStub( - TestWorkflow.class, - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - - WorkflowClient.start(stub::test, "input"); - - assertTrue("first request was not made", firstAttempt.isDone()); - assertTrue("second request was not made", secondAttempt.isDone()); - String firstRequestId = firstAttempt.getNow(null).getStartRequest().requestId; - String secondRequestId = secondAttempt.getNow(null).getStartRequest().requestId; - assertNotNull("first request must have a request id", firstRequestId); - assertEquals(firstRequestId, secondRequestId); - } - - @Test - public void testSignalWithStartWorkflow_usesConsistentRequestId() { - CompletableFuture firstAttempt = - fakeService.stubError( - "WorkflowService::SignalWithStartWorkflowExecution", - WorkflowService.SignalWithStartWorkflowExecution_args.class, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("try again later"))); - CompletableFuture secondAttempt = - fakeService.stubSuccess( - "WorkflowService::SignalWithStartWorkflowExecution", - WorkflowService.SignalWithStartWorkflowExecution_args.class, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setSuccess(new StartWorkflowExecutionResponse().setRunId("foo"))); - - TestSignalWorkflow stub = - client.newWorkflowStub( - TestSignalWorkflow.class, - new WorkflowOptions.Builder() - .setExecutionStartToCloseTimeout(Duration.ofSeconds(1)) - .setTaskStartToCloseTimeout(Duration.ofSeconds(2)) - .setWorkflowId("workflowId") - .setTaskList("taskList") - .build()); - - BatchRequest batch = client.newSignalWithStartRequest(); - batch.add(stub::test, "startValue"); - batch.add(stub::signal, "signalValue"); - client.signalWithStart(batch); - - assertTrue("first request was not made", firstAttempt.isDone()); - assertTrue("second request was not made", secondAttempt.isDone()); - String firstRequestId = firstAttempt.getNow(null).getSignalWithStartRequest().requestId; - String secondRequestId = secondAttempt.getNow(null).getSignalWithStartRequest().requestId; - assertNotNull("first request must have a request id", firstRequestId); - assertEquals(firstRequestId, secondRequestId); - } - - @Test - public void testSignalWorkflow_usesConsistentRequestId() { - CompletableFuture firstAttempt = - fakeService.stubError( - "WorkflowService::SignalWorkflowExecution", - WorkflowService.SignalWorkflowExecution_args.class, - new WorkflowService.SignalWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("try again later"))); - CompletableFuture secondAttempt = - fakeService.stubSuccess( - "WorkflowService::SignalWorkflowExecution", - WorkflowService.SignalWorkflowExecution_args.class, - new WorkflowService.SignalWorkflowExecution_result()); - - TestSignalWorkflow stub = client.newWorkflowStub(TestSignalWorkflow.class, "workflowId"); - - stub.signal("signalValue"); - - assertTrue("first request was not made", firstAttempt.isDone()); - assertTrue("second request was not made", secondAttempt.isDone()); - String firstRequestId = firstAttempt.getNow(null).getSignalRequest().getRequestId(); - String secondRequestId = secondAttempt.getNow(null).getSignalRequest().getRequestId(); - assertNotNull("first request must have a request id", firstRequestId); - assertEquals(firstRequestId, secondRequestId); - } - - @Test - public void testCancel_usesConsistentRequestId() { - CompletableFuture firstAttempt = - fakeService.stubError( - "WorkflowService::RequestCancelWorkflowExecution", - WorkflowService.RequestCancelWorkflowExecution_args.class, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("try again later"))); - CompletableFuture secondAttempt = - fakeService.stubSuccess( - "WorkflowService::RequestCancelWorkflowExecution", - WorkflowService.RequestCancelWorkflowExecution_args.class, - new WorkflowService.RequestCancelWorkflowExecution_result()); - - WorkflowStub stub = - client.newUntypedWorkflowStub("workflowId", Optional.empty(), Optional.empty()); - stub.cancel(); - - assertTrue("first request was not made", firstAttempt.isDone()); - assertTrue("second request was not made", secondAttempt.isDone()); - String firstRequestId = firstAttempt.getNow(null).getCancelRequest().getRequestId(); - String secondRequestId = secondAttempt.getNow(null).getCancelRequest().getRequestId(); - assertNotNull("first request must have a request id", firstRequestId); - assertEquals(firstRequestId, secondRequestId); - } -} diff --git a/src/test/java/com/uber/cadence/internal/testing/ActivityTestingTest.java b/src/test/java/com/uber/cadence/internal/testing/ActivityTestingTest.java index 9275c6891..a3fb0dfe0 100644 --- a/src/test/java/com/uber/cadence/internal/testing/ActivityTestingTest.java +++ b/src/test/java/com/uber/cadence/internal/testing/ActivityTestingTest.java @@ -24,6 +24,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import com.uber.cadence.CadenceError; import com.uber.cadence.RecordActivityTaskHeartbeatResponse; import com.uber.cadence.activity.Activity; import com.uber.cadence.activity.ActivityMethod; @@ -35,7 +36,6 @@ import java.io.IOException; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import org.apache.thrift.TException; import org.junit.Before; import org.junit.Test; @@ -180,7 +180,7 @@ public void activity1() throws InterruptedException { } @Test - public void testHeartbeatCancellation() throws InterruptedException, TException { + public void testHeartbeatCancellation() throws InterruptedException, CadenceError { testEnvironment.registerActivitiesImplementations(new HeartbeatCancellationActivityImpl()); IWorkflowService workflowService = mock(IWorkflowService.class); RecordActivityTaskHeartbeatResponse resp = new RecordActivityTaskHeartbeatResponse(); @@ -211,7 +211,7 @@ public void activity1() throws InterruptedException { } @Test - public void testCancellationOnNextHeartbeat() throws InterruptedException, TException { + public void testCancellationOnNextHeartbeat() throws InterruptedException, CadenceError { testEnvironment.registerActivitiesImplementations( new CancellationOnNextHeartbeatActivityImpl()); IWorkflowService workflowService = mock(IWorkflowService.class); @@ -237,12 +237,12 @@ public void activity1() throws InterruptedException { } @Test - public void testHeartbeatIntermittentError() throws TException, InterruptedException { + public void testHeartbeatIntermittentError() throws CadenceError, InterruptedException { testEnvironment.registerActivitiesImplementations(new SimpleHeartbeatActivityImpl()); IWorkflowService workflowService = mock(IWorkflowService.class); when(workflowService.RecordActivityTaskHeartbeat(any())) - .thenThrow(new TException("intermittent error")) - .thenThrow(new TException("intermittent error")) + .thenThrow(new CadenceError("intermittent error")) + .thenThrow(new CadenceError("intermittent error")) .thenReturn(new RecordActivityTaskHeartbeatResponse()); testEnvironment.setWorkflowService(workflowService); AtomicInteger count = new AtomicInteger(); diff --git a/src/test/java/com/uber/cadence/internal/testing/WorkflowStickynessTest.java b/src/test/java/com/uber/cadence/internal/testing/WorkflowStickynessTest.java index 3e9bd0bd4..750fe92f3 100644 --- a/src/test/java/com/uber/cadence/internal/testing/WorkflowStickynessTest.java +++ b/src/test/java/com/uber/cadence/internal/testing/WorkflowStickynessTest.java @@ -63,18 +63,18 @@ public void taskCompletionWithStickyExecutionAttributesWillScheduleDecisionsOnSt TestServiceUtils.pollForDecisionTask(DOMAIN, createNormalTaskList(TASK_LIST), service); TestServiceUtils.respondDecisionTaskCompletedWithSticky( - response.taskToken, HOST_TASKLIST, service); - TestServiceUtils.signalWorkflow(response.workflowExecution, DOMAIN, service); + response.getTaskToken(), HOST_TASKLIST, service); + TestServiceUtils.signalWorkflow(response.getWorkflowExecution(), DOMAIN, service); response = TestServiceUtils.pollForDecisionTask(DOMAIN, createStickyTaskList(HOST_TASKLIST), service); - assertEquals(4, response.history.getEventsSize()); + assertEquals(4, response.getHistory().getEvents().size()); assertEquals(TASK_LIST, response.getWorkflowExecutionTaskList().getName()); - List events = response.history.getEvents(); - assertEquals(EventType.DecisionTaskCompleted, events.get(0).eventType); - assertEquals(EventType.WorkflowExecutionSignaled, events.get(1).eventType); - assertEquals(EventType.DecisionTaskScheduled, events.get(2).eventType); - assertEquals(EventType.DecisionTaskStarted, events.get(3).eventType); + List events = response.getHistory().getEvents(); + assertEquals(EventType.DecisionTaskCompleted, events.get(0).getEventType()); + assertEquals(EventType.WorkflowExecutionSignaled, events.get(1).getEventType()); + assertEquals(EventType.DecisionTaskScheduled, events.get(2).getEventType()); + assertEquals(EventType.DecisionTaskStarted, events.get(3).getEventType()); } @Test @@ -84,19 +84,20 @@ public void taskFailureWillRescheduleTheTaskOnTheGlobalList() throws Exception { TestServiceUtils.pollForDecisionTask(DOMAIN, createNormalTaskList(TASK_LIST), service); TestServiceUtils.respondDecisionTaskCompletedWithSticky( - response.taskToken, HOST_TASKLIST, service); - TestServiceUtils.signalWorkflow(response.workflowExecution, DOMAIN, service); + response.getTaskToken(), HOST_TASKLIST, service); + TestServiceUtils.signalWorkflow(response.getWorkflowExecution(), DOMAIN, service); response = TestServiceUtils.pollForDecisionTask(DOMAIN, createStickyTaskList(HOST_TASKLIST), service); - TestServiceUtils.respondDecisionTaskFailedWithSticky(response.taskToken, service); + TestServiceUtils.respondDecisionTaskFailedWithSticky(response.getTaskToken(), service); response = TestServiceUtils.pollForDecisionTask(DOMAIN, createNormalTaskList(TASK_LIST), service); // Assert Full history // Make sure first is workflow execution started - assertNotNull(response.history.events.get(0).getWorkflowExecutionStartedEventAttributes()); + assertNotNull( + response.getHistory().getEvents().get(0).getWorkflowExecutionStartedEventAttributes()); // 10 is the expected number of events for the full history. - assertEquals(10, response.history.getEventsSize()); + assertEquals(10, response.getHistory().getEvents().size()); } @Test @@ -106,8 +107,8 @@ public void taskTimeoutWillRescheduleTheTaskOnTheGlobalList() throws Exception { TestServiceUtils.pollForDecisionTask(DOMAIN, createNormalTaskList(TASK_LIST), service); TestServiceUtils.respondDecisionTaskCompletedWithSticky( - response.taskToken, HOST_TASKLIST, 1, service); - TestServiceUtils.signalWorkflow(response.workflowExecution, DOMAIN, service); + response.getTaskToken(), HOST_TASKLIST, 1, service); + TestServiceUtils.signalWorkflow(response.getWorkflowExecution(), DOMAIN, service); TestServiceUtils.pollForDecisionTask(DOMAIN, createStickyTaskList(HOST_TASKLIST), service); service.unlockTimeSkipping(CALLER); service.sleep(Duration.ofMillis(1100)); @@ -117,8 +118,9 @@ public void taskTimeoutWillRescheduleTheTaskOnTheGlobalList() throws Exception { // Assert Full history // Make sure first is workflow execution started - assertNotNull(response.history.events.get(0).getWorkflowExecutionStartedEventAttributes()); + assertNotNull( + response.getHistory().getEvents().get(0).getWorkflowExecutionStartedEventAttributes()); // 10 is the expected number of events for the full history. - assertEquals(10, response.history.getEventsSize()); + assertEquals(10, response.getHistory().getEvents().size()); } } diff --git a/src/test/java/com/uber/cadence/internal/testing/WorkflowTestingTest.java b/src/test/java/com/uber/cadence/internal/testing/WorkflowTestingTest.java index 08051a726..998db1c35 100644 --- a/src/test/java/com/uber/cadence/internal/testing/WorkflowTestingTest.java +++ b/src/test/java/com/uber/cadence/internal/testing/WorkflowTestingTest.java @@ -22,17 +22,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.uber.cadence.EventType; -import com.uber.cadence.GetWorkflowExecutionHistoryRequest; -import com.uber.cadence.History; -import com.uber.cadence.HistoryEvent; -import com.uber.cadence.ListClosedWorkflowExecutionsRequest; -import com.uber.cadence.ListClosedWorkflowExecutionsResponse; -import com.uber.cadence.ListOpenWorkflowExecutionsRequest; -import com.uber.cadence.ListOpenWorkflowExecutionsResponse; -import com.uber.cadence.TimeoutType; -import com.uber.cadence.WorkflowExecution; -import com.uber.cadence.WorkflowExecutionInfo; +import com.uber.cadence.*; import com.uber.cadence.activity.Activity; import com.uber.cadence.activity.ActivityMethod; import com.uber.cadence.activity.ActivityOptions; @@ -50,7 +40,6 @@ import java.util.concurrent.CancellationException; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; -import org.apache.thrift.TException; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -543,7 +532,7 @@ public String workflow1(String input) { } @Test - public void testTimerCancellation() throws TException { + public void testTimerCancellation() throws CadenceError { Worker worker = testEnvironment.newWorker(TASK_LIST); worker.registerWorkflowImplementationTypes(TestTimerCancellationWorkflow.class); worker.registerActivitiesImplementations(new ActivityImpl()); diff --git a/src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java b/src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java index 333abd2c9..bf643a75a 100644 --- a/src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java +++ b/src/test/java/com/uber/cadence/internal/testservice/TestWorkflowServiceDiagnoseTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertThrows; import com.uber.cadence.DiagnoseWorkflowExecutionRequest; -import org.apache.thrift.async.AsyncMethodCallback; +import com.uber.cadence.serviceclient.AsyncMethodCallback; import org.junit.Test; public class TestWorkflowServiceDiagnoseTest { diff --git a/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java b/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java index 23b39f000..a0b1cb904 100644 --- a/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java +++ b/src/test/java/com/uber/cadence/internal/tracing/StartWorkflowTest.java @@ -25,11 +25,9 @@ import com.uber.cadence.activity.ActivityOptions; import com.uber.cadence.client.*; import com.uber.cadence.common.RetryOptions; -import com.uber.cadence.internal.compatibility.Thrift2ProtoAdapter; -import com.uber.cadence.internal.compatibility.proto.serviceclient.IGrpcServiceStubs; import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; -import com.uber.cadence.serviceclient.WorkflowServiceTChannel; +import com.uber.cadence.serviceclient.WorkflowServiceGrpc; import com.uber.cadence.testUtils.TestEnvironment; import com.uber.cadence.worker.Worker; import com.uber.cadence.worker.WorkerFactory; @@ -144,23 +142,13 @@ public Integer Double(Integer n) { private static final String DOMAIN = "test-domain"; private static final String TASK_LIST = "test-tasklist"; - @Test - public void testStartWorkflowTchannel() { - Assume.assumeTrue(useDockerService); - MockTracer mockTracer = new MockTracer(); - IWorkflowService service = - new WorkflowServiceTChannel(ClientOptions.newBuilder().setTracer(mockTracer).build()); - testStartWorkflowHelper(service, mockTracer, true); - } - @Test public void testStartWorkflowGRPC() { Assume.assumeTrue(useDockerService); MockTracer mockTracer = new MockTracer(); IWorkflowService service = - new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance( - ClientOptions.newBuilder().setTracer(mockTracer).setPort(7833).build())); + new WorkflowServiceGrpc( + ClientOptions.newBuilder().setTracer(mockTracer).setPort(7833).build()); testStartWorkflowHelper(service, mockTracer, true); } @@ -169,9 +157,8 @@ public void testStartMultipleWorkflowGRPC() { Assume.assumeTrue(useDockerService); MockTracer mockTracer = new MockTracer(); IWorkflowService service = - new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance( - ClientOptions.newBuilder().setTracer(mockTracer).setPort(7833).build())); + new WorkflowServiceGrpc( + ClientOptions.newBuilder().setTracer(mockTracer).setPort(7833).build()); try { service.RegisterDomain(new RegisterDomainRequest().setName(DOMAIN)); } catch (DomainAlreadyExistsError e) { @@ -243,59 +230,31 @@ public void testStartMultipleWorkflowGRPC() { } } - @Test - public void testSignalWithStartWorkflowTchannel() { - Assume.assumeTrue(useDockerService); - MockTracer mockTracer = new MockTracer(); - IWorkflowService service = - new WorkflowServiceTChannel(ClientOptions.newBuilder().setTracer(mockTracer).build()); - testSignalWithStartWorkflowHelper(service, mockTracer, true); - } - @Test public void testSignalWithStartWorkflowGRPC() { Assume.assumeTrue(useDockerService); MockTracer mockTracer = new MockTracer(); IWorkflowService service = - new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance( - ClientOptions.newBuilder().setTracer(mockTracer).setPort(7833).build())); + new WorkflowServiceGrpc( + ClientOptions.newBuilder().setTracer(mockTracer).setPort(7833).build()); testSignalWithStartWorkflowHelper(service, mockTracer, true); } - @Test - public void testStartWorkflowTchannelNoPropagation() { - Assume.assumeTrue(useDockerService); - MockTracer mockTracer = new MockTracer(); - IWorkflowService service = new WorkflowServiceTChannel(ClientOptions.newBuilder().build()); - testStartWorkflowHelper(service, mockTracer, false); - } - @Test public void testStartWorkflowGRPCNoPropagation() { Assume.assumeTrue(useDockerService); MockTracer mockTracer = new MockTracer(); IWorkflowService service = - new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance(ClientOptions.newBuilder().setPort(7833).build())); + new WorkflowServiceGrpc(ClientOptions.newBuilder().setPort(7833).build()); testStartWorkflowHelper(service, mockTracer, false); } - @Test - public void testSignalStartWorkflowTchannelNoPropagation() { - Assume.assumeTrue(useDockerService); - MockTracer mockTracer = new MockTracer(); - IWorkflowService service = new WorkflowServiceTChannel(ClientOptions.newBuilder().build()); - testSignalWithStartWorkflowHelper(service, mockTracer, false); - } - @Test public void testSignalStartWorkflowGRPCNoPropagation() { Assume.assumeTrue(useDockerService); MockTracer mockTracer = new MockTracer(); IWorkflowService service = - new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance(ClientOptions.newBuilder().setPort(7833).build())); + new WorkflowServiceGrpc(ClientOptions.newBuilder().setPort(7833).build()); testSignalWithStartWorkflowHelper(service, mockTracer, false); } diff --git a/src/test/java/com/uber/cadence/internal/tracing/TracingPropagatorTest.java b/src/test/java/com/uber/cadence/internal/tracing/TracingPropagatorTest.java index 25f9da59f..9c50b5f48 100644 --- a/src/test/java/com/uber/cadence/internal/tracing/TracingPropagatorTest.java +++ b/src/test/java/com/uber/cadence/internal/tracing/TracingPropagatorTest.java @@ -26,7 +26,6 @@ import io.opentracing.Span; import io.opentracing.mock.MockSpan; import io.opentracing.mock.MockTracer; -import java.nio.ByteBuffer; import java.util.List; import org.junit.Test; @@ -39,12 +38,7 @@ public class TracingPropagatorTest { public void testSpanForExecuteActivity_allowReusingHeaders() { Header header = new Header() - .setFields( - ImmutableMap.of( - "traceid", - ByteBuffer.wrap("100".getBytes()), - "spanid", - ByteBuffer.wrap("200".getBytes()))); + .setFields(ImmutableMap.of("traceid", "100".getBytes(), "spanid", "200".getBytes())); Span span = propagator.spanForExecuteActivity( diff --git a/src/test/java/com/uber/cadence/internal/worker/ActivityPollTaskTest.java b/src/test/java/com/uber/cadence/internal/worker/ActivityPollTaskTest.java index 0fbe15fef..a10093796 100644 --- a/src/test/java/com/uber/cadence/internal/worker/ActivityPollTaskTest.java +++ b/src/test/java/com/uber/cadence/internal/worker/ActivityPollTaskTest.java @@ -20,10 +20,7 @@ import static org.mockito.Mockito.*; import com.google.common.collect.ImmutableMap; -import com.uber.cadence.InternalServiceError; -import com.uber.cadence.PollForActivityTaskRequest; -import com.uber.cadence.PollForActivityTaskResponse; -import com.uber.cadence.ServiceBusyError; +import com.uber.cadence.*; import com.uber.cadence.internal.metrics.MetricsTag; import com.uber.cadence.internal.metrics.MetricsType; import com.uber.cadence.serviceclient.IWorkflowService; @@ -31,7 +28,6 @@ import com.uber.m3.tally.Scope; import com.uber.m3.tally.Stopwatch; import com.uber.m3.tally.Timer; -import org.apache.thrift.TException; import org.junit.Before; import org.junit.Test; @@ -75,7 +71,7 @@ public void setup() { } @Test - public void testPollTaskSuccess() throws TException { + public void testPollTaskSuccess() throws CadenceError { PollForActivityTaskResponse response = new PollForActivityTaskResponse().setTaskToken("testToken".getBytes()); when(mockService.PollForActivityTask(any(PollForActivityTaskRequest.class))) @@ -100,7 +96,7 @@ public void testPollTaskSuccess() throws TException { } @Test(expected = InternalServiceError.class) - public void testPollTaskInternalServiceError() throws TException { + public void testPollTaskInternalServiceError() throws CadenceError { // Set up mockService to throw an InternalServiceError exception when(mockService.PollForActivityTask(any(PollForActivityTaskRequest.class))) .thenThrow(new InternalServiceError()); @@ -126,7 +122,7 @@ public void testPollTaskInternalServiceError() throws TException { } @Test(expected = ServiceBusyError.class) - public void testPollTaskServiceBusyError() throws TException { + public void testPollTaskServiceBusyError() throws CadenceError { // Set up mockService to throw a ServiceBusyError exception when(mockService.PollForActivityTask(any(PollForActivityTaskRequest.class))) .thenThrow(new ServiceBusyError()); @@ -151,11 +147,11 @@ public void testPollTaskServiceBusyError() throws TException { } } - @Test(expected = TException.class) - public void testPollTaskGeneralTException() throws TException { - // Set up mockService to throw a TException + @Test(expected = CadenceError.class) + public void testPollTaskGeneralTException() throws CadenceError { + // Set up mockService to throw a BaseError when(mockService.PollForActivityTask(any(PollForActivityTaskRequest.class))) - .thenThrow(new TException()); + .thenThrow(new CadenceError()); // Mock the metricsScope and counter to ensure proper behavior Scope metricsScope = options.getMetricsScope(); @@ -163,7 +159,7 @@ public void testPollTaskGeneralTException() throws TException { when(metricsScope.counter(MetricsType.ACTIVITY_POLL_FAILED_COUNTER)).thenReturn(failedCounter); try { - // Call pollTask.pollTask(), expecting a TException to be thrown + // Call pollTask.pollTask(), expecting a BaseError to be thrown pollTask.pollTask(); } finally { // Verify that failedCounter.inc(1) is called once @@ -172,7 +168,7 @@ public void testPollTaskGeneralTException() throws TException { } @Test - public void testPollTaskNoTask() throws TException { + public void testPollTaskNoTask() throws CadenceError { // Set up mockService to return an empty PollForActivityTaskResponse when(mockService.PollForActivityTask(any(PollForActivityTaskRequest.class))) .thenReturn(new PollForActivityTaskResponse()); diff --git a/src/test/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTaskTest.java b/src/test/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTaskTest.java index 2a9148e2a..fa965ee85 100644 --- a/src/test/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTaskTest.java +++ b/src/test/java/com/uber/cadence/internal/worker/LocallyDispatchedActivityPollTaskTest.java @@ -17,12 +17,12 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; +import com.uber.cadence.CadenceError; import com.uber.cadence.client.WorkflowClient; import com.uber.cadence.client.WorkflowClientOptions; import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; import com.uber.m3.tally.NoopScope; -import org.apache.thrift.TException; import org.junit.Before; import org.junit.Test; @@ -58,10 +58,10 @@ public void testPollTaskInterruptedException() throws Exception { try { pollTask.pollTask(); fail("Expected RuntimeException due to interruption"); + } catch (CadenceError e) { + fail("Unexpected BaseError"); } catch (RuntimeException e) { assertTrue(e.getMessage().contains("locally dispatch activity poll task interrupted")); - } catch (TException e) { - fail("Unexpected TException"); } finally { Thread.interrupted(); } diff --git a/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java b/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java index a96716d65..c43cd1f8f 100644 --- a/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java +++ b/src/test/java/com/uber/cadence/internal/worker/WorkflowPollTaskTest.java @@ -29,7 +29,6 @@ import com.uber.m3.tally.Stopwatch; import com.uber.m3.tally.Timer; import com.uber.m3.util.Duration; -import org.apache.thrift.TException; import org.junit.Before; import org.junit.Test; @@ -86,7 +85,7 @@ public void setup() { } @Test - public void testPollSuccess() throws TException { + public void testPollSuccess() throws CadenceError { // Mock a successful response with all necessary fields WorkflowType workflowType = new WorkflowType().setName("testWorkflowType"); @@ -142,7 +141,7 @@ public void testPollSuccess() throws TException { } @Test(expected = InternalServiceError.class) - public void testPollInternalServiceError() throws TException { + public void testPollInternalServiceError() throws CadenceError { when(mockService.PollForDecisionTask(any(PollForDecisionTaskRequest.class))) .thenThrow(new InternalServiceError()); @@ -161,7 +160,7 @@ public void testPollInternalServiceError() throws TException { } @Test(expected = ServiceBusyError.class) - public void testPollServiceBusyError() throws TException { + public void testPollServiceBusyError() throws CadenceError { when(mockService.PollForDecisionTask(any(PollForDecisionTaskRequest.class))) .thenThrow(new ServiceBusyError()); @@ -179,10 +178,10 @@ public void testPollServiceBusyError() throws TException { } } - @Test(expected = TException.class) - public void testPollGeneralTException() throws TException { + @Test(expected = CadenceError.class) + public void testPollGeneralTException() throws CadenceError { when(mockService.PollForDecisionTask(any(PollForDecisionTaskRequest.class))) - .thenThrow(new TException()); + .thenThrow(new CadenceError()); Counter failedCounter = mock(Counter.class); when(mockMetricScope.counter(MetricsType.DECISION_POLL_FAILED_COUNTER)) @@ -196,7 +195,7 @@ public void testPollGeneralTException() throws TException { } @Test - public void testPollNoTask() throws TException { + public void testPollNoTask() throws CadenceError { when(mockService.PollForDecisionTask(any(PollForDecisionTaskRequest.class))) .thenReturn(new PollForDecisionTaskResponse()); diff --git a/src/test/java/com/uber/cadence/migration/MigrationIWorkflowServiceTest.java b/src/test/java/com/uber/cadence/migration/MigrationIWorkflowServiceTest.java index f32dd136a..ab5b45b30 100644 --- a/src/test/java/com/uber/cadence/migration/MigrationIWorkflowServiceTest.java +++ b/src/test/java/com/uber/cadence/migration/MigrationIWorkflowServiceTest.java @@ -24,7 +24,6 @@ import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; import java.util.ArrayList; -import org.apache.thrift.TException; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -46,7 +45,7 @@ public void setUp() { // No previous workflow found - launch a workflow in new cluster @Test - public void testStartWorkflowExecution_startNewWorkflow() throws TException { + public void testStartWorkflowExecution_startNewWorkflow() throws CadenceError { StartWorkflowExecutionRequest startRequest = new StartWorkflowExecutionRequest() @@ -88,7 +87,7 @@ public void testStartWorkflowExecution_startNewWorkflow() throws TException { // Previous running workflow found: expected to launch a wf in the old cluster @Test - public void testStartWorkflowExecution_startOldWorkflow() throws TException { + public void testStartWorkflowExecution_startOldWorkflow() throws CadenceError { StartWorkflowExecutionRequest startRequest = new StartWorkflowExecutionRequest() @@ -121,7 +120,7 @@ public void testStartWorkflowExecution_startOldWorkflow() throws TException { } @Test - public void testStartWorkflow_noWorkflowID() throws TException { + public void testStartWorkflow_noWorkflowID() throws CadenceError { StartWorkflowExecutionRequest startRequest = new StartWorkflowExecutionRequest() .setWorkflowType(new WorkflowType().setName("sampleWorkflow")) @@ -138,7 +137,7 @@ public void testStartWorkflow_noWorkflowID() throws TException { } @Test - public void testStartWorkflow_errorInDescribeWorkflowExecution() throws TException { + public void testStartWorkflow_errorInDescribeWorkflowExecution() throws CadenceError { StartWorkflowExecutionRequest startRequest = new StartWorkflowExecutionRequest() @@ -158,7 +157,7 @@ public void testStartWorkflow_errorInDescribeWorkflowExecution() throws TExcepti } @Test - public void testListWorkflows_InitialRequest() throws TException { + public void testListWorkflows_InitialRequest() throws CadenceError { String domainNew = "test"; int one = 1; @@ -186,7 +185,7 @@ public void testListWorkflows_InitialRequest() throws TException { // calling old cluster when new cluster returns empty response @Test - public void testListWorkflow_OldClusterCall() throws TException { + public void testListWorkflow_OldClusterCall() throws CadenceError { String domainNew = "test"; int one = 1; @@ -223,7 +222,7 @@ public void testListWorkflow_OldClusterCall() throws TException { // if fetching from new cluster result size is less than pageSize, fetch additional records from // Old Cluster @Test - public void testListWorkflow_fetchFromBothCluster() throws TException { + public void testListWorkflow_fetchFromBothCluster() throws CadenceError { String domainNew = "test"; int one = 1; int two = 2; @@ -259,7 +258,7 @@ public void testListWorkflow_fetchFromBothCluster() throws TException { } @Test - public void testListWorkflows_emptyRequestTests() throws TException { + public void testListWorkflows_emptyRequestTests() throws CadenceError { // Test when request is null try { @@ -278,7 +277,7 @@ public void testListWorkflows_emptyRequestTests() throws TException { // Test when error returned from internal client, return same error @Test - public void testListWorkflow_error() throws TException { + public void testListWorkflow_error() throws CadenceError { String domainNew = "test"; when(serviceNew.ListWorkflowExecutions(any())).thenReturn(null); @@ -290,7 +289,7 @@ public void testListWorkflow_error() throws TException { } @Test - public void testListWorkflow_FromClusterOnly() throws TException { + public void testListWorkflow_FromClusterOnly() throws CadenceError { String domain = "test"; @@ -312,7 +311,7 @@ public void testListWorkflow_FromClusterOnly() throws TException { } @Test - public void testListWorkflows_ResponseWithToken() throws TException { + public void testListWorkflows_ResponseWithToken() throws CadenceError { String domainNew = "test"; @@ -350,7 +349,7 @@ public void testListWorkflows_ResponseWithToken() throws TException { } @Test - public void testScanWorkflow_InitialRequest() throws TException { + public void testScanWorkflow_InitialRequest() throws CadenceError { String domainNew = "test"; @@ -380,7 +379,7 @@ public void testScanWorkflow_InitialRequest() throws TException { // Test scanWorkflow when new cluster returns an empty response and it falls back to the old // cluster. @Test - public void testScanWorkflow_OldClusterCall() throws TException { + public void testScanWorkflow_OldClusterCall() throws CadenceError { String domainNew = "test"; @@ -422,7 +421,7 @@ public void testScanWorkflow_OldClusterCall() throws TException { } @Test - public void testScanWorkflow_FetchFromBothClusters() throws TException { + public void testScanWorkflow_FetchFromBothClusters() throws CadenceError { String domainNew = "test"; @@ -464,7 +463,7 @@ public void testScanWorkflow_FetchFromBothClusters() throws TException { } @Test - public void testScanWorkflow_EmptyRequestTests() throws TException { + public void testScanWorkflow_EmptyRequestTests() throws CadenceError { // Test when the request is null. try { @@ -483,7 +482,7 @@ public void testScanWorkflow_EmptyRequestTests() throws TException { // Test when an error is returned from the internal client, and the response is null. @Test - public void testScanWorkflow_Error() throws TException { + public void testScanWorkflow_Error() throws CadenceError { String domainNew = "test"; @@ -497,7 +496,7 @@ public void testScanWorkflow_Error() throws TException { // Test scanWorkflow when fetching only from the 'from' cluster. @Test - public void testScanWorkflow_FromClusterOnly() throws TException { + public void testScanWorkflow_FromClusterOnly() throws CadenceError { String domain = "test"; @@ -521,7 +520,7 @@ public void testScanWorkflow_FromClusterOnly() throws TException { } @Test - public void testScanWorkflows_ResponseWithToken() throws TException { + public void testScanWorkflows_ResponseWithToken() throws CadenceError { String domainNew = "test"; @@ -564,7 +563,7 @@ public void testScanWorkflows_ResponseWithToken() throws TException { } @Test - public void testCountWorkflow_bothClusterSuccess() throws TException { + public void testCountWorkflow_bothClusterSuccess() throws CadenceError { String domain = "test"; String query = ""; @@ -576,8 +575,7 @@ public void testCountWorkflow_bothClusterSuccess() throws TException { CountWorkflowExecutionsResponse mockResponseNew = new CountWorkflowExecutionsResponse().setCount(3); - CountWorkflowExecutionsResponse expectedResponse = - new CountWorkflowExecutionsResponse(mockResponseNew); + CountWorkflowExecutionsResponse expectedResponse = new CountWorkflowExecutionsResponse(); expectedResponse.setCount(5); // both clusters return successful response @@ -588,7 +586,7 @@ public void testCountWorkflow_bothClusterSuccess() throws TException { } @Test - public void testCountWorkflow_errorInOneCluster() throws TException { + public void testCountWorkflow_errorInOneCluster() throws CadenceError { String domain = "test"; String query = ""; @@ -598,8 +596,7 @@ public void testCountWorkflow_errorInOneCluster() throws TException { CountWorkflowExecutionsResponse mockResponseOld = new CountWorkflowExecutionsResponse().setCount(2); - CountWorkflowExecutionsResponse expectedResponse = - new CountWorkflowExecutionsResponse(mockResponseOld); + CountWorkflowExecutionsResponse expectedResponse = new CountWorkflowExecutionsResponse(); expectedResponse.setCount(2); when(serviceOld.CountWorkflowExecutions(any())).thenReturn(mockResponseOld); @@ -610,7 +607,7 @@ public void testCountWorkflow_errorInOneCluster() throws TException { // query in the new cluster @Test - public void testQueryWorkflow_queryWorkflowInNew() throws TException { + public void testQueryWorkflow_queryWorkflowInNew() throws CadenceError { String domain = "test"; String wfID = "123"; @@ -647,7 +644,7 @@ public void testQueryWorkflow_queryWorkflowInNew() throws TException { // query found in the old cluster @Test - public void testQueryWorkflow_queryWorkflowInOld() throws TException { + public void testQueryWorkflow_queryWorkflowInOld() throws CadenceError { String domain = "test"; String wfID = "123"; @@ -683,7 +680,7 @@ public void testQueryWorkflow_queryWorkflowInOld() throws TException { } @Test - public void testQueryWorkflow_noWorkflowID() throws TException { + public void testQueryWorkflow_noWorkflowID() throws CadenceError { String domain = "test"; QueryWorkflowRequest request = new QueryWorkflowRequest().setDomain(domain); @@ -697,7 +694,7 @@ public void testQueryWorkflow_noWorkflowID() throws TException { } @Test - public void testQueryWorkflow_errorInDescribeWorkflowExecution() throws TException { + public void testQueryWorkflow_errorInDescribeWorkflowExecution() throws CadenceError { String domain = "test"; String wfID = "123"; @@ -720,7 +717,7 @@ public void testQueryWorkflow_errorInDescribeWorkflowExecution() throws TExcepti } @Test - public void testListOpenWorkflows_InitialRequest() throws TException { + public void testListOpenWorkflows_InitialRequest() throws CadenceError { String domain = "test"; @@ -753,7 +750,7 @@ public void testListOpenWorkflows_InitialRequest() throws TException { // calling old cluster when new cluster returns empty response @Test - public void testListOpenWorkflow_OldClusterCall() throws TException { + public void testListOpenWorkflow_OldClusterCall() throws CadenceError { String domain = "test"; @@ -795,7 +792,7 @@ public void testListOpenWorkflow_OldClusterCall() throws TException { // if fetching from new cluster result size is less than pageSize, fetch additional records from // Old Cluster @Test - public void testListOpenWorkflow_fetchFromBothCluster() throws TException { + public void testListOpenWorkflow_fetchFromBothCluster() throws CadenceError { String domain = "test"; @@ -831,7 +828,7 @@ public void testListOpenWorkflow_fetchFromBothCluster() throws TException { } @Test - public void testListOpenWorkflows_emptyRequestTests() throws TException { + public void testListOpenWorkflows_emptyRequestTests() throws CadenceError { // Test when request is null try { @@ -851,7 +848,7 @@ public void testListOpenWorkflows_emptyRequestTests() throws TException { // Test when error returned from internal client, return same error @Test - public void testListOpenWorkflow_error() throws TException { + public void testListOpenWorkflow_error() throws CadenceError { String domain = "test"; when(serviceNew.ListOpenWorkflowExecutions(any())).thenReturn(null); @@ -863,7 +860,7 @@ public void testListOpenWorkflow_error() throws TException { } @Test - public void testListOpenWorkflow_FromClusterOnly() throws TException { + public void testListOpenWorkflow_FromClusterOnly() throws CadenceError { String domain = "test"; @@ -885,7 +882,7 @@ public void testListOpenWorkflow_FromClusterOnly() throws TException { } @Test - public void testListOpenWorkflows_ResponseWithToken() throws TException { + public void testListOpenWorkflows_ResponseWithToken() throws CadenceError { String domain = "test"; @@ -925,7 +922,7 @@ public void testListOpenWorkflows_ResponseWithToken() throws TException { } @Test - public void testListClosedWorkflows_InitialRequest() throws TException { + public void testListClosedWorkflows_InitialRequest() throws CadenceError { String domain = "test"; @@ -958,7 +955,7 @@ public void testListClosedWorkflows_InitialRequest() throws TException { // calling old cluster when new cluster returns empty response @Test - public void testListClosedWorkflow_OldClusterCall() throws TException { + public void testListClosedWorkflow_OldClusterCall() throws CadenceError { String domain = "test"; @@ -1000,7 +997,7 @@ public void testListClosedWorkflow_OldClusterCall() throws TException { // if fetching from new cluster result size is less than pageSize, fetch additional records from // Old Cluster @Test - public void testListClosedWorkflow_fetchFromBothCluster() throws TException { + public void testListClosedWorkflow_fetchFromBothCluster() throws CadenceError { String domain = "test"; @@ -1038,7 +1035,7 @@ public void testListClosedWorkflow_fetchFromBothCluster() throws TException { } @Test - public void testListClosedWorkflows_emptyRequestTests() throws TException { + public void testListClosedWorkflows_emptyRequestTests() throws CadenceError { // Test when request is null try { @@ -1058,7 +1055,7 @@ public void testListClosedWorkflows_emptyRequestTests() throws TException { // Test when error returned from internal client, return same error @Test - public void testListClosedWorkflow_error() throws TException { + public void testListClosedWorkflow_error() throws CadenceError { String domain = "test"; when(serviceNew.ListClosedWorkflowExecutions(any())).thenReturn(null); @@ -1070,7 +1067,7 @@ public void testListClosedWorkflow_error() throws TException { } @Test - public void testListClosedWorkflow_FromClusterOnly() throws TException { + public void testListClosedWorkflow_FromClusterOnly() throws CadenceError { String domain = "test"; @@ -1092,7 +1089,7 @@ public void testListClosedWorkflow_FromClusterOnly() throws TException { } @Test - public void testListClosedWorkflows_ResponseWithToken() throws TException { + public void testListClosedWorkflows_ResponseWithToken() throws CadenceError { String domain = "test"; @@ -1132,7 +1129,7 @@ public void testListClosedWorkflows_ResponseWithToken() throws TException { } @Test - public void testSignalWithStartWorkflowExecution_NewService() throws TException { + public void testSignalWithStartWorkflowExecution_NewService() throws CadenceError { SignalWithStartWorkflowExecutionRequest request = new SignalWithStartWorkflowExecutionRequest() .setWorkflowId("newSignalWorkflow") @@ -1151,7 +1148,7 @@ public void testSignalWithStartWorkflowExecution_NewService() throws TException } @Test - public void testSignalWithStartWorkflowExecution_OldService() throws TException { + public void testSignalWithStartWorkflowExecution_OldService() throws CadenceError { SignalWithStartWorkflowExecutionRequest signal = new SignalWithStartWorkflowExecutionRequest() .setWorkflowId("testSignal") @@ -1180,7 +1177,7 @@ public void testSignalWithStartWorkflowExecution_OldService() throws TException } @Test - public void testSignalWorkflowExecution_SignalNewService() throws TException { + public void testSignalWorkflowExecution_SignalNewService() throws CadenceError { SignalWorkflowExecutionRequest request = new SignalWorkflowExecutionRequest() .setWorkflowExecution(new WorkflowExecution().setWorkflowId("newSignal")) @@ -1196,7 +1193,7 @@ public void testSignalWorkflowExecution_SignalNewService() throws TException { } @Test - public void testSignalWorkflowExecution_SignalInOldService() throws TException { + public void testSignalWorkflowExecution_SignalInOldService() throws CadenceError { SignalWorkflowExecutionRequest request = new SignalWorkflowExecutionRequest() .setWorkflowExecution(new WorkflowExecution().setWorkflowId("oldSignal")) diff --git a/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java b/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java deleted file mode 100644 index 536db39d9..000000000 --- a/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelDiagnoseTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - *

    Modifications copyright (C) 2017 Uber Technologies, Inc. - * - *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file - * except in compliance with the License. A copy of the License is located at - * - *

    http://aws.amazon.com/apache2.0 - * - *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.uber.cadence.serviceclient; - -import static org.junit.Assert.assertThrows; -import static org.mockito.Mockito.mock; - -import com.uber.cadence.DiagnoseWorkflowExecutionRequest; -import com.uber.tchannel.api.SubChannel; -import org.apache.thrift.async.AsyncMethodCallback; -import org.junit.Before; -import org.junit.Test; - -public class WorkflowServiceTChannelDiagnoseTest { - - private WorkflowServiceTChannel service; - - @Before - public void setUp() { - SubChannel mockSubChannel = mock(SubChannel.class); - service = new WorkflowServiceTChannel(mockSubChannel, ClientOptions.newBuilder().build()); - } - - @Test - public void testDiagnoseWorkflowExecutionThrowsUnsupportedOperation() { - DiagnoseWorkflowExecutionRequest request = new DiagnoseWorkflowExecutionRequest(); - assertThrows( - UnsupportedOperationException.class, () -> service.DiagnoseWorkflowExecution(request)); - } - - @Test - public void testDiagnoseWorkflowExecutionAsyncThrowsUnsupportedOperation() { - DiagnoseWorkflowExecutionRequest request = new DiagnoseWorkflowExecutionRequest(); - AsyncMethodCallback callback = - new AsyncMethodCallback() { - @Override - public void onComplete(Object response) {} - - @Override - public void onError(Exception exception) {} - }; - - assertThrows( - UnsupportedOperationException.class, - () -> service.DiagnoseWorkflowExecution(request, callback)); - } -} diff --git a/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelTest.java b/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelTest.java deleted file mode 100644 index 8add61525..000000000 --- a/src/test/java/com/uber/cadence/serviceclient/WorkflowServiceTChannelTest.java +++ /dev/null @@ -1,3410 +0,0 @@ -/** - * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - *

    Modifications copyright (C) 2017 Uber Technologies, Inc. - * - *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file - * except in compliance with the License. A copy of the License is located at - * - *

    http://aws.amazon.com/apache2.0 - * - *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ -package com.uber.cadence.serviceclient; - -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; - -import com.uber.cadence.*; -import com.uber.tchannel.api.ResponseCode; -import com.uber.tchannel.api.SubChannel; -import com.uber.tchannel.api.TFuture; -import com.uber.tchannel.api.errors.TChannelError; -import com.uber.tchannel.headers.ArgScheme; -import com.uber.tchannel.messages.ThriftRequest; -import com.uber.tchannel.messages.ThriftResponse; -import com.uber.tchannel.messages.generated.HealthStatus; -import com.uber.tchannel.messages.generated.Meta; -import java.util.Arrays; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.junit.Before; -import org.junit.Test; -import org.junit.experimental.runners.Enclosed; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -@RunWith(Enclosed.class) -public class WorkflowServiceTChannelTest { - - interface RemoteCallAsync { - void apply(AsyncMethodCallback callback) throws TException; - } - - private static class BaseTest { - SubChannel mockSubChannel; - WorkflowServiceTChannel service; - - @Before - public void setUp() { - mockSubChannel = mock(SubChannel.class); - service = new WorkflowServiceTChannel(mockSubChannel, ClientOptions.newBuilder().build()); - } - - @Parameterized.Parameter(0) - public ResponseCode responseCode; - - @Parameterized.Parameter(1) - public T responseBody; - - @Parameterized.Parameter(2) - public Class expectedException; - - @Parameterized.Parameter(3) - public R expectedResponse; - - TFuture> mockResponse(ResponseCode responseCode, T body) { - // TFuture - TFuture> tFuture = TFuture.create(ArgScheme.THRIFT, null); - tFuture.set( - new ThriftResponse.Builder(new ThriftRequest.Builder<>("", "").build()) - .setResponseCode(responseCode) - .setBody(body) - .build()); - return tFuture; - } - - void testHelper(WorkflowServiceTChannel.RemoteCall method) throws TException, TChannelError { - when(mockSubChannel.send(any(ThriftRequest.class))) - .thenReturn(mockResponse(responseCode, responseBody)); - if (expectedException != null) { - assertThrows(expectedException, method::apply); - } else { - assertEquals(expectedResponse, method.apply()); - } - } - - void testHelperWithCallback(RemoteCallAsync method) throws TChannelError, TException { - when(mockSubChannel.send(any(ThriftRequest.class))) - .thenReturn(mockResponse(responseCode, responseBody)); - method.apply( - new AsyncMethodCallback() { - @Override - public void onComplete(R r) { - if (expectedException != null) { - fail("Expected exception but got response: " + r); - } else { - assertEquals(expectedResponse, r); - } - } - - @Override - public void onError(Exception e) { - assertEquals(expectedException, e.getClass()); - } - }); - } - - void assertUnimplementedWithCallback(RemoteCallAsync method) { - assertThrows( - UnsupportedOperationException.class, - () -> - method.apply( - new AsyncMethodCallback() { - @Override - public void onComplete(R r) { - fail("shouldn't reach this line"); - } - - @Override - public void onError(Exception e) { - fail("shouldn't reach this line"); - } - })); - } - - void assertNoOpWithCallback(RemoteCallAsync method) { - try { - method.apply( - new AsyncMethodCallback() { - @Override - public void onComplete(R r) { - fail("shouldn't reach this line"); - } - - @Override - public void onError(Exception e) { - fail("shouldn't reach this line"); - } - }); - } catch (TException e) { - fail("should not throw exception:" + e); - } - } - } - - @RunWith(Parameterized.class) - public static class RegisterDomainTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.RegisterDomain_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.RegisterDomain_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.RegisterDomain_result() - .setDomainExistsError(new DomainAlreadyExistsError("")), - DomainAlreadyExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RegisterDomain_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RegisterDomain_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper( - () -> { - service.RegisterDomain(new RegisterDomainRequest()); - return null; - }); - } - - @Test - public void responseIsHandledCorrectlyWithCallback() throws Exception { - testHelperWithCallback( - callback -> { - service.SignalWorkflowExecution(new SignalWorkflowExecutionRequest(), callback); - }); - } - } - - @RunWith(Parameterized.class) - public static class DescribeDomainTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.DescribeDomain_result().setSuccess(new DescribeDomainResponse()), - null, - new DescribeDomainResponse() - }, - { - ResponseCode.Error, - new WorkflowService.DescribeDomain_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - new DescribeDomainResponse(), - }, - { - ResponseCode.Error, - new WorkflowService.DescribeDomain_result() - .setSuccess(new DescribeDomainResponse()) - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeDomain_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeDomain_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.DescribeDomain(new DescribeDomainRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.DescribeDomain(new DescribeDomainRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ListDomainsTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ListDomains_result().setSuccess(new ListDomainsResponse()), - null, - new ListDomainsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ListDomains_result().setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ListDomains_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ListDomains_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - {ResponseCode.Error, new WorkflowService.ListDomains_result(), TException.class, null}, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.ListDomains(new ListDomainsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.ListDomains(new ListDomainsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ResetWorkflowExecutionTest - extends BaseTest< - WorkflowService.ResetWorkflowExecution_result, ResetWorkflowExecutionResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ResetWorkflowExecution_result() - .setSuccess(new ResetWorkflowExecutionResponse()), - null, - new ResetWorkflowExecutionResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ResetWorkflowExecution_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ResetWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetWorkflowExecution_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetWorkflowExecution_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetWorkflowExecution_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.ResetWorkflowExecution(new ResetWorkflowExecutionRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.ListDomains(new ListDomainsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class TerminateWorkflowExecutionTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.TerminateWorkflowExecution_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.TerminateWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper( - () -> { - service.TerminateWorkflowExecution(new TerminateWorkflowExecutionRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.TerminateWorkflowExecution( - new TerminateWorkflowExecutionRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ListOpenWorkflowExecutionsTest - extends BaseTest< - WorkflowService.ListOpenWorkflowExecutions_result, ListOpenWorkflowExecutionsResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ListOpenWorkflowExecutions_result() - .setSuccess(new ListOpenWorkflowExecutionsResponse()), - null, - new ListOpenWorkflowExecutionsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ListOpenWorkflowExecutions_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ListOpenWorkflowExecutions_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListOpenWorkflowExecutions_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListOpenWorkflowExecutions_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListOpenWorkflowExecutions_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListOpenWorkflowExecutions_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.ListOpenWorkflowExecutions(new ListOpenWorkflowExecutionsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.ListOpenWorkflowExecutions( - new ListOpenWorkflowExecutionsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ListClosedWorkflowExecutionsTest - extends BaseTest< - WorkflowService.ListClosedWorkflowExecutions_result, - ListClosedWorkflowExecutionsResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ListClosedWorkflowExecutions_result() - .setSuccess(new ListClosedWorkflowExecutionsResponse()), - null, - new ListClosedWorkflowExecutionsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ListClosedWorkflowExecutions_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ListClosedWorkflowExecutions_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListClosedWorkflowExecutions_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListClosedWorkflowExecutions_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListClosedWorkflowExecutions_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper( - () -> service.ListClosedWorkflowExecutions(new ListClosedWorkflowExecutionsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.ListClosedWorkflowExecutions( - new ListClosedWorkflowExecutionsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ListWorkflowExecutionsTest - extends BaseTest< - WorkflowService.ListWorkflowExecutions_result, ListWorkflowExecutionsResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ListWorkflowExecutions_result() - .setSuccess(new ListWorkflowExecutionsResponse()), - null, - new ListWorkflowExecutionsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ListWorkflowExecutions_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ListWorkflowExecutions_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListWorkflowExecutions_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListWorkflowExecutions_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListWorkflowExecutions_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.ListWorkflowExecutions(new ListWorkflowExecutionsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.ListWorkflowExecutions(new ListWorkflowExecutionsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ListArchivedWorkflowExecutionsTest - extends BaseTest< - WorkflowService.ListArchivedWorkflowExecutions_result, - ListArchivedWorkflowExecutionsResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ListArchivedWorkflowExecutions_result() - .setSuccess(new ListArchivedWorkflowExecutionsResponse()), - null, - new ListArchivedWorkflowExecutionsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ListArchivedWorkflowExecutions_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ListArchivedWorkflowExecutions_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListArchivedWorkflowExecutions_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListArchivedWorkflowExecutions_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListArchivedWorkflowExecutions_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper( - () -> - service.ListArchivedWorkflowExecutions(new ListArchivedWorkflowExecutionsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.ListArchivedWorkflowExecutions( - new ListArchivedWorkflowExecutionsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ScanWorkflowExecutionsTest - extends BaseTest< - WorkflowService.ScanWorkflowExecutions_result, ListWorkflowExecutionsResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ScanWorkflowExecutions_result() - .setSuccess(new ListWorkflowExecutionsResponse()), - null, - new ListWorkflowExecutionsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ScanWorkflowExecutions_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ScanWorkflowExecutions_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ScanWorkflowExecutions_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ScanWorkflowExecutions_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ScanWorkflowExecutions_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.ScanWorkflowExecutions(new ListWorkflowExecutionsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.ScanWorkflowExecutions(new ListWorkflowExecutionsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class CountWorkflowExecutionsTest - extends BaseTest< - WorkflowService.CountWorkflowExecutions_result, CountWorkflowExecutionsResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.CountWorkflowExecutions_result() - .setSuccess(new CountWorkflowExecutionsResponse()), - null, - new CountWorkflowExecutionsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.CountWorkflowExecutions_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.CountWorkflowExecutions_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.CountWorkflowExecutions_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.CountWorkflowExecutions_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.CountWorkflowExecutions_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.CountWorkflowExecutions(new CountWorkflowExecutionsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.CountWorkflowExecutions(new CountWorkflowExecutionsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class GetSearchAttributesTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.GetSearchAttributes_result() - .setSuccess(new GetSearchAttributesResponse()), - null, - new GetSearchAttributesResponse() - }, - { - ResponseCode.Error, - new WorkflowService.GetSearchAttributes_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.GetSearchAttributes_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetSearchAttributes_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.GetSearchAttributes()); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback(callback -> service.GetSearchAttributes(callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondQueryTaskCompletedTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.RespondQueryTaskCompleted_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.RespondQueryTaskCompleted_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.RespondQueryTaskCompleted_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondQueryTaskCompleted_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper( - () -> { - service.RespondQueryTaskCompleted(new RespondQueryTaskCompletedRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondQueryTaskCompleted(new RespondQueryTaskCompletedRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class ResetStickyTaskListTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ResetStickyTaskList_result() - .setSuccess(new ResetStickyTaskListResponse()), - null, - new ResetStickyTaskListResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError()), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError()), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ResetStickyTaskList_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.ResetStickyTaskList(new ResetStickyTaskListRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.ResetStickyTaskList(new ResetStickyTaskListRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class QueryWorkflowTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.QueryWorkflow_result().setSuccess(new QueryWorkflowResponse()), - null, - new QueryWorkflowResponse() - }, - { - ResponseCode.Error, - new WorkflowService.QueryWorkflow_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.QueryWorkflow_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.QueryWorkflow_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.QueryWorkflow_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.QueryWorkflow_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, new WorkflowService.QueryWorkflow_result(), TException.class, null - }, - { - ResponseCode.Error, new WorkflowService.QueryWorkflow_result(), TException.class, null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.QueryWorkflow(new QueryWorkflowRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.QueryWorkflow(new QueryWorkflowRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class DescribeWorkflowExecutionTest - extends BaseTest< - WorkflowService.DescribeWorkflowExecution_result, DescribeWorkflowExecutionResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.DescribeWorkflowExecution_result() - .setSuccess(new DescribeWorkflowExecutionResponse()), - null, - new DescribeWorkflowExecutionResponse() - }, - { - ResponseCode.Error, - new WorkflowService.DescribeWorkflowExecution_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.DescribeWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeWorkflowExecution_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeWorkflowExecution_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.DescribeWorkflowExecution(new DescribeWorkflowExecutionRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.DescribeWorkflowExecution(new DescribeWorkflowExecutionRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class DescribeTaskListTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.DescribeTaskList_result() - .setSuccess(new DescribeTaskListResponse()), - null, - new DescribeTaskListResponse() - }, - { - ResponseCode.Error, - new WorkflowService.DescribeTaskList_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.DescribeTaskList_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeTaskList_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeTaskList_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DescribeTaskList_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.DescribeTaskList(new DescribeTaskListRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.DescribeTaskList(new DescribeTaskListRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class GetClusterInfoTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.GetClusterInfo_result().setSuccess(new ClusterInfo()), - null, - new ClusterInfo() - }, - { - ResponseCode.Error, - new WorkflowService.GetClusterInfo_result() - .setInternalServiceError(new InternalServiceError("")), - InternalServiceError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.GetClusterInfo_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetClusterInfo_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.GetClusterInfo()); - } - - @Test - public void callbackIsNotSupported() { - assertNoOpWithCallback(callback -> service.GetClusterInfo(callback)); - } - } - - @RunWith(Parameterized.class) - public static class ListTaskListPartitionsTest - extends BaseTest< - WorkflowService.ListTaskListPartitions_result, ListTaskListPartitionsResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.ListTaskListPartitions_result() - .setSuccess(new ListTaskListPartitionsResponse()), - null, - new ListTaskListPartitionsResponse() - }, - { - ResponseCode.Error, - new WorkflowService.ListTaskListPartitions_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null, - }, - { - ResponseCode.Error, - new WorkflowService.ListTaskListPartitions_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListTaskListPartitions_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListTaskListPartitions_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.ListTaskListPartitions_result(), - TException.class, - null - }, - }); - } - - @Test - public void testResponse() throws Exception { - testHelper(() -> service.ListTaskListPartitions(new ListTaskListPartitionsRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertNoOpWithCallback( - callback -> - service.ListTaskListPartitions(new ListTaskListPartitionsRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class UpdateDomainTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.UpdateDomain_result().setSuccess(new UpdateDomainResponse()), - null, - new UpdateDomainResponse() - }, - { - ResponseCode.Error, - new WorkflowService.UpdateDomain_result().setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.UpdateDomain_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.UpdateDomain_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.UpdateDomain_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.UpdateDomain_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - {ResponseCode.Error, new WorkflowService.UpdateDomain_result(), TException.class, null}, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper(() -> service.UpdateDomain(new UpdateDomainRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.UpdateDomain(new UpdateDomainRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class GetWorkflowExecutionHistoryTest - extends BaseTest< - WorkflowService.GetWorkflowExecutionHistory_result, GetWorkflowExecutionHistoryResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.GetWorkflowExecutionHistory_result() - .setSuccess(new GetWorkflowExecutionHistoryResponse()), - null, - new GetWorkflowExecutionHistoryResponse() - }, - { - ResponseCode.Error, - new WorkflowService.GetWorkflowExecutionHistory_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetWorkflowExecutionHistory_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetWorkflowExecutionHistory_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetWorkflowExecutionHistory_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetWorkflowExecutionHistory_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetWorkflowExecutionHistory_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> service.GetWorkflowExecutionHistory(new GetWorkflowExecutionHistoryRequest())); - } - - @Test - public void responseIsHandledCorrectlyWithCallback() throws Exception { - testHelperWithCallback( - callback -> - service.GetWorkflowExecutionHistory( - new GetWorkflowExecutionHistoryRequest(), callback)); - testHelperWithCallback( - callback -> - service.GetWorkflowExecutionHistoryWithTimeout( - new GetWorkflowExecutionHistoryRequest(), callback, 1000L)); - } - - @Test - public void responseIsHandledCorrectlyWithTimeout() throws Exception { - testHelper( - () -> - service.GetWorkflowExecutionHistoryWithTimeout( - new GetWorkflowExecutionHistoryRequest(), 1000L)); - } - } - - @RunWith(Parameterized.class) - public static class StartWorkflowExecutionAsyncTest - extends BaseTest< - WorkflowService.StartWorkflowExecutionAsync_result, StartWorkflowExecutionAsyncResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setSuccess(new StartWorkflowExecutionAsyncResponse()), - null, - new StartWorkflowExecutionAsyncResponse() - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setSessionAlreadyExistError(new WorkflowExecutionAlreadyStartedError()), - WorkflowExecutionAlreadyStartedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecutionAsync_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> - service.StartWorkflowExecutionAsync( - new StartWorkflowExecutionAsyncRequest() - .setRequest(new StartWorkflowExecutionRequest()))); - } - - @Test - public void responseIsHandledCorrectWithCallback() throws TChannelError, TException { - testHelperWithCallback( - callback -> - service.StartWorkflowExecutionAsync( - new StartWorkflowExecutionAsyncRequest() - .setRequest(new StartWorkflowExecutionRequest()), - callback)); - testHelperWithCallback( - callback -> - service.StartWorkflowExecutionAsyncWithTimeout( - new StartWorkflowExecutionAsyncRequest() - .setRequest(new StartWorkflowExecutionRequest()), - callback, - 1000L)); - } - } - - @RunWith(Parameterized.class) - public static class StartWorkflowExecutionTest - extends BaseTest< - WorkflowService.StartWorkflowExecution_result, StartWorkflowExecutionResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.StartWorkflowExecution_result() - .setSuccess(new StartWorkflowExecutionResponse()), - null, - new StartWorkflowExecutionResponse() - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setSessionAlreadyExistError(new WorkflowExecutionAlreadyStartedError()), - WorkflowExecutionAlreadyStartedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.StartWorkflowExecution_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper(() -> service.StartWorkflowExecution(new StartWorkflowExecutionRequest())); - } - - @Test - public void responseIsHandledCorrectWithCallback() throws TChannelError, TException { - testHelperWithCallback( - callback -> - service.StartWorkflowExecution(new StartWorkflowExecutionRequest(), callback)); - testHelperWithCallback( - callback -> - service.StartWorkflowExecutionWithTimeout( - new StartWorkflowExecutionRequest(), callback, 1000L)); - } - } - - @RunWith(Parameterized.class) - public static class GetTaskListsByDomainTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.GetTaskListsByDomain_result() - .setSuccess(new GetTaskListsByDomainResponse()), - null, - new GetTaskListsByDomainResponse() - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.GetTaskListsByDomain_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper(() -> service.GetTaskListsByDomain(new GetTaskListsByDomainRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.GetTaskListsByDomain(new GetTaskListsByDomainRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class DeprecateDomainTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.DeprecateDomain_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.DeprecateDomain_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DeprecateDomain_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DeprecateDomain_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DeprecateDomain_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DeprecateDomain_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.DeprecateDomain_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.DeprecateDomain(new DeprecateDomainRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.DeprecateDomain(new DeprecateDomainRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class PollForDecisionTaskTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.PollForDecisionTask_result() - .setSuccess(new PollForDecisionTaskResponse()), - null, - new PollForDecisionTaskResponse() - }, - { - ResponseCode.Error, - new WorkflowService.PollForDecisionTask_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForDecisionTask_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForDecisionTask_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForDecisionTask_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForDecisionTask_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForDecisionTask_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForDecisionTask_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper(() -> service.PollForDecisionTask(new PollForDecisionTaskRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.PollForDecisionTask(new PollForDecisionTaskRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondDecisionTaskCompletedTest - extends BaseTest< - WorkflowService.RespondDecisionTaskCompleted_result, - RespondDecisionTaskCompletedResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setSuccess(new RespondDecisionTaskCompletedResponse()), - null, - new RespondDecisionTaskCompletedResponse() - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskCompleted_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> service.RespondDecisionTaskCompleted(new RespondDecisionTaskCompletedRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondDecisionTaskCompleted( - new RespondDecisionTaskCompletedRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class PollForActivityTaskTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.PollForActivityTask_result() - .setSuccess(new PollForActivityTaskResponse()), - null, - new PollForActivityTaskResponse() - }, - { - ResponseCode.Error, - new WorkflowService.PollForActivityTask_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForActivityTask_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForActivityTask_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForActivityTask_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForActivityTask_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForActivityTask_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.PollForActivityTask_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper(() -> service.PollForActivityTask(new PollForActivityTaskRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> service.PollForActivityTask(new PollForActivityTaskRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RecordActivityTaskHeartbeatTest - extends BaseTest< - WorkflowService.RecordActivityTaskHeartbeat_result, RecordActivityTaskHeartbeatResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setSuccess(new RecordActivityTaskHeartbeatResponse()), - null, - new RecordActivityTaskHeartbeatResponse() - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError()), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeat_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> service.RecordActivityTaskHeartbeat(new RecordActivityTaskHeartbeatRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RecordActivityTaskHeartbeat( - new RecordActivityTaskHeartbeatRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RecordActivityTaskHeartbeatByIDTest - extends BaseTest< - WorkflowService.RecordActivityTaskHeartbeatByID_result, - RecordActivityTaskHeartbeatResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setSuccess(new RecordActivityTaskHeartbeatResponse()), - null, - new RecordActivityTaskHeartbeatResponse() - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError()), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RecordActivityTaskHeartbeatByID_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> - service.RecordActivityTaskHeartbeatByID( - new RecordActivityTaskHeartbeatByIDRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RecordActivityTaskHeartbeatByID( - new RecordActivityTaskHeartbeatByIDRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondActivityTaskCompletedTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, new WorkflowService.RespondActivityTaskCompleted_result(), null, null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompleted_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RespondActivityTaskCompleted(new RespondActivityTaskCompletedRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondActivityTaskCompleted( - new RespondActivityTaskCompletedRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondActivityTaskCompletedByIDTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.RespondActivityTaskCompletedByID_result(), - null, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCompletedByID_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RespondActivityTaskCompletedByID(new RespondActivityTaskCompletedByIDRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondActivityTaskCompletedByID( - new RespondActivityTaskCompletedByIDRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondActivityTaskFailedTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.RespondActivityTaskFailed_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailed_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RespondActivityTaskFailed(new RespondActivityTaskFailedRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondActivityTaskFailed(new RespondActivityTaskFailedRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondActivityTaskFailedByIDTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.RespondActivityTaskFailedByID_result(), - null, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskFailedByID_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RespondActivityTaskFailedByID(new RespondActivityTaskFailedByIDRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondActivityTaskFailedByID( - new RespondActivityTaskFailedByIDRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondActivityTaskCanceledTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.RespondActivityTaskCanceled_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceled_result(), - TException.class, - null - } - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RespondActivityTaskCanceled(new RespondActivityTaskCanceledRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondActivityTaskCanceled( - new RespondActivityTaskCanceledRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondActivityTaskCanceledByIDTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.RespondActivityTaskCanceledByID_result(), - null, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondActivityTaskCanceledByID_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RespondActivityTaskCanceledByID(new RespondActivityTaskCanceledByIDRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondActivityTaskCanceledByID( - new RespondActivityTaskCanceledByIDRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RequestCancelWorkflowExecutionTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.RequestCancelWorkflowExecution_result(), - null, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RequestCancelWorkflowExecution_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RequestCancelWorkflowExecution(new RequestCancelWorkflowExecutionRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RequestCancelWorkflowExecution( - new RequestCancelWorkflowExecutionRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class SignalWorkflowExecutionTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.SignalWorkflowExecution_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWorkflowExecution_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.SignalWorkflowExecution(new SignalWorkflowExecutionRequest()); - return null; - }); - } - - @Test - public void responseIsHandledCorrectlyWithCallback() throws Exception { - testHelperWithCallback( - callback -> { - service.SignalWorkflowExecution(new SignalWorkflowExecutionRequest(), callback); - }); - } - } - - @RunWith(Parameterized.class) - public static class SignalWithStartWorkflowExecutionTest - extends BaseTest< - WorkflowService.SignalWithStartWorkflowExecution_result, StartWorkflowExecutionResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setSuccess(new StartWorkflowExecutionResponse()), - null, - new StartWorkflowExecutionResponse() - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecution_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecution_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> - service.SignalWithStartWorkflowExecution( - new SignalWithStartWorkflowExecutionRequest())); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.SignalWithStartWorkflowExecution( - new SignalWithStartWorkflowExecutionRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class RefreshWorkflowTasksTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.RefreshWorkflowTasks_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.RefreshWorkflowTasks_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RefreshWorkflowTasks_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RefreshWorkflowTasks_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RefreshWorkflowTasks_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RefreshWorkflowTasks_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RefreshWorkflowTasks(new RefreshWorkflowTasksRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertNoOpWithCallback( - callback -> service.RefreshWorkflowTasks(new RefreshWorkflowTasksRequest(), callback)); - } - } - - @RunWith(Parameterized.class) - public static class SignalWithStartWorkflowExecutionAsyncTest - extends BaseTest< - WorkflowService.SignalWithStartWorkflowExecutionAsync_result, - SignalWithStartWorkflowExecutionAsyncResponse> { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setSuccess(new SignalWithStartWorkflowExecutionAsyncResponse()), - null, - new SignalWithStartWorkflowExecutionAsyncResponse() - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result(), - TException.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setLimitExceededError(new LimitExceededError("")), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.SignalWithStartWorkflowExecutionAsync_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - } - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> - service.SignalWithStartWorkflowExecutionAsync( - new SignalWithStartWorkflowExecutionAsyncRequest() - .setRequest(new SignalWithStartWorkflowExecutionRequest()))); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.SignalWithStartWorkflowExecutionAsync( - new SignalWithStartWorkflowExecutionAsyncRequest() - .setRequest(new SignalWithStartWorkflowExecutionRequest()), - callback)); - } - } - - @RunWith(Parameterized.class) - public static class RespondDecisionTaskFailedTest - extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - {ResponseCode.OK, new WorkflowService.RespondDecisionTaskFailed_result(), null, null}, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result() - .setBadRequestError(new BadRequestError("")), - BadRequestError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result() - .setEntityNotExistError(new EntityNotExistsError("")), - EntityNotExistsError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result() - .setWorkflowExecutionAlreadyCompletedError( - new WorkflowExecutionAlreadyCompletedError("")), - WorkflowExecutionAlreadyCompletedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result() - .setServiceBusyError(new ServiceBusyError("")), - ServiceBusyError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result() - .setDomainNotActiveError(new DomainNotActiveError()), - DomainNotActiveError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result() - .setClientVersionNotSupportedError(new ClientVersionNotSupportedError()), - ClientVersionNotSupportedError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result() - .setLimitExceededError(new LimitExceededError()), - LimitExceededError.class, - null - }, - { - ResponseCode.Error, - new WorkflowService.RespondDecisionTaskFailed_result(), - TException.class, - null - }, - }); - } - - @Test - public void responseIsHandledCorrectly() throws Exception { - testHelper( - () -> { - service.RespondDecisionTaskFailed(new RespondDecisionTaskFailedRequest()); - return null; - }); - } - - @Test - public void callbackIsNotSupported() { - assertUnimplementedWithCallback( - callback -> - service.RespondDecisionTaskFailed(new RespondDecisionTaskFailedRequest(), callback)); - } - } - - public static class ConstructorTest { - @Test - public void testDefault() { - IWorkflowService service = new WorkflowServiceTChannel(ClientOptions.newBuilder().build()); - assertNotNull(service); - } - } - - @RunWith(Parameterized.class) - public static class IsHealthyTest extends BaseTest { - @Parameterized.Parameters(name = "{index}: Response Code {0}, Response {1}") - public static Iterable data() { - return Arrays.asList( - new Object[][] { - { - ResponseCode.OK, - new Meta.health_result().setSuccess(new HealthStatus().setOk(true)), - null, - Boolean.TRUE - }, - { - ResponseCode.OK, - new Meta.health_result().setSuccess(new HealthStatus().setOk(false)), - null, - Boolean.FALSE - }, - }); - } - - @Test - public void testResult() throws TException, TChannelError { - testHelper( - () -> { - try { - return service.isHealthy().get(); - } catch (Exception e) { - fail("should not throw exception: " + e); - } - return null; - }); - } - } -} diff --git a/src/test/java/com/uber/cadence/testUtils/HistoryUtils.java b/src/test/java/com/uber/cadence/testUtils/HistoryUtils.java index 58d385fee..533653670 100644 --- a/src/test/java/com/uber/cadence/testUtils/HistoryUtils.java +++ b/src/test/java/com/uber/cadence/testUtils/HistoryUtils.java @@ -72,8 +72,8 @@ public static PollForDecisionTaskResponse generateDecisionTaskWithPartialHistory TestWorkflowService service) throws Exception { - signalWorkflow(response.workflowExecution, domain, service); - respondDecisionTaskCompletedWithSticky(response.taskToken, stickyTaskListName, service); + signalWorkflow(response.getWorkflowExecution(), domain, service); + respondDecisionTaskCompletedWithSticky(response.getTaskToken(), stickyTaskListName, service); return pollForDecisionTask(domain, createStickyTaskList(stickyTaskListName), service); } } diff --git a/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java b/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java index 08faf2c67..29f1f1b31 100644 --- a/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java +++ b/src/test/java/com/uber/cadence/testUtils/TestEnvironment.java @@ -14,10 +14,9 @@ */ package com.uber.cadence.testUtils; -import com.uber.cadence.internal.compatibility.Thrift2ProtoAdapter; -import com.uber.cadence.internal.compatibility.proto.serviceclient.IGrpcServiceStubs; import com.uber.cadence.serviceclient.ClientOptions; import com.uber.cadence.serviceclient.IWorkflowService; +import com.uber.cadence.serviceclient.WorkflowServiceGrpc; public final class TestEnvironment { public static final String DOMAIN = "UnitTest"; @@ -42,7 +41,6 @@ public static boolean isUseDockerService() { } public static IWorkflowService getDockerService() { - return new Thrift2ProtoAdapter( - IGrpcServiceStubs.newInstance(ClientOptions.newBuilder().setPort(7833).build())); + return new WorkflowServiceGrpc(ClientOptions.newBuilder().setPort(7833).build()); } } diff --git a/src/test/java/com/uber/cadence/testUtils/TestServiceUtils.java b/src/test/java/com/uber/cadence/testUtils/TestServiceUtils.java index b6c58bb0c..68473f5f0 100644 --- a/src/test/java/com/uber/cadence/testUtils/TestServiceUtils.java +++ b/src/test/java/com/uber/cadence/testUtils/TestServiceUtils.java @@ -22,7 +22,6 @@ import com.uber.cadence.*; import com.uber.cadence.internal.testservice.TestWorkflowService; -import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.UUID; @@ -43,26 +42,24 @@ public static void startWorkflowExecution( int taskStartToCloseTimeoutSeconds, TestWorkflowService service) throws Exception { - StartWorkflowExecutionRequest request = new StartWorkflowExecutionRequest(); - request.domain = domain; - request.workflowId = UUID.randomUUID().toString(); - request.taskList = createNormalTaskList(tasklistName); - request.setExecutionStartToCloseTimeoutSeconds(executionStartToCloseTimeoutSeconds); - request.setTaskStartToCloseTimeoutSeconds(taskStartToCloseTimeoutSeconds); - WorkflowType type = new WorkflowType(); - type.name = workflowType; - request.workflowType = type; + StartWorkflowExecutionRequest request = + new StartWorkflowExecutionRequest() + .setDomain(domain) + .setWorkflowId(UUID.randomUUID().toString()) + .setTaskList(createNormalTaskList(tasklistName)) + .setExecutionStartToCloseTimeoutSeconds(executionStartToCloseTimeoutSeconds) + .setTaskStartToCloseTimeoutSeconds(taskStartToCloseTimeoutSeconds) + .setWorkflowType(new WorkflowType().setName(workflowType)); service.StartWorkflowExecution(request); } public static void respondDecisionTaskCompletedWithSticky( - ByteBuffer taskToken, String stickyTasklistName, TestWorkflowService service) - throws Exception { + byte[] taskToken, String stickyTasklistName, TestWorkflowService service) throws Exception { respondDecisionTaskCompletedWithSticky(taskToken, stickyTasklistName, 100, service); } public static void respondDecisionTaskCompletedWithSticky( - ByteBuffer taskToken, + byte[] taskToken, String stickyTasklistName, int startToCloseTimeout, TestWorkflowService service) @@ -78,7 +75,7 @@ public static void respondDecisionTaskCompletedWithSticky( } public static void respondDecisionTaskFailedWithSticky( - ByteBuffer taskToken, TestWorkflowService service) throws Exception { + byte[] taskToken, TestWorkflowService service) throws Exception { RespondDecisionTaskFailedRequest request = new RespondDecisionTaskFailedRequest(); request.setTaskToken(taskToken); service.RespondDecisionTaskFailed(request); diff --git a/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java b/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java index a91315e1b..652f08188 100644 --- a/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java +++ b/src/test/java/com/uber/cadence/worker/CleanWorkerShutdownTest.java @@ -21,11 +21,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.uber.cadence.EventType; -import com.uber.cadence.GetWorkflowExecutionHistoryRequest; -import com.uber.cadence.GetWorkflowExecutionHistoryResponse; -import com.uber.cadence.HistoryEvent; -import com.uber.cadence.WorkflowExecution; +import com.uber.cadence.*; import com.uber.cadence.activity.Activity; import com.uber.cadence.activity.ActivityMethod; import com.uber.cadence.client.ActivityWorkerShutdownException; @@ -44,7 +40,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -import org.apache.thrift.TException; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -128,7 +123,7 @@ public String execute() { } @Test - public void testShutdown() throws ExecutionException, InterruptedException, TException { + public void testShutdown() throws ExecutionException, InterruptedException, CadenceError { String taskList = "CleanWorkerShutdownTest-" + testName.getMethodName() + "-" + UUID.randomUUID().toString(); WorkflowClient workflowClient; @@ -182,7 +177,7 @@ public void testShutdown() throws ExecutionException, InterruptedException, TExc } @Test - public void testShutdownNow() throws ExecutionException, InterruptedException, TException { + public void testShutdownNow() throws ExecutionException, InterruptedException, CadenceError { String taskList = "CleanWorkerShutdownTest-" + testName.getMethodName() + "-" + UUID.randomUUID().toString(); WorkflowClient workflowClient; @@ -263,7 +258,7 @@ public String execute() { */ @Test public void testShutdownHeartbeatingActivity() - throws ExecutionException, InterruptedException, TException { + throws ExecutionException, InterruptedException, CadenceError { String taskList = "CleanWorkerShutdownTest-" + testName.getMethodName() + "-" + UUID.randomUUID().toString(); WorkflowClient workflowClient; diff --git a/src/test/java/com/uber/cadence/worker/ShadowingWorkerTest.java b/src/test/java/com/uber/cadence/worker/ShadowingWorkerTest.java index 7c338731a..6306bdfbb 100644 --- a/src/test/java/com/uber/cadence/worker/ShadowingWorkerTest.java +++ b/src/test/java/com/uber/cadence/worker/ShadowingWorkerTest.java @@ -29,17 +29,16 @@ import com.uber.cadence.WorkflowType; import com.uber.cadence.client.WorkflowClient; import com.uber.cadence.client.WorkflowClientOptions; +import com.uber.cadence.converter.JsonDataConverter; import com.uber.cadence.serviceclient.IWorkflowService; +import com.uber.cadence.shadower.Constants; import com.uber.cadence.shadower.ExitCondition; import com.uber.cadence.shadower.Mode; import com.uber.cadence.shadower.WorkflowParams; -import com.uber.cadence.shadower.shadowerConstants; import com.uber.m3.tally.NoopScope; import java.time.ZonedDateTime; import java.util.Arrays; import java.util.UUID; -import org.apache.thrift.TSerializer; -import org.apache.thrift.protocol.TSimpleJSONProtocol; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentMatcher; @@ -74,7 +73,6 @@ public void testStartShadowingWorkflow_ReceiveExpectedRequest() throws Exception ShadowingWorker shadowingWorker = new ShadowingWorker( mockClient, taskList, WorkerOptions.defaultInstance(), shadowingOptions); - TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); WorkflowParams params = new WorkflowParams() @@ -87,14 +85,14 @@ public void testStartShadowingWorkflow_ReceiveExpectedRequest() throws Exception .setWorkflowQuery(shadowingOptions.getWorkflowQuery()); StartWorkflowExecutionRequest expectedRequest = new StartWorkflowExecutionRequest() - .setDomain(shadowerConstants.LocalDomainName) - .setWorkflowId(shadowingOptions.getDomain() + shadowerConstants.WorkflowIDSuffix) - .setTaskList(new TaskList().setName(shadowerConstants.TaskList)) - .setWorkflowType(new WorkflowType().setName(shadowerConstants.WorkflowName)) + .setDomain(Constants.LocalDomainName) + .setWorkflowId(shadowingOptions.getDomain() + Constants.WorkflowIDSuffix) + .setTaskList(new TaskList().setName(Constants.TaskList)) + .setWorkflowType(new WorkflowType().setName(Constants.WorkflowName)) .setWorkflowIdReusePolicy(WorkflowIdReusePolicy.AllowDuplicate) .setExecutionStartToCloseTimeoutSeconds(864000) .setTaskStartToCloseTimeoutSeconds(60) - .setInput(serializer.serialize(params)); + .setInput(JsonDataConverter.getInstance().toData(params)); when(mockService.StartWorkflowExecution(any())).thenReturn(null); shadowingWorker.startShadowingWorkflow(); diff --git a/src/test/java/com/uber/cadence/workflow/TestEnvironmentWorkflowTest.java b/src/test/java/com/uber/cadence/workflow/TestEnvironmentWorkflowTest.java index 81d69cef7..41a0b6e06 100644 --- a/src/test/java/com/uber/cadence/workflow/TestEnvironmentWorkflowTest.java +++ b/src/test/java/com/uber/cadence/workflow/TestEnvironmentWorkflowTest.java @@ -110,7 +110,7 @@ public void testCronWorkflow() { testEnv.getWorkflowService().ListClosedWorkflowExecutions(listRequest); Assert.assertEquals(2, listResponse.getExecutions().size()); for (WorkflowExecutionInfo e : listResponse.getExecutions()) { - assertTrue(e.isIsCron()); + assertTrue(e.isCron()); assertEquals(WorkflowExecutionCloseStatus.CONTINUED_AS_NEW, e.getCloseStatus()); } } catch (Exception e) { diff --git a/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java b/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java index ad9a368ee..3f593bc9b 100644 --- a/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java +++ b/src/test/java/com/uber/cadence/workflow/WorkflowMigrationTest.java @@ -40,7 +40,6 @@ import com.uber.cadence.workflow.interceptors.TracingWorkflowInterceptorFactory; import java.util.UUID; import java.util.concurrent.CancellationException; -import org.apache.thrift.TException; import org.junit.*; public class WorkflowMigrationTest { @@ -150,6 +149,7 @@ public void execute(int iter) { } @Test + @Ignore("TODO: fix this test") @RequiresDockerService // test service doesn't support describe API yet public void cronWorkflowMigration() { String workflowID = UUID.randomUUID().toString(); @@ -168,6 +168,7 @@ public void cronWorkflowMigration() { } @Test + @Ignore("TODO: fix this test") @RequiresDockerService // test service doesn't support describe API yet public void continueAsNewWorkflowMigration() { String workflowID = UUID.randomUUID().toString(); @@ -187,7 +188,7 @@ public void continueAsNewWorkflowMigration() { } private GetWorkflowExecutionHistoryResponse getWorkflowHistory( - WorkflowClient wc, String workflowID) throws TException { + WorkflowClient wc, String workflowID) throws CadenceError { return wc.getService() .GetWorkflowExecutionHistory( new GetWorkflowExecutionHistoryRequest() diff --git a/src/test/java/com/uber/cadence/workflow/WorkflowTest.java b/src/test/java/com/uber/cadence/workflow/WorkflowTest.java index 4535afd16..e6701a10b 100644 --- a/src/test/java/com/uber/cadence/workflow/WorkflowTest.java +++ b/src/test/java/com/uber/cadence/workflow/WorkflowTest.java @@ -1409,9 +1409,9 @@ public void testMemo() { GetWorkflowExecutionHistoryResponse historyResp = WorkflowExecutionUtils.getHistoryPage( new byte[] {}, workflowClient.getService(), DOMAIN, executionF); - HistoryEvent startEvent = historyResp.history.getEvents().get(0); - Memo memoFromEvent = startEvent.workflowExecutionStartedEventAttributes.getMemo(); - byte[] memoBytes = memoFromEvent.getFields().get(testMemoKey).array(); + HistoryEvent startEvent = historyResp.getHistory().getEvents().get(0); + Memo memoFromEvent = startEvent.getWorkflowExecutionStartedEventAttributes().getMemo(); + byte[] memoBytes = memoFromEvent.getFields().get(testMemoKey); String memoRetrieved = JsonDataConverter.getInstance().fromData(memoBytes, String.class, String.class); assertEquals(testMemoValue, memoRetrieved); @@ -1449,33 +1449,29 @@ public void testSearchAttributes() { GetWorkflowExecutionHistoryResponse historyResp = WorkflowExecutionUtils.getHistoryPage( new byte[] {}, workflowClient.getService(), DOMAIN, executionF); - HistoryEvent startEvent = historyResp.history.getEvents().get(0); + HistoryEvent startEvent = historyResp.getHistory().getEvents().get(0); SearchAttributes searchAttrFromEvent = - startEvent.workflowExecutionStartedEventAttributes.getSearchAttributes(); + startEvent.getWorkflowExecutionStartedEventAttributes().getSearchAttributes(); - byte[] searchAttrStringBytes = - searchAttrFromEvent.getIndexedFields().get(testKeyString).array(); + byte[] searchAttrStringBytes = searchAttrFromEvent.getIndexedFields().get(testKeyString); String retrievedString = JsonDataConverter.getInstance().fromData(searchAttrStringBytes, String.class, String.class); assertEquals(testValueString, retrievedString); - byte[] searchAttrIntegerBytes = - searchAttrFromEvent.getIndexedFields().get(testKeyInteger).array(); + byte[] searchAttrIntegerBytes = searchAttrFromEvent.getIndexedFields().get(testKeyInteger); Integer retrievedInteger = JsonDataConverter.getInstance() .fromData(searchAttrIntegerBytes, Integer.class, Integer.class); assertEquals(testValueInteger, retrievedInteger); - byte[] searchAttrDateTimeBytes = - searchAttrFromEvent.getIndexedFields().get(testKeyDateTime).array(); + byte[] searchAttrDateTimeBytes = searchAttrFromEvent.getIndexedFields().get(testKeyDateTime); LocalDateTime retrievedDateTime = JsonDataConverter.getInstance() .fromData(searchAttrDateTimeBytes, LocalDateTime.class, LocalDateTime.class); assertEquals(testValueDateTime, retrievedDateTime); - byte[] searchAttrBoolBytes = searchAttrFromEvent.getIndexedFields().get(testKeyBool).array(); + byte[] searchAttrBoolBytes = searchAttrFromEvent.getIndexedFields().get(testKeyBool); Boolean retrievedBool = JsonDataConverter.getInstance().fromData(searchAttrBoolBytes, Boolean.class, Boolean.class); assertEquals(testValueBool, retrievedBool); - byte[] searchAttrDoubleBytes = - searchAttrFromEvent.getIndexedFields().get(testKeyDouble).array(); + byte[] searchAttrDoubleBytes = searchAttrFromEvent.getIndexedFields().get(testKeyDouble); Double retrievedDouble = JsonDataConverter.getInstance().fromData(searchAttrDoubleBytes, Double.class, Double.class); assertEquals(testValueDouble, retrievedDouble); From 82159b0167797884db434cd4c850f54e53132ef3 Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Thu, 2 Oct 2025 15:06:03 -0700 Subject: [PATCH 14/17] fix: fail open on exception not found (#1027) What changed? Default data converter would throw I/O exception and thus fail workflow processing if the exception no longer exists. This PR changes the behavior by return null instead. Why? In V4, thrift exceptions will be removed and thus this is needed to avoid breaking existing workflows. How did you test it? Unit Test --- .../client/ApplicationFailureException.java | 24 +++++++++++++++++++ .../converter/CustomThrowableTypeAdapter.java | 3 ++- .../converter/JsonDataConverterTest.java | 20 ++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/uber/cadence/client/ApplicationFailureException.java diff --git a/src/main/java/com/uber/cadence/client/ApplicationFailureException.java b/src/main/java/com/uber/cadence/client/ApplicationFailureException.java new file mode 100644 index 000000000..cb2c45e23 --- /dev/null +++ b/src/main/java/com/uber/cadence/client/ApplicationFailureException.java @@ -0,0 +1,24 @@ +/** + * Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + *

    Modifications copyright (C) 2017 Uber Technologies, Inc. + * + *

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file + * except in compliance with the License. A copy of the License is located at + * + *

    http://aws.amazon.com/apache2.0 + * + *

    or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package com.uber.cadence.client; + +import com.uber.cadence.CadenceError; + +public final class ApplicationFailureException extends CadenceError { + + public ApplicationFailureException(String message) { + super(message); + } +} diff --git a/src/main/java/com/uber/cadence/converter/CustomThrowableTypeAdapter.java b/src/main/java/com/uber/cadence/converter/CustomThrowableTypeAdapter.java index 86cca6939..98ca4ca2b 100644 --- a/src/main/java/com/uber/cadence/converter/CustomThrowableTypeAdapter.java +++ b/src/main/java/com/uber/cadence/converter/CustomThrowableTypeAdapter.java @@ -22,6 +22,7 @@ import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; +import com.uber.cadence.client.ApplicationFailureException; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; @@ -137,7 +138,7 @@ public T read(JsonReader jsonReader) throws IOException { try { classType = Class.forName(className); } catch (ClassNotFoundException e) { - throw new IOException("Cannot deserialize " + className + " exception", e); + classType = ApplicationFailureException.class; } if (!Throwable.class.isAssignableFrom(classType)) { throw new IOException("Expected type that extends Throwable: " + className); diff --git a/src/test/java/com/uber/cadence/converter/JsonDataConverterTest.java b/src/test/java/com/uber/cadence/converter/JsonDataConverterTest.java index 57862ddc1..83eeccfc6 100644 --- a/src/test/java/com/uber/cadence/converter/JsonDataConverterTest.java +++ b/src/test/java/com/uber/cadence/converter/JsonDataConverterTest.java @@ -27,6 +27,7 @@ import com.uber.cadence.WorkflowExecutionStartedEventAttributes; import com.uber.cadence.WorkflowType; import com.uber.cadence.activity.Activity; +import com.uber.cadence.client.ApplicationFailureException; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -270,4 +271,23 @@ public void testException() { assertEquals("root exception", causeFromConverted.getSuppressed()[0].getMessage()); } + + @Test + public void testExceptionNotFound() { + String convertedString = + "{\n" + + " \"detailMessage\": \"application exception\",\n" + + " \"stackTrace\": \"com.uber.cadence.converter.JsonDataConverterTest.testExceptionNotFound(JsonDataConverterTest.java:282)\\nsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\\nsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\\nsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\\njava.lang.reflect.Method.invoke(Method.java:498)\\norg.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\\norg.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\\norg.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\\norg.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\\norg.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\\norg.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\\norg.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\\norg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\\norg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\\norg.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\\norg.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\\norg.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\\norg.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\\norg.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\\norg.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\\norg.junit.runners.ParentRunner.run(ParentRunner.java:413)\\norg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:93)\\norg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)\\norg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:520)\\norg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:748)\\norg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:443)\\norg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:211)\\n\",\n" + + " \"suppressedExceptions\": [],\n" + + " \"class\": \"com.uber.cadence.converter.ExceptionNotFound\"\n" + + "}"; + RuntimeException fromConverted = + converter.fromData( + convertedString.getBytes(StandardCharsets.UTF_8), + RuntimeException.class, + RuntimeException.class); + assertEquals(ApplicationFailureException.class, fromConverted.getClass()); + assertEquals("application exception", fromConverted.getMessage()); + assertNotSame(fromConverted.getStackTrace().length, 0); + } } From 4c657db8eb7d56d350956bb8f9d5dfd29d94921f Mon Sep 17 00:00:00 2001 From: Chris Warren <16132615+c-warren@users.noreply.github.com> Date: Mon, 6 Oct 2025 11:23:50 -0700 Subject: [PATCH 15/17] ci: Lint PR titles with Conventional Commits standard (#1028) Signed-off-by: Chris Warren <16132615+c-warren@users.noreply.github.com> --- .github/workflows/semantic-pr.yml | 72 +++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/semantic-pr.yml diff --git a/.github/workflows/semantic-pr.yml b/.github/workflows/semantic-pr.yml new file mode 100644 index 000000000..39e467058 --- /dev/null +++ b/.github/workflows/semantic-pr.yml @@ -0,0 +1,72 @@ +name: Semantic Pull Request + +on: + pull_request: + types: + - opened + - edited + - synchronize + +jobs: + semantic-pr: + name: Validate PR title follows conventional commit format + runs-on: ubuntu-latest + # TODO: Remove this once we commit to conventional commits + continue-on-error: true + + steps: + - name: Validate PR title + id: lint_pr_title + uses: amannn/action-semantic-pull-request@v5.4.0 + with: + # Allow standard conventional commit types + types: | + fix + feat + docs + style + refactor + perf + test + chore + ci + build + # TODO: Remove this once we've decided on scopes + requireScope: false + # Skip validation for certain labels if needed + ignoreLabels: | + skip-commit-format + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Comment on PR if validation fails + if: steps.lint_pr_title.outputs.error_message != null + uses: actions/github-script@v7 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `⚠️ **Semantic PR Check Failed** + + **Error Details:** + \`\`\` + ${{ steps.lint_pr_title.outputs.error_message }} + \`\`\` + + **Required Format:** + \`\`\` + : + \`\`\` + + **Allowed types:** fix, feat, docs, style, refactor, perf, test, chore, ci, build + + **Examples:** + - \`feat: add user authentication system\` + - \`fix: resolve memory leak in worker pool\` + - \`docs: update API documentation\` + - \`test: add integration tests for auth flow\` + + This is currently a **warning only** and won't block your PR from being merged.` + }) From 8d2615ca9bb41056a0aee633a6207402e1a02eb4 Mon Sep 17 00:00:00 2001 From: Chris Warren <16132615+c-warren@users.noreply.github.com> Date: Mon, 6 Oct 2025 16:23:32 -0700 Subject: [PATCH 16/17] ci: Allow gpg signed commits to pass DCO checks (#1029) Signed-off-by: Chris Warren <16132615+c-warren@users.noreply.github.com> --- .github/dco.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/dco.yml diff --git a/.github/dco.yml b/.github/dco.yml new file mode 100644 index 000000000..0c4b142e9 --- /dev/null +++ b/.github/dco.yml @@ -0,0 +1,2 @@ +require: + members: false From 626b49951e683ab5d89c47de9987405149f0555d Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Fri, 10 Oct 2025 12:54:18 -0700 Subject: [PATCH 17/17] fix(mapper): avoid null pointer exception in request mappers (#1030) What changed? nullable check before setting the field in GRPC entities Why? GRPC entities have nullable checks --- .../proto/mappers/DecisionMapper.java | 6 +- .../proto/mappers/RequestMapper.java | 66 ++++++++++--------- .../proto/mappers/TypeMapper.java | 7 +- 3 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapper.java index 518367d37..b74754257 100644 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapper.java +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/DecisionMapper.java @@ -157,7 +157,7 @@ static Decision decision(com.uber.cadence.Decision d) { d.getRequestCancelExternalWorkflowExecutionDecisionAttributes(); RequestCancelExternalWorkflowExecutionDecisionAttributes.Builder builder = RequestCancelExternalWorkflowExecutionDecisionAttributes.newBuilder() - .setDomain(attr.getDomain()) + .setDomain(attr.getDomain() != null ? attr.getDomain() : "") .setWorkflowExecution(workflowRunPair(attr.getWorkflowId(), attr.getRunId())) .setChildWorkflowOnly(attr.isChildWorkflowOnly()); if (attr.getControl() != null) { @@ -202,7 +202,7 @@ static Decision decision(com.uber.cadence.Decision d) { d.getStartChildWorkflowExecutionDecisionAttributes(); StartChildWorkflowExecutionDecisionAttributes.Builder builder = StartChildWorkflowExecutionDecisionAttributes.newBuilder() - .setDomain(attr.getDomain()) + .setDomain(attr.getDomain() != null ? attr.getDomain() : "") .setWorkflowId(attr.getWorkflowId()) .setWorkflowType(workflowType(attr.getWorkflowType())) .setTaskList(taskList(attr.getTaskList())) @@ -234,7 +234,7 @@ static Decision decision(com.uber.cadence.Decision d) { d.getSignalExternalWorkflowExecutionDecisionAttributes(); SignalExternalWorkflowExecutionDecisionAttributes.Builder builder = SignalExternalWorkflowExecutionDecisionAttributes.newBuilder() - .setDomain(attr.getDomain()) + .setDomain(attr.getDomain() != null ? attr.getDomain() : "") .setWorkflowExecution(workflowExecution(attr.getExecution())) .setSignalName(attr.getSignalName()) .setInput(payload(attr.getInput())) diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java index 818b97685..f1ba7c823 100644 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/RequestMapper.java @@ -121,7 +121,8 @@ public static CountWorkflowExecutionsRequest countWorkflowExecutionsRequest( return null; } CountWorkflowExecutionsRequest.Builder request = - CountWorkflowExecutionsRequest.newBuilder().setDomain(t.getDomain()); + CountWorkflowExecutionsRequest.newBuilder() + .setDomain(t.getDomain() != null ? t.getDomain() : ""); if (t.getQuery() != null) { request.setQuery(t.getQuery()); } @@ -134,7 +135,7 @@ public static DescribeTaskListRequest describeTaskListRequest( return null; } return DescribeTaskListRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setTaskList(taskList(t.getTaskList())) .setTaskListType(taskListType(t.getTaskListType())) .setIncludeTaskListStatus(t.isIncludeTaskListStatus()) @@ -148,7 +149,7 @@ public static ListArchivedWorkflowExecutionsRequest listArchivedWorkflowExecutio } ListArchivedWorkflowExecutionsRequest.Builder request = ListArchivedWorkflowExecutionsRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setPageSize(t.getPageSize()); if (t.getNextPageToken() != null) { request.setNextPageToken(arrayToByteString(t.getNextPageToken())); @@ -166,7 +167,7 @@ public static RequestCancelWorkflowExecutionRequest requestCancelWorkflowExecuti } RequestCancelWorkflowExecutionRequest.Builder builder = RequestCancelWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) .setRequestId(t.getRequestId()); if (t.getIdentity() != null) { @@ -187,7 +188,7 @@ public static ResetStickyTaskListRequest resetStickyTaskListRequest( return null; } return ResetStickyTaskListRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getExecution())) .build(); } @@ -198,7 +199,7 @@ public static ResetWorkflowExecutionRequest resetWorkflowExecutionRequest( return null; } return ResetWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) .setReason(t.getReason() != null ? t.getReason() : "") .setDecisionFinishEventId(t.getDecisionFinishEventId()) @@ -214,7 +215,7 @@ public static RespondActivityTaskCanceledByIDRequest respondActivityTaskCanceled } RespondActivityTaskCanceledByIDRequest.Builder builder = RespondActivityTaskCanceledByIDRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(TypeMapper.workflowRunPair(t.getWorkflowID(), t.getRunID())) .setActivityId(t.getActivityID()) .setDetails(payload(t.getDetails())); @@ -247,7 +248,7 @@ public static RespondActivityTaskCompletedByIDRequest respondActivityTaskComplet } RespondActivityTaskCompletedByIDRequest.Builder builder = RespondActivityTaskCompletedByIDRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(TypeMapper.workflowRunPair(t.getWorkflowID(), t.getRunID())) .setActivityId(t.getActivityID()) .setResult(payload(t.getResult())); @@ -280,7 +281,7 @@ public static RespondActivityTaskFailedByIDRequest respondActivityTaskFailedById } RespondActivityTaskFailedByIDRequest.Builder builder = RespondActivityTaskFailedByIDRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(TypeMapper.workflowRunPair(t.getWorkflowID(), t.getRunID())) .setActivityId(t.getActivityID()) .setFailure(failure(t.getReason(), t.getDetails())); @@ -384,7 +385,7 @@ public static ScanWorkflowExecutionsRequest scanWorkflowExecutionsRequest( } ScanWorkflowExecutionsRequest.Builder request = ScanWorkflowExecutionsRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setPageSize(t.getPageSize()); if (t.getNextPageToken() != null) { request.setNextPageToken(arrayToByteString(t.getNextPageToken())); @@ -401,7 +402,7 @@ public static DescribeWorkflowExecutionRequest describeWorkflowExecutionRequest( return null; } return DescribeWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getExecution())) .setQueryConsistencyLevel(queryConsistencyLevel(t.getQueryConsistencyLevel())) .build(); @@ -414,7 +415,7 @@ public static GetWorkflowExecutionHistoryRequest getWorkflowExecutionHistoryRequ } GetWorkflowExecutionHistoryRequest.Builder builder = GetWorkflowExecutionHistoryRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getExecution())) .setPageSize(t.getMaximumPageSize()) .setWaitForNewEvent(t.isWaitForNewEvent()) @@ -434,7 +435,7 @@ public static SignalWithStartWorkflowExecutionRequest signalWithStartWorkflowExe } StartWorkflowExecutionRequest.Builder builder = StartWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowId(t.getWorkflowId()) .setWorkflowType(workflowType(t.getWorkflowType())) .setTaskList(taskList(t.getTaskList())) @@ -497,7 +498,7 @@ public static SignalWorkflowExecutionRequest signalWorkflowExecutionRequest( } SignalWorkflowExecutionRequest.Builder builder = SignalWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) .setSignalName(t.getSignalName()) .setSignalInput(payload(t.getInput())) @@ -518,7 +519,7 @@ public static StartWorkflowExecutionRequest startWorkflowExecutionRequest( } StartWorkflowExecutionRequest.Builder request = StartWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowId(t.getWorkflowId()) .setWorkflowType(workflowType(t.getWorkflowType())) .setTaskList(taskList(t.getTaskList())) @@ -566,7 +567,7 @@ public static TerminateWorkflowExecutionRequest terminateWorkflowExecutionReques } TerminateWorkflowExecutionRequest.Builder builder = TerminateWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) .setReason(t.getReason() != null ? t.getReason() : "") .setDetails(payload(t.getDetails())); @@ -622,7 +623,7 @@ public static ListTaskListPartitionsRequest listTaskListPartitionsRequest( return null; } return ListTaskListPartitionsRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setTaskList(taskList(t.getTaskList())) .build(); } @@ -634,7 +635,7 @@ public static ListWorkflowExecutionsRequest listWorkflowExecutionsRequest( } ListWorkflowExecutionsRequest.Builder request = ListWorkflowExecutionsRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setPageSize(t.getPageSize()); if (t.getNextPageToken() != null) { request.setNextPageToken(arrayToByteString(t.getNextPageToken())); @@ -652,7 +653,7 @@ public static PollForActivityTaskRequest pollForActivityTaskRequest( } PollForActivityTaskRequest.Builder builder = PollForActivityTaskRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setTaskList(taskList(t.getTaskList())) .setTaskListMetadata(taskListMetadata(t.getTaskListMetadata())); if (t.getIdentity() != null) { @@ -668,7 +669,7 @@ public static PollForDecisionTaskRequest pollForDecisionTaskRequest( } PollForDecisionTaskRequest.Builder builder = PollForDecisionTaskRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setTaskList(taskList(t.getTaskList())); if (t.getBinaryChecksum() != null) { builder.setBinaryChecksum(t.getBinaryChecksum()); @@ -684,7 +685,7 @@ public static QueryWorkflowRequest queryWorkflowRequest(com.uber.cadence.QueryWo return null; } return QueryWorkflowRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getExecution())) .setQuery(workflowQuery(t.getQuery())) .setQueryRejectCondition(queryRejectCondition(t.getQueryRejectCondition())) @@ -699,7 +700,7 @@ public static RecordActivityTaskHeartbeatByIDRequest recordActivityTaskHeartbeat } RecordActivityTaskHeartbeatByIDRequest.Builder builder = RecordActivityTaskHeartbeatByIDRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(TypeMapper.workflowRunPair(t.getWorkflowID(), t.getRunID())) .setActivityId(t.getActivityID()) .setDetails(payload(t.getDetails())); @@ -756,7 +757,7 @@ public static RestartWorkflowExecutionRequest restartWorkflowExecutionRequest( return null; } return RestartWorkflowExecutionRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setWorkflowExecution(workflowExecution(t.getWorkflowExecution())) .setReason(t.getReason() != null ? t.getReason() : "") .setIdentity(t.getIdentity() != null ? t.getIdentity() : "") @@ -852,7 +853,7 @@ public static ListClosedWorkflowExecutionsRequest listClosedWorkflowExecutionsRe } ListClosedWorkflowExecutionsRequest.Builder request = ListClosedWorkflowExecutionsRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setPageSize(t.getMaximumPageSize()); if (t.getExecutionFilter() != null) { request.setExecutionFilter(workflowExecutionFilter(t.getExecutionFilter())); @@ -879,7 +880,7 @@ public static ListOpenWorkflowExecutionsRequest listOpenWorkflowExecutionsReques } ListOpenWorkflowExecutionsRequest.Builder request = ListOpenWorkflowExecutionsRequest.newBuilder() - .setDomain(t.getDomain()) + .setDomain(t.getDomain() != null ? t.getDomain() : "") .setPageSize(t.getMaximumPageSize()); if (t.getExecutionFilter() != null) { request.setExecutionFilter(workflowExecutionFilter(t.getExecutionFilter())); @@ -903,7 +904,7 @@ public static RespondActivityTaskFailedByIDRequest respondActivityTaskFailedByID } RespondActivityTaskFailedByIDRequest.Builder request = RespondActivityTaskFailedByIDRequest.newBuilder() - .setDomain(failRequest.getDomain()) + .setDomain(failRequest.getDomain() != null ? failRequest.getDomain() : "") .setWorkflowExecution( TypeMapper.workflowRunPair(failRequest.getWorkflowID(), failRequest.getRunID())) .setActivityId(failRequest.getActivityID()) @@ -919,7 +920,7 @@ public static RespondActivityTaskCompletedByIDRequest respondActivityTaskComplet } RespondActivityTaskCompletedByIDRequest.Builder request = RespondActivityTaskCompletedByIDRequest.newBuilder() - .setDomain(completeRequest.getDomain()) + .setDomain(completeRequest.getDomain() != null ? completeRequest.getDomain() : "") .setWorkflowExecution( TypeMapper.workflowRunPair( completeRequest.getWorkflowID(), completeRequest.getRunID())) @@ -937,7 +938,7 @@ public static RecordActivityTaskHeartbeatByIDRequest recordActivityTaskHeartbeat } RecordActivityTaskHeartbeatByIDRequest.Builder request = RecordActivityTaskHeartbeatByIDRequest.newBuilder() - .setDomain(heartbeatRequest.getDomain()) + .setDomain(heartbeatRequest.getDomain() != null ? heartbeatRequest.getDomain() : "") .setWorkflowExecution( TypeMapper.workflowRunPair( heartbeatRequest.getWorkflowID(), heartbeatRequest.getRunID())) @@ -955,7 +956,7 @@ public static RespondActivityTaskCanceledByIDRequest respondActivityTaskCanceled } RespondActivityTaskCanceledByIDRequest.Builder request = RespondActivityTaskCanceledByIDRequest.newBuilder() - .setDomain(canceledRequest.getDomain()) + .setDomain(canceledRequest.getDomain() != null ? canceledRequest.getDomain() : "") .setWorkflowExecution( TypeMapper.workflowRunPair( canceledRequest.getWorkflowID(), canceledRequest.getRunID())) @@ -972,7 +973,8 @@ public static GetTaskListsByDomainRequest getTaskListsByDomainRequest( return null; } GetTaskListsByDomainRequest.Builder request = - GetTaskListsByDomainRequest.newBuilder().setDomain(domainRequest.getDomainName()); + GetTaskListsByDomainRequest.newBuilder() + .setDomain(domainRequest.getDomainName() != null ? domainRequest.getDomainName() : ""); return request.build(); } @@ -981,6 +983,8 @@ public static RefreshWorkflowTasksRequest refreshWorkflowTasksRequest( if (request == null) { return null; } - return RefreshWorkflowTasksRequest.newBuilder().setDomain(request.getDomain()).build(); + return RefreshWorkflowTasksRequest.newBuilder() + .setDomain(request.getDomain() != null ? request.getDomain() : "") + .build(); } } diff --git a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java index 628ba2df3..678d9f080 100644 --- a/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java +++ b/src/main/java/com/uber/cadence/internal/compatibility/proto/mappers/TypeMapper.java @@ -128,7 +128,10 @@ static WorkflowExecution workflowRunPair(String workflowId, String runId) { if (Strings.isNullOrEmpty(workflowId) && Strings.isNullOrEmpty(runId)) { return WorkflowExecution.newBuilder().build(); } - return WorkflowExecution.newBuilder().setWorkflowId(workflowId).setRunId(runId).build(); + return WorkflowExecution.newBuilder() + .setWorkflowId(workflowId) + .setRunId(runId != null ? runId : "") + .build(); } static ActivityType activityType(com.uber.cadence.ActivityType t) { @@ -275,7 +278,7 @@ static WorkflowExecutionFilter workflowExecutionFilter( } return WorkflowExecutionFilter.newBuilder() .setWorkflowId(t.getWorkflowId()) - .setRunId(t.getRunId()) + .setRunId(t.getRunId() != null ? t.getRunId() : "") .build(); }