22
22
import java .util .Map ;
23
23
import java .util .Objects ;
24
24
import java .util .stream .Stream ;
25
+
25
26
import javax .naming .OperationNotSupportedException ;
26
27
27
28
import org .springframework .cloud .dataflow .rest .client .support .VersionUtils ;
@@ -69,6 +70,8 @@ public class TaskTemplate implements TaskOperations {
69
70
70
71
private static final String VALIDATION_THIN_TASK_VERSION = "2.11.3" ;
71
72
73
+ private static final String VALIDATION_TASK_LAUNCH_VERSION = "2.11.0" ;
74
+
72
75
private static final String EXECUTIONS_RELATION = "tasks/executions" ;
73
76
74
77
private static final String THIN_EXECUTIONS_RELATION = "tasks/thinexecutions" ;
@@ -131,8 +134,7 @@ public class TaskTemplate implements TaskOperations {
131
134
EXECUTION_RELATION_BY_NAME ,
132
135
EXECUTIONS_INFO_RELATION ,
133
136
PLATFORM_LIST_RELATION ,
134
- RETRIEVE_LOG ,
135
- VALIDATION_REL
137
+ RETRIEVE_LOG
136
138
).forEach (relation -> {
137
139
Assert .isTrue (resources .getLink (relation ).isPresent (), () -> relation + " relation is required" );
138
140
});
@@ -143,8 +145,11 @@ public class TaskTemplate implements TaskOperations {
143
145
String version = VersionUtils .getThreePartVersion (dataFlowServerVersion );
144
146
if (VersionUtils .isDataFlowServerVersionGreaterThanOrEqualToRequiredVersion (version , VALIDATION_RELATION_VERSION )) {
145
147
Assert .isTrue (resources .getLink (VALIDATION_REL ).isPresent (), ()->VALIDATION_REL + " relation is required" );
146
-
148
+ this .validationLink = resources .getLink (VALIDATION_REL ).get ();
149
+ } else {
150
+ this .validationLink = null ;
147
151
}
152
+
148
153
// TODO early 2.11.3-SNAPSHOT version didn't have this. Remove && resources.getLink(THIN_EXECUTIONS_RELATION).isPresent() when releasing 2.11.3
149
154
if (VersionUtils .isDataFlowServerVersionGreaterThanOrEqualToRequiredVersion (version , VALIDATION_THIN_TASK_VERSION ) && resources .getLink (THIN_EXECUTIONS_RELATION ).isPresent ()) {
150
155
Assert .isTrue (resources .getLink (THIN_EXECUTIONS_RELATION ).isPresent (), () -> THIN_EXECUTIONS_RELATION + " relation is required" );
@@ -153,6 +158,12 @@ public class TaskTemplate implements TaskOperations {
153
158
this .thinExecutionsLink = null ;
154
159
}
155
160
161
+ if (VersionUtils .isDataFlowServerVersionGreaterThanOrEqualToRequiredVersion (version , VALIDATION_TASK_LAUNCH_VERSION )) {
162
+ Assert .isTrue (resources .getLink (EXECUTION_LAUNCH_RELATION ).isPresent (), () -> EXECUTION_LAUNCH_RELATION + " relation is required" );
163
+ this .executionLaunchLink = resources .getLink (EXECUTION_LAUNCH_RELATION ).get ();
164
+ } else {
165
+ this .executionLaunchLink = null ;
166
+ }
156
167
157
168
if (VersionUtils .isDataFlowServerVersionGreaterThanOrEqualToRequiredVersion (version , EXECUTIONS_CURRENT_RELATION_VERSION )) {
158
169
Assert .isTrue (resources .getLink (EXECUTIONS_CURRENT_RELATION ).isPresent (), ()-> EXECUTIONS_CURRENT_RELATION + " relation is required" );
@@ -161,12 +172,11 @@ public class TaskTemplate implements TaskOperations {
161
172
this .executionsCurrentLink = null ;
162
173
}
163
174
this .aboutLink = resources .getLink ("about" ).get ();
164
- this . validationLink = resources . getLink ( VALIDATION_REL ). get ();
175
+
165
176
this .definitionsLink = resources .getLink (DEFINITIONS_RELATION ).get ();
166
177
this .definitionLink = resources .getLink (DEFINITION_RELATION ).get ();
167
178
this .executionsLink = resources .getLink (EXECUTIONS_RELATION ).get ();
168
179
this .executionLink = resources .getLink (EXECUTION_RELATION ).get ();
169
- this .executionLaunchLink = resources .getLink (EXECUTION_LAUNCH_RELATION ).get ();
170
180
this .executionByNameLink = resources .getLink (EXECUTION_RELATION_BY_NAME ).get ();
171
181
this .executionsInfoLink = resources .getLink (EXECUTIONS_INFO_RELATION ).get ();
172
182
this .platformListLink = resources .getLink (PLATFORM_LIST_RELATION ).get ();
@@ -274,8 +284,11 @@ public TaskExecutionResource.Page executionList() {
274
284
275
285
@ Override
276
286
public PagedModel <TaskExecutionThinResource > thinExecutionList () {
277
- Assert .notNull (thinExecutionsLink , "Expected link:" + THIN_EXECUTIONS_RELATION );
278
- return restTemplate .getForObject (thinExecutionsLink .getHref (), TaskExecutionThinResource .Page .class );
287
+ if (thinExecutionsLink != null ) {
288
+ return restTemplate .getForObject (thinExecutionsLink .getHref (), TaskExecutionThinResource .Page .class );
289
+ } else {
290
+ return restTemplate .getForObject (executionsLink .getHref (), TaskExecutionThinResource .Page .class );
291
+ }
279
292
}
280
293
281
294
@ Override
0 commit comments