cadence-java-client
cadence-java-client copied to clipboard
ZonedDateTime as parameter type for WorkflowMethod
Hi
Is it possible to send ZonedDateTime type to WorkflowMethod?
Right now workflow:
public interface HelloWorld {
@WorkflowMethod
void sayHello(String name, java.time.ZonedDateTime at);
}
breaks down with error message: Failed to invoke java.time.ZoneId() with no args
Error details from Cadence UI:
{
"detailMessage": "when parsing:\"[\"Peter\",{\"dateTime\":{\"date\":{\"year\":2020,\"month\":7,\"day\":16},\"time\":{\"hour\":15,\"minute\":38,\"second\":38,\"nano\":552000000}},\"offset\":{\"totalSeconds\":21600},\"zone\":{\"id\":\"Asia/Almaty\"}}]\" into following types: [class java.lang.String, class java.time.ZonedDateTime]",
"cause": {
"detailMessage": "Failed to invoke java.time.ZoneId() with no args",
"cause": {
"detailMessage": null,
"stackTrace": "sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)\r\njava.lang.reflect.Constructor.newInstance(Constructor.java:423)\r\ncom.google.gson.internal.ConstructorConstructor$3.construct(ConstructorConstructor.java:110)\r\ncom.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:212)\r\ncom.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)\r\ncom.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)\r\ncom.google.gson.Gson.fromJson(Gson.java:932)\r\ncom.google.gson.Gson.fromJson(Gson.java:1003)\r\ncom.uber.cadence.converter.JsonDataConverter.fromDataArray(JsonDataConverter.java:150)\r\ncom.uber.cadence.internal.sync.POJOWorkflowImplementationFactory$POJOWorkflowImplementation.execute(POJOWorkflowImplementationFactory.java:241)\r\ncom.uber.cadence.internal.sync.WorkflowRunnable.run(WorkflowRunnable.java:47)\r\ncom.uber.cadence.internal.sync.CancellationScopeImpl.run(CancellationScopeImpl.java:102)\r\ncom.uber.cadence.internal.sync.WorkflowThreadImpl$RunnableWrapper.run(WorkflowThreadImpl.java:99)\r\njava.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\r\njava.util.concurrent.FutureTask.run(FutureTask.java:266)\r\njava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\njava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\njava.lang.Thread.run(Thread.java:745)\r\n",
"suppressedExceptions": [],
"class": "java.lang.InstantiationException"
},
"stackTrace": "com.google.gson.internal.ConstructorConstructor$3.construct(ConstructorConstructor.java:113)\r\ncom.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:212)\r\ncom.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)\r\ncom.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)\r\ncom.google.gson.Gson.fromJson(Gson.java:932)\r\ncom.google.gson.Gson.fromJson(Gson.java:1003)\r\ncom.uber.cadence.converter.JsonDataConverter.fromDataArray(JsonDataConverter.java:150)\r\ncom.uber.cadence.internal.sync.POJOWorkflowImplementationFactory$POJOWorkflowImplementation.execute(POJOWorkflowImplementationFactory.java:241)\r\ncom.uber.cadence.internal.sync.WorkflowRunnable.run(WorkflowRunnable.java:47)\r\ncom.uber.cadence.internal.sync.CancellationScopeImpl.run(CancellationScopeImpl.java:102)\r\ncom.uber.cadence.internal.sync.WorkflowThreadImpl$RunnableWrapper.run(WorkflowThreadImpl.java:99)\r\njava.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\r\njava.util.concurrent.FutureTask.run(FutureTask.java:266)\r\njava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\njava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\njava.lang.Thread.run(Thread.java:745)\r\n",
"suppressedExceptions": [],
"class": "java.lang.RuntimeException"
},
"stackTrace": "com.uber.cadence.converter.JsonDataConverter.fromDataArray(JsonDataConverter.java:157)\r\ncom.uber.cadence.internal.sync.POJOWorkflowImplementationFactory$POJOWorkflowImplementation.execute(POJOWorkflowImplementationFactory.java:241)\r\ncom.uber.cadence.internal.sync.WorkflowRunnable.run(WorkflowRunnable.java:47)\r\ncom.uber.cadence.internal.sync.CancellationScopeImpl.run(CancellationScopeImpl.java:102)\r\ncom.uber.cadence.internal.sync.WorkflowThreadImpl$RunnableWrapper.run(WorkflowThreadImpl.java:99)\r\njava.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\r\njava.util.concurrent.FutureTask.run(FutureTask.java:266)\r\njava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\njava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\njava.lang.Thread.run(Thread.java:745)\r\n",
"suppressedExceptions": [],
"class": "com.uber.cadence.converter.DataConverterException"
}
Input of workflow from Cadence UI:
[ "Peter", { "dateTime": { "date": { "year": 2020, "month": 7, "day": 16 }, "time": { "hour": 15, "minute": 38, "second": 38, "nano": 552000000 } }, "offset": { "totalSeconds": 21600 }, "zone": { "id": "Asia/Almaty" } } ]