• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

common-workflow-language / cwljava / #418

08 Dec 2025 09:55AM UTC coverage: 57.962% (-0.01%) from 57.972%
#418

Pull #218

github

web-flow
Merge b21aa5610 into 365de94c4
Pull Request #218: "id" is a required field in for `Parameter`s and `WorkflowStep`s

23 of 43 new or added lines in 12 files covered. (53.49%)

10 existing lines in 10 files now uncovered.

7735 of 13345 relevant lines covered (57.96%)

0.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.66
/src/main/java/org/commonwl/cwlsdk/cwl1_2/ExpressionToolOutputParameterImpl.java
1
// Copyright Common Workflow Language project contributors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//      http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15
package org.commonwl.cwlsdk.cwl1_2;
16

17
import org.commonwl.cwlsdk.cwl1_2.utils.LoaderInstances;
18
import org.commonwl.cwlsdk.cwl1_2.utils.LoadingOptions;
19
import org.commonwl.cwlsdk.cwl1_2.utils.LoadingOptionsBuilder;
20
import org.commonwl.cwlsdk.cwl1_2.utils.SaveableImpl;
21
import org.commonwl.cwlsdk.cwl1_2.utils.ValidationException;
22

23
/**
24
* Auto-generated class implementation for <I>https://w3id.org/cwl/cwl#ExpressionToolOutputParameter</I><BR>
25
 */
