22
33import com .google .common .base .Defaults ;
44import io .temporal .failure .ActivityFailure ;
5+ import io .temporal .workflow .ActivityInvocationOptions ;
56import io .temporal .workflow .ActivityStub ;
67import io .temporal .workflow .Promise ;
78import java .lang .reflect .Type ;
89
9- /** Supports calling activity by name and arguments without its strongly typed interface. */
10+ /** Supports calling an activity by name and arguments without its strongly typed interface. */
1011abstract class ActivityStubBase implements ActivityStub {
1112
1213 @ Override
@@ -16,7 +17,63 @@ public <T> T execute(String activityName, Class<T> resultClass, Object... args)
1617
1718 @ Override
1819 public <T > T execute (String activityName , Class <T > resultClass , Type resultType , Object ... args ) {
19- Promise <T > result = executeAsync (activityName , resultClass , resultType , args );
20+ return getResult (executeAsync (activityName , resultClass , resultType , args ), resultClass );
21+ }
22+
23+ @ Override
24+ public <R > R execute (
25+ String activityName ,
26+ Class <R > resultClass ,
27+ ActivityInvocationOptions options ,
28+ Object ... args ) {
29+ return execute (activityName , resultClass , resultClass , options , args );
30+ }
31+
32+ @ Override
33+ public abstract <R > R execute (
34+ String activityName ,
35+ Class <R > resultClass ,
36+ Type resultType ,
37+ ActivityInvocationOptions options ,
38+ Object ... args );
39+
40+ @ Override
41+ public <R > Promise <R > executeAsync (String activityName , Class <R > resultClass , Object ... args ) {
42+ return executeAsync (activityName , resultClass , resultClass , args );
43+ }
44+
45+ @ Override
46+ public <R > Promise <R > executeAsync (
47+ String activityName , Class <R > resultClass , Type resultType , Object ... args ) {
48+ return executeAsync (
49+ activityName ,
50+ resultClass ,
51+ resultType ,
52+ ActivityInvocationOptions .getDefaultInstance (),
53+ args );
54+ }
55+
56+ @ Override
57+ public <R > Promise <R > executeAsync (
58+ String activityName ,
59+ Class <R > resultClass ,
60+ ActivityInvocationOptions options ,
61+ Object ... args ) {
62+ return executeAsync (activityName , resultClass , resultClass , options , args );
63+ }
64+
65+ @ Override
66+ public abstract <R > Promise <R > executeAsync (
67+ String activityName ,
68+ Class <R > resultClass ,
69+ Type resultType ,
70+ ActivityInvocationOptions options ,
71+ Object ... args );
72+
73+ protected <R > R getResult (Promise <R > result , Class <R > resultClass ) {
74+ if (ActivityInvocationInternal .captureResult (result )) {
75+ return Defaults .defaultValue (resultClass );
76+ }
2077 if (AsyncInternal .isAsync ()) {
2178 AsyncInternal .setAsyncResult (result );
2279 return Defaults .defaultValue (resultClass );
@@ -31,13 +88,4 @@ public <T> T execute(String activityName, Class<T> resultClass, Type resultType,
3188 throw e ;
3289 }
3390 }
34-
35- @ Override
36- public <R > Promise <R > executeAsync (String activityName , Class <R > resultClass , Object ... args ) {
37- return executeAsync (activityName , resultClass , resultClass , args );
38- }
39-
40- @ Override
41- public abstract <R > Promise <R > executeAsync (
42- String activityName , Class <R > resultClass , Type resultType , Object ... args );
4391}
0 commit comments