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