1
2
3
4
5
6 package gov.nist.secauto.metaschema.core.model;
7
8 import gov.nist.secauto.metaschema.core.MetaschemaConstants;
9 import gov.nist.secauto.metaschema.core.model.constraint.IFeatureModelConstrained;
10 import gov.nist.secauto.metaschema.core.model.util.ModuleUtils;
11 import gov.nist.secauto.metaschema.core.qname.IEnhancedQName;
12
13 import edu.umd.cs.findbugs.annotations.NonNull;
14 import edu.umd.cs.findbugs.annotations.Nullable;
15
16 public interface IAssemblyDefinition
17 extends IModelDefinition, IContainerModelAssembly, IAssembly, IFeatureModelConstrained {
18 IEnhancedQName MODEL_QNAME = IEnhancedQName.of(MetaschemaConstants.METASCHEMA_NAMESPACE, "model");
19
20
21
22
23
24
25
26 default boolean isRoot() {
27
28 return false;
29 }
30
31
32
33
34
35
36
37 @Nullable
38 default String getRootName() {
39
40 return null;
41 }
42
43
44
45
46
47
48
49
50 @Nullable
51 default Integer getRootIndex() {
52
53 return null;
54 }
55
56
57
58
59
60
61
62 default IEnhancedQName getRootQName() {
63 IEnhancedQName retval = null;
64 String rootName = getRootName();
65 if (rootName != null) {
66 retval = ModuleUtils.parseModelName(getContainingModule(), rootName);
67 }
68 return retval;
69 }
70
71
72
73
74
75
76
77 default String getRootJsonName() {
78 return getRootName();
79 }
80
81 @Override
82 default boolean isInline() {
83
84 return false;
85 }
86
87 @Override
88 default IAssemblyInstance getInlineInstance() {
89
90 return null;
91 }
92
93 @Override
94 default IAssemblyDefinition getOwningDefinition() {
95 return this;
96 }
97
98
99
100
101
102
103 @Override
104 default boolean hasChildren() {
105 return IModelDefinition.super.hasChildren() || IContainerModelAssembly.super.hasChildren();
106 }
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 @Override
122 default <CONTEXT, RESULT> RESULT accept(@NonNull IModelElementVisitor<CONTEXT, RESULT> visitor, CONTEXT context) {
123 return visitor.visitAssemblyDefinition(this, context);
124 }
125 }