1
2
3
4
5
6 package dev.metaschema.databind.model.impl;
7
8 import dev.metaschema.core.model.IModule;
9 import dev.metaschema.core.model.JsonGroupAsBehavior;
10 import dev.metaschema.core.model.XmlGroupAsBehavior;
11 import dev.metaschema.core.model.util.ModuleUtils;
12 import dev.metaschema.core.qname.IEnhancedQName;
13 import dev.metaschema.databind.model.IGroupAs;
14 import dev.metaschema.databind.model.annotations.GroupAs;
15 import dev.metaschema.databind.model.annotations.ModelUtil;
16 import edu.umd.cs.findbugs.annotations.NonNull;
17 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
18
19
20
21
22
23
24
25
26 public class DefaultGroupAs implements IGroupAs {
27 @NonNull
28 private final IEnhancedQName qname;
29 @NonNull
30 private final GroupAs annotation;
31
32
33
34
35
36
37
38
39
40
41
42 @SuppressFBWarnings(value = "CT_CONSTRUCTOR_THROW", justification = "Use of final fields")
43 public DefaultGroupAs(
44 @NonNull GroupAs annotation,
45 @NonNull IModule module) {
46 this.annotation = annotation;
47 String value = ModelUtil.resolveNoneOrDefault(annotation.name(), null);
48 if (value == null) {
49 throw new IllegalStateException(
50 String.format("The %s#groupName value '%s' resulted in an invalid null value",
51 GroupAs.class.getName(),
52 annotation.name()));
53 }
54 this.qname = ModuleUtils.parseModelName(module, value);
55 }
56
57 @Override
58 public IEnhancedQName getGroupAsQName() {
59 return qname;
60 }
61
62 @Override
63 public JsonGroupAsBehavior getJsonGroupAsBehavior() {
64 return annotation.inJson();
65 }
66
67 @Override
68 public XmlGroupAsBehavior getXmlGroupAsBehavior() {
69 return annotation.inXml();
70 }
71 }