1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.metaschema.core.model.constraint;
28
29 import gov.nist.secauto.metaschema.core.metapath.item.node.IAssemblyNodeItem;
30 import gov.nist.secauto.metaschema.core.metapath.item.node.IDocumentNodeItem;
31 import gov.nist.secauto.metaschema.core.metapath.item.node.IFieldNodeItem;
32 import gov.nist.secauto.metaschema.core.metapath.item.node.IFlagNodeItem;
33 import gov.nist.secauto.metaschema.core.metapath.item.node.IModuleNodeItem;
34 import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItemVisitor;
35
36 import edu.umd.cs.findbugs.annotations.NonNull;
37
38 class ConstraintComposingVisitor
39 implements INodeItemVisitor<Void, ITargetedConstaints> {
40
41 @Override
42 public Void visitDocument(@NonNull IDocumentNodeItem item, ITargetedConstaints context) {
43 throw new UnsupportedOperationException("constraints can only apply to an assembly, field, or flag definition");
44 }
45
46 @Override
47 public Void visitFlag(@NonNull IFlagNodeItem item, ITargetedConstaints context) {
48 context.target(item.getDefinition());
49 return null;
50 }
51
52 @Override
53 public Void visitField(@NonNull IFieldNodeItem item, ITargetedConstaints context) {
54 context.target(item.getDefinition());
55 return null;
56 }
57
58 @Override
59 public Void visitAssembly(@NonNull IAssemblyNodeItem item, ITargetedConstaints context) {
60 context.target(item.getDefinition());
61 return null;
62 }
63
64 @Override
65 public Void visitMetaschema(@NonNull IModuleNodeItem item, ITargetedConstaints context) {
66 throw new UnsupportedOperationException("constraints can only apply to an assembly, field, or flag definition");
67 }
68
69 }