1 package gov.nist.secauto.oscal.lib.model;
2
3 import gov.nist.secauto.metaschema.binding.model.annotations.AllowedValue;
4 import gov.nist.secauto.metaschema.binding.model.annotations.AllowedValues;
5 import gov.nist.secauto.metaschema.binding.model.annotations.AssemblyConstraints;
6 import gov.nist.secauto.metaschema.binding.model.annotations.BoundAssembly;
7 import gov.nist.secauto.metaschema.binding.model.annotations.BoundField;
8 import gov.nist.secauto.metaschema.binding.model.annotations.BoundFieldValue;
9 import gov.nist.secauto.metaschema.binding.model.annotations.BoundFlag;
10 import gov.nist.secauto.metaschema.binding.model.annotations.GroupAs;
11 import gov.nist.secauto.metaschema.binding.model.annotations.IsUnique;
12 import gov.nist.secauto.metaschema.binding.model.annotations.KeyField;
13 import gov.nist.secauto.metaschema.binding.model.annotations.MetaschemaAssembly;
14 import gov.nist.secauto.metaschema.binding.model.annotations.ValueConstraints;
15 import gov.nist.secauto.metaschema.model.common.JsonGroupAsBehavior;
16 import gov.nist.secauto.metaschema.model.common.constraint.IConstraint;
17 import gov.nist.secauto.metaschema.model.common.datatype.adapter.DateTimeWithTZAdapter;
18 import gov.nist.secauto.metaschema.model.common.datatype.adapter.PositiveIntegerAdapter;
19 import gov.nist.secauto.metaschema.model.common.datatype.adapter.StringAdapter;
20 import gov.nist.secauto.metaschema.model.common.datatype.adapter.TokenAdapter;
21 import gov.nist.secauto.metaschema.model.common.datatype.adapter.UuidAdapter;
22 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLine;
23 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLineAdapter;
24 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline;
25 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultilineAdapter;
26 import gov.nist.secauto.metaschema.model.common.util.ObjectUtils;
27 import java.lang.Override;
28 import java.lang.String;
29 import java.math.BigInteger;
30 import java.time.ZonedDateTime;
31 import java.util.LinkedList;
32 import java.util.List;
33 import java.util.UUID;
34 import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle;
35 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
36
37
38
39
40 @MetaschemaAssembly(
41 formalName = "Task",
42 description = "Represents a scheduled event or milestone, which may be associated with a series of assessment actions.",
43 name = "task",
44 metaschema = OscalAssessmentCommonMetaschema.class
45 )
46 public class Task {
47 @BoundFlag(
48 formalName = "Task Universally Unique Identifier",
49 description = "A [machine-oriented](https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented), [globally unique](https://pages.nist.gov/OSCAL/concepts/identifier-use/#globally-unique) identifier with [cross-instance](https://pages.nist.gov/OSCAL/concepts/identifier-use/#cross-instance) scope that can be used to reference this task elsewhere in [this or other OSCAL instances](https://pages.nist.gov/OSCAL/concepts/identifier-use/#scope). The locally defined *UUID* of the `task` can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned [per-subject](https://pages.nist.gov/OSCAL/concepts/identifier-use/#consistency), which means it should be consistently used to identify the same subject across revisions of the document.",
50 useName = "uuid",
51 required = true,
52 typeAdapter = UuidAdapter.class
53 )
54 private UUID _uuid;
55
56 @BoundFlag(
57 formalName = "Task Type",
58 description = "The type of task.",
59 useName = "type",
60 required = true,
61 typeAdapter = TokenAdapter.class
62 )
63 @ValueConstraints(
64 allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, allowOthers = true, values = {@AllowedValue(value = "milestone", description = "The task represents a planned milestone."), @AllowedValue(value = "action", description = "The task represents a specific assessment action to be performed.")})
65 )
66 private String _type;
67
68
69
70
71 @BoundField(
72 formalName = "Task Title",
73 description = "The title for this task.",
74 useName = "title",
75 minOccurs = 1
76 )
77 @BoundFieldValue(
78 typeAdapter = MarkupLineAdapter.class
79 )
80 private MarkupLine _title;
81
82
83
84
85 @BoundField(
86 formalName = "Task Description",
87 description = "A human-readable description of this task.",
88 useName = "description"
89 )
90 @BoundFieldValue(
91 typeAdapter = MarkupMultilineAdapter.class
92 )
93 private MarkupMultiline _description;
94
95 @BoundAssembly(
96 formalName = "Property",
97 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
98 useName = "prop",
99 maxOccurs = -1
100 )
101 @GroupAs(
102 name = "props",
103 inJson = JsonGroupAsBehavior.LIST
104 )
105 private List<Property> _props;
106
107 @BoundAssembly(
108 formalName = "Link",
109 description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
110 useName = "link",
111 maxOccurs = -1
112 )
113 @GroupAs(
114 name = "links",
115 inJson = JsonGroupAsBehavior.LIST
116 )
117 private List<Link> _links;
118
119
120
121
122 @BoundAssembly(
123 formalName = "Event Timing",
124 description = "The timing under which the task is intended to occur.",
125 useName = "timing"
126 )
127 private Timing _timing;
128
129
130
131
132 @BoundAssembly(
133 formalName = "Task Dependency",
134 description = "Used to indicate that a task is dependent on another task.",
135 useName = "dependency",
136 maxOccurs = -1
137 )
138 @GroupAs(
139 name = "dependencies",
140 inJson = JsonGroupAsBehavior.LIST
141 )
142 private List<Dependency> _dependencies;
143
144 @BoundAssembly(
145 formalName = "Task",
146 description = "Represents a scheduled event or milestone, which may be associated with a series of assessment actions.",
147 useName = "task",
148 maxOccurs = -1
149 )
150 @GroupAs(
151 name = "tasks",
152 inJson = JsonGroupAsBehavior.LIST
153 )
154 private List<Task> _tasks;
155
156
157
158
159 @BoundAssembly(
160 formalName = "Associated Activity",
161 description = "Identifies an individual activity to be performed as part of a task.",
162 useName = "associated-activity",
163 maxOccurs = -1
164 )
165 @GroupAs(
166 name = "associated-activities",
167 inJson = JsonGroupAsBehavior.LIST
168 )
169 private List<AssociatedActivity> _associatedActivities;
170
171 @BoundAssembly(
172 formalName = "Subject of Assessment",
173 description = "Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope.",
174 useName = "subject",
175 maxOccurs = -1,
176 remarks = "The assessment subjects that the activity was performed against."
177 )
178 @GroupAs(
179 name = "subjects",
180 inJson = JsonGroupAsBehavior.LIST
181 )
182 private List<AssessmentSubject> _subjects;
183
184 @BoundAssembly(
185 formalName = "Responsible Role",
186 description = "A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.",
187 useName = "responsible-role",
188 maxOccurs = -1,
189 remarks = "Identifies the person or organization responsible for performing a specific role related to the task."
190 )
191 @GroupAs(
192 name = "responsible-roles",
193 inJson = JsonGroupAsBehavior.LIST
194 )
195 private List<ResponsibleRole> _responsibleRoles;
196
197 @BoundField(
198 formalName = "Remarks",
199 description = "Additional commentary about the containing object.",
200 useName = "remarks"
201 )
202 @BoundFieldValue(
203 typeAdapter = MarkupMultilineAdapter.class
204 )
205 private MarkupMultiline _remarks;
206
207 public Task() {
208 }
209
210 public UUID getUuid() {
211 return _uuid;
212 }
213
214 public void setUuid(UUID value) {
215 _uuid = value;
216 }
217
218 public String getType() {
219 return _type;
220 }
221
222 public void setType(String value) {
223 _type = value;
224 }
225
226 public MarkupLine getTitle() {
227 return _title;
228 }
229
230 public void setTitle(MarkupLine value) {
231 _title = value;
232 }
233
234 public MarkupMultiline getDescription() {
235 return _description;
236 }
237
238 public void setDescription(MarkupMultiline value) {
239 _description = value;
240 }
241
242 public List<Property> getProps() {
243 return _props;
244 }
245
246 public void setProps(List<Property> value) {
247 _props = value;
248 }
249
250
251
252
253
254
255 public boolean addProp(Property item) {
256 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
257 if (_props == null) {
258 _props = new LinkedList<>();
259 }
260 return _props.add(value);
261 }
262
263
264
265
266
267
268 public boolean removeProp(Property item) {
269 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
270 return _props == null ? false : _props.remove(value);
271 }
272
273 public List<Link> getLinks() {
274 return _links;
275 }
276
277 public void setLinks(List<Link> value) {
278 _links = value;
279 }
280
281
282
283
284
285
286 public boolean addLink(Link item) {
287 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
288 if (_links == null) {
289 _links = new LinkedList<>();
290 }
291 return _links.add(value);
292 }
293
294
295
296
297
298
299 public boolean removeLink(Link item) {
300 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
301 return _links == null ? false : _links.remove(value);
302 }
303
304 public Timing getTiming() {
305 return _timing;
306 }
307
308 public void setTiming(Timing value) {
309 _timing = value;
310 }
311
312 public List<Dependency> getDependencies() {
313 return _dependencies;
314 }
315
316 public void setDependencies(List<Dependency> value) {
317 _dependencies = value;
318 }
319
320
321
322
323
324
325 public boolean addDependency(Dependency item) {
326 Dependency value = ObjectUtils.requireNonNull(item,"item cannot be null");
327 if (_dependencies == null) {
328 _dependencies = new LinkedList<>();
329 }
330 return _dependencies.add(value);
331 }
332
333
334
335
336
337
338 public boolean removeDependency(Dependency item) {
339 Dependency value = ObjectUtils.requireNonNull(item,"item cannot be null");
340 return _dependencies == null ? false : _dependencies.remove(value);
341 }
342
343 public List<Task> getTasks() {
344 return _tasks;
345 }
346
347 public void setTasks(List<Task> value) {
348 _tasks = value;
349 }
350
351
352
353
354
355
356 public boolean addTask(Task item) {
357 Task value = ObjectUtils.requireNonNull(item,"item cannot be null");
358 if (_tasks == null) {
359 _tasks = new LinkedList<>();
360 }
361 return _tasks.add(value);
362 }
363
364
365
366
367
368
369 public boolean removeTask(Task item) {
370 Task value = ObjectUtils.requireNonNull(item,"item cannot be null");
371 return _tasks == null ? false : _tasks.remove(value);
372 }
373
374 public List<AssociatedActivity> getAssociatedActivities() {
375 return _associatedActivities;
376 }
377
378 public void setAssociatedActivities(List<AssociatedActivity> value) {
379 _associatedActivities = value;
380 }
381
382
383
384
385
386
387 public boolean addAssociatedActivity(AssociatedActivity item) {
388 AssociatedActivity value = ObjectUtils.requireNonNull(item,"item cannot be null");
389 if (_associatedActivities == null) {
390 _associatedActivities = new LinkedList<>();
391 }
392 return _associatedActivities.add(value);
393 }
394
395
396
397
398
399
400 public boolean removeAssociatedActivity(AssociatedActivity item) {
401 AssociatedActivity value = ObjectUtils.requireNonNull(item,"item cannot be null");
402 return _associatedActivities == null ? false : _associatedActivities.remove(value);
403 }
404
405 public List<AssessmentSubject> getSubjects() {
406 return _subjects;
407 }
408
409 public void setSubjects(List<AssessmentSubject> value) {
410 _subjects = value;
411 }
412
413
414
415
416
417
418 public boolean addSubject(AssessmentSubject item) {
419 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null");
420 if (_subjects == null) {
421 _subjects = new LinkedList<>();
422 }
423 return _subjects.add(value);
424 }
425
426
427
428
429
430
431 public boolean removeSubject(AssessmentSubject item) {
432 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null");
433 return _subjects == null ? false : _subjects.remove(value);
434 }
435
436 public List<ResponsibleRole> getResponsibleRoles() {
437 return _responsibleRoles;
438 }
439
440 public void setResponsibleRoles(List<ResponsibleRole> value) {
441 _responsibleRoles = value;
442 }
443
444
445
446
447
448
449 public boolean addResponsibleRole(ResponsibleRole item) {
450 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null");
451 if (_responsibleRoles == null) {
452 _responsibleRoles = new LinkedList<>();
453 }
454 return _responsibleRoles.add(value);
455 }
456
457
458
459
460
461
462 public boolean removeResponsibleRole(ResponsibleRole item) {
463 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null");
464 return _responsibleRoles == null ? false : _responsibleRoles.remove(value);
465 }
466
467 public MarkupMultiline getRemarks() {
468 return _remarks;
469 }
470
471 public void setRemarks(MarkupMultiline value) {
472 _remarks = value;
473 }
474
475 @Override
476 public String toString() {
477 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
478 }
479
480
481
482
483 @MetaschemaAssembly(
484 formalName = "Event Timing",
485 description = "The timing under which the task is intended to occur.",
486 name = "timing",
487 metaschema = OscalAssessmentCommonMetaschema.class
488 )
489 public static class Timing {
490
491
492
493 @BoundAssembly(
494 formalName = "On Date Condition",
495 description = "The task is intended to occur on the specified date.",
496 useName = "on-date",
497 minOccurs = 1
498 )
499 private OnDate _onDate;
500
501
502
503
504 @BoundAssembly(
505 formalName = "On Date Range Condition",
506 description = "The task is intended to occur within the specified date range.",
507 useName = "within-date-range",
508 minOccurs = 1
509 )
510 private WithinDateRange _withinDateRange;
511
512
513
514
515 @BoundAssembly(
516 formalName = "Frequency Condition",
517 description = "The task is intended to occur at the specified frequency.",
518 useName = "at-frequency",
519 minOccurs = 1
520 )
521 private AtFrequency _atFrequency;
522
523 public Timing() {
524 }
525
526 public OnDate getOnDate() {
527 return _onDate;
528 }
529
530 public void setOnDate(OnDate value) {
531 _onDate = value;
532 }
533
534 public WithinDateRange getWithinDateRange() {
535 return _withinDateRange;
536 }
537
538 public void setWithinDateRange(WithinDateRange value) {
539 _withinDateRange = value;
540 }
541
542 public AtFrequency getAtFrequency() {
543 return _atFrequency;
544 }
545
546 public void setAtFrequency(AtFrequency value) {
547 _atFrequency = value;
548 }
549
550 @Override
551 public String toString() {
552 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
553 }
554
555
556
557
558 @MetaschemaAssembly(
559 formalName = "Frequency Condition",
560 description = "The task is intended to occur at the specified frequency.",
561 name = "at-frequency",
562 metaschema = OscalAssessmentCommonMetaschema.class
563 )
564 public static class AtFrequency {
565 @BoundFlag(
566 formalName = "Period",
567 description = "The task must occur after the specified period has elapsed.",
568 useName = "period",
569 required = true,
570 typeAdapter = PositiveIntegerAdapter.class
571 )
572 private BigInteger _period;
573
574 @BoundFlag(
575 formalName = "Time Unit",
576 description = "The unit of time for the period.",
577 useName = "unit",
578 required = true,
579 typeAdapter = StringAdapter.class
580 )
581 @ValueConstraints(
582 allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, values = {@AllowedValue(value = "seconds", description = "The period is specified in seconds."), @AllowedValue(value = "minutes", description = "The period is specified in minutes."), @AllowedValue(value = "hours", description = "The period is specified in hours."), @AllowedValue(value = "days", description = "The period is specified in days."), @AllowedValue(value = "months", description = "The period is specified in calendar months."), @AllowedValue(value = "years", description = "The period is specified in calendar years.")})
583 )
584 private String _unit;
585
586 public AtFrequency() {
587 }
588
589 public BigInteger getPeriod() {
590 return _period;
591 }
592
593 public void setPeriod(BigInteger value) {
594 _period = value;
595 }
596
597 public String getUnit() {
598 return _unit;
599 }
600
601 public void setUnit(String value) {
602 _unit = value;
603 }
604
605 @Override
606 public String toString() {
607 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
608 }
609 }
610
611
612
613
614 @MetaschemaAssembly(
615 formalName = "On Date Range Condition",
616 description = "The task is intended to occur within the specified date range.",
617 name = "within-date-range",
618 metaschema = OscalAssessmentCommonMetaschema.class
619 )
620 public static class WithinDateRange {
621 @BoundFlag(
622 formalName = "Start Date Condition",
623 description = "The task must occur on or after the specified date.",
624 useName = "start",
625 required = true,
626 typeAdapter = DateTimeWithTZAdapter.class
627 )
628 private ZonedDateTime _start;
629
630 @BoundFlag(
631 formalName = "End Date Condition",
632 description = "The task must occur on or before the specified date.",
633 useName = "end",
634 required = true,
635 typeAdapter = DateTimeWithTZAdapter.class
636 )
637 private ZonedDateTime _end;
638
639 public WithinDateRange() {
640 }
641
642 public ZonedDateTime getStart() {
643 return _start;
644 }
645
646 public void setStart(ZonedDateTime value) {
647 _start = value;
648 }
649
650 public ZonedDateTime getEnd() {
651 return _end;
652 }
653
654 public void setEnd(ZonedDateTime value) {
655 _end = value;
656 }
657
658 @Override
659 public String toString() {
660 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
661 }
662 }
663
664
665
666
667 @MetaschemaAssembly(
668 formalName = "On Date Condition",
669 description = "The task is intended to occur on the specified date.",
670 name = "on-date",
671 metaschema = OscalAssessmentCommonMetaschema.class
672 )
673 public static class OnDate {
674 @BoundFlag(
675 formalName = "On Date Condition",
676 description = "The task must occur on the specified date.",
677 useName = "date",
678 required = true,
679 typeAdapter = DateTimeWithTZAdapter.class
680 )
681 private ZonedDateTime _date;
682
683 public OnDate() {
684 }
685
686 public ZonedDateTime getDate() {
687 return _date;
688 }
689
690 public void setDate(ZonedDateTime value) {
691 _date = value;
692 }
693
694 @Override
695 public String toString() {
696 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
697 }
698 }
699 }
700
701
702
703
704 @MetaschemaAssembly(
705 formalName = "Associated Activity",
706 description = "Identifies an individual activity to be performed as part of a task.",
707 name = "associated-activity",
708 metaschema = OscalAssessmentCommonMetaschema.class
709 )
710 @AssemblyConstraints(
711 isUnique = @IsUnique(id = "unique-associated-activity-responsible-role", level = IConstraint.Level.ERROR, target = "responsible-role", keyFields = @KeyField(target = "@role-id"), remarks = "Since `responsible-role` associates multiple `party-uuid` entries with a single `role-id`, each role-id must be referenced only once.")
712 )
713 public static class AssociatedActivity {
714 @BoundFlag(
715 formalName = "Activity Universally Unique Identifier Reference",
716 description = "A [machine-oriented](https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented) identifier reference to an activity defined in the list of activities.",
717 useName = "activity-uuid",
718 required = true,
719 typeAdapter = UuidAdapter.class
720 )
721 private UUID _activityUuid;
722
723 @BoundAssembly(
724 formalName = "Property",
725 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
726 useName = "prop",
727 maxOccurs = -1
728 )
729 @GroupAs(
730 name = "props",
731 inJson = JsonGroupAsBehavior.LIST
732 )
733 private List<Property> _props;
734
735 @BoundAssembly(
736 formalName = "Link",
737 description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
738 useName = "link",
739 maxOccurs = -1
740 )
741 @GroupAs(
742 name = "links",
743 inJson = JsonGroupAsBehavior.LIST
744 )
745 private List<Link> _links;
746
747 @BoundAssembly(
748 formalName = "Responsible Role",
749 description = "A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.",
750 useName = "responsible-role",
751 maxOccurs = -1,
752 remarks = "Identifies the person or organization responsible for performing a specific role defined by the activity."
753 )
754 @GroupAs(
755 name = "responsible-roles",
756 inJson = JsonGroupAsBehavior.LIST
757 )
758 private List<ResponsibleRole> _responsibleRoles;
759
760 @BoundAssembly(
761 formalName = "Subject of Assessment",
762 description = "Identifies system elements being assessed, such as components, inventory items, and locations. In the assessment plan, this identifies a planned assessment subject. In the assessment results this is an actual assessment subject, and reflects any changes from the plan. exactly what will be the focus of this assessment. Any subjects not identified in this way are out-of-scope.",
763 useName = "subject",
764 minOccurs = 1,
765 maxOccurs = -1
766 )
767 @GroupAs(
768 name = "subjects",
769 inJson = JsonGroupAsBehavior.LIST
770 )
771 private List<AssessmentSubject> _subjects;
772
773 @BoundField(
774 formalName = "Remarks",
775 description = "Additional commentary about the containing object.",
776 useName = "remarks"
777 )
778 @BoundFieldValue(
779 typeAdapter = MarkupMultilineAdapter.class
780 )
781 private MarkupMultiline _remarks;
782
783 public AssociatedActivity() {
784 }
785
786 public UUID getActivityUuid() {
787 return _activityUuid;
788 }
789
790 public void setActivityUuid(UUID value) {
791 _activityUuid = value;
792 }
793
794 public List<Property> getProps() {
795 return _props;
796 }
797
798 public void setProps(List<Property> value) {
799 _props = value;
800 }
801
802
803
804
805
806
807 public boolean addProp(Property item) {
808 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
809 if (_props == null) {
810 _props = new LinkedList<>();
811 }
812 return _props.add(value);
813 }
814
815
816
817
818
819
820 public boolean removeProp(Property item) {
821 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
822 return _props == null ? false : _props.remove(value);
823 }
824
825 public List<Link> getLinks() {
826 return _links;
827 }
828
829 public void setLinks(List<Link> value) {
830 _links = value;
831 }
832
833
834
835
836
837
838 public boolean addLink(Link item) {
839 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
840 if (_links == null) {
841 _links = new LinkedList<>();
842 }
843 return _links.add(value);
844 }
845
846
847
848
849
850
851 public boolean removeLink(Link item) {
852 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
853 return _links == null ? false : _links.remove(value);
854 }
855
856 public List<ResponsibleRole> getResponsibleRoles() {
857 return _responsibleRoles;
858 }
859
860 public void setResponsibleRoles(List<ResponsibleRole> value) {
861 _responsibleRoles = value;
862 }
863
864
865
866
867
868
869 public boolean addResponsibleRole(ResponsibleRole item) {
870 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null");
871 if (_responsibleRoles == null) {
872 _responsibleRoles = new LinkedList<>();
873 }
874 return _responsibleRoles.add(value);
875 }
876
877
878
879
880
881
882 public boolean removeResponsibleRole(ResponsibleRole item) {
883 ResponsibleRole value = ObjectUtils.requireNonNull(item,"item cannot be null");
884 return _responsibleRoles == null ? false : _responsibleRoles.remove(value);
885 }
886
887 public List<AssessmentSubject> getSubjects() {
888 return _subjects;
889 }
890
891 public void setSubjects(List<AssessmentSubject> value) {
892 _subjects = value;
893 }
894
895
896
897
898
899
900 public boolean addSubject(AssessmentSubject item) {
901 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null");
902 if (_subjects == null) {
903 _subjects = new LinkedList<>();
904 }
905 return _subjects.add(value);
906 }
907
908
909
910
911
912
913 public boolean removeSubject(AssessmentSubject item) {
914 AssessmentSubject value = ObjectUtils.requireNonNull(item,"item cannot be null");
915 return _subjects == null ? false : _subjects.remove(value);
916 }
917
918 public MarkupMultiline getRemarks() {
919 return _remarks;
920 }
921
922 public void setRemarks(MarkupMultiline value) {
923 _remarks = value;
924 }
925
926 @Override
927 public String toString() {
928 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
929 }
930 }
931
932
933
934
935 @MetaschemaAssembly(
936 formalName = "Task Dependency",
937 description = "Used to indicate that a task is dependent on another task.",
938 name = "dependency",
939 metaschema = OscalAssessmentCommonMetaschema.class
940 )
941 public static class Dependency {
942 @BoundFlag(
943 formalName = "Task Universally Unique Identifier Reference",
944 description = "A [machine-oriented](https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented) identifier reference to a unique task.",
945 useName = "task-uuid",
946 required = true,
947 typeAdapter = UuidAdapter.class
948 )
949 private UUID _taskUuid;
950
951 @BoundField(
952 formalName = "Remarks",
953 description = "Additional commentary about the containing object.",
954 useName = "remarks"
955 )
956 @BoundFieldValue(
957 typeAdapter = MarkupMultilineAdapter.class
958 )
959 private MarkupMultiline _remarks;
960
961 public Dependency() {
962 }
963
964 public UUID getTaskUuid() {
965 return _taskUuid;
966 }
967
968 public void setTaskUuid(UUID value) {
969 _taskUuid = value;
970 }
971
972 public MarkupMultiline getRemarks() {
973 return _remarks;
974 }
975
976 public void setRemarks(MarkupMultiline value) {
977 _remarks = value;
978 }
979
980 @Override
981 public String toString() {
982 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
983 }
984 }
985 }