26
public class ExpressionToolOutputParameterImpl extends SaveableImpl implements ExpressionToolOutputParameter {
27
  private LoadingOptions loadingOptions_ = new LoadingOptionsBuilder().build();
1✔
28
  private java.util.Map<String, Object> extensionFields_ =
1✔
29
      new java.util.HashMap<String, Object>();
30
  public LoadingOptions getLoadingOptions() {
31
    return this.loadingOptions_;
×
32
  }
33
  public java.util.Map<String, Object> getExtensionFields() {
34
    return this.extensionFields_;
×
35
  }
36

37
  private String id;
38

39
  /**
40
   * Getter for property <I>https://w3id.org/cwl/cwl#Parameter/id</I><BR>
41
   * <BLOCKQUOTE>
42
   * The unique identifier for this Parameter.   * </BLOCKQUOTE>
43
   */
44

45
  public String getId() {
46
    return this.id;
×
47
  }
48

49
  private java.util.Optional<String> label;
50

51
  /**
52
   * Getter for property <I>https://w3id.org/cwl/cwl#Labeled/label</I><BR>
53
   * <BLOCKQUOTE>
54
   * A short, human-readable label of this object.   * </BLOCKQUOTE>
55
   */
56

57
  public java.util.Optional<String> getLabel() {
58
    return this.label;
×
59
  }
60

61
  private Object secondaryFiles;
62

63
  /**
64
   * Getter for property <I>https://w3id.org/cwl/cwl#secondaryFiles</I><BR>
65
   * <BLOCKQUOTE>
66
   * Only valid when `type: File` or is an array of `items: File`.
67
   * 
68
   * Provides a pattern or expression specifying files or
69
   * directories that should be included alongside the primary
70
   * file.  Secondary files may be required or optional.  When not
71
   * explicitly specified, secondary files specified for `inputs`
72
   * are required and `outputs` are optional.  An implementation
73
   * must include matching Files and Directories in the
74
   * `secondaryFiles` property of the primary file.  These Files
75
   * and Directories must be transferred and staged alongside the
76
   * primary file.  An implementation may fail workflow execution
77
   * if a required secondary file does not exist.
78
   * 
79
   * If the value is an expression, the value of `self` in the expression
80
   * must be the primary input or output File object to which this binding
81
   * applies.  The `basename`, `nameroot` and `nameext` fields must be
82
   * present in `self`.  For `CommandLineTool` outputs the `path` field must
83
   * also be present.  The expression must return a filename string relative
84
   * to the path to the primary File, a File or Directory object with either
85
   * `path` or `location` and `basename` fields set, or an array consisting
86
   * of strings or File or Directory objects.  It is legal to reference an
87
   * unchanged File or Directory object taken from input as a secondaryFile.
88
   * The expression may return &quot;null&quot; in which case there is no secondaryFile
89
   * from that expression.
90
   * 
91
   * To work on non-filename-preserving storage systems, portable tool
92
   * descriptions should avoid constructing new values from `location`, but
93
   * should construct relative references using `basename` or `nameroot`
94
   * instead.
95
   * 
96
   * If a value in `secondaryFiles` is a string that is not an expression,
97
   * it specifies that the following pattern should be applied to the path
98
   * of the primary file to yield a filename relative to the primary File:
99
   * 
100
   *   1. If string ends with `?` character, remove the last `?` and mark
101
   *     the resulting secondary file as optional.
102
   *   2. If string begins with one or more caret `^` characters, for each
103
   *     caret, remove the last file extension from the path (the last
104
   *     period `.` and all following characters).  If there are no file
105
   *     extensions, the path is unchanged.
106
   *   3. Append the remainder of the string to the end of the file path.
107
   *    * </BLOCKQUOTE>
108
   */
109

110
  public Object getSecondaryFiles() {
111
    return this.secondaryFiles;
×
112
  }
113

114
  private java.util.Optional<Boolean> streamable;
115

116
  /**
117
   * Getter for property <I>https://w3id.org/cwl/cwl#FieldBase/streamable</I><BR>
118
   * <BLOCKQUOTE>
119
   * Only valid when `type: File` or is an array of `items: File`.
120
   * 
121
   * A value of `true` indicates that the file is read or written
122
   * sequentially without seeking.  An implementation may use this flag to
123
   * indicate whether it is valid to stream file contents using a named
124
   * pipe.  Default: `false`.
125
   *    * </BLOCKQUOTE>
126
   */
127

128
  public java.util.Optional<Boolean> getStreamable() {
129
    return this.streamable;
×
130
  }
131

132
  private Object doc;
133

134
  /**
135
   * Getter for property <I>https://w3id.org/cwl/salad#Documented/doc</I><BR>
136
   * <BLOCKQUOTE>
137
   * A documentation string for this object, or an array of strings which should be concatenated.   * </BLOCKQUOTE>
138
   */
139

140
  public Object getDoc() {
141
    return this.doc;
×
142
  }
143

144
  private Object format;
145

146
  /**
147
   * Getter for property <I>https://w3id.org/cwl/cwl#format</I><BR>
148
   * <BLOCKQUOTE>
149
   * Only valid when `type: File` or is an array of `items: File`.
150
   * 
151
   * This is the file format that will be assigned to the output
152
   * File object.
153
   *    * </BLOCKQUOTE>
154
   */
155

156
  public Object getFormat() {
157
    return this.format;
×
158
  }
159

160
  private Object type;
161

162
  /**
163
   * Getter for property <I>https://w3id.org/cwl/salad#type</I><BR>
164
   * <BLOCKQUOTE>
165
   * Specify valid types of data that may be assigned to this parameter.
166
   * Note that this field just acts as a hint, as the outputs of an
167
   * ExpressionTool process are always considered valid.
168
   *    * </BLOCKQUOTE>
169
   */
170

171
  public Object getType() {
172
    return this.type;
×
173
  }
174

175
  /**
176
   * Used by {@link org.commonwl.cwlsdk.cwl1_2.utils.RootLoader} to construct instances of ExpressionToolOutputParameterImpl.
177
   *
178
   * @param __doc_            Document fragment to load this record object from (presumably a
179
                              {@link java.util.Map}).
180
   * @param __baseUri_        Base URI to generate child document IDs against.
181
   * @param __loadingOptions  Context for loading URIs and populating objects.
182
   * @param __docRoot_        ID at this position in the document (if available) (maybe?)
183
   * @throws ValidationException If the document fragment is not a {@link java.util.Map}
184
   *                             or validation of fields fails.
185
   */
186
  public ExpressionToolOutputParameterImpl(
187
      final Object __doc_,
188
      final String __baseUri_,
189
      LoadingOptions __loadingOptions,
190
      final String __docRoot_) {
191
    super(__doc_, __baseUri_, __loadingOptions, __docRoot_);
1✔
192
    // Prefix plumbing variables with '__' to reduce likelihood of collision with
193
    // generated names.
194
    String __baseUri = __baseUri_;
1✔
195
    String __docRoot = __docRoot_;
1✔
196
    if (!(__doc_ instanceof java.util.Map)) {
1✔
197
      throw new ValidationException("ExpressionToolOutputParameterImpl called on non-map");
×
198
    }
199
    final java.util.Map<String, Object> __doc = (java.util.Map<String, Object>) __doc_;
1✔
200
    final java.util.List<ValidationException> __errors =
1✔
201
        new java.util.ArrayList<ValidationException>();
202
    if (__loadingOptions != null) {
1✔
203
      this.loadingOptions_ = __loadingOptions;
1✔
204
    }
205
    String id;
206

207
    if (__doc.containsKey("id")) {
1✔
208
      try {
209
        id =
1✔
210
            LoaderInstances
211
                .uri_StringInstance_True_False_None_None
212
                .loadField(__doc.get("id"), __baseUri, __loadingOptions);
1✔
213
      } catch (ValidationException e) {
×
214
        id = null; // won't be used but prevents compiler from complaining.
×
215
        final String __message = "the `id` field is not valid because:";
×
216
        __errors.add(new ValidationException(__message, e));
×
217
      }
1✔
218

219
    } else {
220
      id = null;
×
221
    }
222

223
    if (id == null) {
1✔
UNCOV
224
      if (__docRoot != null) {
×
NEW
225
        id = __docRoot;
×
226
      } else {
NEW
227
        throw new ValidationException("Missing id");
×
228
      }
229
    }
230
    __baseUri = (String) id;
1✔
231
    java.util.Optional<String> label;
232

233
    if (__doc.containsKey("label")) {
1✔
234
      try {
235
        label =
×
236
            LoaderInstances
237
                .optional_StringInstance
238
                .loadField(__doc.get("label"), __baseUri, __loadingOptions);
×
239
      } catch (ValidationException e) {
×
240
        label = null; // won't be used but prevents compiler from complaining.
×
241
        final String __message = "the `label` field is not valid because:";
×
242
        __errors.add(new ValidationException(__message, e));
×
243
      }
×
244

245
    } else {
246
      label = null;
1✔
247
    }
248
    Object secondaryFiles;
249

250
    if (__doc.containsKey("secondaryFiles")) {
1✔
251
      try {
252
        secondaryFiles =
×
253
            LoaderInstances
254
                .secondaryfilesdsl_union_of_NullInstance_or_SecondaryFileSchema_or_array_of_SecondaryFileSchema
255
                .loadField(__doc.get("secondaryFiles"), __baseUri, __loadingOptions);
×
256
      } catch (ValidationException e) {
×
257
        secondaryFiles = null; // won't be used but prevents compiler from complaining.
×
258
        final String __message = "the `secondaryFiles` field is not valid because:";
×
259
        __errors.add(new ValidationException(__message, e));
×
260
      }
×
261

262
    } else {
263
      secondaryFiles = null;
1✔
264
    }
265
    java.util.Optional<Boolean> streamable;
266

267
    if (__doc.containsKey("streamable")) {
1✔
268
      try {
269
        streamable =
×
270
            LoaderInstances
271
                .optional_BooleanInstance
272
                .loadField(__doc.get("streamable"), __baseUri, __loadingOptions);
×
273
      } catch (ValidationException e) {
×
274
        streamable = null; // won't be used but prevents compiler from complaining.
×
275
        final String __message = "the `streamable` field is not valid because:";
×
276
        __errors.add(new ValidationException(__message, e));
×
277
      }
×
278

279
    } else {
280
      streamable = null;
1✔
281
    }
282
    Object doc;
283

284
    if (__doc.containsKey("doc")) {
1✔
285
      try {
286
        doc =
1✔
287
            LoaderInstances
288
                .union_of_NullInstance_or_StringInstance_or_array_of_StringInstance
289
                .loadField(__doc.get("doc"), __baseUri, __loadingOptions);
1✔
290
      } catch (ValidationException e) {
×
291
        doc = null; // won't be used but prevents compiler from complaining.
×
292
        final String __message = "the `doc` field is not valid because:";
×
293
        __errors.add(new ValidationException(__message, e));
×
294
      }
1✔
295

296
    } else {
297
      doc = null;
1✔
298
    }
299
    Object format;
300

301
    if (__doc.containsKey("format")) {
1✔
302
      try {
303
        format =
×
304
            LoaderInstances
305
                .uri_union_of_NullInstance_or_StringInstance_or_ExpressionLoader_True_False_None_True
306
                .loadField(__doc.get("format"), __baseUri, __loadingOptions);
×
307
      } catch (ValidationException e) {
×
308
        format = null; // won't be used but prevents compiler from complaining.
×
309
        final String __message = "the `format` field is not valid because:";
×
310
        __errors.add(new ValidationException(__message, e));
×
311
      }
×
312

313
    } else {
314
      format = null;
1✔
315
    }
316
    Object type;
317
    try {
318
      type =
1✔
319
          LoaderInstances
320
              .typedsl_union_of_CWLType_or_OutputRecordSchema_or_OutputEnumSchema_or_OutputArraySchema_or_StringInstance_or_array_of_union_of_CWLType_or_OutputRecordSchema_or_OutputEnumSchema_or_OutputArraySchema_or_StringInstance_2
321
              .loadField(__doc.get("type"), __baseUri, __loadingOptions);
1✔
322
    } catch (ValidationException e) {
×
323
      type = null; // won't be used but prevents compiler from complaining.
×
324
      final String __message = "the `type` field is not valid because:";
×
325
      __errors.add(new ValidationException(__message, e));
×
326
    }
1✔
327
    if (!__errors.isEmpty()) {
1✔
328
      throw new ValidationException("Trying 'RecordField'", __errors);
×
329
    }
330
    this.label = (java.util.Optional<String>) label;
1✔
331
    this.secondaryFiles = (Object) secondaryFiles;
1✔
332
    this.streamable = (java.util.Optional<Boolean>) streamable;
1✔
333
    this.doc = (Object) doc;
1✔
334
    this.id = (String) id;
1✔
335
    this.format = (Object) format;
1✔
336
    this.type = (Object) type;
1✔
337
    for (String field:__doc.keySet()) {
1✔
338
      if (!attrs.contains(field)) {
1✔
339
        if (field.contains(":")) {
1✔
340
          String expanded_field = __loadingOptions.expandUrl(field, "", false, false, null);
×
341
          extensionFields_.put(expanded_field, __doc.get(field));
×
342
        }
343
      }
344
    }
1✔
345
  }
1✔
346
  private java.util.List<String> attrs = java.util.Arrays.asList("label", "secondaryFiles", "streamable", "doc", "id", "format", "type");
1✔
347
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc