001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package gov.nist.secauto.metaschema.databind.model;
007
008import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior;
009import gov.nist.secauto.metaschema.core.model.XmlGroupAsBehavior;
010import gov.nist.secauto.metaschema.core.qname.IEnhancedQName;
011
012import edu.umd.cs.findbugs.annotations.NonNull;
013import edu.umd.cs.findbugs.annotations.Nullable;
014
015/**
016 * A data object to record the group as selections.
017 */
018public interface IGroupAs {
019  @NonNull
020  IGroupAs SINGLETON_GROUP_AS = new IGroupAs() {
021    @Override
022    public IEnhancedQName getGroupAsQName() {
023      return null;
024    }
025
026    @Override
027    public JsonGroupAsBehavior getJsonGroupAsBehavior() {
028      return JsonGroupAsBehavior.NONE;
029    }
030
031    @Override
032    public XmlGroupAsBehavior getXmlGroupAsBehavior() {
033      return XmlGroupAsBehavior.UNGROUPED;
034    }
035  };
036
037  @Nullable
038  IEnhancedQName getGroupAsQName();
039
040  @NonNull
041  JsonGroupAsBehavior getJsonGroupAsBehavior();
042
043  @NonNull
044  XmlGroupAsBehavior getXmlGroupAsBehavior();
045}