1
2
3
4
5
6 package dev.metaschema.databind.model.impl;
7
8 import dev.metaschema.core.model.IGroupable;
9 import dev.metaschema.core.model.JsonGroupAsBehavior;
10 import dev.metaschema.core.model.XmlGroupAsBehavior;
11 import dev.metaschema.core.qname.IEnhancedQName;
12 import dev.metaschema.databind.model.IGroupAs;
13 import edu.umd.cs.findbugs.annotations.NonNull;
14
15
16
17
18
19
20
21 public interface IFeatureInstanceModelGroupAs extends IGroupable {
22
23
24
25
26
27 @NonNull
28 IGroupAs getGroupAs();
29
30 @Override
31 default String getGroupAsName() {
32 IEnhancedQName qname = getGroupAs().getGroupAsQName();
33 return qname == null ? null : qname.getLocalName();
34 }
35
36 @Override
37 default IEnhancedQName getEffectiveXmlGroupAsQName() {
38 IEnhancedQName retval = null;
39 if (XmlGroupAsBehavior.GROUPED.equals(getXmlGroupAsBehavior())) {
40 IEnhancedQName qname = getGroupAs().getGroupAsQName();
41 if (qname == null) {
42 throw new IllegalStateException("Instance is grouped, but no group-as QName was provided.");
43 }
44 retval = qname;
45 }
46 return retval;
47 }
48
49 @Override
50 default JsonGroupAsBehavior getJsonGroupAsBehavior() {
51 return getGroupAs().getJsonGroupAsBehavior();
52 }
53
54 @Override
55 default XmlGroupAsBehavior getXmlGroupAsBehavior() {
56 return getGroupAs().getXmlGroupAsBehavior();
57 }
58 }