1
2
3
4
5
6 package dev.metaschema.core.metapath.item.atomic.impl;
7
8 import dev.metaschema.core.datatype.IDataTypeAdapter;
9 import dev.metaschema.core.datatype.adapter.MetaschemaDataTypeProvider;
10 import dev.metaschema.core.metapath.impl.AbstractMapKey;
11 import dev.metaschema.core.metapath.item.atomic.AbstractAtomicItemBase;
12 import dev.metaschema.core.metapath.item.atomic.IQNameItem;
13 import dev.metaschema.core.metapath.item.atomic.IStringItem;
14 import dev.metaschema.core.metapath.item.function.IMapKey;
15 import dev.metaschema.core.metapath.item.function.IOpaqueMapKey;
16 import dev.metaschema.core.qname.IEnhancedQName;
17 import edu.umd.cs.findbugs.annotations.NonNull;
18
19
20
21
22 public class QNameItemImpl
23 extends AbstractAtomicItemBase<IEnhancedQName>
24 implements IQNameItem {
25 @NonNull
26 private final IEnhancedQName value;
27
28
29
30
31
32
33
34 public QNameItemImpl(@NonNull IEnhancedQName value) {
35 this.value = value;
36 }
37
38 @Override
39 public IEnhancedQName getValue() {
40 return toEnhancedQName();
41 }
42
43 @Override
44 public IEnhancedQName toEnhancedQName() {
45 return value;
46 }
47
48 @Override
49 public String asString() {
50 return toEnhancedQName().toEQName();
51 }
52
53 @Override
54 public IStringItem asStringItem() {
55 return IStringItem.valueOf(asString());
56 }
57
58 @Override
59 public IDataTypeAdapter<IEnhancedQName> getJavaTypeAdapter() {
60 return MetaschemaDataTypeProvider.QNAME;
61 }
62
63 @Override
64 protected String getValueSignature() {
65 return asString();
66 }
67
68 @Override
69 public IMapKey asMapKey() {
70 return new MapKey();
71 }
72
73 @Override
74 public int hashCode() {
75 return value.hashCode();
76 }
77
78 @Override
79 public boolean equals(Object obj) {
80 return this == obj
81 || obj instanceof IQNameItem && compareTo((IQNameItem) obj) == 0;
82 }
83
84 private final class MapKey
85 extends AbstractMapKey
86 implements IOpaqueMapKey {
87 @Override
88 public IQNameItem getKey() {
89 return QNameItemImpl.this;
90 }
91 }
92 }