24
24
import io .serverlessworkflow .api .types .SchemaExternal ;
25
25
import io .serverlessworkflow .api .types .SchemaInline ;
26
26
import io .serverlessworkflow .api .types .SchemaUnion ;
27
+ import io .serverlessworkflow .api .types .UriTemplate ;
27
28
import io .serverlessworkflow .impl .expressions .Expression ;
28
29
import io .serverlessworkflow .impl .expressions .ExpressionFactory ;
29
30
import io .serverlessworkflow .impl .expressions .ExpressionUtils ;
35
36
import java .io .IOException ;
36
37
import java .io .InputStream ;
37
38
import java .io .UncheckedIOException ;
39
+ import java .net .URI ;
40
+ import java .util .Date ;
38
41
import java .util .Map ;
39
42
import java .util .Optional ;
43
+ import java .util .function .Function ;
40
44
41
45
public class WorkflowUtils {
42
46
@@ -80,6 +84,21 @@ public static Optional<WorkflowFilter> buildWorkflowFilter(
80
84
? Optional .of (buildWorkflowFilter (exprFactory , as .getString (), as .getObject ()))
81
85
: Optional .empty ();
82
86
}
87
+
88
+ public static <T > ExpressionHolder <T > buildExpressionHolder (ExpressionFactory exprFactory , String expression , T literal , Function <JsonNode ,T > converter ) {
89
+ return expression != null
90
+ ? buildExpressionHolder (buildWorkflowFilter (exprFactory , expression ),converter )
91
+ : buildExpressionHolder (literal );
92
+ }
93
+
94
+ private static <T > ExpressionHolder <T > buildExpressionHolder (WorkflowFilter filter , Function <JsonNode ,T > converter ) {
95
+ return (w , t ) -> converter .apply (filter .apply (w , t , t .input ()));
96
+ }
97
+
98
+
99
+ private static <T > ExpressionHolder <T > buildExpressionHolder (T literal ) {
100
+ return (w , t ) -> literal ;
101
+ }
83
102
84
103
public static Optional <WorkflowFilter > buildWorkflowFilter (
85
104
ExpressionFactory exprFactory , ExportAs as ) {
@@ -95,19 +114,21 @@ public static StringFilter buildStringFilter(
95
114
: toString (literal );
96
115
}
97
116
117
+
98
118
public static StringFilter buildStringFilter (ExpressionFactory exprFactory , String str ) {
99
119
return ExpressionUtils .isExpr (str )
100
120
? toString (buildWorkflowFilter (exprFactory , str ))
101
121
: toString (str );
102
122
}
103
-
123
+
104
124
private static StringFilter toString (WorkflowFilter filter ) {
105
125
return (w , t ) -> filter .apply (w , t , t .input ()).asText ();
106
126
}
107
127
108
128
private static StringFilter toString (String literal ) {
109
129
return (w , t ) -> literal ;
110
130
}
131
+
111
132
112
133
private static WorkflowFilter buildWorkflowFilter (
113
134
ExpressionFactory exprFactory , String str , Object object ) {
@@ -148,4 +169,9 @@ public static WorkflowFilter buildWorkflowFilter(ExpressionFactory exprFactory,
148
169
public static Optional <WorkflowFilter > optionalFilter (ExpressionFactory exprFactory , String str ) {
149
170
return str != null ? Optional .of (buildWorkflowFilter (exprFactory , str )) : Optional .empty ();
150
171
}
172
+
173
+ public static String toString (UriTemplate template ) {
174
+ URI uri = template .getLiteralUri ();
175
+ return uri != null ? uri .toString () : template .getLiteralUriTemplate ();
176
+ }
151
177
}
0 commit comments